Code

Add forgotten libavoid files
authorArcadie M. Cracan <acracan@gmail.com>
Wed, 2 Dec 2009 21:26:56 +0000 (23:26 +0200)
committerArcadie M. Cracan <acracan@gmail.com>
Wed, 2 Dec 2009 21:26:56 +0000 (23:26 +0200)
po/inkscape.pot [new file with mode: 0644]
src/libavoid/.dirstamp [new file with mode: 0644]
src/libavoid/assertions.h [new file with mode: 0644]
src/libavoid/geomtypes.cpp [new file with mode: 0644]
src/libavoid/makefile [new file with mode: 0644]
src/libavoid/orthogonal.cpp [new file with mode: 0644]
src/libavoid/orthogonal.h [new file with mode: 0644]
src/libavoid/viscluster.cpp [new file with mode: 0644]
src/libavoid/viscluster.h [new file with mode: 0644]
src/libavoid/vpsc.cpp [new file with mode: 0644]
src/libavoid/vpsc.h [new file with mode: 0644]

diff --git a/po/inkscape.pot b/po/inkscape.pot
new file mode 100644 (file)
index 0000000..d48c15b
--- /dev/null
@@ -0,0 +1,22382 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n"
+"POT-Creation-Date: 2009-11-30 21:00+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: ../inkscape.desktop.in.h:1
+msgid "Create and edit Scalable Vector Graphics images"
+msgstr ""
+
+#: ../inkscape.desktop.in.h:2
+msgid "Inkscape"
+msgstr ""
+
+#: ../inkscape.desktop.in.h:3
+msgid "Inkscape Vector Graphics Editor"
+msgstr ""
+
+#: ../inkscape.desktop.in.h:4
+msgid "Vector Graphics Editor"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:2
+msgid "Matte jelly"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:2 ../share/filters/filters.svg.h:10
+#: ../share/filters/filters.svg.h:107 ../share/filters/filters.svg.h:109
+#: ../share/filters/filters.svg.h:115 ../share/filters/filters.svg.h:116
+#: ../share/filters/filters.svg.h:118 ../share/filters/filters.svg.h:122
+#: ../share/filters/filters.svg.h:167 ../share/filters/filters.svg.h:206
+msgid "ABCs"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:2
+msgid "Bulging, matte jelly covering"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:3
+msgid "Smart jelly"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:3 ../share/filters/filters.svg.h:4
+#: ../share/filters/filters.svg.h:9 ../share/filters/filters.svg.h:14
+#: ../share/filters/filters.svg.h:15 ../share/filters/filters.svg.h:39
+#: ../share/filters/filters.svg.h:48 ../share/filters/filters.svg.h:49
+#: ../share/filters/filters.svg.h:50 ../share/filters/filters.svg.h:51
+#: ../share/filters/filters.svg.h:54 ../share/filters/filters.svg.h:56
+#: ../share/filters/filters.svg.h:69 ../share/filters/filters.svg.h:71
+#: ../share/filters/filters.svg.h:89 ../share/filters/filters.svg.h:101
+#: ../share/filters/filters.svg.h:102 ../share/filters/filters.svg.h:207
+#: ../share/filters/filters.svg.h:208 ../share/filters/filters.svg.h:209
+#: ../share/filters/filters.svg.h:210 ../share/filters/filters.svg.h:211
+msgid "Bevels"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:3
+msgid "Same as Matte jelly but with more controls"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:4
+msgid "Metal casting"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:4
+msgid "Smooth drop-like bevel with metallic finish"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:5
+msgid "Motion blur, horizontal"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:5 ../share/filters/filters.svg.h:6
+#: ../share/filters/filters.svg.h:7 ../share/filters/filters.svg.h:57
+#: ../share/filters/filters.svg.h:94 ../share/filters/filters.svg.h:108
+#: ../share/filters/filters.svg.h:111 ../share/filters/filters.svg.h:159
+msgid "Blurs"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:5
+msgid ""
+"Blur as if the object flies horizontally; adjust Standard Deviation to vary "
+"force"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:6
+msgid "Motion blur, vertical"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:6
+msgid ""
+"Blur as if the object flies vertically; adjust Standard Deviation to vary "
+"force"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:7
+msgid "Apparition"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:7
+msgid "Edges are partly feathered out"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:8
+msgid "Cutout"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:8 ../share/filters/filters.svg.h:40
+#: ../share/filters/filters.svg.h:85 ../share/filters/filters.svg.h:95
+#: ../share/filters/filters.svg.h:119 ../share/filters/filters.svg.h:169
+#: ../share/filters/filters.svg.h:170 ../share/filters/filters.svg.h:171
+#: ../share/filters/filters.svg.h:176 ../share/filters/filters.svg.h:214
+#: ../src/extension/internal/filter/drop-shadow.h:45
+#: ../src/extension/internal/filter/drop-shadow.h:100
+msgid "Shadows and Glows"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:8
+msgid "Drop shadow under the cut-out of the shape"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:9
+msgid "Jigsaw piece"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:9
+msgid "Low, sharp bevel"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:10
+msgid "Roughen"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:10
+msgid "Small-scale roughening to edges and content"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:11
+msgid "Rubber stamp"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:11 ../share/filters/filters.svg.h:17
+#: ../share/filters/filters.svg.h:18 ../share/filters/filters.svg.h:19
+#: ../share/filters/filters.svg.h:21 ../share/filters/filters.svg.h:22
+#: ../share/filters/filters.svg.h:36 ../share/filters/filters.svg.h:37
+#: ../share/filters/filters.svg.h:38 ../share/filters/filters.svg.h:90
+#: ../share/filters/filters.svg.h:113 ../share/filters/filters.svg.h:114
+#: ../share/filters/filters.svg.h:117 ../share/filters/filters.svg.h:150
+#: ../share/filters/filters.svg.h:154 ../share/filters/filters.svg.h:183
+#: ../share/filters/filters.svg.h:217
+msgid "Overlays"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:11
+msgid "Random whiteouts inside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:12
+msgid "Ink bleed"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:12 ../share/filters/filters.svg.h:13
+#: ../share/filters/filters.svg.h:41 ../share/filters/filters.svg.h:166
+msgid "Protrusions"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:12
+msgid "Inky splotches underneath the object"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:13
+msgid "Fire"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:13
+msgid "Edges of object are on fire"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:14
+msgid "Bloom"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:14
+msgid "Soft, cushion-like bevel with matte highlights"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:15
+msgid "Ridged border"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:15
+msgid "Ridged border with inner bevel"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:16
+msgid "Ripple"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:16 ../share/filters/filters.svg.h:43
+#: ../share/filters/filters.svg.h:106 ../share/filters/filters.svg.h:110
+#: ../share/filters/filters.svg.h:112 ../share/filters/filters.svg.h:128
+#: ../share/filters/filters.svg.h:173 ../share/filters/filters.svg.h:194
+msgid "Distort"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:16
+msgid "Horizontal rippling of edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:17
+msgid "Speckle"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:17
+msgid "Fill object with sparse translucent specks"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:18
+msgid "Oil slick"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:18
+msgid "Rainbow-colored semitransparent oily splotches"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:19
+msgid "Frost"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:19
+msgid "Flake-like white splotches"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:20
+msgid "Leopard fur"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:20 ../share/filters/filters.svg.h:58
+#: ../share/filters/filters.svg.h:59 ../share/filters/filters.svg.h:60
+#: ../share/filters/filters.svg.h:62 ../share/filters/filters.svg.h:67
+#: ../share/filters/filters.svg.h:78 ../share/filters/filters.svg.h:79
+#: ../share/filters/filters.svg.h:80 ../share/filters/filters.svg.h:82
+#: ../share/filters/filters.svg.h:136 ../share/filters/filters.svg.h:151
+#: ../share/filters/filters.svg.h:152 ../share/filters/filters.svg.h:153
+msgid "Materials"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:20
+msgid "Leopard spots (loses object's own color)"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:21
+msgid "Zebra"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:21
+msgid "Irregular vertical dark stripes (loses object's own color)"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:22
+msgid "Clouds"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:22
+msgid "Airy, fluffy, sparse white clouds"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:23
+#: ../src/extension/internal/bitmap/sharpen.cpp:37
+msgid "Sharpen"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:23 ../share/filters/filters.svg.h:24
+#: ../share/filters/filters.svg.h:25 ../share/filters/filters.svg.h:26
+#: ../share/filters/filters.svg.h:27 ../share/filters/filters.svg.h:28
+#: ../share/filters/filters.svg.h:29 ../share/filters/filters.svg.h:30
+#: ../share/filters/filters.svg.h:34 ../share/filters/filters.svg.h:100
+#: ../share/filters/filters.svg.h:160 ../share/filters/filters.svg.h:162
+#: ../share/filters/filters.svg.h:175 ../share/filters/filters.svg.h:190
+msgid "Image effects"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:23
+msgid "Sharpen edges and boundaries within the object, force=0.15"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:24
+msgid "Sharpen more"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:24
+msgid "Sharpen edges and boundaries within the object, force=0.3"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:25
+msgid "Oil painting"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:25
+msgid "Simulate oil painting style"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:26
+msgid "Edge detect"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:26
+msgid "Detect color edges in object"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:27
+msgid "Horizontal edge detect"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:27
+msgid "Detect horizontal color edges in object"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:28
+msgid "Vertical edge detect"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:28
+msgid "Detect vertical color edges in object"
+msgstr ""
+
+#. Pencil
+#: ../share/filters/filters.svg.h:29
+#: ../src/ui/dialog/inkscape-preferences.cpp:486 ../src/verbs.cpp:2516
+msgid "Pencil"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:29
+msgid "Detect color edges and retrace them in grayscale"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:30
+msgid "Blueprint"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:30
+msgid "Detect color edges and retrace them in blue"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:31
+#: ../share/extensions/color_desaturate.inx.h:2
+msgid "Desaturate"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:31 ../share/filters/filters.svg.h:32
+#: ../share/filters/filters.svg.h:33 ../share/filters/filters.svg.h:72
+#: ../share/filters/filters.svg.h:91 ../share/filters/filters.svg.h:98
+#: ../share/filters/filters.svg.h:99 ../share/filters/filters.svg.h:157
+#: ../share/filters/filters.svg.h:174 ../share/filters/filters.svg.h:196
+#: ../share/filters/filters.svg.h:205 ../share/filters/filters.svg.h:215
+#: ../share/filters/filters.svg.h:218 ../share/filters/filters.svg.h:219
+#: ../src/dialogs/clonetiler.cpp:2607 ../src/dialogs/clonetiler.cpp:2754
+#: ../src/extension/internal/bitmap/colorize.cpp:51
+#: ../share/extensions/color_brighter.inx.h:2
+#: ../share/extensions/color_custom.inx.h:2
+#: ../share/extensions/color_darker.inx.h:1
+#: ../share/extensions/color_desaturate.inx.h:1
+#: ../share/extensions/color_grayscale.inx.h:1
+#: ../share/extensions/color_lesshue.inx.h:1
+#: ../share/extensions/color_lesslight.inx.h:1
+#: ../share/extensions/color_lesssaturation.inx.h:1
+#: ../share/extensions/color_morehue.inx.h:1
+#: ../share/extensions/color_morelight.inx.h:1
+#: ../share/extensions/color_moresaturation.inx.h:1
+#: ../share/extensions/color_negative.inx.h:1
+#: ../share/extensions/color_randomize.inx.h:1
+#: ../share/extensions/color_removeblue.inx.h:1
+#: ../share/extensions/color_removegreen.inx.h:1
+#: ../share/extensions/color_removered.inx.h:1
+#: ../share/extensions/color_replace.inx.h:2
+#: ../share/extensions/color_rgbbarrel.inx.h:1
+#: ../share/extensions/interp_att_g.inx.h:2
+msgid "Color"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:31
+msgid "Render in shades of gray by reducing saturation to zero"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:32 ../src/ui/widget/selected-style.cpp:228
+msgid "Invert"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:32
+msgid "Invert colors"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:33
+msgid "Sepia"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:33
+msgid "Render in warm sepia tones"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:34
+msgid "Age"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:34
+msgid "Imitate aged photograph"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:35
+msgid "Organic"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:35 ../share/filters/filters.svg.h:42
+#: ../share/filters/filters.svg.h:45 ../share/filters/filters.svg.h:61
+#: ../share/filters/filters.svg.h:63 ../share/filters/filters.svg.h:64
+#: ../share/filters/filters.svg.h:81 ../share/filters/filters.svg.h:83
+#: ../share/filters/filters.svg.h:84 ../share/filters/filters.svg.h:125
+#: ../share/filters/filters.svg.h:126 ../share/filters/filters.svg.h:127
+#: ../share/filters/filters.svg.h:130 ../share/filters/filters.svg.h:131
+#: ../share/filters/filters.svg.h:132 ../share/filters/filters.svg.h:133
+#: ../share/filters/filters.svg.h:134 ../share/filters/filters.svg.h:135
+#: ../share/filters/filters.svg.h:155 ../share/filters/filters.svg.h:172
+#: ../share/filters/filters.svg.h:181 ../share/filters/filters.svg.h:187
+#: ../share/filters/filters.svg.h:200
+msgid "Textures"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:35
+msgid "Bulging, knotty, slick 3D surface"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:36
+msgid "Barbed wire"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:36
+msgid "Gray bevelled wires with drop shadows"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:37
+msgid "Swiss cheese"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:37
+msgid "Random inner-bevel holes"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:38
+msgid "Blue cheese"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:38
+msgid "Marble-like bluish speckles"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:39
+msgid "Button"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:39
+msgid "Soft bevel, slightly depressed middle"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:40
+msgid "Inset"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:40
+msgid "Shadowy outer bevel"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:41
+msgid "Dripping"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:41
+msgid "Random paint streaks downwards"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:42
+msgid "Jam spread"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:42
+msgid "Glossy clumpy jam spread"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:43
+msgid "Pixel smear"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:43
+msgid "Van Gogh painting effect for bitmaps"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:44
+msgid "HSL Bumps"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:44 ../share/filters/filters.svg.h:46
+#: ../share/filters/filters.svg.h:97 ../share/filters/filters.svg.h:120
+#: ../share/filters/filters.svg.h:121 ../share/filters/filters.svg.h:123
+#: ../share/filters/filters.svg.h:124 ../share/filters/filters.svg.h:161
+#: ../share/filters/filters.svg.h:163 ../share/filters/filters.svg.h:180
+#: ../share/filters/filters.svg.h:182 ../share/filters/filters.svg.h:184
+#: ../share/filters/filters.svg.h:185 ../share/filters/filters.svg.h:192
+#: ../share/filters/filters.svg.h:201 ../share/filters/filters.svg.h:202
+#: ../share/filters/filters.svg.h:203 ../share/filters/filters.svg.h:212
+#: ../share/filters/filters.svg.h:213 ../share/filters/filters.svg.h:216
+msgid "Bumps"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:44
+msgid "Highly flexible bump combining diffuse and specular lightings"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:45
+msgid "Cracked glass"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:45
+msgid "Under a cracked glass"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:46
+msgid "Bubbly Bumps"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:46
+msgid "Flexible bubbles effect with some displacement"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:47
+msgid "Glowing bubble"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:47 ../share/filters/filters.svg.h:52
+#: ../share/filters/filters.svg.h:53 ../share/filters/filters.svg.h:65
+#: ../share/filters/filters.svg.h:66 ../share/filters/filters.svg.h:68
+#: ../share/filters/filters.svg.h:70
+msgid "Ridges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:47
+msgid "Bubble effect with refraction and glow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:48
+msgid "Neon"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:48
+msgid "Neon light effect"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:49
+msgid "Molten metal"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:49
+msgid "Melting parts of object together, with a glossy bevel and a glow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:50
+msgid "Pressed steel"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:50
+msgid "Pressed metal with a rolled edge"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:51
+msgid "Matte bevel"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:51
+msgid "Soft, pastel-colored, blurry bevel"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:52
+msgid "Thin Membrane"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:52
+msgid "Thin like a soap membrane"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:53
+msgid "Matte ridge"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:53
+msgid "Soft pastel ridge"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:54
+msgid "Glowing metal"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:54
+msgid "Glowing metal texture"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:55
+msgid "Leaves"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:55 ../share/filters/filters.svg.h:77
+#: ../share/filters/filters.svg.h:86 ../share/extensions/pathscatter.inx.h:10
+msgid "Scatter"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:55
+msgid "Leaves on the ground in Fall, or living foliage"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:56
+msgid "Translucent"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:56
+msgid "Illuminated translucent plastic or glass effect"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:57
+msgid "Cross-smooth"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:57
+msgid "Blur inner borders and intersections"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:58
+msgid "Iridescent beeswax"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:58
+msgid "Waxy texture which keeps its iridescence through color fill change"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:59
+msgid "Eroded metal"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:59
+msgid "Eroded metal texture with ridges, grooves, holes and bumps"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:60
+msgid "Cracked Lava"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:60
+msgid "A volcanic texture, a little like leather"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:61
+msgid "Bark"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:61
+msgid "Bark texture, vertical; use with deep colors"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:62
+msgid "Lizard skin"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:62
+msgid "Stylized reptile skin texture"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:63
+msgid "Stone wall"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:63
+msgid "Stone wall texture to use with not too saturated colors"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:64
+msgid "Silk carpet"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:64
+msgid "Silk carpet texture, horizontal stripes"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:65
+msgid "Refractive gel A"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:65
+msgid "Gel effect with light refraction"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:66
+msgid "Refractive gel B"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:66
+msgid "Gel effect with strong refraction"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:67
+msgid "Metallized paint"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:67
+msgid ""
+"Metallized effect with a soft lighting, slightly translucent at the edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:68
+msgid "Dragee"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:68
+msgid "Gel Ridge with a pearlescent look"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:69
+msgid "Raised border"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:69
+msgid "Strongly raised border around a flat surface"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:70
+msgid "Metallized ridge"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:70
+msgid "Gel Ridge metallized at its top"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:71
+msgid "Fat oil"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:71
+msgid "Fat oil with some adjustable turbulence"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:72
+#: ../src/extension/internal/bitmap/colorize.cpp:49
+msgid "Colorize"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:72
+msgid "Blend image or object with a flood color and set lightness and contrast"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:73
+msgid "Parallel hollow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:73 ../share/filters/filters.svg.h:74
+#: ../share/filters/filters.svg.h:75 ../share/filters/filters.svg.h:76
+#: ../share/filters/filters.svg.h:87 ../share/filters/filters.svg.h:88
+#: ../share/filters/filters.svg.h:92 ../share/filters/filters.svg.h:93
+#: ../share/filters/filters.svg.h:96 ../share/filters/filters.svg.h:105
+#: ../share/filters/filters.svg.h:129 ../share/filters/filters.svg.h:168
+#: ../src/filter-enums.cpp:31
+msgid "Morphology"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:73
+msgid "A blurry hollow going parallel to the edge on the inside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:74
+msgid "Hole"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:74
+msgid "Opens a smooth hole inside the shape"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:75
+msgid "Black hole"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:75
+msgid "Creates a black light inside and outside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:76
+msgid "Smooth outline"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:76
+msgid "Outlining the lines and smoothing their crossings"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:77
+msgid "Cubes"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:77
+msgid "Scattered cubes; adjust the Morphology primitive to vary size"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:78
+msgid "Peel off"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:78
+msgid "Peeling painting on a wall"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:79
+msgid "Gold splatter"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:79
+msgid "Splattered cast metal, with golden highlights"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:80
+msgid "Gold paste"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:80
+msgid "Fat pasted cast metal, with golden highlights"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:81
+msgid "Crumpled plastic"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:81
+msgid "Crumpled matte plastic, with melted edge"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:82
+msgid "Enamel jewelry"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:82
+msgid "Slightly cracked enameled texture"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:83
+msgid "Rough paper"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:83
+msgid "Aquarelle paper effect which can be used for pictures as for objects"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:84
+msgid "Rough and glossy"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:84
+msgid ""
+"Crumpled glossy paper effect which can be used for pictures as for objects"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:85
+msgid "In and Out"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:85
+msgid "Inner colorized shadow, outer black shadow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:86
+msgid "Air spray"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:86
+msgid "Convert to small scattered particles with some thickness"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:87
+msgid "Warm inside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:87
+msgid "Blurred colorized contour, filled inside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:88
+msgid "Cool outside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:88
+msgid "Blurred colorized contour, empty inside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:89
+msgid "Electronic microscopy"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:89
+msgid ""
+"Bevel, crude light, discoloration and glow like in electronic microscopy"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:90
+msgid "Tartan"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:90
+msgid "Checkered tartan pattern"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:91
+msgid "Invert hue"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:91
+msgid "Invert hue, or rotate it"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:92
+msgid "Inner outline"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:92
+msgid "Draws an outline around"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:93
+msgid "Outline, double"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:93
+msgid "Draws a smooth line inside colorized with the color it overlays"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:94
+msgid "Fancy blur"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:94
+msgid "Smooth colorized contour which allows desaturation and hue rotation"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:95
+msgid "Glow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:95
+msgid "Glow of object's own color at the edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:96
+msgid "Outline"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:96
+msgid "Adds a glowing blur and removes the shape"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:97
+msgid "Color emboss"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:97
+msgid "Classic or colorized emboss effect: grayscale, color and 3D relief"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:98
+#: ../src/extension/internal/bitmap/solarize.cpp:36
+msgid "Solarize"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:98
+msgid "Classical photographic solarization effect"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:99
+msgid "Moonarize"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:99
+msgid ""
+"An effect between solarize and invert which often preserves sky and water "
+"lights"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:100
+msgid "Soft focus lens"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:100
+msgid "Glowing image content without blurring it"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:101
+msgid "Stained glass"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:101
+msgid "Illuminated stained glass effect"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:102
+msgid "Dark glass"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:102
+msgid "Illuminated glass effect with light coming from beneath"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:103
+msgid "HSL Bumps alpha"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:103 ../share/filters/filters.svg.h:104
+#: ../share/filters/filters.svg.h:164 ../share/filters/filters.svg.h:165
+#: ../share/filters/filters.svg.h:177 ../share/filters/filters.svg.h:178
+#: ../share/filters/filters.svg.h:179 ../share/filters/filters.svg.h:186
+#: ../share/filters/filters.svg.h:188 ../share/filters/filters.svg.h:189
+#: ../share/filters/filters.svg.h:191 ../share/filters/filters.svg.h:193
+#: ../share/filters/filters.svg.h:204
+msgid "Image effects, transparent"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:103
+msgid "Same as HSL Bumps but with transparent highlights"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:104
+msgid "Bubbly Bumps alpha"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:104
+msgid "Same as Bubbly Bumps but with transparent highlights"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:105
+msgid "Smooth edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:105
+msgid ""
+"Smooth the outside of shapes and pictures without altering their contents"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:106 ../share/filters/filters.svg.h:128
+msgid "Torn edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:106 ../share/filters/filters.svg.h:128
+msgid ""
+"Displace the outside of shapes and pictures without altering their content"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:107
+msgid "Feather"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:107
+msgid "Blurred mask on the edge without altering the contents"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:108
+msgid "Blur content"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:108
+msgid "Blur the contents of objects, preserving the outline"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:109
+msgid "Specular light"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:109 ../share/filters/filters.svg.h:211
+msgid "Basic specular bevel to use for building textures"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:110
+msgid "Roughen inside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:110
+msgid "Roughen all inside shapes"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:111
+msgid "Evanescent"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:111
+msgid ""
+"Blur the contents of objects, preserving the outline and adding progressive "
+"transparency at edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:112
+msgid "Chalk and sponge"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:112
+msgid "Low turbulence gives sponge look and high turbulence chalk"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:113
+msgid "People"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:113
+msgid "Colorized blotches, like a crowd of people"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:114
+msgid "Scotland"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:114
+msgid "Colorized mountain tops out of the fog"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:115
+msgid "Noise transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:115
+msgid "Basic noise transparency texture"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:116
+msgid "Noise fill"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:116
+msgid "Basic noise fill texture; adjust color in Flood"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:117
+msgid "Garden of Delights"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:117
+msgid ""
+"Phantasmagorical turbulent wisps, like Hieronymus Bosch's Garden of Delights"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:118
+msgid "Diffuse light"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:118
+msgid "Basic diffuse bevel to use for building textures"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:119
+msgid "Cutout Glow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:119
+msgid "In and out glow with a possible offset and colorizable flood"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:120
+msgid "HSL Bumps, matte"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:120
+msgid ""
+"Same as HSL bumps but with a diffuse reflection instead of a specular one"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:121
+msgid "Dark Emboss"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:121
+msgid "Emboss effect : 3D relief where white is replaced by black"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:122
+msgid "Simple blur"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:122
+msgid "Simple Gaussian blur, same as the blur slider in Fill and Stroke dialog"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:123
+msgid "Bubbly Bumps, matte"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:123
+msgid "Same as Bubbly Bumps but with a diffuse light instead of a specular one"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:124
+#: ../src/extension/internal/bitmap/emboss.cpp:37
+msgid "Emboss"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:124
+msgid ""
+"Emboss effect : Colors of the original images are preserved or modified by "
+"Blend"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:125
+msgid "Blotting paper"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:125
+msgid "Inkblot on blotting paper"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:126
+msgid "Wax print"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:126
+msgid "Wax print on tissue texture"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:127
+msgid "Inkblot"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:127
+msgid "Inkblot on tissue or rough paper"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:129
+msgid "Color outline, in"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:129
+msgid "A colorizable inner outline with adjustable width and blur"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:130
+msgid "Liquid"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:130
+msgid "Colorizable filling with liquid transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:131
+msgid "Watercolor"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:131
+msgid "Cloudy watercolor effect"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:132
+msgid "Felt"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:132
+msgid ""
+"Felt like texture with color turbulence and slightly darker at the edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:133
+msgid "Ink paint"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:133
+msgid "Ink paint on paper with some turbulent color shift"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:134
+msgid "Tinted rainbow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:134
+msgid "Smooth rainbow colors melted along the edges and colorizable"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:135
+msgid "Melted rainbow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:135
+msgid "Smooth rainbow colors slightly melted along the edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:136
+msgid "Flex metal"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:136
+msgid "Bright, polished uneven metal casting, colorizable"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:137
+msgid "Comics draft"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:137 ../share/filters/filters.svg.h:138
+#: ../share/filters/filters.svg.h:139 ../share/filters/filters.svg.h:140
+#: ../share/filters/filters.svg.h:141 ../share/filters/filters.svg.h:142
+#: ../share/filters/filters.svg.h:143 ../share/filters/filters.svg.h:144
+#: ../share/filters/filters.svg.h:145 ../share/filters/filters.svg.h:146
+#: ../share/filters/filters.svg.h:147 ../share/filters/filters.svg.h:148
+#: ../share/filters/filters.svg.h:149 ../share/filters/filters.svg.h:156
+msgid "Non realistic 3D shaders"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:137
+msgid "Draft painted cartoon shading with a glassy look"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:138
+msgid "Comics fading"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:138
+msgid "Cartoon paint style with some fading at the edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:139
+msgid "Smooth shader"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:139
+msgid "Smooth shading with a graphite pencil grey"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:140
+msgid "Emboss shader"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:140
+msgid "Combination of smooth shading and embossing"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:141
+msgid "Smooth shader dark"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:141
+msgid "Dark version of non realistic smooth shading"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:142
+msgid "Comics"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:142
+msgid "Imitation of black and white cartoon shading"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:143
+msgid "Satin"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:143
+msgid "Silky close to mother of pearl shading"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:144
+msgid "Frosted glass"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:144
+msgid "Non realistic frosted glass imitation"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:145
+msgid "Smooth shader contour"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:145
+msgid "Contouring version of smooth shader"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:146
+msgid "Aluminium"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:146
+msgid "Brushed aluminium shader"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:147
+msgid "Comics fluid"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:147
+msgid "Fluid brushed cartoon drawing"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:148
+msgid "Chrome"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:148
+msgid "Non realistic chrome shader with strong speculars"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:149
+msgid "Chrome dark"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:149
+msgid "Dark version of chrome shading with a ground reflection simulation"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:150
+msgid "Wavy tartan"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:150
+msgid "Tartan pattern with a wavy displacement and bevel around the edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:151
+msgid "3D marble"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:151
+msgid "3D warped marble texture"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:152
+msgid "3D wood"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:152
+msgid "3D warped, fibered wood texture"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:153
+msgid "3D mother of pearl"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:153
+msgid "3D warped, iridescent pearly shell texture"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:154
+msgid "Tiger fur"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:154
+msgid "Tiger fur pattern with folds and bevel around the edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:155
+msgid "Shaken liquid"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:155
+msgid "Colorizable filling with flow inside like transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:156
+msgid "Comics cream"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:156
+msgid "Comics shader with creamy waves transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:157
+msgid "Black Light"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:157
+msgid "Light areas turn to black"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:158
+msgid "Light eraser"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:158 ../share/filters/filters.svg.h:195
+#: ../share/filters/filters.svg.h:197 ../share/filters/filters.svg.h:198
+#: ../share/filters/filters.svg.h:199
+msgid "Transparency utilities"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:158
+msgid "Make the lightest parts of the object progressively transparent"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:159
+msgid "Noisy blur"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:159
+msgid "Small-scale roughening and blurring to edges and content"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:160
+msgid "Film grain"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:160
+msgid "Adds a small scale graininess"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:161
+msgid "HSL Bumps, transparent"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:161
+msgid "Highly flexible specular bump with transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:162
+#: ../src/ui/dialog/align-and-distribute.cpp:920
+#: ../src/widgets/desktop-widget.cpp:1576
+msgid "Drawing"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:162
+msgid ""
+"Give lead pencil or chromolithography or engraving or other effects to "
+"images and material filled objects"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:163
+msgid "Velvet Bumps"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:163
+msgid "Gives Smooth Bumps velvet like"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:164
+msgid "Alpha draw"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:164
+msgid "Gives a transparent drawing effect to bitmaps and materials"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:165
+msgid "Alpha draw, color"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:165
+msgid "Gives a transparent color fill effect to bitmaps and materials"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:166
+msgid "Chewing gum"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:166
+msgid ""
+"Creates colorizable blotches which smoothly flow over the edges of the lines "
+"at their crossings"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:167
+msgid "Black outline"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:167
+msgid "Draws a black outline around"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:168
+msgid "Color outline"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:168
+msgid "Draws a colored outline around"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:169
+msgid "Inner Shadow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:169
+msgid "Adds a colorizable drop shadow inside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:170
+msgid "Dark and Glow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:170
+msgid "Darkens the edge with an inner blur and adds a flexible glow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:171
+msgid "Darken edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:171
+msgid "Darken the edges with an inner blur"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:172
+msgid "Warped rainbow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:172
+msgid "Smooth rainbow colors warped along the edges and colorizable"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:173
+msgid "Rough and dilate"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:173
+msgid "Create a turbulent contour around"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:174
+msgid "Quadritone fantasy"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:174
+msgid "Replace hue by two colors"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:175
+msgid "Old postcard"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:175
+msgid "Slightly posterize and draw edges like on old printed postcards"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:176
+msgid "Fuzzy Glow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:176
+msgid "Overlays a semi-transparent shifted copy to a blurred one"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:177
+msgid "Dots transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:177
+msgid "Gives a pointillist HSL sensitive transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:178
+msgid "Canvas transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:178
+msgid "Gives a canvas like HSL sensitive transparency."
+msgstr ""
+
+#: ../share/filters/filters.svg.h:179
+msgid "Smear transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:179
+msgid ""
+"Paint objects with a transparent turbulence which turns around color edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:180
+msgid "Thick paint"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:180
+msgid "Thick painting effect with turbulence"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:181
+msgid "Burst"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:181
+msgid "Burst balloon texture crumpled and with holes"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:182
+msgid "Embossed leather"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:182
+msgid ""
+"Combine a HSL edges detection bump with a leathery or woody and colorizable "
+"texture"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:183
+msgid "Carnaval"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:183
+msgid "White splotches evocating carnaval masks"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:184
+msgid "Plastify"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:184
+msgid ""
+"HSL edges detection bump with a wavy reflective surface effect and variable "
+"crumple"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:185
+msgid "Plaster"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:185
+msgid ""
+"Combine a HSL edges detection bump with a matte and crumpled surface effect"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:186
+msgid "Rough transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:186
+msgid "Adds a turbulent transparency which displaces pixels at the same time"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:187
+msgid "Gouache"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:187
+msgid "Partly opaque water color effect with bleed"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:188
+msgid "Alpha engraving"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:188
+msgid "Gives a transparent engraving effect with rough line and filling"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:189
+msgid "Alpha draw, liquid"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:189
+msgid "Gives a transparent fluid drawing effect with rough line and filling"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:190
+msgid "Liquid drawing"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:190
+msgid "Gives a fluid and wavy expressionist drawing effect to images"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:191
+msgid "Marbled ink"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:191
+msgid "Marbled transparency effect which conforms to image detected edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:192
+msgid "Thick acrylic"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:192
+msgid "Thick acrylic paint texture with high texture depth"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:193
+msgid "Alpha engraving B"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:193
+msgid ""
+"Gives a controllable roughness engraving effect to bitmaps and materials"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:194
+msgid "Lapping"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:194
+msgid "Something like a water noise"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:195
+msgid "Monochrome transparency"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:195
+msgid "Convert to a colorizable transparent positive or negative"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:196
+msgid "Duotone"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:196
+msgid "Change colors to a duotone palette"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:197
+msgid "Light eraser, negative"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:197
+msgid "Like Light eraser but converts to negative"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:198
+msgid "Alpha repaint"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:198
+msgid "Repaint anything monochrome"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:199
+msgid "Saturation map"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:199
+msgid ""
+"Creates an approximative semi-transparent and colorizable image of the "
+"saturation levels"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:200
+msgid "Riddled"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:200
+msgid "Riddle the surface and add bump to images"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:201
+msgid "Wrinkled varnish"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:201
+msgid "Thick glossy and translucent paint texture with high depth"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:202
+msgid "Canvas Bumps"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:202
+msgid "Canvas texture with an HSL sensitive height map"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:203
+msgid "Canvas Bumps, matte"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:203
+msgid "Same as Canvas Bumps but with a diffuse light instead of a specular one"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:204
+msgid "Canvas Bumps alpha"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:204
+msgid "Same as Canvas Bumps but with transparent highlights"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:205
+msgid "Lightness-Contrast"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:205
+msgid "Increase or decrease lightness and contrast"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:206
+msgid "Clean edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:206
+msgid ""
+"Removes or decreases glows and jaggeries around objects edges after applying "
+"some filters"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:207
+msgid "Bright metal"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:207
+msgid "Bright metallic effect for any color"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:208
+msgid "Deep colors plastic"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:208
+msgid "Transparent plastic with deep colors"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:209
+msgid "Melted jelly, matte"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:209
+msgid "Matte bevel with blurred edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:210
+msgid "Melted jelly"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:210
+msgid "Glossy bevel with blurred edges"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:211
+msgid "Combined lighting"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:212
+msgid "Tinfoil"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:212
+msgid "Metallic foil effect combining two lighting types and variable crumple"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:213
+msgid "Copper and chocolate"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:213
+msgid ""
+"Specular bump which can be easily converted from metallic to molded plastic "
+"effects"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:214
+msgid "Inner Glow"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:214
+msgid "Adds a colorizable glow inside"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:215
+msgid "Soft colors"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:215
+msgid "Adds a colorizable edges glow inside objects and pictures"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:216
+msgid "Relief print"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:216
+msgid "Bumps effect with a bevel, color flood and complex lighting"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:217
+msgid "Growing cells"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:217
+msgid "Random rounded living cells like fill"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:218
+msgid "Fluorescence"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:218
+msgid "Oversaturate colors which can be fluorescent in real world"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:219
+msgid "Tritone"
+msgstr ""
+
+#: ../share/filters/filters.svg.h:219
+msgid "Create a tritone palette with hue selectable by flood"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:2
+msgid "Stripes 1:1"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:3
+msgid "Stripes 1:1 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:4
+msgid "Stripes 1:1.5"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:5
+msgid "Stripes 1:1.5 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:6
+msgid "Stripes 1:2"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:7
+msgid "Stripes 1:2 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:8
+msgid "Stripes 1:3"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:9
+msgid "Stripes 1:3 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:10
+msgid "Stripes 1:4"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:11
+msgid "Stripes 1:4 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:12
+msgid "Stripes 1:5"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:13
+msgid "Stripes 1:5 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:14
+msgid "Stripes 1:8"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:15
+msgid "Stripes 1:8 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:16
+msgid "Stripes 1:10"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:17
+msgid "Stripes 1:10 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:18
+msgid "Stripes 1:16"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:19
+msgid "Stripes 1:16 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:20
+msgid "Stripes 1:32"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:21
+msgid "Stripes 1:32 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:22
+msgid "Stripes 1:64"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:23
+msgid "Stripes 2:1"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:24
+msgid "Stripes 2:1 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:25
+msgid "Stripes 4:1"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:26
+msgid "Stripes 4:1 white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:27
+msgid "Checkerboard"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:28
+msgid "Checkerboard white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:29
+msgid "Packed circles"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:30
+msgid "Polka dots, small"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:31
+msgid "Polka dots, small white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:32
+msgid "Polka dots, medium"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:33
+msgid "Polka dots, medium white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:34
+msgid "Polka dots, large"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:35
+msgid "Polka dots, large white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:36
+msgid "Wavy"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:37
+msgid "Wavy white"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:38
+msgid "Camouflage"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:39
+msgid "Ermine"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:40
+msgid "Sand (bitmap)"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:41
+msgid "Cloth (bitmap)"
+msgstr ""
+
+#: ../share/patterns/patterns.svg.h:42
+msgid "Old paint (bitmap)"
+msgstr ""
+
+#: ../src/arc-context.cpp:319
+msgid ""
+"<b>Ctrl</b>: make circle or integer-ratio ellipse, snap arc/segment angle"
+msgstr ""
+
+#: ../src/arc-context.cpp:320 ../src/rect-context.cpp:362
+msgid "<b>Shift</b>: draw around the starting point"
+msgstr ""
+
+#: ../src/arc-context.cpp:471
+#, c-format
+msgid ""
+"<b>Ellipse</b>: %s &#215; %s (constrained to ratio %d:%d); with <b>Shift</b> "
+"to draw around the starting point"
+msgstr ""
+
+#: ../src/arc-context.cpp:473
+#, c-format
+msgid ""
+"<b>Ellipse</b>: %s &#215; %s; with <b>Ctrl</b> to make square or integer-"
+"ratio ellipse; with <b>Shift</b> to draw around the starting point"
+msgstr ""
+
+#: ../src/arc-context.cpp:499
+msgid "Create ellipse"
+msgstr ""
+
+#: ../src/box3d-context.cpp:429 ../src/box3d-context.cpp:436
+#: ../src/box3d-context.cpp:443 ../src/box3d-context.cpp:450
+#: ../src/box3d-context.cpp:457 ../src/box3d-context.cpp:464
+msgid "Change perspective (angle of PLs)"
+msgstr ""
+
+#. status text
+#: ../src/box3d-context.cpp:622
+msgid "<b>3D Box</b>; with <b>Shift</b> to extrude along the Z axis"
+msgstr ""
+
+#: ../src/box3d-context.cpp:650
+msgid "Create 3D box"
+msgstr ""
+
+#: ../src/box3d.cpp:315
+msgid "<b>3D Box</b>"
+msgstr ""
+
+#: ../src/connector-context.cpp:526
+msgid "Creating new connector"
+msgstr ""
+
+#: ../src/connector-context.cpp:775
+msgid "Connector endpoint drag cancelled."
+msgstr ""
+
+#: ../src/connector-context.cpp:824
+msgid "Reroute connector"
+msgstr ""
+
+#. Flush pending updates
+#: ../src/connector-context.cpp:988
+msgid "Create connector"
+msgstr ""
+
+#: ../src/connector-context.cpp:1012
+msgid "Finishing connector"
+msgstr ""
+
+#: ../src/connector-context.cpp:1154
+msgid "<b>Connection point</b>: click or drag to create a new connector"
+msgstr ""
+
+#: ../src/connector-context.cpp:1227
+msgid "<b>Connector endpoint</b>: drag to reroute or connect to new shapes"
+msgstr ""
+
+#: ../src/connector-context.cpp:1339
+msgid "Select <b>at least one non-connector object</b>."
+msgstr ""
+
+#: ../src/connector-context.cpp:1344 ../src/widgets/toolbox.cpp:6997
+msgid "Make connectors avoid selected objects"
+msgstr ""
+
+#: ../src/connector-context.cpp:1345 ../src/widgets/toolbox.cpp:7007
+msgid "Make connectors ignore selected objects"
+msgstr ""
+
+#: ../src/context-fns.cpp:36 ../src/context-fns.cpp:65
+msgid "<b>Current layer is hidden</b>. Unhide it to be able to draw on it."
+msgstr ""
+
+#: ../src/context-fns.cpp:42 ../src/context-fns.cpp:71
+msgid "<b>Current layer is locked</b>. Unlock it to be able to draw on it."
+msgstr ""
+
+#: ../src/desktop.cpp:830
+msgid "No previous zoom."
+msgstr ""
+
+#: ../src/desktop.cpp:855
+msgid "No next zoom."
+msgstr ""
+
+#: ../src/desktop-events.cpp:187
+msgid "Create guide"
+msgstr ""
+
+#: ../src/desktop-events.cpp:391
+msgid "Move guide"
+msgstr ""
+
+#: ../src/desktop-events.cpp:398 ../src/desktop-events.cpp:445
+#: ../src/ui/dialog/guides.cpp:125
+msgid "Delete guide"
+msgstr ""
+
+#: ../src/desktop-events.cpp:425
+#, c-format
+msgid "<b>Guideline</b>: %s"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:155
+msgid "<small>Nothing selected.</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:161
+msgid "<small>More than one object selected.</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:168
+#, c-format
+msgid "<small>Object has <b>%d</b> tiled clones.</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:173
+msgid "<small>Object has no tiled clones.</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:976
+msgid "Select <b>one object</b> whose tiled clones to unclump."
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:998
+msgid "Unclump tiled clones"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1028
+msgid "Select <b>one object</b> whose tiled clones to remove."
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1051
+msgid "Delete tiled clones"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1097 ../src/selection-chemistry.cpp:1883
+msgid "Select an <b>object</b> to clone."
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1103
+msgid ""
+"If you want to clone several objects, <b>group</b> them and <b>clone the "
+"group</b>."
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1112
+msgid "<small>Creating tiled clones...</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1515
+msgid "Create tiled clones"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1706
+msgid "<small>Per row:</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1719
+msgid "<small>Per column:</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1727
+msgid "<small>Randomize:</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1888
+msgid "_Symmetry"
+msgstr ""
+
+#. TRANSLATORS: For the following 17 symmetry groups, see
+#. * http://www.bib.ulb.ac.be/coursmath/doc/17.htm (visual examples);
+#. * http://www.clarku.edu/~djoyce/wallpaper/seventeen.html (English vocabulary); or
+#. * http://membres.lycos.fr/villemingerard/Geometri/Sym1D.htm (French vocabulary).
+#.
+#: ../src/dialogs/clonetiler.cpp:1896
+msgid "Select one of the 17 symmetry groups for the tiling"
+msgstr ""
+
+#. TRANSLATORS: "translation" means "shift" / "displacement" here.
+#: ../src/dialogs/clonetiler.cpp:1907
+msgid "<b>P1</b>: simple translation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1908
+msgid "<b>P2</b>: 180&#176; rotation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1909
+msgid "<b>PM</b>: reflection"
+msgstr ""
+
+#. TRANSLATORS: "glide reflection" is a reflection and a translation combined.
+#. For more info, see http://mathforum.org/sum95/suzanne/symsusan.html
+#: ../src/dialogs/clonetiler.cpp:1912
+msgid "<b>PG</b>: glide reflection"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1913
+msgid "<b>CM</b>: reflection + glide reflection"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1914
+msgid "<b>PMM</b>: reflection + reflection"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1915
+msgid "<b>PMG</b>: reflection + 180&#176; rotation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1916
+msgid "<b>PGG</b>: glide reflection + 180&#176; rotation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1917
+msgid "<b>CMM</b>: reflection + reflection + 180&#176; rotation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1918
+msgid "<b>P4</b>: 90&#176; rotation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1919
+msgid "<b>P4M</b>: 90&#176; rotation + 45&#176; reflection"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1920
+msgid "<b>P4G</b>: 90&#176; rotation + 90&#176; reflection"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1921
+msgid "<b>P3</b>: 120&#176; rotation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1922
+msgid "<b>P31M</b>: reflection + 120&#176; rotation, dense"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1923
+msgid "<b>P3M1</b>: reflection + 120&#176; rotation, sparse"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1924
+msgid "<b>P6</b>: 60&#176; rotation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1925
+msgid "<b>P6M</b>: reflection + 60&#176; rotation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1953
+msgid "S_hift"
+msgstr ""
+
+#. TRANSLATORS: "shift" means: the tiles will be shifted (offset) horizontally by this amount
+#: ../src/dialogs/clonetiler.cpp:1963
+#, no-c-format
+msgid "<b>Shift X:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1971
+#, no-c-format
+msgid "Horizontal shift per row (in % of tile width)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1979
+#, no-c-format
+msgid "Horizontal shift per column (in % of tile width)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:1986
+msgid "Randomize the horizontal shift by this percentage"
+msgstr ""
+
+#. TRANSLATORS: "shift" means: the tiles will be shifted (offset) vertically by this amount
+#: ../src/dialogs/clonetiler.cpp:1996
+#, no-c-format
+msgid "<b>Shift Y:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2004
+#, no-c-format
+msgid "Vertical shift per row (in % of tile height)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2012
+#, no-c-format
+msgid "Vertical shift per column (in % of tile height)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2019
+msgid "Randomize the vertical shift by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2027 ../src/dialogs/clonetiler.cpp:2175
+msgid "<b>Exponent:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2034
+msgid "Whether rows are spaced evenly (1), converge (<1) or diverge (>1)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2041
+msgid "Whether columns are spaced evenly (1), converge (<1) or diverge (>1)"
+msgstr ""
+
+#. TRANSLATORS: "Alternate" is a verb here
+#: ../src/dialogs/clonetiler.cpp:2049 ../src/dialogs/clonetiler.cpp:2219
+#: ../src/dialogs/clonetiler.cpp:2296 ../src/dialogs/clonetiler.cpp:2372
+#: ../src/dialogs/clonetiler.cpp:2421 ../src/dialogs/clonetiler.cpp:2552
+msgid "<small>Alternate:</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2055
+msgid "Alternate the sign of shifts for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2060
+msgid "Alternate the sign of shifts for each column"
+msgstr ""
+
+#. TRANSLATORS: "Cumulate" is a verb here
+#: ../src/dialogs/clonetiler.cpp:2067 ../src/dialogs/clonetiler.cpp:2237
+#: ../src/dialogs/clonetiler.cpp:2314
+msgid "<small>Cumulate:</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2073
+msgid "Cumulate the shifts for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2078
+msgid "Cumulate the shifts for each column"
+msgstr ""
+
+#. TRANSLATORS: "Cumulate" is a verb here
+#: ../src/dialogs/clonetiler.cpp:2085
+msgid "<small>Exclude tile:</small>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2091
+msgid "Exclude tile height in shift"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2096
+msgid "Exclude tile width in shift"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2105
+msgid "Sc_ale"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2113
+msgid "<b>Scale X:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2121
+#, no-c-format
+msgid "Horizontal scale per row (in % of tile width)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2129
+#, no-c-format
+msgid "Horizontal scale per column (in % of tile width)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2136
+msgid "Randomize the horizontal scale by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2144
+msgid "<b>Scale Y:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2152
+#, no-c-format
+msgid "Vertical scale per row (in % of tile height)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2160
+#, no-c-format
+msgid "Vertical scale per column (in % of tile height)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2167
+msgid "Randomize the vertical scale by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2182
+msgid "Whether row scaling is uniform (1), converge (<1) or diverge (>1)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2189
+msgid "Whether column scaling is uniform (1), converge (<1) or diverge (>1)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2197
+msgid "<b>Base:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2204 ../src/dialogs/clonetiler.cpp:2211
+msgid ""
+"Base for a logarithmic spiral: not used (0), converge (<1), or diverge (>1)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2225
+msgid "Alternate the sign of scales for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2230
+msgid "Alternate the sign of scales for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2243
+msgid "Cumulate the scales for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2248
+msgid "Cumulate the scales for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2257
+msgid "_Rotation"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2265
+msgid "<b>Angle:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2273
+#, no-c-format
+msgid "Rotate tiles by this angle for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2281
+#, no-c-format
+msgid "Rotate tiles by this angle for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2288
+msgid "Randomize the rotation angle by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2302
+msgid "Alternate the rotation direction for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2307
+msgid "Alternate the rotation direction for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2320
+msgid "Cumulate the rotation for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2325
+msgid "Cumulate the rotation for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2334
+msgid "_Blur & opacity"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2343
+msgid "<b>Blur:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2350
+msgid "Blur tiles by this percentage for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2357
+msgid "Blur tiles by this percentage for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2364
+msgid "Randomize the tile blur by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2378
+msgid "Alternate the sign of blur change for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2383
+msgid "Alternate the sign of blur change for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2392
+msgid "<b>Fade out:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2399
+msgid "Decrease tile opacity by this percentage for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2406
+msgid "Decrease tile opacity by this percentage for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2413
+msgid "Randomize the tile opacity by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2427
+msgid "Alternate the sign of opacity change for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2432
+msgid "Alternate the sign of opacity change for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2440
+msgid "Co_lor"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2445
+msgid "Initial color: "
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2449
+msgid "Initial color of tiled clones"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2449
+msgid ""
+"Initial color for clones (works only if the original has unset fill or "
+"stroke)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2464
+msgid "<b>H:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2471
+msgid "Change the tile hue by this percentage for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2478
+msgid "Change the tile hue by this percentage for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2485
+msgid "Randomize the tile hue by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2494
+msgid "<b>S:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2501
+msgid "Change the color saturation by this percentage for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2508
+msgid "Change the color saturation by this percentage for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2515
+msgid "Randomize the color saturation by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2523
+msgid "<b>L:</b>"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2530
+msgid "Change the color lightness by this percentage for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2537
+msgid "Change the color lightness by this percentage for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2544
+msgid "Randomize the color lightness by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2558
+msgid "Alternate the sign of color changes for each row"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2563
+msgid "Alternate the sign of color changes for each column"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2571
+msgid "_Trace"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2578
+msgid "Trace the drawing under the tiles"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2582
+msgid ""
+"For each clone, pick a value from the drawing in that clone's location and "
+"apply it to the clone"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2596
+msgid "1. Pick from the drawing:"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2608
+msgid "Pick the visible color and opacity"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2615 ../src/dialogs/clonetiler.cpp:2764
+#: ../src/extension/internal/bitmap/opacity.cpp:37
+#: ../src/extension/internal/bitmap/opacity.cpp:39
+#: ../src/widgets/toolbox.cpp:4326 ../share/extensions/interp_att_g.inx.h:12
+msgid "Opacity"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2616
+msgid "Pick the total accumulated opacity"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2623
+msgid "R"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2624
+msgid "Pick the Red component of the color"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2631
+msgid "G"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2632
+msgid "Pick the Green component of the color"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2639
+msgid "B"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2640
+msgid "Pick the Blue component of the color"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/dialogs/clonetiler.cpp:2649
+msgid "clonetiler|H"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2650
+msgid "Pick the hue of the color"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/dialogs/clonetiler.cpp:2659
+msgid "clonetiler|S"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2660
+msgid "Pick the saturation of the color"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/dialogs/clonetiler.cpp:2669
+msgid "clonetiler|L"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2670
+msgid "Pick the lightness of the color"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2680
+msgid "2. Tweak the picked value:"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2690
+msgid "Gamma-correct:"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2695
+msgid "Shift the mid-range of the picked value upwards (>0) or downwards (<0)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2702
+msgid "Randomize:"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2707
+msgid "Randomize the picked value by this percentage"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2714
+msgid "Invert:"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2718
+msgid "Invert the picked value"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2724
+msgid "3. Apply the value to the clones':"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2734
+msgid "Presence"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2737
+msgid ""
+"Each clone is created with the probability determined by the picked value in "
+"that point"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2744
+msgid "Size"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2747
+msgid "Each clone's size is determined by the picked value in that point"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2757
+msgid ""
+"Each clone is painted by the picked color (the original must have unset fill "
+"or stroke)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2767
+msgid "Each clone's opacity is determined by the picked value in that point"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2794
+msgid "How many rows in the tiling"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2814
+msgid "How many columns in the tiling"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2844
+msgid "Width of the rectangle to be filled"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2869
+msgid "Height of the rectangle to be filled"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2884
+msgid "Rows, columns: "
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2885
+msgid "Create the specified number of rows and columns"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2894
+msgid "Width, height: "
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2895
+msgid "Fill the specified width and height with the tiling"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2911
+msgid "Use saved size and position of the tile"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2914
+msgid ""
+"Pretend that the size and position of the tile are the same as the last time "
+"you tiled it (if any), instead of using the current size"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2938
+msgid " <b>_Create</b> "
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2940
+msgid "Create and tile the clones of the selection"
+msgstr ""
+
+#. TRANSLATORS: if a group of objects are "clumped" together, then they
+#. are unevenly spread in the given amount of space - as shown in the
+#. diagrams on the left in the following screenshot:
+#. http://www.inkscape.org/screenshots/gallery/inkscape-0.42-CVS-tiles-unclump.png
+#. So unclumping is the process of spreading a number of objects out more evenly.
+#: ../src/dialogs/clonetiler.cpp:2955
+msgid " _Unclump "
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2956
+msgid "Spread out clones to reduce clumping; can be applied repeatedly"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2962
+msgid " Re_move "
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2963
+msgid "Remove existing tiled clones of the selected object (siblings only)"
+msgstr ""
+
+#: ../src/dialogs/clonetiler.cpp:2979
+msgid " R_eset "
+msgstr ""
+
+#. TRANSLATORS: "change" is a noun here
+#: ../src/dialogs/clonetiler.cpp:2981
+msgid ""
+"Reset all shifts, scales, rotates, opacity and color changes in the dialog "
+"to zero"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:146 ../src/verbs.cpp:2623
+msgid "_Page"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:146 ../src/verbs.cpp:2627
+msgid "_Drawing"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:146 ../src/verbs.cpp:2629
+msgid "_Selection"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:146
+msgid "_Custom"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:271
+msgid "<big><b>Export area</b></big>"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:285
+msgid "Units:"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:313
+msgid "_x0:"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:318
+msgid "x_1:"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:323
+msgid "Wid_th:"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:329
+msgid "_y0:"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:334
+msgid "y_1:"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:339
+msgid "Hei_ght:"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:471
+msgid "<big><b>Bitmap size</b></big>"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:484 ../src/ui/widget/page-sizer.cpp:230
+msgid "_Width:"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:484 ../src/dialogs/export.cpp:498
+msgid "pixels at"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:492
+msgid "dp_i"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:498 ../src/ui/widget/page-sizer.cpp:231
+msgid "_Height:"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:509 ../src/ui/dialog/inkscape-preferences.cpp:768
+#: ../src/ui/dialog/inkscape-preferences.cpp:1180
+msgid "dpi"
+msgstr ""
+
+#. true = has mnemonic
+#: ../src/dialogs/export.cpp:520
+msgid "<big><b>_Filename</b></big>"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:590
+msgid "_Browse..."
+msgstr ""
+
+#: ../src/dialogs/export.cpp:619
+msgid "Batch export all selected objects"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:623
+msgid ""
+"Export each selected object into its own PNG file, using export hints if any "
+"(caution, overwrites without asking!)"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:631
+msgid "Hide all except selected"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:635
+msgid "In the exported image, hide all objects except those that are selected"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:652
+msgid "_Export"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:656
+msgid "Export the bitmap file with these settings"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:682
+#, c-format
+msgid "Batch export %d selected object"
+msgid_plural "Batch export %d selected objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/dialogs/export.cpp:1013
+msgid "Export in progress"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:1101
+#, c-format
+msgid "Exporting %d files"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:1145 ../src/dialogs/export.cpp:1222
+#, c-format
+msgid "Could not export to filename %s.\n"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:1175
+msgid "You have to enter a filename"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:1180
+msgid "The chosen area to be exported is invalid"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:1195
+#, c-format
+msgid "Directory %s does not exist or is not a directory.\n"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:1207
+#, c-format
+msgid "Exporting %s (%lu x %lu)"
+msgstr ""
+
+#: ../src/dialogs/export.cpp:1331 ../src/dialogs/export.cpp:1366
+msgid "Select a filename for exporting"
+msgstr ""
+
+#. TRANSLATORS: "%s" is replaced with "exact" or "partial" when this string is displayed
+#: ../src/dialogs/find.cpp:362 ../src/ui/dialog/find.cpp:437
+#, c-format
+msgid "<b>%d</b> object found (out of <b>%d</b>), %s match."
+msgid_plural "<b>%d</b> objects found (out of <b>%d</b>), %s match."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/dialogs/find.cpp:365 ../src/ui/dialog/find.cpp:440
+msgid "exact"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:365 ../src/ui/dialog/find.cpp:440
+msgid "partial"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:372 ../src/ui/dialog/find.cpp:447
+msgid "No objects found"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:530
+msgid "T_ype: "
+msgstr ""
+
+#: ../src/dialogs/find.cpp:537 ../src/ui/dialog/find.cpp:69
+msgid "Search in all object types"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:537 ../src/ui/dialog/find.cpp:69
+msgid "All types"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:548 ../src/ui/dialog/find.cpp:70
+msgid "Search all shapes"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:548 ../src/ui/dialog/find.cpp:70
+msgid "All shapes"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:565 ../src/ui/dialog/find.cpp:71
+msgid "Search rectangles"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:565 ../src/ui/dialog/find.cpp:71
+msgid "Rectangles"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:570 ../src/ui/dialog/find.cpp:72
+msgid "Search ellipses, arcs, circles"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:570 ../src/ui/dialog/find.cpp:72
+msgid "Ellipses"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:575 ../src/ui/dialog/find.cpp:73
+msgid "Search stars and polygons"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:575 ../src/ui/dialog/find.cpp:73
+msgid "Stars"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:580 ../src/ui/dialog/find.cpp:74
+msgid "Search spirals"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:580 ../src/ui/dialog/find.cpp:74
+msgid "Spirals"
+msgstr ""
+
+#. TRANSLATORS: polyline is a set of connected straight line segments
+#. http://www.w3.org/TR/SVG11/shapes.html#PolylineElement
+#: ../src/dialogs/find.cpp:593 ../src/ui/dialog/find.cpp:75
+msgid "Search paths, lines, polylines"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:593 ../src/ui/dialog/find.cpp:75
+#: ../src/widgets/toolbox.cpp:2091
+msgid "Paths"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:598 ../src/ui/dialog/find.cpp:76
+msgid "Search text objects"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:598 ../src/ui/dialog/find.cpp:76
+msgid "Texts"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:603 ../src/ui/dialog/find.cpp:77
+msgid "Search groups"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:603 ../src/ui/dialog/find.cpp:77
+msgid "Groups"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:608 ../src/ui/dialog/find.cpp:82
+msgid "Search clones"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "Clones" is a noun indicating type of object to find
+#: ../src/dialogs/find.cpp:612 ../src/ui/dialog/find.cpp:82
+msgid "find|Clones"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:617 ../src/ui/dialog/find.cpp:83
+msgid "Search images"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:617 ../src/ui/dialog/find.cpp:83
+#: ../share/extensions/embedimage.inx.h:3
+#: ../share/extensions/extractimage.inx.h:2
+msgid "Images"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:622 ../src/ui/dialog/find.cpp:84
+msgid "Search offset objects"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:622 ../src/ui/dialog/find.cpp:84
+msgid "Offsets"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:687 ../src/ui/dialog/find.cpp:60
+msgid "_Text: "
+msgstr ""
+
+#: ../src/dialogs/find.cpp:687 ../src/ui/dialog/find.cpp:60
+msgid "Find objects by their text content (exact or partial match)"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:688 ../src/ui/dialog/find.cpp:61
+msgid "_ID: "
+msgstr ""
+
+#: ../src/dialogs/find.cpp:688 ../src/ui/dialog/find.cpp:61
+msgid "Find objects by the value of the id attribute (exact or partial match)"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:689 ../src/ui/dialog/find.cpp:62
+msgid "_Style: "
+msgstr ""
+
+#: ../src/dialogs/find.cpp:689 ../src/ui/dialog/find.cpp:62
+msgid ""
+"Find objects by the value of the style attribute (exact or partial match)"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:690 ../src/ui/dialog/find.cpp:63
+msgid "_Attribute: "
+msgstr ""
+
+#: ../src/dialogs/find.cpp:690 ../src/ui/dialog/find.cpp:63
+msgid "Find objects by the name of an attribute (exact or partial match)"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:704 ../src/ui/dialog/find.cpp:64
+msgid "Search in s_election"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:708 ../src/ui/dialog/find.cpp:64
+msgid "Limit search to the current selection"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:713 ../src/ui/dialog/find.cpp:65
+msgid "Search in current _layer"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:717 ../src/ui/dialog/find.cpp:65
+msgid "Limit search to the current layer"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:722 ../src/ui/dialog/find.cpp:66
+msgid "Include _hidden"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:726 ../src/ui/dialog/find.cpp:66
+msgid "Include hidden objects in search"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:731 ../src/ui/dialog/find.cpp:67
+msgid "Include l_ocked"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:735 ../src/ui/dialog/find.cpp:67
+msgid "Include locked objects in search"
+msgstr ""
+
+#. TRANSLATORS: "Clear" is a verb here
+#: ../src/dialogs/find.cpp:746 ../src/ui/dialog/debug.cpp:75
+#: ../src/ui/dialog/find.cpp:86 ../src/ui/dialog/messages.cpp:53
+#: ../src/ui/dialog/scriptdialog.cpp:209
+msgid "_Clear"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:746 ../src/ui/dialog/find.cpp:86
+msgid "Clear values"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:747 ../src/ui/dialog/find.cpp:87
+msgid "_Find"
+msgstr ""
+
+#: ../src/dialogs/find.cpp:747 ../src/ui/dialog/find.cpp:87
+msgid "Select objects matching all of the fields you filled in"
+msgstr ""
+
+#. Create the label for the object id
+#: ../src/dialogs/item-properties.cpp:120
+#: ../src/dialogs/item-properties.cpp:334
+#: ../src/dialogs/item-properties.cpp:443
+#: ../src/dialogs/item-properties.cpp:450
+msgid "_Id"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:129
+msgid ""
+"The id= attribute (only letters, digits, and the characters .-_: allowed)"
+msgstr ""
+
+#. Button for setting the object's id, label, title and description.
+#: ../src/dialogs/item-properties.cpp:143 ../src/verbs.cpp:2486
+#: ../src/verbs.cpp:2492
+msgid "_Set"
+msgstr ""
+
+#. Create the label for the object label
+#: ../src/dialogs/item-properties.cpp:152
+msgid "_Label"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:161
+msgid "A freeform label for the object"
+msgstr ""
+
+#. Create the label for the object title
+#: ../src/dialogs/item-properties.cpp:173
+msgid "_Title"
+msgstr ""
+
+#. Create the frame for the object description
+#: ../src/dialogs/item-properties.cpp:191
+msgid "_Description"
+msgstr ""
+
+#. Hide
+#: ../src/dialogs/item-properties.cpp:222
+msgid "_Hide"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:223
+msgid "Check to make the object invisible"
+msgstr ""
+
+#. Lock
+#. TRANSLATORS: "Lock" is a verb here
+#: ../src/dialogs/item-properties.cpp:232
+msgid "L_ock"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:233
+msgid "Check to make the object insensitive (not selectable by mouse)"
+msgstr ""
+
+#. Create the frame for interactivity options
+#: ../src/dialogs/item-properties.cpp:243
+msgid "_Interactivity"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:317
+#: ../src/dialogs/item-properties.cpp:324
+msgid "Ref"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:402
+msgid "Lock object"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:402
+msgid "Unlock object"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:421
+msgid "Hide object"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:421
+msgid "Unhide object"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:445
+msgid "Id invalid! "
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:447
+msgid "Id exists! "
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:454
+msgid "Set object ID"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:469
+msgid "Set object label"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:477
+msgid "Set object title"
+msgstr ""
+
+#: ../src/dialogs/item-properties.cpp:487
+msgid "Set object description"
+msgstr ""
+
+#: ../src/dialogs/object-attributes.cpp:32
+msgid "Href:"
+msgstr ""
+
+#. default x:
+#. default y:
+#: ../src/dialogs/object-attributes.cpp:33
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2191
+msgid "Target:"
+msgstr ""
+
+#. _settings->add_checkbutton(false, SP_ATTR_STITCHTILES, _("Stitch Tiles"), "stitch", "noStitch");
+#: ../src/dialogs/object-attributes.cpp:34
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2168
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2246
+msgid "Type:"
+msgstr ""
+
+#. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkRoleAttribute
+#. Identifies the type of the related resource with an absolute URI
+#: ../src/dialogs/object-attributes.cpp:37
+msgid "Role:"
+msgstr ""
+
+#. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkArcRoleAttribute
+#. For situations where the nature/role alone isn't enough, this offers an additional URI defining the purpose of the link.
+#: ../src/dialogs/object-attributes.cpp:40
+msgid "Arcrole:"
+msgstr ""
+
+#. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkTitleAttribute
+#: ../src/dialogs/object-attributes.cpp:42
+msgid "Title:"
+msgstr ""
+
+#: ../src/dialogs/object-attributes.cpp:43
+#: ../share/extensions/polyhedron_3d.inx.h:36
+msgid "Show:"
+msgstr ""
+
+#. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/linking.html#AElementXLinkActuateAttribute
+#: ../src/dialogs/object-attributes.cpp:45
+msgid "Actuate:"
+msgstr ""
+
+#: ../src/dialogs/object-attributes.cpp:50
+msgid "URL:"
+msgstr ""
+
+#: ../src/dialogs/object-attributes.cpp:51
+#: ../src/dialogs/object-attributes.cpp:59 ../src/ui/dialog/guides.cpp:43
+#: ../src/ui/view/edit-widget.cpp:1074 ../src/widgets/desktop-widget.cpp:504
+#: ../src/widgets/toolbox.cpp:1472
+msgid "X:"
+msgstr ""
+
+#: ../src/dialogs/object-attributes.cpp:52
+#: ../src/dialogs/object-attributes.cpp:60 ../src/ui/dialog/guides.cpp:44
+#: ../src/ui/view/edit-widget.cpp:1075 ../src/widgets/desktop-widget.cpp:507
+#: ../src/widgets/toolbox.cpp:1490
+msgid "Y:"
+msgstr ""
+
+#: ../src/dialogs/object-attributes.cpp:53
+#: ../src/dialogs/object-attributes.cpp:61 ../src/widgets/toolbox.cpp:4124
+#: ../src/widgets/toolbox.cpp:4715 ../src/widgets/toolbox.cpp:5734
+msgid "Width:"
+msgstr ""
+
+#: ../src/dialogs/object-attributes.cpp:54
+#: ../src/dialogs/object-attributes.cpp:62
+msgid "Height:"
+msgstr ""
+
+#: ../src/dialogs/object-attributes.cpp:106
+#, c-format
+msgid "%s Properties"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:444
+#, c-format
+msgid "<b>Finished</b>, <b>%d</b> words added to dictionary"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:446
+#, c-format
+msgid "<b>Finished</b>, nothing suspicious found"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:559
+#, c-format
+msgid "Not in dictionary (%s): <b>%s</b>"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:711
+msgid "<i>Checking...</i>"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:781
+msgid "Fix spelling"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:955
+msgid "Suggestions:"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:967
+msgid "_Accept"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:967
+msgid "Accept the chosen suggestion"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:969
+msgid "_Ignore once"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:969
+msgid "Ignore this word only once"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:971
+msgid "_Ignore"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:971
+msgid "Ignore this word in this session"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:978
+msgid "A_dd to dictionary:"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:978
+msgid "Add this word to the chosen dictionary"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:1002
+msgid "_Stop"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:1002
+msgid "Stop the check"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:1004
+msgid "_Start"
+msgstr ""
+
+#: ../src/dialogs/spellcheck.cpp:1004
+msgid "Start the check"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:198
+msgid "Font"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:221 ../share/extensions/svgcalendar.inx.h:12
+msgid "Layout"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:235
+msgid "Align lines left"
+msgstr ""
+
+#. TRANSLATORS: `Center' here is a verb.
+#: ../src/dialogs/text-edit.cpp:250
+msgid "Center lines"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:264
+msgid "Align lines right"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:278
+msgid "Justify lines"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:300 ../src/widgets/toolbox.cpp:6804
+msgid "Horizontal text"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:314 ../src/widgets/toolbox.cpp:6816
+msgid "Vertical text"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:329
+msgid "Line spacing:"
+msgstr ""
+
+#. Text
+#: ../src/dialogs/text-edit.cpp:375 ../src/selection-describer.cpp:69
+#: ../src/ui/dialog/inkscape-preferences.cpp:522 ../src/verbs.cpp:2522
+#: ../share/extensions/lorem_ipsum.inx.h:5
+#: ../share/extensions/render_alphabetsoup.inx.h:5
+#: ../share/extensions/text_braille.inx.h:2
+#: ../share/extensions/text_flipcase.inx.h:1
+#: ../share/extensions/text_lowercase.inx.h:1
+#: ../share/extensions/text_randomcase.inx.h:1
+#: ../share/extensions/text_replace.inx.h:4
+#: ../share/extensions/text_sentencecase.inx.h:2
+#: ../share/extensions/text_titlecase.inx.h:1
+#: ../share/extensions/text_uppercase.inx.h:1
+msgid "Text"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:422
+msgid "Set as default"
+msgstr ""
+
+#: ../src/dialogs/text-edit.cpp:665 ../src/text-context.cpp:1493
+msgid "Set text style"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:152
+msgid "<b>Click</b> to select nodes, <b>drag</b> to rearrange."
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:163
+msgid "<b>Click</b> attribute to edit."
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:167
+#, c-format
+msgid ""
+"Attribute <b>%s</b> selected. Press <b>Ctrl+Enter</b> when done editing to "
+"commit changes."
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:263
+msgid "Drag to reorder nodes"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:283
+msgid "New element node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:305
+msgid "New text node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:326 ../src/dialogs/xml-tree.cpp:1409
+#: ../src/nodepath.cpp:2249
+msgid "Duplicate node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:347
+msgid "nodeAsInXMLdialogTooltip|Delete node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:363 ../src/dialogs/xml-tree.cpp:1571
+msgid "Unindent node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:378 ../src/dialogs/xml-tree.cpp:1550
+msgid "Indent node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:390 ../src/dialogs/xml-tree.cpp:1503
+msgid "Raise node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:402 ../src/dialogs/xml-tree.cpp:1520
+msgid "Lower node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:447 ../src/dialogs/xml-tree.cpp:1444
+msgid "Delete attribute"
+msgstr ""
+
+#. TRANSLATORS: "Attribute" is a noun here
+#: ../src/dialogs/xml-tree.cpp:492
+msgid "Attribute name"
+msgstr ""
+
+#. TRANSLATORS: "Set" is a verb here
+#: ../src/dialogs/xml-tree.cpp:512 ../src/widgets/sp-attribute-widget.cpp:158
+#: ../src/widgets/sp-attribute-widget.cpp:765
+msgid "Set attribute"
+msgstr ""
+
+#. TRANSLATORS: "Set" is a verb here
+#: ../src/dialogs/xml-tree.cpp:514
+msgid "Set"
+msgstr ""
+
+#. TRANSLATORS: "Attribute" is a noun here
+#: ../src/dialogs/xml-tree.cpp:537
+msgid "Attribute value"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:874
+msgid "Drag XML subtree"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:1311
+msgid "New element node..."
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:1333
+msgid "Cancel"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:1341
+msgid "Create"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:1375
+msgid "Create new element node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:1391
+msgid "Create new text node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:1426
+msgid "nodeAsInXMLinHistoryDialog|Delete node"
+msgstr ""
+
+#: ../src/dialogs/xml-tree.cpp:1473
+msgid "Change attribute"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:396 ../src/display/canvas-grid.cpp:670
+msgid "Grid _units:"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:398 ../src/display/canvas-grid.cpp:672
+msgid "_Origin X:"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:398 ../src/display/canvas-grid.cpp:672
+#: ../src/ui/dialog/inkscape-preferences.cpp:978
+#: ../src/ui/dialog/inkscape-preferences.cpp:999
+msgid "X coordinate of grid origin"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:400 ../src/display/canvas-grid.cpp:674
+msgid "O_rigin Y:"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:400 ../src/display/canvas-grid.cpp:674
+#: ../src/ui/dialog/inkscape-preferences.cpp:979
+#: ../src/ui/dialog/inkscape-preferences.cpp:1000
+msgid "Y coordinate of grid origin"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:402 ../src/display/canvas-grid.cpp:678
+msgid "Spacing _Y:"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:402
+#: ../src/ui/dialog/inkscape-preferences.cpp:1002
+msgid "Base length of z-axis"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:404
+#: ../src/ui/dialog/inkscape-preferences.cpp:1005
+#: ../src/widgets/toolbox.cpp:3422
+msgid "Angle X:"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:404
+#: ../src/ui/dialog/inkscape-preferences.cpp:1005
+msgid "Angle of x-axis"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:406
+#: ../src/ui/dialog/inkscape-preferences.cpp:1006
+#: ../src/widgets/toolbox.cpp:3501
+msgid "Angle Z:"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:406
+#: ../src/ui/dialog/inkscape-preferences.cpp:1006
+msgid "Angle of z-axis"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:410 ../src/display/canvas-grid.cpp:682
+msgid "Grid line _color:"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:410 ../src/display/canvas-grid.cpp:682
+msgid "Grid line color"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:410 ../src/display/canvas-grid.cpp:682
+msgid "Color of grid lines"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:415 ../src/display/canvas-grid.cpp:687
+msgid "Ma_jor grid line color:"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:415 ../src/display/canvas-grid.cpp:687
+msgid "Major grid line color"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:416 ../src/display/canvas-grid.cpp:688
+msgid "Color of the major (highlighted) grid lines"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:420 ../src/display/canvas-grid.cpp:692
+msgid "_Major grid line every:"
+msgstr ""
+
+#: ../src/display/canvas-axonomgrid.cpp:420 ../src/display/canvas-grid.cpp:692
+msgid "lines"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:39
+msgid "Rectangular grid"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:40
+msgid "Axonometric grid"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:258
+msgid "Create new grid"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:324
+msgid "_Enabled"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:325
+msgid ""
+"Determines whether to snap to this grid or not. Can be 'on' for invisible "
+"grids."
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:329
+msgid "Snap to visible _grid lines only"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:330
+msgid ""
+"When zoomed out, not all grid lines will be displayed. Only the visible ones "
+"will be snapped to"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:334
+msgid "_Visible"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:335
+msgid ""
+"Determines whether the grid is displayed or not. Objects are still snapped "
+"to invisible grids."
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:676
+msgid "Spacing _X:"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:676
+#: ../src/ui/dialog/inkscape-preferences.cpp:982
+msgid "Distance between vertical grid lines"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:678
+#: ../src/ui/dialog/inkscape-preferences.cpp:983
+msgid "Distance between horizontal grid lines"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:711
+msgid "_Show dots instead of lines"
+msgstr ""
+
+#: ../src/display/canvas-grid.cpp:712
+msgid "If set, displays dots at gridpoints instead of gridlines"
+msgstr ""
+
+#. TRANSLATORS: undefined target for snapping
+#: ../src/display/snap-indicator.cpp:60 ../src/display/snap-indicator.cpp:63
+#: ../src/display/snap-indicator.cpp:148 ../src/display/snap-indicator.cpp:151
+msgid "UNDEFINED"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:66
+msgid "grid line"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:69
+msgid "grid intersection"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:72
+msgid "guide"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:75
+msgid "guide intersection"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:78
+msgid "guide origin"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:81
+msgid "grid-guide intersection"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:84
+msgid "cusp node"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:87
+msgid "smooth node"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:90
+msgid "path"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:93
+msgid "path intersection"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:96
+msgid "bounding box corner"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:99
+msgid "bounding box side"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:102
+msgid "bounding box"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:105
+msgid "page border"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:108
+msgid "line midpoint"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:111
+msgid "object midpoint"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:114
+msgid "object rotation center"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:117
+msgid "handle"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:120
+msgid "bounding box side midpoint"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:123
+msgid "bounding box midpoint"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:126
+msgid "page corner"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:129
+msgid "convex hull corner"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:132
+msgid "quadrant point"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:135
+msgid "center"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:138
+msgid "corner"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:141
+msgid "text baseline"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:154
+msgid "Bounding box corner"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:157
+msgid "Bounding box midpoint"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:160
+msgid "Bounding box side midpoint"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:163
+msgid "Smooth node"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:166
+msgid "Cusp node"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:169
+msgid "Line midpoint"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:172
+msgid "Object midpoint"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:175
+msgid "Object rotation center"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:178
+msgid "Handle"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:181
+msgid "Path intersection"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:184
+msgid "Guide"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:187
+msgid "Guide origin"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:190
+msgid "Convex hull corner"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:193
+msgid "Quadrant point"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:196 ../src/widgets/toolbox.cpp:6734
+msgid "Center"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:199
+msgid "Corner"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:202
+msgid "Text baseline"
+msgstr ""
+
+#: ../src/display/snap-indicator.cpp:241
+msgid " to "
+msgstr ""
+
+#: ../src/document.cpp:445
+#, c-format
+msgid "New document %d"
+msgstr ""
+
+#: ../src/document.cpp:477
+#, c-format
+msgid "Memory document %d"
+msgstr ""
+
+#: ../src/document.cpp:632
+#, c-format
+msgid "Unnamed document %d"
+msgstr ""
+
+#. We hit green anchor, closing Green-Blue-Red
+#: ../src/draw-context.cpp:581
+msgid "Path is closed."
+msgstr ""
+
+#. We hit bot start and end of single curve, closing paths
+#: ../src/draw-context.cpp:596
+msgid "Closing path."
+msgstr ""
+
+#: ../src/draw-context.cpp:706
+msgid "Draw path"
+msgstr ""
+
+#: ../src/draw-context.cpp:867
+msgid "Creating single dot"
+msgstr ""
+
+#: ../src/draw-context.cpp:868
+msgid "Create single dot"
+msgstr ""
+
+#. alpha of color under cursor, to show in the statusbar
+#. locale-sensitive printf is OK, since this goes to the UI, not into SVG
+#: ../src/dropper-context.cpp:302
+#, c-format
+msgid " alpha %.3g"
+msgstr ""
+
+#. where the color is picked, to show in the statusbar
+#: ../src/dropper-context.cpp:304
+#, c-format
+msgid ", averaged with radius %d"
+msgstr ""
+
+#: ../src/dropper-context.cpp:304
+#, c-format
+msgid " under cursor"
+msgstr ""
+
+#. message, to show in the statusbar
+#: ../src/dropper-context.cpp:306
+msgid "<b>Release mouse</b> to set color."
+msgstr ""
+
+#: ../src/dropper-context.cpp:306 ../src/tools-switch.cpp:208
+msgid ""
+"<b>Click</b> to set fill, <b>Shift+click</b> to set stroke; <b>drag</b> to "
+"average color in area; with <b>Alt</b> to pick inverse color; <b>Ctrl+C</b> "
+"to copy the color under mouse to clipboard"
+msgstr ""
+
+#: ../src/dropper-context.cpp:344
+msgid "Set picked color"
+msgstr ""
+
+#: ../src/dyna-draw-context.cpp:615
+msgid ""
+"<b>Guide path selected</b>; start drawing along the guide with <b>Ctrl</b>"
+msgstr ""
+
+#: ../src/dyna-draw-context.cpp:617
+msgid "<b>Select a guide path</b> to track with <b>Ctrl</b>"
+msgstr ""
+
+#: ../src/dyna-draw-context.cpp:752
+msgid "Tracking: <b>connection to guide path lost!</b>"
+msgstr ""
+
+#: ../src/dyna-draw-context.cpp:752
+msgid "<b>Tracking</b> a guide path"
+msgstr ""
+
+#: ../src/dyna-draw-context.cpp:755
+msgid "<b>Drawing</b> a calligraphic stroke"
+msgstr ""
+
+#: ../src/dyna-draw-context.cpp:1044
+msgid "Draw calligraphic stroke"
+msgstr ""
+
+#: ../src/eraser-context.cpp:527
+msgid "<b>Drawing</b> an eraser stroke"
+msgstr ""
+
+#: ../src/eraser-context.cpp:830
+msgid "Draw eraser stroke"
+msgstr ""
+
+#: ../src/event-context.cpp:618
+msgid "<b>Space+mouse drag</b> to pan canvas"
+msgstr ""
+
+#: ../src/event-log.cpp:37
+msgid "[Unchanged]"
+msgstr ""
+
+#. Edit
+#: ../src/event-log.cpp:264 ../src/event-log.cpp:267 ../src/verbs.cpp:2276
+msgid "_Undo"
+msgstr ""
+
+#: ../src/event-log.cpp:274 ../src/event-log.cpp:278 ../src/verbs.cpp:2278
+msgid "_Redo"
+msgstr ""
+
+#: ../src/extension/dependency.cpp:246
+msgid "Dependency:"
+msgstr ""
+
+#: ../src/extension/dependency.cpp:247
+msgid "  type: "
+msgstr ""
+
+#: ../src/extension/dependency.cpp:248
+msgid "  location: "
+msgstr ""
+
+#: ../src/extension/dependency.cpp:249
+msgid "  string: "
+msgstr ""
+
+#: ../src/extension/dependency.cpp:252
+msgid "  description: "
+msgstr ""
+
+#: ../src/extension/effect.cpp:39
+msgid " (No preferences)"
+msgstr ""
+
+#. This is some filler text, needs to change before relase
+#: ../src/extension/error-file.cpp:53
+msgid ""
+"<span weight=\"bold\" size=\"larger\">One or more extensions failed to load</"
+"span>\n"
+"\n"
+"The failed extensions have been skipped.  Inkscape will continue to run "
+"normally but those extensions will be unavailable.  For details to "
+"troubleshoot this problem, please refer to the error log located at: "
+msgstr ""
+
+#: ../src/extension/error-file.cpp:63
+msgid "Show dialog on startup"
+msgstr ""
+
+#: ../src/extension/execution-env.cpp:134
+#, c-format
+msgid "'%s' working, please wait..."
+msgstr ""
+
+#. static int i = 0;
+#. std::cout << "Checking module[" << i++ << "]: " << name << std::endl;
+#: ../src/extension/extension.cpp:252
+msgid ""
+"  This is caused by an improper .inx file for this extension.  An improper ."
+"inx file could have been caused by a faulty installation of Inkscape."
+msgstr ""
+
+#: ../src/extension/extension.cpp:255
+msgid "an ID was not defined for it."
+msgstr ""
+
+#: ../src/extension/extension.cpp:259
+msgid "there was no name defined for it."
+msgstr ""
+
+#: ../src/extension/extension.cpp:263
+msgid "the XML description of it got lost."
+msgstr ""
+
+#: ../src/extension/extension.cpp:267
+msgid "no implementation was defined for the extension."
+msgstr ""
+
+#. std::cout << "Failed: " << *(_deps[i]) << std::endl;
+#: ../src/extension/extension.cpp:274
+msgid "a dependency was not met."
+msgstr ""
+
+#: ../src/extension/extension.cpp:294
+msgid "Extension \""
+msgstr ""
+
+#: ../src/extension/extension.cpp:294
+msgid "\" failed to load because "
+msgstr ""
+
+#: ../src/extension/extension.cpp:625
+#, c-format
+msgid "Could not create extension error log file '%s'"
+msgstr ""
+
+#: ../src/extension/extension.cpp:723
+msgid "Name:"
+msgstr ""
+
+#: ../src/extension/extension.cpp:724
+msgid "ID:"
+msgstr ""
+
+#: ../src/extension/extension.cpp:725
+msgid "State:"
+msgstr ""
+
+#: ../src/extension/extension.cpp:725
+msgid "Loaded"
+msgstr ""
+
+#: ../src/extension/extension.cpp:725
+msgid "Unloaded"
+msgstr ""
+
+#: ../src/extension/extension.cpp:725
+msgid "Deactivated"
+msgstr ""
+
+#: ../src/extension/extension.cpp:756
+msgid ""
+"Currently there is no help available for this Extension.  Please look on the "
+"Inkscape website or ask on the mailing lists if you have questions regarding "
+"this extension."
+msgstr ""
+
+#: ../src/extension/implementation/script.cpp:1060
+msgid ""
+"Inkscape has received additional data from the script executed.  The script "
+"did not return an error, but this may indicate the results will not be as "
+"expected."
+msgstr ""
+
+#: ../src/extension/init.cpp:274
+msgid "Null external module directory name.  Modules will not be loaded."
+msgstr ""
+
+#: ../src/extension/init.cpp:288
+#: ../src/extension/internal/filter/filter-file.cpp:56
+#, c-format
+msgid ""
+"Modules directory (%s) is unavailable.  External modules in that directory "
+"will not be loaded."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:38
+msgid "Adaptive Threshold"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:40
+#: ../src/extension/internal/bitmap/raise.cpp:41
+#: ../src/extension/internal/bitmap/sample.cpp:40
+#: ../src/extension/internal/bluredge.cpp:136 ../src/libgdl/gdl-dock.c:190
+#: ../src/libgdl/gdl-dock-placeholder.c:169
+#: ../src/live_effects/lpe-bendpath.cpp:56
+#: ../src/live_effects/lpe-patternalongpath.cpp:64
+#: ../src/widgets/toolbox.cpp:3095 ../src/widgets/toolbox.cpp:4124
+#: ../share/extensions/foldablebox.inx.h:9
+#: ../share/extensions/interp_att_g.inx.h:26
+msgid "Width"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:41
+#: ../src/extension/internal/bitmap/raise.cpp:42
+#: ../src/extension/internal/bitmap/sample.cpp:41 ../src/libgdl/gdl-dock.c:198
+#: ../src/libgdl/gdl-dock-placeholder.c:177 ../src/widgets/toolbox.cpp:3112
+#: ../share/extensions/foldablebox.inx.h:4
+#: ../share/extensions/interp_att_g.inx.h:6
+msgid "Height"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:42
+#: ../src/filter-enums.cpp:32 ../src/live_effects/effect.cpp:99
+#: ../src/live_effects/lpe-ruler.cpp:50
+msgid "Offset"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:46
+#: ../src/extension/internal/bitmap/addNoise.cpp:57
+#: ../src/extension/internal/bitmap/blur.cpp:44
+#: ../src/extension/internal/bitmap/channel.cpp:63
+#: ../src/extension/internal/bitmap/charcoal.cpp:44
+#: ../src/extension/internal/bitmap/colorize.cpp:55
+#: ../src/extension/internal/bitmap/contrast.cpp:45
+#: ../src/extension/internal/bitmap/cycleColormap.cpp:42
+#: ../src/extension/internal/bitmap/despeckle.cpp:40
+#: ../src/extension/internal/bitmap/edge.cpp:42
+#: ../src/extension/internal/bitmap/emboss.cpp:44
+#: ../src/extension/internal/bitmap/enhance.cpp:39
+#: ../src/extension/internal/bitmap/equalize.cpp:39
+#: ../src/extension/internal/bitmap/gaussianBlur.cpp:44
+#: ../src/extension/internal/bitmap/implode.cpp:42
+#: ../src/extension/internal/bitmap/levelChannel.cpp:70
+#: ../src/extension/internal/bitmap/level.cpp:48
+#: ../src/extension/internal/bitmap/medianFilter.cpp:42
+#: ../src/extension/internal/bitmap/modulate.cpp:47
+#: ../src/extension/internal/bitmap/negate.cpp:40
+#: ../src/extension/internal/bitmap/normalize.cpp:40
+#: ../src/extension/internal/bitmap/oilPaint.cpp:42
+#: ../src/extension/internal/bitmap/opacity.cpp:43
+#: ../src/extension/internal/bitmap/raise.cpp:47
+#: ../src/extension/internal/bitmap/reduceNoise.cpp:45
+#: ../src/extension/internal/bitmap/sample.cpp:45
+#: ../src/extension/internal/bitmap/shade.cpp:47
+#: ../src/extension/internal/bitmap/sharpen.cpp:44
+#: ../src/extension/internal/bitmap/solarize.cpp:42
+#: ../src/extension/internal/bitmap/spread.cpp:42
+#: ../src/extension/internal/bitmap/swirl.cpp:42
+#: ../src/extension/internal/bitmap/threshold.cpp:43
+#: ../src/extension/internal/bitmap/unsharpmask.cpp:49
+#: ../src/extension/internal/bitmap/wave.cpp:44
+msgid "Raster"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/adaptiveThreshold.cpp:48
+msgid "Apply adaptive thresholding to selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/addNoise.cpp:44
+msgid "Add Noise"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/addNoise.cpp:46 ../src/rdf.cpp:238
+msgid "Type"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/addNoise.cpp:47
+msgid "Uniform Noise"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/addNoise.cpp:48
+msgid "Gaussian Noise"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/addNoise.cpp:49
+msgid "Multiplicative Gaussian Noise"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/addNoise.cpp:50
+msgid "Impulse Noise"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/addNoise.cpp:51
+msgid "Laplacian Noise"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/addNoise.cpp:52
+msgid "Poisson Noise"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/addNoise.cpp:59
+msgid "Add random noise to selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/blur.cpp:37
+msgid "Blur"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/blur.cpp:39
+#: ../src/extension/internal/bitmap/charcoal.cpp:39
+#: ../src/extension/internal/bitmap/edge.cpp:38
+#: ../src/extension/internal/bitmap/emboss.cpp:39
+#: ../src/extension/internal/bitmap/medianFilter.cpp:38
+#: ../src/extension/internal/bitmap/oilPaint.cpp:38
+#: ../src/extension/internal/bitmap/sharpen.cpp:39
+#: ../src/extension/internal/bitmap/unsharpmask.cpp:42
+msgid "Radius"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/blur.cpp:40
+#: ../src/extension/internal/bitmap/charcoal.cpp:40
+#: ../src/extension/internal/bitmap/emboss.cpp:40
+#: ../src/extension/internal/bitmap/gaussianBlur.cpp:40
+#: ../src/extension/internal/bitmap/sharpen.cpp:40
+#: ../src/extension/internal/bitmap/unsharpmask.cpp:43
+msgid "Sigma"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/blur.cpp:46
+msgid "Blur selected bitmap(s)"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:47
+#: ../src/extension/internal/bitmap/levelChannel.cpp:53
+msgid "Channel"
+msgstr ""
+
+#. TODO: find an unused layer number, forming name from _("Layer ") + "%d"
+#: ../src/extension/internal/bitmap/channel.cpp:49
+#: ../src/ui/dialog/layer-properties.cpp:178
+#: ../src/ui/dialog/layer-properties.cpp:200
+msgid "Layer"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:50
+#: ../src/extension/internal/bitmap/levelChannel.cpp:54
+msgid "Red Channel"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:51
+#: ../src/extension/internal/bitmap/levelChannel.cpp:55
+msgid "Green Channel"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:52
+#: ../src/extension/internal/bitmap/levelChannel.cpp:56
+msgid "Blue Channel"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:53
+#: ../src/extension/internal/bitmap/levelChannel.cpp:57
+msgid "Cyan Channel"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:54
+#: ../src/extension/internal/bitmap/levelChannel.cpp:58
+msgid "Magenta Channel"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:55
+#: ../src/extension/internal/bitmap/levelChannel.cpp:59
+msgid "Yellow Channel"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:56
+#: ../src/extension/internal/bitmap/levelChannel.cpp:60
+msgid "Black Channel"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:57
+#: ../src/extension/internal/bitmap/levelChannel.cpp:61
+msgid "Opacity Channel"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:58
+#: ../src/extension/internal/bitmap/levelChannel.cpp:62
+msgid "Matte Channel"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/channel.cpp:65
+msgid "Extract specific channel from image."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/charcoal.cpp:37
+msgid "Charcoal"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/charcoal.cpp:46
+msgid "Apply charcoal stylization to selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/colorize.cpp:57
+msgid "Colorize selected bitmap(s) with specified color, using given opacity."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/contrast.cpp:39
+msgid "Contrast"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/contrast.cpp:41
+msgid "Adjust"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/contrast.cpp:47
+msgid "Increase or decrease contrast in bitmap(s)"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/cycleColormap.cpp:36
+msgid "Cycle Colormap"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/cycleColormap.cpp:38
+#: ../src/extension/internal/bitmap/spread.cpp:38
+#: ../src/extension/internal/bitmap/unsharpmask.cpp:44
+msgid "Amount"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/cycleColormap.cpp:44
+msgid "Cycle colormap(s) of selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/despeckle.cpp:35
+msgid "Despeckle"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/despeckle.cpp:42
+msgid "Reduce speckle noise of selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/edge.cpp:36
+msgid "Edge"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/edge.cpp:44
+msgid "Highlight edges of selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/emboss.cpp:46
+msgid "Emboss selected bitmap(s) -- highlight edges with 3D effect."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/enhance.cpp:34
+msgid "Enhance"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/enhance.cpp:41
+msgid "Enhance selected bitmap(s) -- minimize noise."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/equalize.cpp:34
+msgid "Equalize"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/equalize.cpp:41
+msgid "Equalize selected bitmap(s) -- histogram equalization."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/gaussianBlur.cpp:37
+#: ../src/filter-enums.cpp:28
+msgid "Gaussian Blur"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/gaussianBlur.cpp:39
+#: ../src/extension/internal/bitmap/implode.cpp:38
+#: ../src/extension/internal/bitmap/solarize.cpp:38
+msgid "Factor"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/gaussianBlur.cpp:46
+msgid "Gaussian blur selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/implode.cpp:36
+msgid "Implode"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/implode.cpp:44
+msgid "Implode selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/levelChannel.cpp:51
+msgid "Level (with Channel)"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/levelChannel.cpp:64
+#: ../src/extension/internal/bitmap/level.cpp:42
+msgid "Black Point"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/levelChannel.cpp:65
+#: ../src/extension/internal/bitmap/level.cpp:43
+msgid "White Point"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/levelChannel.cpp:66
+#: ../src/extension/internal/bitmap/level.cpp:44
+msgid "Gamma Correction"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/levelChannel.cpp:72
+msgid ""
+"Level the specified channel of selected bitmap(s) by scaling values falling "
+"between the given ranges to the full color range."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/level.cpp:40
+msgid "Level"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/level.cpp:50
+msgid ""
+"Level selected bitmap(s) by scaling values falling between the given ranges "
+"to the full color range."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/medianFilter.cpp:36
+msgid "Median"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/medianFilter.cpp:44
+msgid ""
+"Replace each pixel component with the median color in a circular "
+"neighborhood."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/modulate.cpp:39
+msgid "HSB Adjust"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/modulate.cpp:41
+#: ../src/flood-context.cpp:250 ../src/widgets/sp-color-icc-selector.cpp:236
+#: ../src/widgets/sp-color-icc-selector.cpp:237
+#: ../src/widgets/sp-color-scales.cpp:426
+#: ../src/widgets/sp-color-scales.cpp:427 ../src/widgets/toolbox.cpp:4281
+#: ../share/extensions/color_randomize.inx.h:2
+msgid "Hue"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/modulate.cpp:42
+#: ../src/flood-context.cpp:251 ../src/ui/dialog/inkscape-preferences.cpp:830
+#: ../src/widgets/sp-color-icc-selector.cpp:236
+#: ../src/widgets/sp-color-icc-selector.cpp:237
+#: ../src/widgets/sp-color-scales.cpp:429
+#: ../src/widgets/sp-color-scales.cpp:430 ../src/widgets/toolbox.cpp:4296
+#: ../share/extensions/color_randomize.inx.h:5
+msgid "Saturation"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/modulate.cpp:43
+msgid "Brightness"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/modulate.cpp:49
+msgid ""
+"Adjust the amount of hue, saturation, and brightness in selected bitmap(s)"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/negate.cpp:35
+msgid "Negate"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/negate.cpp:42
+msgid "Negate (take inverse) selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/normalize.cpp:35
+msgid "Normalize"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/normalize.cpp:42
+msgid ""
+"Normalize selected bitmap(s), expanding color range to the full possible "
+"range of color."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/oilPaint.cpp:36
+msgid "Oil Paint"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/oilPaint.cpp:44
+msgid "Stylize selected bitmap(s) so that they appear to be painted with oils."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/opacity.cpp:45
+msgid "Modify opacity channel(s) of selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/raise.cpp:39
+msgid "Raise"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/raise.cpp:43
+msgid "Raised"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/raise.cpp:49
+msgid ""
+"Alter lightness the edges of selected bitmap(s) to create a raised "
+"appearance."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/reduceNoise.cpp:39
+msgid "Reduce Noise"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/reduceNoise.cpp:41
+#: ../share/extensions/lindenmayer.inx.h:26
+msgid "Order"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/reduceNoise.cpp:47
+msgid ""
+"Reduce noise in selected bitmap(s) using a noise peak elimination filter."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/sample.cpp:38
+msgid "Resample"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/sample.cpp:47
+msgid ""
+"Alter the resolution of selected image by resizing it to the given pixel size"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/shade.cpp:39
+msgid "Shade"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/shade.cpp:41
+#: ../src/ui/dialog/filter-effects-dialog.cpp:955
+msgid "Azimuth"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/shade.cpp:42
+#: ../src/ui/dialog/filter-effects-dialog.cpp:956
+msgid "Elevation"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/shade.cpp:43
+msgid "Colored Shading"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/shade.cpp:49
+msgid "Shade selected bitmap(s) simulating distant light source."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/sharpen.cpp:46
+msgid "Sharpen selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/solarize.cpp:44
+msgid "Solarize selected bitmap(s), like overexposing photographic film."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/spread.cpp:36
+msgid "Dither"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/spread.cpp:44
+msgid ""
+"Randomly scatter pixels in selected bitmap(s), within the given radius of "
+"the original position"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/swirl.cpp:36
+msgid "Swirl"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/swirl.cpp:38
+#: ../share/extensions/grid_polar.inx.h:7
+msgid "Degrees"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/swirl.cpp:44
+msgid "Swirl selected bitmap(s) around center point."
+msgstr ""
+
+#. TRANSLATORS: see http://docs.gimp.org/en/gimp-tool-threshold.html
+#: ../src/extension/internal/bitmap/threshold.cpp:37
+#: ../src/extension/internal/bitmap/threshold.cpp:39
+#: ../src/extension/internal/bitmap/unsharpmask.cpp:45
+msgid "Threshold"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/threshold.cpp:45
+msgid "Threshold selected bitmap(s)."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/unsharpmask.cpp:40
+msgid "Unsharp Mask"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/unsharpmask.cpp:51
+msgid "Sharpen selected bitmap(s) using unsharp mask algorithms."
+msgstr ""
+
+#: ../src/extension/internal/bitmap/wave.cpp:37
+msgid "Wave"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/wave.cpp:39
+msgid "Amplitude"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/wave.cpp:40
+msgid "Wavelength"
+msgstr ""
+
+#: ../src/extension/internal/bitmap/wave.cpp:46
+msgid "Alter selected bitmap(s) along sine wave."
+msgstr ""
+
+#: ../src/extension/internal/bluredge.cpp:134
+msgid "Inset/Outset Halo"
+msgstr ""
+
+#: ../src/extension/internal/bluredge.cpp:136
+msgid "Width in px of the halo"
+msgstr ""
+
+#: ../src/extension/internal/bluredge.cpp:137
+msgid "Number of steps"
+msgstr ""
+
+#: ../src/extension/internal/bluredge.cpp:137
+msgid "Number of inset/outset copies of the object to make"
+msgstr ""
+
+#: ../src/extension/internal/bluredge.cpp:141
+#: ../share/extensions/extrude.inx.h:2 ../share/extensions/interp.inx.h:3
+#: ../share/extensions/motion.inx.h:2
+#: ../share/extensions/pathalongpath.inx.h:4
+#: ../share/extensions/pathscatter.inx.h:5
+msgid "Generate from Path"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:274
+#: ../share/extensions/ps_input.inx.h:1
+msgid "PostScript"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:276
+#: ../src/extension/internal/cairo-ps-out.cpp:313
+msgid "Restrict to PS level"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:277
+#: ../src/extension/internal/cairo-ps-out.cpp:314
+msgid "PostScript level 3"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:279
+#: ../src/extension/internal/cairo-ps-out.cpp:316
+msgid "PostScript level 2"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:282
+#: ../src/extension/internal/cairo-ps-out.cpp:319
+#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:219
+#: ../src/extension/internal/emf-win32-inout.cpp:2430
+msgid "Convert texts to paths"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:283
+#: ../src/extension/internal/cairo-ps-out.cpp:320
+#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:220
+msgid "Rasterize filter effects"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:284
+#: ../src/extension/internal/cairo-ps-out.cpp:321
+#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:221
+msgid "Resolution for rasterization (dpi)"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:285
+#: ../src/extension/internal/cairo-ps-out.cpp:322
+#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:222
+msgid "Export area is drawing"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:286
+#: ../src/extension/internal/cairo-ps-out.cpp:323
+#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:223
+msgid "Export area is page"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:287
+#: ../src/extension/internal/cairo-ps-out.cpp:324
+#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:224
+msgid "Limit export to the object with ID"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:291
+#: ../share/extensions/ps_input.inx.h:2
+msgid "PostScript (*.ps)"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:292
+msgid "PostScript File"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:311
+#: ../share/extensions/eps_input.inx.h:2
+msgid "Encapsulated PostScript"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:328
+#: ../share/extensions/eps_input.inx.h:3
+msgid "Encapsulated PostScript (*.eps)"
+msgstr ""
+
+#: ../src/extension/internal/cairo-ps-out.cpp:329
+msgid "Encapsulated PostScript File"
+msgstr ""
+
+#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:216
+msgid "Restrict to PDF version"
+msgstr ""
+
+#: ../src/extension/internal/cairo-renderer-pdf-out.cpp:217
+msgid "PDF 1.4"
+msgstr ""
+
+#: ../src/extension/internal/emf-win32-inout.cpp:2400
+msgid "EMF Input"
+msgstr ""
+
+#: ../src/extension/internal/emf-win32-inout.cpp:2405
+msgid "Enhanced Metafiles (*.emf)"
+msgstr ""
+
+#: ../src/extension/internal/emf-win32-inout.cpp:2406
+msgid "Enhanced Metafiles"
+msgstr ""
+
+#: ../src/extension/internal/emf-win32-inout.cpp:2414
+msgid "WMF Input"
+msgstr ""
+
+#: ../src/extension/internal/emf-win32-inout.cpp:2419
+msgid "Windows Metafiles (*.wmf)"
+msgstr ""
+
+#: ../src/extension/internal/emf-win32-inout.cpp:2420
+msgid "Windows Metafiles"
+msgstr ""
+
+#: ../src/extension/internal/emf-win32-inout.cpp:2428
+msgid "EMF Output"
+msgstr ""
+
+#: ../src/extension/internal/emf-win32-inout.cpp:2434
+msgid "Enhanced Metafile (*.emf)"
+msgstr ""
+
+#: ../src/extension/internal/emf-win32-inout.cpp:2435
+msgid "Enhanced Metafile"
+msgstr ""
+
+#: ../src/extension/internal/filter/drop-shadow.h:35
+msgid "Drop Shadow"
+msgstr ""
+
+#: ../src/extension/internal/filter/drop-shadow.h:37
+#: ../src/extension/internal/filter/drop-shadow.h:92
+msgid "Blur radius, px"
+msgstr ""
+
+#: ../src/extension/internal/filter/drop-shadow.h:38
+#: ../src/extension/internal/filter/drop-shadow.h:93
+#: ../src/ui/widget/object-composite-settings.cpp:62
+#: ../src/ui/widget/selected-style.cpp:1033
+#: ../src/ui/widget/selected-style.cpp:1034
+msgid "Opacity, %"
+msgstr ""
+
+#: ../src/extension/internal/filter/drop-shadow.h:39
+#: ../src/extension/internal/filter/drop-shadow.h:94
+msgid "Horizontal offset, px"
+msgstr ""
+
+#: ../src/extension/internal/filter/drop-shadow.h:40
+#: ../src/extension/internal/filter/drop-shadow.h:95
+msgid "Vertical offset, px"
+msgstr ""
+
+#: ../src/extension/internal/filter/drop-shadow.h:44
+#: ../src/extension/internal/filter/drop-shadow.h:99
+#: ../src/extension/internal/filter/filter.cpp:214
+#: ../src/extension/internal/filter/filter-file.cpp:148
+#: ../src/extension/internal/filter/snow.h:38
+#: ../src/ui/dialog/inkscape-preferences.cpp:733
+msgid "Filters"
+msgstr ""
+
+#: ../src/extension/internal/filter/drop-shadow.h:48
+msgid "Black, blurred drop shadow"
+msgstr ""
+
+#: ../src/extension/internal/filter/drop-shadow.h:90
+msgid "Drop Glow"
+msgstr ""
+
+#: ../src/extension/internal/filter/drop-shadow.h:103
+msgid "White, blurred drop glow"
+msgstr ""
+
+#: ../src/extension/internal/filter/filter-file.cpp:32
+msgid "Bundled"
+msgstr ""
+
+#: ../src/extension/internal/filter/filter-file.cpp:33
+msgid "Personal"
+msgstr ""
+
+#: ../src/extension/internal/filter/filter-file.cpp:44
+msgid "Null external module directory name.  Filters will not be loaded."
+msgstr ""
+
+#: ../src/extension/internal/filter/snow.h:32
+msgid "Snow crest"
+msgstr ""
+
+#: ../src/extension/internal/filter/snow.h:34
+msgid "Drift Size"
+msgstr ""
+
+#: ../src/extension/internal/filter/snow.h:42
+msgid "Snow has fallen on object"
+msgstr ""
+
+#: ../src/extension/internal/gdkpixbuf-input.cpp:127
+#, c-format
+msgid "%s GDK pixbuf Input"
+msgstr ""
+
+#: ../src/extension/internal/gimpgrad.cpp:274
+msgid "GIMP Gradients"
+msgstr ""
+
+#: ../src/extension/internal/gimpgrad.cpp:279
+msgid "GIMP Gradient (*.ggr)"
+msgstr ""
+
+#: ../src/extension/internal/gimpgrad.cpp:280
+msgid "Gradients used in GIMP"
+msgstr ""
+
+#: ../src/extension/internal/grid.cpp:192 ../src/ui/widget/panel.cpp:112
+msgid "Grid"
+msgstr ""
+
+#: ../src/extension/internal/grid.cpp:194
+msgid "Line Width"
+msgstr ""
+
+#: ../src/extension/internal/grid.cpp:195
+msgid "Horizontal Spacing"
+msgstr ""
+
+#: ../src/extension/internal/grid.cpp:196
+msgid "Vertical Spacing"
+msgstr ""
+
+#: ../src/extension/internal/grid.cpp:197
+msgid "Horizontal Offset"
+msgstr ""
+
+#: ../src/extension/internal/grid.cpp:198
+msgid "Vertical Offset"
+msgstr ""
+
+#: ../src/extension/internal/grid.cpp:202
+#: ../share/extensions/draw_from_triangle.inx.h:30
+#: ../share/extensions/eqtexsvg.inx.h:3
+#: ../share/extensions/foldablebox.inx.h:6
+#: ../share/extensions/funcplot.inx.h:13 ../share/extensions/gears.inx.h:5
+#: ../share/extensions/grid_cartesian.inx.h:15
+#: ../share/extensions/grid_polar.inx.h:18
+#: ../share/extensions/guides_creator.inx.h:17
+#: ../share/extensions/lindenmayer.inx.h:31
+#: ../share/extensions/param_curves.inx.h:9
+#: ../share/extensions/perfectboundcover.inx.h:17
+#: ../share/extensions/polyhedron_3d.inx.h:31
+#: ../share/extensions/printing-marks.inx.h:14
+#: ../share/extensions/render_alphabetsoup.inx.h:3
+#: ../share/extensions/render_barcode.inx.h:5
+#: ../share/extensions/rtree.inx.h:4 ../share/extensions/spirograph.inx.h:6
+#: ../share/extensions/svgcalendar.inx.h:22
+#: ../share/extensions/triangle.inx.h:10
+msgid "Render"
+msgstr ""
+
+#: ../src/extension/internal/grid.cpp:204
+msgid "Draw a path which is a grid"
+msgstr ""
+
+#: ../src/extension/internal/javafx-out.cpp:965
+msgid "JavaFX Output"
+msgstr ""
+
+#: ../src/extension/internal/javafx-out.cpp:970
+msgid "JavaFX (*.fx)"
+msgstr ""
+
+#: ../src/extension/internal/javafx-out.cpp:971
+msgid "JavaFX Raytracer File"
+msgstr ""
+
+#: ../src/extension/internal/latex-pstricks.cpp:337
+msgid "LaTeX Print"
+msgstr ""
+
+#: ../src/extension/internal/latex-pstricks-out.cpp:105
+msgid "LaTeX Output"
+msgstr ""
+
+#: ../src/extension/internal/latex-pstricks-out.cpp:110
+msgid "LaTeX With PSTricks macros (*.tex)"
+msgstr ""
+
+#: ../src/extension/internal/latex-pstricks-out.cpp:111
+msgid "LaTeX PSTricks File"
+msgstr ""
+
+#: ../src/extension/internal/odf.cpp:2417
+msgid "OpenDocument Drawing Output"
+msgstr ""
+
+#: ../src/extension/internal/odf.cpp:2422
+msgid "OpenDocument drawing (*.odg)"
+msgstr ""
+
+#: ../src/extension/internal/odf.cpp:2423
+msgid "OpenDocument drawing file"
+msgstr ""
+
+#. TRANSLATORS: The following are document crop settings for PDF import
+#. more info: http://www.acrobatusers.com/tech_corners/javascript_corner/tips/2006/page_bounds/
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:56
+msgid "media box"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:57
+msgid "crop box"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:58
+msgid "trim box"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:59
+msgid "bleed box"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:60
+msgid "art box"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:72
+msgid "Select page:"
+msgstr ""
+
+#. Display total number of pages
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:86
+#, c-format
+msgid "out of %i"
+msgstr ""
+
+#. Crop settings
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:92
+msgid "Clip to:"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:104
+msgid "Page settings"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:106
+msgid "Precision of approximating gradient meshes:"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:107
+msgid ""
+"<b>Note</b>: setting the precision too high may result in a large SVG file "
+"and slow performance."
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:112
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:393
+msgid "rough"
+msgstr ""
+
+#. Text options
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:116
+msgid "Text handling:"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:118
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:119
+msgid "Import text as text"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:120
+msgid "Replace PDF fonts by closest-named installed fonts"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:123
+msgid "Embed images"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:126
+msgid "Import settings"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:248
+msgid "PDF Import Settings"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:396
+msgid "pdfinput|medium"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:397
+msgid "fine"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:398
+msgid "very fine"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:753
+msgid "PDF Input"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:758
+msgid "Adobe PDF (*.pdf)"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:759
+msgid "Adobe Portable Document Format"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:766
+msgid "AI Input"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:771
+msgid "Adobe Illustrator 9.0 and above (*.ai)"
+msgstr ""
+
+#: ../src/extension/internal/pdfinput/pdf-input.cpp:772
+msgid "Open files saved in Adobe Illustrator 9.0 and newer versions"
+msgstr ""
+
+#: ../src/extension/internal/pov-out.cpp:700
+msgid "PovRay Output"
+msgstr ""
+
+#: ../src/extension/internal/pov-out.cpp:705
+msgid "PovRay (*.pov) (paths and shapes only)"
+msgstr ""
+
+#: ../src/extension/internal/pov-out.cpp:706
+msgid "PovRay Raytracer File"
+msgstr ""
+
+#: ../src/extension/internal/svg.cpp:55
+msgid "SVG Input"
+msgstr ""
+
+#: ../src/extension/internal/svg.cpp:60
+msgid "Scalable Vector Graphic (*.svg)"
+msgstr ""
+
+#: ../src/extension/internal/svg.cpp:61
+msgid "Inkscape native file format and W3C standard"
+msgstr ""
+
+#: ../src/extension/internal/svg.cpp:69
+msgid "SVG Output Inkscape"
+msgstr ""
+
+#: ../src/extension/internal/svg.cpp:74
+msgid "Inkscape SVG (*.svg)"
+msgstr ""
+
+#: ../src/extension/internal/svg.cpp:75
+msgid "SVG format with Inkscape extensions"
+msgstr ""
+
+#: ../src/extension/internal/svg.cpp:83
+msgid "SVG Output"
+msgstr ""
+
+#: ../src/extension/internal/svg.cpp:88
+msgid "Plain SVG (*.svg)"
+msgstr ""
+
+#: ../src/extension/internal/svg.cpp:89
+msgid "Scalable Vector Graphics format as defined by the W3C"
+msgstr ""
+
+#: ../src/extension/internal/svgz.cpp:47
+msgid "SVGZ Input"
+msgstr ""
+
+#: ../src/extension/internal/svgz.cpp:53 ../src/extension/internal/svgz.cpp:67
+msgid "Compressed Inkscape SVG (*.svgz)"
+msgstr ""
+
+#: ../src/extension/internal/svgz.cpp:54
+msgid "SVG file format compressed with GZip"
+msgstr ""
+
+#: ../src/extension/internal/svgz.cpp:62 ../src/extension/internal/svgz.cpp:76
+msgid "SVGZ Output"
+msgstr ""
+
+#: ../src/extension/internal/svgz.cpp:68
+msgid "Inkscape's native file format compressed with GZip"
+msgstr ""
+
+#: ../src/extension/internal/svgz.cpp:81
+msgid "Compressed plain SVG (*.svgz)"
+msgstr ""
+
+#: ../src/extension/internal/svgz.cpp:82
+msgid "Scalable Vector Graphics format compressed with GZip"
+msgstr ""
+
+#: ../src/extension/internal/win32.cpp:485
+msgid "Windows 32-bit Print"
+msgstr ""
+
+#: ../src/extension/internal/wpg-input.cpp:102
+msgid "WPG Input"
+msgstr ""
+
+#: ../src/extension/internal/wpg-input.cpp:107
+msgid "WordPerfect Graphics (*.wpg)"
+msgstr ""
+
+#: ../src/extension/internal/wpg-input.cpp:108
+msgid "Vector graphics format used by Corel WordPerfect"
+msgstr ""
+
+#: ../src/extension/prefdialog.cpp:236
+msgid "Live preview"
+msgstr ""
+
+#: ../src/extension/prefdialog.cpp:236
+msgid "Is the effect previewed live on canvas?"
+msgstr ""
+
+#. We can't call sp_ui_error_dialog because we may be
+#. running from the console, in which case calling sp_ui
+#. routines will cause a segfault.  See bug 1000350 - bryce
+#. sp_ui_error_dialog(_("Format autodetect failed. The file is being opened as SVG."));
+#: ../src/extension/system.cpp:107
+msgid "Format autodetect failed. The file is being opened as SVG."
+msgstr ""
+
+#: ../src/file.cpp:147
+msgid "default.svg"
+msgstr ""
+
+#: ../src/file.cpp:265 ../src/file.cpp:1071
+#, c-format
+msgid "Failed to load the requested file %s"
+msgstr ""
+
+#: ../src/file.cpp:290
+msgid "Document not saved yet.  Cannot revert."
+msgstr ""
+
+#: ../src/file.cpp:296
+#, c-format
+msgid "Changes will be lost!  Are you sure you want to reload document %s?"
+msgstr ""
+
+#: ../src/file.cpp:325
+msgid "Document reverted."
+msgstr ""
+
+#: ../src/file.cpp:327
+msgid "Document not reverted."
+msgstr ""
+
+#: ../src/file.cpp:477
+msgid "Select file to open"
+msgstr ""
+
+#: ../src/file.cpp:564
+msgid "Vacuum &lt;defs&gt;"
+msgstr ""
+
+#: ../src/file.cpp:569
+#, c-format
+msgid "Removed <b>%i</b> unused definition in &lt;defs&gt;."
+msgid_plural "Removed <b>%i</b> unused definitions in &lt;defs&gt;."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/file.cpp:574
+msgid "No unused definitions in &lt;defs&gt;."
+msgstr ""
+
+#: ../src/file.cpp:605
+#, c-format
+msgid ""
+"No Inkscape extension found to save document (%s).  This may have been "
+"caused by an unknown filename extension."
+msgstr ""
+
+#: ../src/file.cpp:606 ../src/file.cpp:614 ../src/file.cpp:622
+#: ../src/file.cpp:628 ../src/file.cpp:633
+msgid "Document not saved."
+msgstr ""
+
+#: ../src/file.cpp:613
+#, c-format
+msgid ""
+"File %s is write protected. Please remove write protection and try again."
+msgstr ""
+
+#: ../src/file.cpp:621
+#, c-format
+msgid "File %s could not be saved."
+msgstr ""
+
+#: ../src/file.cpp:638
+msgid "Document saved."
+msgstr ""
+
+#. We are saving for the first time; create a unique default filename
+#: ../src/file.cpp:770 ../src/file.cpp:1208
+#, c-format
+msgid "drawing%s"
+msgstr ""
+
+#: ../src/file.cpp:776
+#, c-format
+msgid "drawing-%d%s"
+msgstr ""
+
+#: ../src/file.cpp:780
+#, c-format
+msgid "%s"
+msgstr ""
+
+#: ../src/file.cpp:795
+msgid "Select file to save a copy to"
+msgstr ""
+
+#: ../src/file.cpp:797
+msgid "Select file to save to"
+msgstr ""
+
+#: ../src/file.cpp:892
+msgid "No changes need to be saved."
+msgstr ""
+
+#: ../src/file.cpp:909
+msgid "Saving document..."
+msgstr ""
+
+#: ../src/file.cpp:1068
+msgid "Import"
+msgstr ""
+
+#: ../src/file.cpp:1118
+msgid "Select file to import"
+msgstr ""
+
+#: ../src/file.cpp:1230
+msgid "Select file to export to"
+msgstr ""
+
+#: ../src/file.cpp:1473 ../src/verbs.cpp:2265
+msgid "Import From Open Clip Art Library"
+msgstr ""
+
+#: ../src/filter-enums.cpp:20
+msgid "Blend"
+msgstr ""
+
+#: ../src/filter-enums.cpp:21
+msgid "Color Matrix"
+msgstr ""
+
+#: ../src/filter-enums.cpp:22
+msgid "Component Transfer"
+msgstr ""
+
+#: ../src/filter-enums.cpp:23
+msgid "Composite"
+msgstr ""
+
+#: ../src/filter-enums.cpp:24
+msgid "Convolve Matrix"
+msgstr ""
+
+#: ../src/filter-enums.cpp:25
+msgid "Diffuse Lighting"
+msgstr ""
+
+#: ../src/filter-enums.cpp:26
+msgid "Displacement Map"
+msgstr ""
+
+#: ../src/filter-enums.cpp:27
+msgid "Flood"
+msgstr ""
+
+#: ../src/filter-enums.cpp:29 ../src/selection-describer.cpp:55
+msgid "Image"
+msgstr ""
+
+#: ../src/filter-enums.cpp:30
+msgid "Merge"
+msgstr ""
+
+#: ../src/filter-enums.cpp:33
+msgid "Specular Lighting"
+msgstr ""
+
+#: ../src/filter-enums.cpp:34
+msgid "Tile"
+msgstr ""
+
+#: ../src/filter-enums.cpp:35 ../src/filter-enums.cpp:119
+msgid "Turbulence"
+msgstr ""
+
+#: ../src/filter-enums.cpp:40
+msgid "Source Graphic"
+msgstr ""
+
+#: ../src/filter-enums.cpp:41
+msgid "Source Alpha"
+msgstr ""
+
+#: ../src/filter-enums.cpp:42
+msgid "Background Image"
+msgstr ""
+
+#: ../src/filter-enums.cpp:43
+msgid "Background Alpha"
+msgstr ""
+
+#: ../src/filter-enums.cpp:44
+msgid "Fill Paint"
+msgstr ""
+
+#: ../src/filter-enums.cpp:45
+msgid "Stroke Paint"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/filter-enums.cpp:53
+msgid "filterBlendMode|Normal"
+msgstr ""
+
+#: ../src/filter-enums.cpp:54
+msgid "Multiply"
+msgstr ""
+
+#: ../src/filter-enums.cpp:55
+msgid "Screen"
+msgstr ""
+
+#: ../src/filter-enums.cpp:56
+msgid "Darken"
+msgstr ""
+
+#: ../src/filter-enums.cpp:57
+msgid "Lighten"
+msgstr ""
+
+#: ../src/filter-enums.cpp:63
+msgid "Matrix"
+msgstr ""
+
+#: ../src/filter-enums.cpp:64
+msgid "Saturate"
+msgstr ""
+
+#: ../src/filter-enums.cpp:65
+msgid "Hue Rotate"
+msgstr ""
+
+#: ../src/filter-enums.cpp:66
+msgid "Luminance to Alpha"
+msgstr ""
+
+#. File
+#: ../src/filter-enums.cpp:72 ../src/verbs.cpp:2242
+msgid "Default"
+msgstr ""
+
+#: ../src/filter-enums.cpp:73
+msgid "Over"
+msgstr ""
+
+#: ../src/filter-enums.cpp:74
+msgid "In"
+msgstr ""
+
+#: ../src/filter-enums.cpp:75
+msgid "Out"
+msgstr ""
+
+#: ../src/filter-enums.cpp:76
+msgid "Atop"
+msgstr ""
+
+#: ../src/filter-enums.cpp:77
+msgid "XOR"
+msgstr ""
+
+#: ../src/filter-enums.cpp:78
+msgid "Arithmetic"
+msgstr ""
+
+#: ../src/filter-enums.cpp:84
+msgid "Identity"
+msgstr ""
+
+#: ../src/filter-enums.cpp:85
+msgid "Table"
+msgstr ""
+
+#: ../src/filter-enums.cpp:86
+msgid "Discrete"
+msgstr ""
+
+#: ../src/filter-enums.cpp:87
+msgid "Linear"
+msgstr ""
+
+#: ../src/filter-enums.cpp:88
+msgid "Gamma"
+msgstr ""
+
+#: ../src/filter-enums.cpp:94 ../src/selection-chemistry.cpp:316
+#: ../src/widgets/gradient-selector.cpp:139
+msgid "Duplicate"
+msgstr ""
+
+#: ../src/filter-enums.cpp:95
+msgid "Wrap"
+msgstr ""
+
+#: ../src/filter-enums.cpp:96 ../src/flood-context.cpp:264
+#: ../src/live_effects/lpe-ruler.cpp:34
+#: ../src/ui/dialog/document-properties.cpp:327
+#: ../src/ui/dialog/filter-effects-dialog.cpp:468
+#: ../src/ui/dialog/inkscape-preferences.cpp:259
+#: ../src/ui/dialog/inkscape-preferences.cpp:422
+#: ../src/ui/dialog/inkscape-preferences.cpp:554
+#: ../src/ui/dialog/inkscape-preferences.cpp:1151
+#: ../src/ui/dialog/inkscape-preferences.cpp:1216 ../src/verbs.cpp:2239
+#: ../src/widgets/stroke-style.cpp:765 ../src/widgets/toolbox.cpp:3887
+#: ../share/extensions/grid_polar.inx.h:16
+#: ../share/extensions/guides_creator.inx.h:15
+#: ../share/extensions/scour.inx.h:7
+msgid "None"
+msgstr ""
+
+#: ../src/filter-enums.cpp:102 ../src/flood-context.cpp:247
+#: ../src/widgets/sp-color-icc-selector.cpp:234
+#: ../src/widgets/sp-color-scales.cpp:400
+#: ../src/widgets/sp-color-scales.cpp:401
+msgid "Red"
+msgstr ""
+
+#: ../src/filter-enums.cpp:103 ../src/flood-context.cpp:248
+#: ../src/widgets/sp-color-icc-selector.cpp:234
+#: ../src/widgets/sp-color-scales.cpp:403
+#: ../src/widgets/sp-color-scales.cpp:404
+msgid "Green"
+msgstr ""
+
+#: ../src/filter-enums.cpp:104 ../src/flood-context.cpp:249
+#: ../src/widgets/sp-color-icc-selector.cpp:234
+#: ../src/widgets/sp-color-scales.cpp:406
+#: ../src/widgets/sp-color-scales.cpp:407
+msgid "Blue"
+msgstr ""
+
+#: ../src/filter-enums.cpp:105 ../src/flood-context.cpp:253
+msgid "Alpha"
+msgstr ""
+
+#: ../src/filter-enums.cpp:111
+msgid "Erode"
+msgstr ""
+
+#: ../src/filter-enums.cpp:112
+msgid "Dilate"
+msgstr ""
+
+#: ../src/filter-enums.cpp:118
+msgid "Fractal Noise"
+msgstr ""
+
+#: ../src/filter-enums.cpp:125
+msgid "Distant Light"
+msgstr ""
+
+#: ../src/filter-enums.cpp:126
+msgid "Point Light"
+msgstr ""
+
+#: ../src/filter-enums.cpp:127
+msgid "Spot Light"
+msgstr ""
+
+#: ../src/flood-context.cpp:246
+msgid "Visible Colors"
+msgstr ""
+
+#: ../src/flood-context.cpp:252 ../src/widgets/sp-color-icc-selector.cpp:237
+#: ../src/widgets/sp-color-scales.cpp:432
+#: ../src/widgets/sp-color-scales.cpp:433 ../src/widgets/toolbox.cpp:4311
+#: ../share/extensions/color_randomize.inx.h:3
+msgid "Lightness"
+msgstr ""
+
+#: ../src/flood-context.cpp:265 ../src/ui/dialog/inkscape-preferences.cpp:1072
+msgid "Small"
+msgstr ""
+
+#: ../src/flood-context.cpp:266
+msgid "Medium"
+msgstr ""
+
+#: ../src/flood-context.cpp:267 ../src/ui/dialog/inkscape-preferences.cpp:1072
+msgid "Large"
+msgstr ""
+
+#: ../src/flood-context.cpp:469
+msgid "<b>Too much inset</b>, the result is empty."
+msgstr ""
+
+#: ../src/flood-context.cpp:509
+#, c-format
+msgid ""
+"Area filled, path with <b>%d</b> node created and unioned with selection."
+msgid_plural ""
+"Area filled, path with <b>%d</b> nodes created and unioned with selection."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/flood-context.cpp:513
+#, c-format
+msgid "Area filled, path with <b>%d</b> node created."
+msgid_plural "Area filled, path with <b>%d</b> nodes created."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/flood-context.cpp:785 ../src/flood-context.cpp:1099
+msgid "<b>Area is not bounded</b>, cannot fill."
+msgstr ""
+
+#: ../src/flood-context.cpp:1104
+msgid ""
+"<b>Only the visible part of the bounded area was filled.</b> If you want to "
+"fill all of the area, undo, zoom out, and fill again."
+msgstr ""
+
+#: ../src/flood-context.cpp:1122 ../src/flood-context.cpp:1282
+msgid "Fill bounded area"
+msgstr ""
+
+#: ../src/flood-context.cpp:1142
+msgid "Set style on object"
+msgstr ""
+
+#: ../src/flood-context.cpp:1201
+msgid "<b>Draw over</b> areas to add to fill, hold <b>Alt</b> for touch fill"
+msgstr ""
+
+#: ../src/gradient-context.cpp:132 ../src/gradient-drag.cpp:75
+msgid "Linear gradient <b>start</b>"
+msgstr ""
+
+#. POINT_LG_BEGIN
+#: ../src/gradient-context.cpp:133 ../src/gradient-drag.cpp:76
+msgid "Linear gradient <b>end</b>"
+msgstr ""
+
+#: ../src/gradient-context.cpp:134 ../src/gradient-drag.cpp:77
+msgid "Linear gradient <b>mid stop</b>"
+msgstr ""
+
+#: ../src/gradient-context.cpp:135 ../src/gradient-drag.cpp:78
+msgid "Radial gradient <b>center</b>"
+msgstr ""
+
+#: ../src/gradient-context.cpp:136 ../src/gradient-context.cpp:137
+#: ../src/gradient-drag.cpp:79 ../src/gradient-drag.cpp:80
+msgid "Radial gradient <b>radius</b>"
+msgstr ""
+
+#: ../src/gradient-context.cpp:138 ../src/gradient-drag.cpp:81
+msgid "Radial gradient <b>focus</b>"
+msgstr ""
+
+#. POINT_RG_FOCUS
+#: ../src/gradient-context.cpp:139 ../src/gradient-context.cpp:140
+#: ../src/gradient-drag.cpp:82 ../src/gradient-drag.cpp:83
+msgid "Radial gradient <b>mid stop</b>"
+msgstr ""
+
+#. TRANSLATORS: %s will be substituted with the point name (see previous messages); This is part of a compound message
+#: ../src/gradient-context.cpp:165
+#, c-format
+msgid "%s selected"
+msgstr ""
+
+#. TRANSLATORS: Mind the space in front. This is part of a compound message
+#: ../src/gradient-context.cpp:167 ../src/gradient-context.cpp:176
+#, c-format
+msgid " out of %d gradient handle"
+msgid_plural " out of %d gradient handles"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: Mind the space in front. (Refers to gradient handles selected). This is part of a compound message
+#: ../src/gradient-context.cpp:168 ../src/gradient-context.cpp:177
+#: ../src/gradient-context.cpp:184
+#, c-format
+msgid " on %d selected object"
+msgid_plural " on %d selected objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: This is a part of a compound message (out of two more indicating: grandint handle count & object count)
+#: ../src/gradient-context.cpp:174
+#, c-format
+msgid ""
+"One handle merging %d stop (drag with <b>Shift</b> to separate) selected"
+msgid_plural ""
+"One handle merging %d stops (drag with <b>Shift</b> to separate) selected"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: The plural refers to number of selected gradient handles. This is part of a compound message (part two indicates selected object count)
+#: ../src/gradient-context.cpp:182
+#, c-format
+msgid "<b>%d</b> gradient handle selected out of %d"
+msgid_plural "<b>%d</b> gradient handles selected out of %d"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: The plural refers to number of selected objects
+#: ../src/gradient-context.cpp:189
+#, c-format
+msgid "<b>No</b> gradient handles selected out of %d on %d selected object"
+msgid_plural ""
+"<b>No</b> gradient handles selected out of %d on %d selected objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/gradient-context.cpp:389 ../src/gradient-context.cpp:482
+#: ../src/widgets/gradient-vector.cpp:744
+msgid "Add gradient stop"
+msgstr ""
+
+#: ../src/gradient-context.cpp:457
+msgid "Simplify gradient"
+msgstr ""
+
+#: ../src/gradient-context.cpp:534
+msgid "Create default gradient"
+msgstr ""
+
+#: ../src/gradient-context.cpp:588
+msgid "<b>Draw around</b> handles to select them"
+msgstr ""
+
+#: ../src/gradient-context.cpp:686
+msgid "<b>Ctrl</b>: snap gradient angle"
+msgstr ""
+
+#: ../src/gradient-context.cpp:687
+msgid "<b>Shift</b>: draw gradient around the starting point"
+msgstr ""
+
+#: ../src/gradient-context.cpp:807
+msgid "Invert gradient"
+msgstr ""
+
+#: ../src/gradient-context.cpp:924
+#, c-format
+msgid "<b>Gradient</b> for %d object; with <b>Ctrl</b> to snap angle"
+msgid_plural "<b>Gradient</b> for %d objects; with <b>Ctrl</b> to snap angle"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/gradient-context.cpp:928
+msgid "Select <b>objects</b> on which to create gradient."
+msgstr ""
+
+#: ../src/gradient-drag.cpp:591
+msgid "Merge gradient handles"
+msgstr ""
+
+#: ../src/gradient-drag.cpp:912
+msgid "Move gradient handle"
+msgstr ""
+
+#: ../src/gradient-drag.cpp:965 ../src/widgets/gradient-vector.cpp:776
+msgid "Delete gradient stop"
+msgstr ""
+
+#: ../src/gradient-drag.cpp:1129
+#, c-format
+msgid ""
+"%s %d for: %s%s; drag with <b>Ctrl</b> to snap offset; click with <b>Ctrl"
+"+Alt</b> to delete stop"
+msgstr ""
+
+#: ../src/gradient-drag.cpp:1133 ../src/gradient-drag.cpp:1140
+msgid " (stroke)"
+msgstr ""
+
+#: ../src/gradient-drag.cpp:1137
+#, c-format
+msgid ""
+"%s for: %s%s; drag with <b>Ctrl</b> to snap angle, with <b>Ctrl+Alt</b> to "
+"preserve angle, with <b>Ctrl+Shift</b> to scale around center"
+msgstr ""
+
+#: ../src/gradient-drag.cpp:1145
+#, c-format
+msgid ""
+"Radial gradient <b>center</b> and <b>focus</b>; drag with <b>Shift</b> to "
+"separate focus"
+msgstr ""
+
+#: ../src/gradient-drag.cpp:1148
+#, c-format
+msgid ""
+"Gradient point shared by <b>%d</b> gradient; drag with <b>Shift</b> to "
+"separate"
+msgid_plural ""
+"Gradient point shared by <b>%d</b> gradients; drag with <b>Shift</b> to "
+"separate"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/gradient-drag.cpp:1823
+msgid "Move gradient handle(s)"
+msgstr ""
+
+#: ../src/gradient-drag.cpp:1859
+msgid "Move gradient mid stop(s)"
+msgstr ""
+
+#: ../src/gradient-drag.cpp:2147
+msgid "Delete gradient stop(s)"
+msgstr ""
+
+#: ../src/helper/units.cpp:37 ../src/live_effects/lpe-ruler.cpp:43
+#: ../share/extensions/foldablebox.inx.h:8
+#: ../share/extensions/interp_att_g.inx.h:24
+#: ../share/extensions/printing-marks.inx.h:19
+msgid "Unit"
+msgstr ""
+
+#. Add the units menu.
+#: ../src/helper/units.cpp:37 ../src/widgets/select-toolbar.cpp:504
+#: ../src/widgets/toolbox.cpp:1504 ../src/widgets/toolbox.cpp:3156
+#: ../src/widgets/toolbox.cpp:5660 ../src/widgets/toolbox.cpp:7203
+msgid "Units"
+msgstr ""
+
+#: ../src/helper/units.cpp:38
+msgid "Point"
+msgstr ""
+
+#: ../src/helper/units.cpp:38 ../src/ui/widget/selected-style.cpp:293
+msgid "pt"
+msgstr ""
+
+#: ../src/helper/units.cpp:38 ../share/extensions/perfectboundcover.inx.h:15
+msgid "Points"
+msgstr ""
+
+#: ../src/helper/units.cpp:38
+msgid "Pt"
+msgstr ""
+
+#: ../src/helper/units.cpp:39
+msgid "Pica"
+msgstr ""
+
+#: ../src/helper/units.cpp:39
+msgid "pc"
+msgstr ""
+
+#: ../src/helper/units.cpp:39
+msgid "Picas"
+msgstr ""
+
+#: ../src/helper/units.cpp:39
+msgid "Pc"
+msgstr ""
+
+#: ../src/helper/units.cpp:40
+msgid "Pixel"
+msgstr ""
+
+#: ../src/helper/units.cpp:40 ../src/ui/dialog/inkscape-preferences.cpp:246
+#: ../src/ui/dialog/inkscape-preferences.cpp:250
+#: ../src/ui/dialog/inkscape-preferences.cpp:253
+#: ../src/ui/widget/selected-style.cpp:289
+msgid "px"
+msgstr ""
+
+#: ../src/helper/units.cpp:40
+msgid "Pixels"
+msgstr ""
+
+#: ../src/helper/units.cpp:40
+msgid "Px"
+msgstr ""
+
+#. You can add new elements from this point forward
+#: ../src/helper/units.cpp:42 ../share/extensions/straightseg.inx.h:3
+msgid "Percent"
+msgstr ""
+
+#: ../src/helper/units.cpp:42 ../src/ui/dialog/inkscape-preferences.cpp:266
+msgid "%"
+msgstr ""
+
+#: ../src/helper/units.cpp:42
+msgid "Percents"
+msgstr ""
+
+#: ../src/helper/units.cpp:43
+msgid "Millimeter"
+msgstr ""
+
+#: ../src/helper/units.cpp:43 ../src/ui/widget/selected-style.cpp:297
+msgid "mm"
+msgstr ""
+
+#: ../src/helper/units.cpp:43
+msgid "Millimeters"
+msgstr ""
+
+#: ../src/helper/units.cpp:44
+msgid "Centimeter"
+msgstr ""
+
+#: ../src/helper/units.cpp:44
+msgid "cm"
+msgstr ""
+
+#: ../src/helper/units.cpp:44
+msgid "Centimeters"
+msgstr ""
+
+#: ../src/helper/units.cpp:45
+msgid "Meter"
+msgstr ""
+
+#: ../src/helper/units.cpp:45
+msgid "m"
+msgstr ""
+
+#: ../src/helper/units.cpp:45
+msgid "Meters"
+msgstr ""
+
+#. no svg_unit
+#: ../src/helper/units.cpp:46
+msgid "Inch"
+msgstr ""
+
+#: ../src/helper/units.cpp:46
+msgid "in"
+msgstr ""
+
+#: ../src/helper/units.cpp:46
+msgid "Inches"
+msgstr ""
+
+#: ../src/helper/units.cpp:47
+msgid "Foot"
+msgstr ""
+
+#: ../src/helper/units.cpp:47
+msgid "ft"
+msgstr ""
+
+#: ../src/helper/units.cpp:47
+msgid "Feet"
+msgstr ""
+
+#. Volatiles do not have default, so there are none here
+#. TRANSLATORS: for info, see http://www.w3.org/TR/REC-CSS2/syndata.html#length-units
+#: ../src/helper/units.cpp:50
+msgid "Em square"
+msgstr ""
+
+#: ../src/helper/units.cpp:50
+msgid "em"
+msgstr ""
+
+#: ../src/helper/units.cpp:50
+msgid "Em squares"
+msgstr ""
+
+#. TRANSLATORS: for info, see http://www.w3.org/TR/REC-CSS2/syndata.html#length-units
+#: ../src/helper/units.cpp:52
+msgid "Ex square"
+msgstr ""
+
+#: ../src/helper/units.cpp:52
+msgid "ex"
+msgstr ""
+
+#: ../src/helper/units.cpp:52
+msgid "Ex squares"
+msgstr ""
+
+#: ../src/inkscape.cpp:328
+msgid "Autosaving documents..."
+msgstr ""
+
+#: ../src/inkscape.cpp:399
+msgid "Autosave failed! Could not find inkscape extension to save document."
+msgstr ""
+
+#: ../src/inkscape.cpp:402 ../src/inkscape.cpp:409
+#, c-format
+msgid "Autosave failed! File %s could not be saved."
+msgstr ""
+
+#: ../src/inkscape.cpp:424
+msgid "Autosave complete."
+msgstr ""
+
+#: ../src/inkscape.cpp:661
+msgid "Untitled document"
+msgstr ""
+
+#. Show nice dialog box
+#: ../src/inkscape.cpp:691
+msgid "Inkscape encountered an internal error and will close now.\n"
+msgstr ""
+
+#: ../src/inkscape.cpp:692
+msgid ""
+"Automatic backups of unsaved documents were done to the following "
+"locations:\n"
+msgstr ""
+
+#: ../src/inkscape.cpp:693
+msgid "Automatic backup of the following documents failed:\n"
+msgstr ""
+
+#. sp_ui_menu_append_check_item_from_verb(m, view, _("_Menu"), _("Show or hide the menu bar"), "menu",
+#. checkitem_toggled, checkitem_update, 0);
+#: ../src/interface.cpp:868
+msgid "Commands Bar"
+msgstr ""
+
+#: ../src/interface.cpp:868
+msgid "Show or hide the Commands bar (under the menu)"
+msgstr ""
+
+#: ../src/interface.cpp:870
+msgid "Snap Controls Bar"
+msgstr ""
+
+#: ../src/interface.cpp:870
+msgid "Show or hide the snapping controls"
+msgstr ""
+
+#: ../src/interface.cpp:872
+msgid "Tool Controls Bar"
+msgstr ""
+
+#: ../src/interface.cpp:872
+msgid "Show or hide the Tool Controls bar"
+msgstr ""
+
+#: ../src/interface.cpp:874
+msgid "_Toolbox"
+msgstr ""
+
+#: ../src/interface.cpp:874
+msgid "Show or hide the main toolbox (on the left)"
+msgstr ""
+
+#: ../src/interface.cpp:880
+msgid "_Palette"
+msgstr ""
+
+#: ../src/interface.cpp:880
+msgid "Show or hide the color palette"
+msgstr ""
+
+#: ../src/interface.cpp:882
+msgid "_Statusbar"
+msgstr ""
+
+#: ../src/interface.cpp:882
+msgid "Show or hide the statusbar (at the bottom of the window)"
+msgstr ""
+
+#: ../src/interface.cpp:956
+#, c-format
+msgid "Verb \"%s\" Unknown"
+msgstr ""
+
+#: ../src/interface.cpp:995
+msgid "Open _Recent"
+msgstr ""
+
+#. TRANSLATORS: #%s is the id of the group e.g. <g id="#g7">, not a number.
+#: ../src/interface.cpp:1096
+#, c-format
+msgid "Enter group #%s"
+msgstr ""
+
+#: ../src/interface.cpp:1107
+msgid "Go to parent"
+msgstr ""
+
+#: ../src/interface.cpp:1198 ../src/interface.cpp:1284
+#: ../src/interface.cpp:1387 ../src/ui/widget/selected-style.cpp:468
+msgid "Drop color"
+msgstr ""
+
+#: ../src/interface.cpp:1237 ../src/interface.cpp:1347
+msgid "Drop color on gradient"
+msgstr ""
+
+#: ../src/interface.cpp:1400
+msgid "Could not parse SVG data"
+msgstr ""
+
+#: ../src/interface.cpp:1439
+msgid "Drop SVG"
+msgstr ""
+
+#: ../src/interface.cpp:1495
+msgid "Drop bitmap image"
+msgstr ""
+
+#: ../src/interface.cpp:1587
+#, c-format
+msgid ""
+"<span weight=\"bold\" size=\"larger\">A file named \"%s\" already exists. Do "
+"you want to replace it?</span>\n"
+"\n"
+"The file already exists in \"%s\". Replacing it will overwrite its contents."
+msgstr ""
+
+#: ../src/interface.cpp:1594 ../share/extensions/web-set-att.inx.h:5
+#: ../share/extensions/web-transmit-att.inx.h:5
+msgid "Replace"
+msgstr ""
+
+#: ../src/io/sys.cpp:446 ../src/io/sys.cpp:454
+#, c-format
+msgid "Failed to read from child pipe (%s)"
+msgstr ""
+
+#: ../src/io/sys.cpp:478
+#, c-format
+msgid "Failed to change to directory '%s' (%s)"
+msgstr ""
+
+#: ../src/io/sys.cpp:484 ../src/io/sys.cpp:710
+#, c-format
+msgid "Failed to execute child process (%s)"
+msgstr ""
+
+#: ../src/io/sys.cpp:657
+#, c-format
+msgid "Invalid program name: %s"
+msgstr ""
+
+#: ../src/io/sys.cpp:667 ../src/io/sys.cpp:956
+#, c-format
+msgid "Invalid string in argument vector at %d: %s"
+msgstr ""
+
+#: ../src/io/sys.cpp:678 ../src/io/sys.cpp:971
+#, c-format
+msgid "Invalid string in environment: %s"
+msgstr ""
+
+#: ../src/io/sys.cpp:739
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr ""
+
+#: ../src/io/sys.cpp:952
+#, c-format
+msgid "Invalid working directory: %s"
+msgstr ""
+
+#: ../src/io/sys.cpp:1020
+#, c-format
+msgid "Failed to execute helper program (%s)"
+msgstr ""
+
+#: ../src/knot.cpp:431
+msgid "Node or handle drag canceled."
+msgstr ""
+
+#: ../src/knotholder.cpp:135
+msgid "Change handle"
+msgstr ""
+
+#: ../src/knotholder.cpp:214
+msgid "Move handle"
+msgstr ""
+
+#. TRANSLATORS: This refers to the pattern that's inside the object
+#: ../src/knotholder.cpp:235
+msgid "<b>Move</b> the pattern fill inside the object"
+msgstr ""
+
+#: ../src/knotholder.cpp:238
+msgid "<b>Scale</b> the pattern fill; uniformly if with <b>Ctrl</b>"
+msgstr ""
+
+#: ../src/knotholder.cpp:241
+msgid "<b>Rotate</b> the pattern fill; with <b>Ctrl</b> to snap angle"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-bar.c:108
+msgid "Master"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-bar.c:109
+msgid "GdlDockMaster object which the dockbar widget is attached to"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-bar.c:116
+msgid "Dockbar style"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-bar.c:117
+msgid "Dockbar style to show items on it"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:175 ../src/ui/dialog/inkscape-preferences.cpp:549
+#: ../src/ui/dialog/inkscape-preferences.cpp:570
+msgid "Floating"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:176
+msgid "Whether the dock is floating in its own window"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:183 ../src/libgdl/gdl-dock-master.c:144
+msgid "Default title"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:184
+msgid "Default title for the newly created floating docks"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:191
+msgid "Width for the dock when it's of floating type"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:199
+msgid "Height for the dock when it's of floating type"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:206
+msgid "Float X"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:207
+msgid "X coordinate for a floating dock"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:214
+msgid "Float Y"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:215
+msgid "Y coordinate for a floating dock"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock.c:499
+#, c-format
+msgid "Dock #%d"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:287
+msgid "Orientation"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:288
+msgid "Orientation of the docking item"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:303
+msgid "Resizable"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:304
+msgid "If set, the dock item can be resized when docked in a panel"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:311
+msgid "Item behavior"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:312
+msgid ""
+"General behavior for the dock item (i.e. whether it can float, if it's "
+"locked, etc.)"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:320 ../src/libgdl/gdl-dock-master.c:151
+msgid "Locked"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:321
+msgid ""
+"If set, the dock item cannot be dragged around and it doesn't show a grip"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:329
+msgid "Preferred width"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:330
+msgid "Preferred width for the dock item"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:336
+msgid "Preferred height"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:337
+msgid "Preferred height for the dock item"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:616
+#, c-format
+msgid ""
+"You can't add a dock object (%p of type %s) inside a %s. Use a GdlDock or "
+"some other compound dock object."
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:623
+#, c-format
+msgid ""
+"Attempting to add a widget with type %s to a %s, but it can only contain one "
+"widget at a time; it already contains a widget of type %s"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:1345 ../src/libgdl/gdl-dock-item.c:1390
+#, c-format
+msgid "Unsupported docking strategy %s in dock object of type %s"
+msgstr ""
+
+#. UnLock menuitem
+#: ../src/libgdl/gdl-dock-item.c:1479
+msgid "UnLock"
+msgstr ""
+
+#. Hide menuitem.
+#: ../src/libgdl/gdl-dock-item.c:1486
+msgid "Hide"
+msgstr ""
+
+#. Lock menuitem
+#: ../src/libgdl/gdl-dock-item.c:1491
+msgid "Lock"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item.c:1717
+#, c-format
+msgid "Attempt to bind an unbound item %p"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item-grip.c:395
+msgid "Iconify"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item-grip.c:395
+msgid "Iconify this dock"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item-grip.c:397
+msgid "Close"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item-grip.c:397
+msgid "Close this dock"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item-grip.c:706
+#: ../src/libgdl/gdl-dock-tablabel.c:128
+msgid "Controlling dock item"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-item-grip.c:707
+msgid "Dockitem which 'owns' this grip"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-master.c:145
+msgid "Default title for newly created floating docks"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-master.c:152
+msgid ""
+"If is set to 1, all the dock items bound to the master are locked; if it's "
+"0, all are unlocked; -1 indicates inconsistency among the items"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-master.c:160 ../src/libgdl/gdl-switcher.c:706
+msgid "Switcher Style"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-master.c:161 ../src/libgdl/gdl-switcher.c:707
+msgid "Switcher buttons style"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-master.c:168
+msgid "Expand direction"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-master.c:169
+msgid ""
+"Allow the master's dock items to expand their container dock objects in the "
+"given direction"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-master.c:796
+#, c-format
+msgid ""
+"master %p: unable to add object %p[%s] to the hash.  There already is an "
+"item with that name (%p)."
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-master.c:969
+#, c-format
+msgid ""
+"The new dock controller %p is automatic.  Only manual dock objects should be "
+"named controller."
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-notebook.c:134
+#: ../src/ui/dialog/align-and-distribute.cpp:919
+#: ../src/ui/dialog/document-properties.cpp:118
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1410
+#: ../src/widgets/desktop-widget.cpp:1572
+msgid "Page"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-notebook.c:135
+msgid "The index of the current page"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:120 ../src/ui/widget/page-sizer.cpp:237
+msgid "Name"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:121
+msgid "Unique name for identifying the dock object"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:128
+msgid "Long name"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:129
+msgid "Human readable name for the dock object"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:135
+msgid "Stock Icon"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:136
+msgid "Stock icon for the dock object"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:142
+msgid "Pixbuf Icon"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:143
+msgid "Pixbuf icon for the dock object"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:148
+msgid "Dock master"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:149
+msgid "Dock master this dock object is bound to"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:434
+#, c-format
+msgid ""
+"Call to gdl_dock_object_dock in a dock object %p (object type is %s) which "
+"hasn't implemented this method"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:563
+#, c-format
+msgid ""
+"Dock operation requested in a non-bound object %p. The application might "
+"crash"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:570
+#, c-format
+msgid "Cannot dock %p to %p because they belong to different masters"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-object.c:612
+#, c-format
+msgid ""
+"Attempt to bind to %p an already bound dock object %p (current master: %p)"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-paned.c:132
+msgid "Position"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-paned.c:133
+msgid "Position of the divider in pixels"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:143
+msgid "Sticky"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:144
+msgid ""
+"Whether the placeholder will stick to its host or move up the hierarchy when "
+"the host is redocked"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:151
+msgid "Host"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:152
+msgid "The dock object this placeholder is attached to"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:159
+msgid "Next placement"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:160
+msgid ""
+"The position an item will be docked to our host if a request is made to dock "
+"to us"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:170
+msgid "Width for the widget when it's attached to the placeholder"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:178
+msgid "Height for the widget when it's attached to the placeholder"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:184
+msgid "Floating Toplevel"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:185
+msgid "Whether the placeholder is standing in for a floating toplevel dock"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:191
+msgid "X-Coordinate"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:192
+msgid "X coordinate for dock when floating"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:198
+msgid "Y-Coordinate"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:199
+msgid "Y coordinate for dock when floating"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:494
+msgid "Attempt to dock a dock object to an unbound placeholder"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:618
+#, c-format
+msgid "Got a detach signal from an object (%p) who is not our host %p"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-placeholder.c:643
+#, c-format
+msgid ""
+"Something weird happened while getting the child placement for %p from "
+"parent %p"
+msgstr ""
+
+#: ../src/libgdl/gdl-dock-tablabel.c:129
+msgid "Dockitem which 'owns' this tablabel"
+msgstr ""
+
+#: ../src/libnrtype/FontFactory.cpp:806
+msgid "Ignoring font without family that will crash Pango"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:88
+msgid "doEffect stack test"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:89
+msgid "Angle bisector"
+msgstr ""
+
+#. TRANSLATORS: boolean operations
+#: ../src/live_effects/effect.cpp:91
+msgid "Boolops"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:92
+msgid "Circle (by center and radius)"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:93
+msgid "Circle by 3 points"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:94
+msgid "Dynamic stroke"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:95 ../share/extensions/extrude.inx.h:1
+msgid "Extrude"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:96
+msgid "Lattice Deformation"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:97
+msgid "Line Segment"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:98
+msgid "Mirror symmetry"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:100
+msgid "Parallel"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:101
+msgid "Path length"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:102
+msgid "Perpendicular bisector"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:103
+msgid "Perspective path"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:104
+msgid "Rotate copies"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:105
+msgid "Recursive skeleton"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:106
+msgid "Tangent to curve"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:107
+msgid "Text label"
+msgstr ""
+
+#. 0.46
+#: ../src/live_effects/effect.cpp:110
+msgid "Bend"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:111
+msgid "Gears"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:112
+msgid "Pattern Along Path"
+msgstr ""
+
+#. for historic reasons, this effect is called skeletal(strokes) in Inkscape:SVG
+#: ../src/live_effects/effect.cpp:113
+msgid "Stitch Sub-Paths"
+msgstr ""
+
+#. 0.47
+#: ../src/live_effects/effect.cpp:115
+msgid "VonKoch"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:116
+msgid "Knot"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:117
+msgid "Construct grid"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:118
+msgid "Spiro spline"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:119
+msgid "Envelope Deformation"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:120
+msgid "Interpolate Sub-Paths"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:121
+msgid "Hatches (rough)"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:122
+msgid "Sketch"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:123
+msgid "Ruler"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:279
+msgid "Is visible?"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:279
+msgid ""
+"If unchecked, the effect remains applied to the object but is temporarily "
+"disabled on canvas"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:300
+msgid "No effect"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:347
+#, c-format
+msgid "Please specify a parameter path for the LPE '%s' with %d mouse clicks"
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:645
+#, c-format
+msgid "Editing parameter <b>%s</b>."
+msgstr ""
+
+#: ../src/live_effects/effect.cpp:650
+msgid "None of the applied path effect's parameters can be edited on-canvas."
+msgstr ""
+
+#: ../src/live_effects/lpe-bendpath.cpp:55
+msgid "Bend path"
+msgstr ""
+
+#: ../src/live_effects/lpe-bendpath.cpp:55
+msgid "Path along which to bend the original path"
+msgstr ""
+
+#: ../src/live_effects/lpe-bendpath.cpp:56
+msgid "Width of the path"
+msgstr ""
+
+#: ../src/live_effects/lpe-bendpath.cpp:57
+#: ../src/live_effects/lpe-patternalongpath.cpp:65
+msgid "Width in units of length"
+msgstr ""
+
+#: ../src/live_effects/lpe-bendpath.cpp:57
+msgid "Scale the width of the path in units of its length"
+msgstr ""
+
+#: ../src/live_effects/lpe-bendpath.cpp:58
+msgid "Original path is vertical"
+msgstr ""
+
+#: ../src/live_effects/lpe-bendpath.cpp:58
+msgid "Rotates the original 90 degrees, before bending it along the bend path"
+msgstr ""
+
+#: ../src/live_effects/lpe-constructgrid.cpp:28
+msgid "Size X"
+msgstr ""
+
+#: ../src/live_effects/lpe-constructgrid.cpp:28
+msgid "The size of the grid in X direction."
+msgstr ""
+
+#: ../src/live_effects/lpe-constructgrid.cpp:29
+msgid "Size Y"
+msgstr ""
+
+#: ../src/live_effects/lpe-constructgrid.cpp:29
+msgid "The size of the grid in Y direction."
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:42
+msgid "Stitch path"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:42
+msgid "The path that will be used as stitch."
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:43
+msgid "Number of paths"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:43
+msgid "The number of paths that will be generated."
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:44
+msgid "Start edge variance"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:44
+msgid ""
+"The amount of random jitter to move the start points of the stitches inside "
+"& outside the guide path"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:45
+msgid "Start spacing variance"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:45
+msgid ""
+"The amount of random shifting to move the start points of the stitches back "
+"& forth along the guide path"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:46
+msgid "End edge variance"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:46
+msgid ""
+"The amount of randomness that moves the end points of the stitches inside & "
+"outside the guide path"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:47
+msgid "End spacing variance"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:47
+msgid ""
+"The amount of random shifting to move the end points of the stitches back & "
+"forth along the guide path"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:48
+msgid "Scale width"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:48
+msgid "Scale the width of the stitch path"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:49
+msgid "Scale width relative to length"
+msgstr ""
+
+#: ../src/live_effects/lpe-curvestitch.cpp:49
+msgid "Scale the width of the stitch path relative to its length"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:33
+msgid "Top bend path"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:33
+msgid "Top path along which to bend the original path"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:34
+msgid "Right bend path"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:34
+msgid "Right path along which to bend the original path"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:35
+msgid "Bottom bend path"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:35
+msgid "Bottom path along which to bend the original path"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:36
+msgid "Left bend path"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:36
+msgid "Left path along which to bend the original path"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:37
+msgid "Enable left & right paths"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:37
+msgid "Enable the left and right deformation paths"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:38
+msgid "Enable top & bottom paths"
+msgstr ""
+
+#: ../src/live_effects/lpe-envelope.cpp:38
+msgid "Enable the top and bottom deformation paths"
+msgstr ""
+
+#: ../src/live_effects/lpe-gears.cpp:212
+msgid "Teeth"
+msgstr ""
+
+#: ../src/live_effects/lpe-gears.cpp:212
+msgid "The number of teeth"
+msgstr ""
+
+#: ../src/live_effects/lpe-gears.cpp:213
+msgid "Phi"
+msgstr ""
+
+#: ../src/live_effects/lpe-gears.cpp:213
+msgid ""
+"Tooth pressure angle (typically 20-25 deg).  The ratio of teeth not in "
+"contact."
+msgstr ""
+
+#: ../src/live_effects/lpe-interpolate.cpp:30
+msgid "Trajectory"
+msgstr ""
+
+#: ../src/live_effects/lpe-interpolate.cpp:30
+msgid "Path along which intermediate steps are created."
+msgstr ""
+
+#: ../src/live_effects/lpe-interpolate.cpp:31
+#: ../src/ui/dialog/inkscape-preferences.cpp:242
+msgid "Steps"
+msgstr ""
+
+#: ../src/live_effects/lpe-interpolate.cpp:31
+msgid "Determines the number of steps from start to end path."
+msgstr ""
+
+#: ../src/live_effects/lpe-interpolate.cpp:32
+msgid "Equidistant spacing"
+msgstr ""
+
+#: ../src/live_effects/lpe-interpolate.cpp:32
+msgid ""
+"If true, the spacing between intermediates is constant along the length of "
+"the path. If false, the distance depends on the location of the nodes of the "
+"trajectory path."
+msgstr ""
+
+#. initialise your parameters here:
+#: ../src/live_effects/lpe-knot.cpp:329
+msgid "Fixed width"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:329
+msgid "Size of hidden region of lower string"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:330
+msgid "In units of stroke width"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:330
+msgid "Consider 'Interruption width' as a ratio of stroke width"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:331 ../src/widgets/stroke-style.cpp:1093
+#: ../share/extensions/edge3d.inx.h:9
+msgid "Stroke width"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:331
+msgid "Add the stroke width to the interruption size"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:332
+msgid "Crossing path stroke width"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:332
+msgid "Add crossed stroke width to the interruption size"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:333
+msgid "Switcher size"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:333
+msgid "Orientation indicator/switcher size"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:334
+msgid "Crossing Signs"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:334
+msgid "Crossings signs"
+msgstr ""
+
+#: ../src/live_effects/lpe-knot.cpp:345
+msgid "Drag to select a crossing, click to flip it"
+msgstr ""
+
+#. / @todo Is this the right verb?
+#: ../src/live_effects/lpe-knot.cpp:638
+msgid "Change knot crossing"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:52
+#: ../share/extensions/pathalongpath.inx.h:11
+msgid "Single"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:53
+#: ../share/extensions/pathalongpath.inx.h:12
+msgid "Single, stretched"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:54
+#: ../share/extensions/pathalongpath.inx.h:8
+msgid "Repeated"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:55
+#: ../share/extensions/pathalongpath.inx.h:9
+msgid "Repeated, stretched"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:61
+msgid "Pattern source"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:61
+msgid "Path to put along the skeleton path"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:62
+msgid "Pattern copies"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:62
+msgid "How many pattern copies to place along the skeleton path"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:64
+msgid "Width of the pattern"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:66
+msgid "Scale the width of the pattern in units of its length"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:68
+msgid "Spacing"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:70
+#, no-c-format
+msgid ""
+"Space between copies of the pattern. Negative values allowed, but are "
+"limited to -90% of pattern width."
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:72
+#: ../share/extensions/pathalongpath.inx.h:5
+#: ../share/extensions/pathscatter.inx.h:7
+msgid "Normal offset"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:73
+#: ../share/extensions/pathalongpath.inx.h:15
+#: ../share/extensions/pathscatter.inx.h:13
+msgid "Tangential offset"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:74
+msgid "Offsets in unit of pattern size"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:75
+msgid ""
+"Spacing, tangential and normal offset are expressed as a ratio of width/"
+"height"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:77
+#: ../share/extensions/pathalongpath.inx.h:7
+#: ../share/extensions/pathscatter.inx.h:9
+msgid "Pattern is vertical"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:77
+msgid "Rotate pattern 90 deg before applying"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:79
+msgid "Fuse nearby ends"
+msgstr ""
+
+#: ../src/live_effects/lpe-patternalongpath.cpp:79
+msgid "Fuse ends closer than this number. 0 means don't fuse."
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:226
+msgid "Frequency randomness"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:226
+msgid "Variation of distance between hatches, in %."
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:227
+msgid "Growth"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:227
+msgid "Growth of distance between hatches."
+msgstr ""
+
+#. FIXME: top/bottom names are inverted in the UI/svg and in the code!!
+#: ../src/live_effects/lpe-rough-hatches.cpp:229
+msgid "Half-turns smoothness: 1st side, in"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:229
+msgid ""
+"Set smoothness/sharpness of path when reaching a 'bottom' half-turn. "
+"0=sharp, 1=default"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:230
+msgid "1st side, out"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:230
+msgid ""
+"Set smoothness/sharpness of path when leaving a 'bottom' half-turn. 0=sharp, "
+"1=default"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:231
+msgid "2nd side, in"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:231
+msgid ""
+"Set smoothness/sharpness of path when reaching a 'top' half-turn. 0=sharp, "
+"1=default"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:232
+msgid "2nd side, out"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:232
+msgid ""
+"Set smoothness/sharpness of path when leaving a 'top' half-turn. 0=sharp, "
+"1=default"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:233
+msgid "Magnitude jitter: 1st side"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:233
+msgid "Randomly moves 'bottom' half-turns to produce magnitude variations."
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:234
+#: ../src/live_effects/lpe-rough-hatches.cpp:236
+#: ../src/live_effects/lpe-rough-hatches.cpp:238
+msgid "2nd side"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:234
+msgid "Randomly moves 'top' half-turns to produce magnitude variations."
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:235
+msgid "Parallelism jitter: 1st side"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:235
+msgid ""
+"Add direction randomness by moving 'bottom' half-turns tangentially to the "
+"boundary."
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:236
+msgid ""
+"Add direction randomness by randomly moving 'top' half-turns tangentially to "
+"the boundary."
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:237
+msgid "Variance: 1st side"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:237
+msgid "Randomness of 'bottom' half-turns smoothness"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:238
+msgid "Randomness of 'top' half-turns smoothness"
+msgstr ""
+
+#.
+#: ../src/live_effects/lpe-rough-hatches.cpp:240
+msgid "Generate thick/thin path"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:240
+msgid "Simulate a stroke of varying width"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:241
+msgid "Bend hatches"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:241
+msgid "Add a global bend to the hatches (slower)"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:242
+msgid "Thickness: at 1st side"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:242
+msgid "Width at 'bottom' half-turns"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:243
+msgid "at 2nd side"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:243
+msgid "Width at 'top' half-turns"
+msgstr ""
+
+#.
+#: ../src/live_effects/lpe-rough-hatches.cpp:245
+msgid "from 2nd to 1st side"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:245
+msgid "Width from 'top' to 'bottom'"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:246
+msgid "from 1st to 2nd side"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:246
+msgid "Width from 'bottom' to 'top'"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:248
+msgid "Hatches width and dir"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:248
+msgid "Defines hatches frequency and direction"
+msgstr ""
+
+#.
+#. bender(_("Global bending"), _("Relative position to a reference point defines global bending direction and amount"), "bender", &wr, this, NULL, Geom::Point(-5,0)),
+#: ../src/live_effects/lpe-rough-hatches.cpp:251
+msgid "Global bending"
+msgstr ""
+
+#: ../src/live_effects/lpe-rough-hatches.cpp:251
+msgid ""
+"Relative position to a reference point defines global bending direction and "
+"amount"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:27 ../share/extensions/restack.inx.h:7
+msgid "Left"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:28 ../share/extensions/restack.inx.h:14
+msgid "Right"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:29 ../src/live_effects/lpe-ruler.cpp:37
+msgid "Both"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:35 ../src/widgets/toolbox.cpp:5168
+msgid "Start"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:36 ../src/widgets/toolbox.cpp:5181
+msgid "End"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:44
+msgid "Mark distance"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:44
+msgid "Distance between successive ruler marks"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:45
+msgid "Major length"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:45
+msgid "Length of major ruler marks"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:46
+msgid "Minor length"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:46
+msgid "Length of minor ruler marks"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:47
+msgid "Major steps"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:47
+msgid "Draw a major mark every ... steps"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:48
+msgid "Shift marks by"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:48
+msgid "Shift marks by this many steps"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:49
+msgid "Mark direction"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:49
+msgid "Direction of marks (when viewing along the path from start to end)"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:50
+msgid "Offset of first mark"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:51
+msgid "Border marks"
+msgstr ""
+
+#: ../src/live_effects/lpe-ruler.cpp:51
+msgid "Choose whether to draw marks at the beginning and end of the path"
+msgstr ""
+
+#. initialise your parameters here:
+#. testpointA(_("Test Point A"), _("Test A"), "ptA", &wr, this, Geom::Point(100,100)),
+#: ../src/live_effects/lpe-sketch.cpp:35
+msgid "Strokes"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:35
+msgid "Draw that many approximating strokes"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:36
+msgid "Max stroke length"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:37
+msgid "Maximum length of approximating strokes"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:38
+msgid "Stroke length variation"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:39
+msgid "Random variation of stroke length (relative to maximum length)"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:40
+msgid "Max. overlap"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:41
+msgid "How much successive strokes should overlap (relative to maximum length)"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:42
+msgid "Overlap variation"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:43
+msgid "Random variation of overlap (relative to maximum overlap)"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:44
+msgid "Max. end tolerance"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:45
+msgid ""
+"Maximum distance between ends of original and approximating paths (relative "
+"to maximum length)"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:46
+msgid "Average offset"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:47
+msgid "Average distance each stroke is away from the original path"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:48
+msgid "Max. tremble"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:49
+msgid "Maximum tremble magnitude"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:50
+msgid "Tremble frequency"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:51
+msgid "Average number of tremble periods in a stroke"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:53
+msgid "Construction lines"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:54
+msgid "How many construction lines (tangents) to draw"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:55 ../src/selection-chemistry.cpp:1516
+#: ../src/seltrans.cpp:531 ../src/ui/dialog/transformation.cpp:738
+#: ../share/extensions/interp_att_g.inx.h:16
+#: ../share/extensions/render_alphabetsoup.inx.h:4
+msgid "Scale"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:56
+msgid ""
+"Scale factor relating curvature and length of construction lines (try "
+"5*offset)"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:57
+msgid "Max. length"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:57
+msgid "Maximum length of construction lines"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:58
+msgid "Length variation"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:58
+msgid "Random variation of the length of construction lines"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:59
+msgid "Placement randomness"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:59
+msgid "0: evenly distributed construction lines, 1: purely random placement"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:61
+msgid "k_min"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:61
+msgid "min curvature"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:62
+msgid "k_max"
+msgstr ""
+
+#: ../src/live_effects/lpe-sketch.cpp:62
+msgid "max curvature"
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:47
+msgid "Nb of generations"
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:47
+msgid "Depth of the recursion --- keep low!!"
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:48
+msgid "Generating path"
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:48
+msgid "Path whose segments define the iterated transforms"
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:49
+msgid "Use uniform transforms only"
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:49
+msgid ""
+"2 consecutive segments are used to reverse/preserve orientation only "
+"(otherwise, they define a general transform)."
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:50
+msgid "Draw all generations"
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:50
+msgid "If unchecked, draw only the last generation"
+msgstr ""
+
+#. ,draw_boxes(_("Display boxes"), _("Display boxes instead of paths only"), "draw_boxes", &wr, this, true)
+#: ../src/live_effects/lpe-vonkoch.cpp:52
+msgid "Reference segment"
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:52
+msgid "The reference segment. Defaults to the horizontal midline of the bbox."
+msgstr ""
+
+#. refA(_("Ref Start"), _("Left side middle of the reference box"), "refA", &wr, this),
+#. refB(_("Ref End"), _("Right side middle of the reference box"), "refB", &wr, this),
+#. FIXME: a path is used here instead of 2 points to work around path/point param incompatibility bug.
+#: ../src/live_effects/lpe-vonkoch.cpp:56
+msgid "Max complexity"
+msgstr ""
+
+#: ../src/live_effects/lpe-vonkoch.cpp:56
+msgid "Disable effect if the output is too complex"
+msgstr ""
+
+#: ../src/live_effects/parameter/bool.cpp:69
+msgid "Change bool parameter"
+msgstr ""
+
+#: ../src/live_effects/parameter/enum.h:50
+msgid "Change enumeration parameter"
+msgstr ""
+
+#: ../src/live_effects/parameter/parameter.cpp:139
+msgid "Change scalar parameter"
+msgstr ""
+
+#: ../src/live_effects/parameter/path.cpp:158
+msgid "Edit on-canvas"
+msgstr ""
+
+#: ../src/live_effects/parameter/path.cpp:168
+msgid "Copy path"
+msgstr ""
+
+#: ../src/live_effects/parameter/path.cpp:178
+msgid "Paste path"
+msgstr ""
+
+#: ../src/live_effects/parameter/path.cpp:188
+msgid "Link to path"
+msgstr ""
+
+#: ../src/live_effects/parameter/path.cpp:409
+msgid "Paste path parameter"
+msgstr ""
+
+#: ../src/live_effects/parameter/path.cpp:441
+msgid "Link path parameter to path"
+msgstr ""
+
+#: ../src/live_effects/parameter/point.cpp:91
+msgid "Change point parameter"
+msgstr ""
+
+#: ../src/live_effects/parameter/random.cpp:137
+msgid "Change random parameter"
+msgstr ""
+
+#: ../src/live_effects/parameter/text.cpp:101
+msgid "Change text parameter"
+msgstr ""
+
+#: ../src/live_effects/parameter/unit.cpp:77
+msgid "Change unit parameter"
+msgstr ""
+
+#: ../src/main-cmdlineact.cpp:49
+#, c-format
+msgid "Unable to find verb ID '%s' specified on the command line.\n"
+msgstr ""
+
+#: ../src/main-cmdlineact.cpp:61
+#, c-format
+msgid "Unable to find node ID: '%s'\n"
+msgstr ""
+
+#: ../src/main.cpp:265
+msgid "Print the Inkscape version number"
+msgstr ""
+
+#: ../src/main.cpp:270
+msgid "Do not use X server (only process files from console)"
+msgstr ""
+
+#: ../src/main.cpp:275
+msgid "Try to use X server (even if $DISPLAY is not set)"
+msgstr ""
+
+#: ../src/main.cpp:280
+msgid "Open specified document(s) (option string may be excluded)"
+msgstr ""
+
+#: ../src/main.cpp:281 ../src/main.cpp:286 ../src/main.cpp:291
+#: ../src/main.cpp:358 ../src/main.cpp:363 ../src/main.cpp:368
+#: ../src/main.cpp:373 ../src/main.cpp:379
+msgid "FILENAME"
+msgstr ""
+
+#: ../src/main.cpp:285
+msgid "Print document(s) to specified output file (use '| program' for pipe)"
+msgstr ""
+
+#: ../src/main.cpp:290
+msgid "Export document to a PNG file"
+msgstr ""
+
+#: ../src/main.cpp:295
+msgid ""
+"Resolution for exporting to bitmap and for rasterization of filters in PS/"
+"EPS/PDF (default 90)"
+msgstr ""
+
+#: ../src/main.cpp:296 ../src/ui/widget/rendering-options.cpp:43
+msgid "DPI"
+msgstr ""
+
+#: ../src/main.cpp:300
+msgid ""
+"Exported area in SVG user units (default is the page; 0,0 is lower-left "
+"corner)"
+msgstr ""
+
+#: ../src/main.cpp:301
+msgid "x0:y0:x1:y1"
+msgstr ""
+
+#: ../src/main.cpp:305
+msgid "Exported area is the entire drawing (not page)"
+msgstr ""
+
+#: ../src/main.cpp:310
+msgid "Exported area is the entire page"
+msgstr ""
+
+#: ../src/main.cpp:315
+msgid ""
+"Snap the bitmap export area outwards to the nearest integer values (in SVG "
+"user units)"
+msgstr ""
+
+#: ../src/main.cpp:320
+msgid "The width of exported bitmap in pixels (overrides export-dpi)"
+msgstr ""
+
+#: ../src/main.cpp:321
+msgid "WIDTH"
+msgstr ""
+
+#: ../src/main.cpp:325
+msgid "The height of exported bitmap in pixels (overrides export-dpi)"
+msgstr ""
+
+#: ../src/main.cpp:326
+msgid "HEIGHT"
+msgstr ""
+
+#: ../src/main.cpp:330
+msgid "The ID of the object to export"
+msgstr ""
+
+#: ../src/main.cpp:331 ../src/main.cpp:424
+msgid "ID"
+msgstr ""
+
+#. TRANSLATORS: this means: "Only export the object whose id is given in --export-id".
+#. See "man inkscape" for details.
+#: ../src/main.cpp:337
+msgid ""
+"Export just the object with export-id, hide all others (only with export-id)"
+msgstr ""
+
+#: ../src/main.cpp:342
+msgid "Use stored filename and DPI hints when exporting (only with export-id)"
+msgstr ""
+
+#: ../src/main.cpp:347
+msgid "Background color of exported bitmap (any SVG-supported color string)"
+msgstr ""
+
+#: ../src/main.cpp:348
+msgid "COLOR"
+msgstr ""
+
+#: ../src/main.cpp:352
+msgid "Background opacity of exported bitmap (either 0.0 to 1.0, or 1 to 255)"
+msgstr ""
+
+#: ../src/main.cpp:353
+msgid "VALUE"
+msgstr ""
+
+#: ../src/main.cpp:357
+msgid "Export document to plain SVG file (no sodipodi or inkscape namespaces)"
+msgstr ""
+
+#: ../src/main.cpp:362
+msgid "Export document to a PS file"
+msgstr ""
+
+#: ../src/main.cpp:367
+msgid "Export document to an EPS file"
+msgstr ""
+
+#: ../src/main.cpp:372
+msgid "Export document to a PDF file"
+msgstr ""
+
+#: ../src/main.cpp:378
+msgid "Export document to an Enhanced Metafile (EMF) File"
+msgstr ""
+
+#: ../src/main.cpp:384
+msgid "Convert text object to paths on export (PS, EPS, PDF)"
+msgstr ""
+
+#: ../src/main.cpp:389
+msgid ""
+"Render filtered objects without filters, instead of rasterizing (PS, EPS, "
+"PDF)"
+msgstr ""
+
+#. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help"
+#: ../src/main.cpp:395
+msgid ""
+"Query the X coordinate of the drawing or, if specified, of the object with --"
+"query-id"
+msgstr ""
+
+#. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help"
+#: ../src/main.cpp:401
+msgid ""
+"Query the Y coordinate of the drawing or, if specified, of the object with --"
+"query-id"
+msgstr ""
+
+#. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help"
+#: ../src/main.cpp:407
+msgid ""
+"Query the width of the drawing or, if specified, of the object with --query-"
+"id"
+msgstr ""
+
+#. TRANSLATORS: "--query-id" is an Inkscape command line option; see "inkscape --help"
+#: ../src/main.cpp:413
+msgid ""
+"Query the height of the drawing or, if specified, of the object with --query-"
+"id"
+msgstr ""
+
+#: ../src/main.cpp:418
+msgid "List id,x,y,w,h for all objects"
+msgstr ""
+
+#: ../src/main.cpp:423
+msgid "The ID of the object whose dimensions are queried"
+msgstr ""
+
+#. TRANSLATORS: this option makes Inkscape print the name (path) of the extension directory
+#: ../src/main.cpp:429
+msgid "Print out the extension directory and exit"
+msgstr ""
+
+#: ../src/main.cpp:434
+msgid "Remove unused definitions from the defs section(s) of the document"
+msgstr ""
+
+#: ../src/main.cpp:439
+msgid "List the IDs of all the verbs in Inkscape"
+msgstr ""
+
+#: ../src/main.cpp:444
+msgid "Verb to call when Inkscape opens."
+msgstr ""
+
+#: ../src/main.cpp:445
+msgid "VERB-ID"
+msgstr ""
+
+#: ../src/main.cpp:449
+msgid "Object ID to select when Inkscape opens."
+msgstr ""
+
+#: ../src/main.cpp:450
+msgid "OBJECT-ID"
+msgstr ""
+
+#: ../src/main.cpp:454
+msgid "Start Inkscape in interactive shell mode."
+msgstr ""
+
+#: ../src/main.cpp:762 ../src/main.cpp:1088
+msgid ""
+"[OPTIONS...] [FILE...]\n"
+"\n"
+"Available options:"
+msgstr ""
+
+#. ## Add a menu for clear()
+#: ../src/menus-skeleton.h:16 ../src/ui/dialog/debug.cpp:74
+#: ../src/ui/dialog/messages.cpp:52 ../src/ui/dialog/scriptdialog.cpp:208
+msgid "_File"
+msgstr ""
+
+#: ../src/menus-skeleton.h:17
+msgid "_New"
+msgstr ""
+
+#. TODO look at some dynamic option for changing the menu tree:
+#. "       <verb verb-id=\"DialogInput2\" />\n"
+#: ../src/menus-skeleton.h:49 ../src/verbs.cpp:2488 ../src/verbs.cpp:2494
+msgid "_Edit"
+msgstr ""
+
+#: ../src/menus-skeleton.h:59 ../src/verbs.cpp:2288
+msgid "Paste Si_ze"
+msgstr ""
+
+#: ../src/menus-skeleton.h:71
+msgid "Clo_ne"
+msgstr ""
+
+#: ../src/menus-skeleton.h:91
+msgid "_View"
+msgstr ""
+
+#: ../src/menus-skeleton.h:92
+msgid "_Zoom"
+msgstr ""
+
+#: ../src/menus-skeleton.h:108
+msgid "_Display mode"
+msgstr ""
+
+#: ../src/menus-skeleton.h:120
+msgid "Show/Hide"
+msgstr ""
+
+#. "       <verb verb-id=\"DialogScript\" />\n"
+#. Not quite ready to be in the menus.
+#. "       <verb verb-id=\"FocusToggle\" />\n"
+#: ../src/menus-skeleton.h:139
+msgid "_Layer"
+msgstr ""
+
+#: ../src/menus-skeleton.h:159
+msgid "_Object"
+msgstr ""
+
+#: ../src/menus-skeleton.h:166
+msgid "Cli_p"
+msgstr ""
+
+#: ../src/menus-skeleton.h:170
+msgid "Mas_k"
+msgstr ""
+
+#: ../src/menus-skeleton.h:174
+msgid "Patter_n"
+msgstr ""
+
+#: ../src/menus-skeleton.h:198
+msgid "_Path"
+msgstr ""
+
+#: ../src/menus-skeleton.h:225
+msgid "_Text"
+msgstr ""
+
+#: ../src/menus-skeleton.h:244
+msgid "Filter_s"
+msgstr ""
+
+#: ../src/menus-skeleton.h:250
+msgid "Exte_nsions"
+msgstr ""
+
+#: ../src/menus-skeleton.h:257
+msgid "Whiteboa_rd"
+msgstr ""
+
+#: ../src/menus-skeleton.h:261
+msgid "_Help"
+msgstr ""
+
+#: ../src/menus-skeleton.h:265
+msgid "Tutorials"
+msgstr ""
+
+#: ../src/node-context.cpp:228
+msgid ""
+"<b>Ctrl</b>: toggle node type, snap handle angle, move hor/vert; <b>Ctrl"
+"+Alt</b>: move along handles"
+msgstr ""
+
+#: ../src/node-context.cpp:229
+msgid ""
+"<b>Shift</b>: toggle node selection, disable snapping, rotate both handles"
+msgstr ""
+
+#: ../src/node-context.cpp:230
+msgid "<b>Alt</b>: lock handle length; <b>Ctrl+Alt</b>: move along handles"
+msgstr ""
+
+#: ../src/nodepath.cpp:755 ../src/seltrans.cpp:624
+msgid "Stamp"
+msgstr ""
+
+#: ../src/nodepath.cpp:1671 ../src/nodepath.cpp:1697
+msgid "Move nodes vertically"
+msgstr ""
+
+#: ../src/nodepath.cpp:1673 ../src/nodepath.cpp:1699
+msgid "Move nodes horizontally"
+msgstr ""
+
+#: ../src/nodepath.cpp:1675 ../src/nodepath.cpp:1701 ../src/nodepath.cpp:1716
+#: ../src/nodepath.cpp:3625
+msgid "Move nodes"
+msgstr ""
+
+#: ../src/nodepath.cpp:1754
+msgid ""
+"<b>Node handle</b>: drag to shape the curve; with <b>Ctrl</b> to snap angle; "
+"with <b>Alt</b> to lock length; with <b>Shift</b> to rotate both handles"
+msgstr ""
+
+#: ../src/nodepath.cpp:1924
+msgid "Align nodes"
+msgstr ""
+
+#: ../src/nodepath.cpp:1986
+msgid "Distribute nodes"
+msgstr ""
+
+#: ../src/nodepath.cpp:2024
+msgid "Add nodes"
+msgstr ""
+
+#: ../src/nodepath.cpp:2026 ../src/nodepath.cpp:2128
+msgid "Add node"
+msgstr ""
+
+#: ../src/nodepath.cpp:2220
+msgid "Break path"
+msgstr ""
+
+#: ../src/nodepath.cpp:2276
+msgid "Close subpath"
+msgstr ""
+
+#: ../src/nodepath.cpp:2337
+msgid "Join nodes"
+msgstr ""
+
+#: ../src/nodepath.cpp:2364
+msgid "Close subpath by segment"
+msgstr ""
+
+#: ../src/nodepath.cpp:2418
+msgid "Join nodes by segment"
+msgstr ""
+
+#: ../src/nodepath.cpp:2431 ../src/nodepath.cpp:2446
+msgid "To join, you must have <b>two endnodes</b> selected."
+msgstr ""
+
+#: ../src/nodepath.cpp:2603 ../src/nodepath.cpp:2639 ../src/nodepath.cpp:2643
+msgid "Delete nodes"
+msgstr ""
+
+#: ../src/nodepath.cpp:2605
+msgid "Delete nodes preserving shape"
+msgstr ""
+
+#: ../src/nodepath.cpp:2662 ../src/nodepath.cpp:2676
+msgid ""
+"Select <b>two non-endpoint nodes</b> on a path between which to delete "
+"segments."
+msgstr ""
+
+#: ../src/nodepath.cpp:2772
+msgid "Cannot find path between nodes."
+msgstr ""
+
+#: ../src/nodepath.cpp:2804 ../src/widgets/toolbox.cpp:1343
+msgid "Delete segment"
+msgstr ""
+
+#: ../src/nodepath.cpp:2825
+msgid "Change segment type"
+msgstr ""
+
+#: ../src/nodepath.cpp:2842 ../src/nodepath.cpp:3579
+msgid "Change node type"
+msgstr ""
+
+#: ../src/nodepath.cpp:3529 ../src/widgets/toolbox.cpp:1300
+msgid "Delete node"
+msgstr ""
+
+#: ../src/nodepath.cpp:3871
+msgid "Retract handle"
+msgstr ""
+
+#: ../src/nodepath.cpp:3926
+msgid "Move node handle"
+msgstr ""
+
+#: ../src/nodepath.cpp:4111
+#, c-format
+msgid ""
+"<b>Node handle</b>: angle %0.2f&#176;, length %s; with <b>Ctrl</b> to snap "
+"angle; with <b>Alt</b> to lock length; with <b>Shift</b> to rotate both "
+"handles"
+msgstr ""
+
+#: ../src/nodepath.cpp:4305
+msgid "Rotate nodes"
+msgstr ""
+
+#: ../src/nodepath.cpp:4420
+msgid "Cannot scale nodes when all are at the same location."
+msgstr ""
+
+#: ../src/nodepath.cpp:4446
+msgid "Scale nodes"
+msgstr ""
+
+#: ../src/nodepath.cpp:4490
+msgid "Flip nodes"
+msgstr ""
+
+#: ../src/nodepath.cpp:4659
+msgid ""
+"<b>Node</b>: drag to edit the path; with <b>Ctrl</b> to snap to horizontal/"
+"vertical; with <b>Ctrl+Alt</b> to snap to handles' directions"
+msgstr ""
+
+#. TRANSLATORS: "end" is an adjective here (NOT a verb)
+#: ../src/nodepath.cpp:4892
+msgid "end node"
+msgstr ""
+
+#. TRANSLATORS: "cusp" means "sharp" (cusp node); see also the Advanced Tutorial
+#: ../src/nodepath.cpp:4897
+msgid "cusp"
+msgstr ""
+
+#. TRANSLATORS: "smooth" is an adjective here
+#: ../src/nodepath.cpp:4900
+msgid "smooth"
+msgstr ""
+
+#: ../src/nodepath.cpp:4902
+msgid "auto"
+msgstr ""
+
+#: ../src/nodepath.cpp:4904
+msgid "symmetric"
+msgstr ""
+
+#. TRANSLATORS: "end" is an adjective here (NOT a verb)
+#: ../src/nodepath.cpp:4910
+msgid "end node, handle retracted (drag with <b>Shift</b> to extend)"
+msgstr ""
+
+#: ../src/nodepath.cpp:4912
+msgid "one handle retracted (drag with <b>Shift</b> to extend)"
+msgstr ""
+
+#: ../src/nodepath.cpp:4915
+msgid "both handles retracted (drag with <b>Shift</b> to extend)"
+msgstr ""
+
+#: ../src/nodepath.cpp:4927
+msgid ""
+"<b>Drag</b> nodes or node handles; <b>Alt+drag</b> nodes to sculpt; "
+"<b>arrow</b> keys to move nodes, <b>&lt; &gt;</b> to scale, <b>[ ]</b> to "
+"rotate"
+msgstr ""
+
+#: ../src/nodepath.cpp:4928
+msgid "<b>Drag</b> the node or its handles; <b>arrow</b> keys to move the node"
+msgstr ""
+
+#: ../src/nodepath.cpp:4954 ../src/nodepath.cpp:4966
+msgid "Select a single object to edit its nodes or handles."
+msgstr ""
+
+#: ../src/nodepath.cpp:4958
+#, c-format
+msgid ""
+"<b>0</b> out of <b>%i</b> node selected. <b>Click</b>, <b>Shift+click</b>, "
+"or <b>drag around</b> nodes to select."
+msgid_plural ""
+"<b>0</b> out of <b>%i</b> nodes selected. <b>Click</b>, <b>Shift+click</b>, "
+"or <b>drag around</b> nodes to select."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/nodepath.cpp:4964
+msgid "Drag the handles of the object to modify it."
+msgstr ""
+
+#: ../src/nodepath.cpp:4972
+#, c-format
+msgid "<b>%i</b> of <b>%i</b> node selected; %s. %s."
+msgid_plural "<b>%i</b> of <b>%i</b> nodes selected; %s. %s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/nodepath.cpp:4979
+#, c-format
+msgid ""
+"<b>%i</b> of <b>%i</b> node selected in <b>%i</b> of <b>%i</b> subpaths. %s."
+msgid_plural ""
+"<b>%i</b> of <b>%i</b> nodes selected in <b>%i</b> of <b>%i</b> subpaths. %s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/nodepath.cpp:4985
+#, c-format
+msgid "<b>%i</b> of <b>%i</b> node selected. %s."
+msgid_plural "<b>%i</b> of <b>%i</b> nodes selected. %s."
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/object-edit.cpp:439
+msgid ""
+"Adjust the <b>horizontal rounding</b> radius; with <b>Ctrl</b> to make the "
+"vertical radius the same"
+msgstr ""
+
+#: ../src/object-edit.cpp:443
+msgid ""
+"Adjust the <b>vertical rounding</b> radius; with <b>Ctrl</b> to make the "
+"horizontal radius the same"
+msgstr ""
+
+#: ../src/object-edit.cpp:447 ../src/object-edit.cpp:451
+msgid ""
+"Adjust the <b>width and height</b> of the rectangle; with <b>Ctrl</b> to "
+"lock ratio or stretch in one dimension only"
+msgstr ""
+
+#: ../src/object-edit.cpp:685 ../src/object-edit.cpp:688
+#: ../src/object-edit.cpp:691 ../src/object-edit.cpp:694
+msgid ""
+"Resize box in X/Y direction; with <b>Shift</b> along the Z axis; with "
+"<b>Ctrl</b> to constrain to the directions of edges or diagonals"
+msgstr ""
+
+#: ../src/object-edit.cpp:697 ../src/object-edit.cpp:700
+#: ../src/object-edit.cpp:703 ../src/object-edit.cpp:706
+msgid ""
+"Resize box along the Z axis; with <b>Shift</b> in X/Y direction; with "
+"<b>Ctrl</b> to constrain to the directions of edges or diagonals"
+msgstr ""
+
+#: ../src/object-edit.cpp:709
+msgid "Move the box in perspective"
+msgstr ""
+
+#: ../src/object-edit.cpp:927
+msgid "Adjust ellipse <b>width</b>, with <b>Ctrl</b> to make circle"
+msgstr ""
+
+#: ../src/object-edit.cpp:930
+msgid "Adjust ellipse <b>height</b>, with <b>Ctrl</b> to make circle"
+msgstr ""
+
+#: ../src/object-edit.cpp:933
+msgid ""
+"Position the <b>start point</b> of the arc or segment; with <b>Ctrl</b> to "
+"snap angle; drag <b>inside</b> the ellipse for arc, <b>outside</b> for "
+"segment"
+msgstr ""
+
+#: ../src/object-edit.cpp:937
+msgid ""
+"Position the <b>end point</b> of the arc or segment; with <b>Ctrl</b> to "
+"snap angle; drag <b>inside</b> the ellipse for arc, <b>outside</b> for "
+"segment"
+msgstr ""
+
+#: ../src/object-edit.cpp:1076
+msgid ""
+"Adjust the <b>tip radius</b> of the star or polygon; with <b>Shift</b> to "
+"round; with <b>Alt</b> to randomize"
+msgstr ""
+
+#: ../src/object-edit.cpp:1083
+msgid ""
+"Adjust the <b>base radius</b> of the star; with <b>Ctrl</b> to keep star "
+"rays radial (no skew); with <b>Shift</b> to round; with <b>Alt</b> to "
+"randomize"
+msgstr ""
+
+#: ../src/object-edit.cpp:1272
+msgid ""
+"Roll/unroll the spiral from <b>inside</b>; with <b>Ctrl</b> to snap angle; "
+"with <b>Alt</b> to converge/diverge"
+msgstr ""
+
+#: ../src/object-edit.cpp:1275
+msgid ""
+"Roll/unroll the spiral from <b>outside</b>; with <b>Ctrl</b> to snap angle; "
+"with <b>Shift</b> to scale/rotate"
+msgstr ""
+
+#: ../src/object-edit.cpp:1319
+msgid "Adjust the <b>offset distance</b>"
+msgstr ""
+
+#: ../src/object-edit.cpp:1355
+msgid "Drag to resize the <b>flowed text frame</b>"
+msgstr ""
+
+#: ../src/path-chemistry.cpp:49
+msgid "Select <b>object(s)</b> to combine."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:53
+msgid "Combining paths..."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:161
+msgid "Combine"
+msgstr ""
+
+#: ../src/path-chemistry.cpp:168
+msgid "<b>No path(s)</b> to combine in the selection."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:180
+msgid "Select <b>path(s)</b> to break apart."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:184
+msgid "Breaking apart paths..."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:271
+msgid "Break apart"
+msgstr ""
+
+#: ../src/path-chemistry.cpp:273
+msgid "<b>No path(s)</b> to break apart in the selection."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:285
+msgid "Select <b>object(s)</b> to convert to path."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:291
+msgid "Converting objects to paths..."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:313
+msgid "Object to path"
+msgstr ""
+
+#: ../src/path-chemistry.cpp:315
+msgid "<b>No objects</b> to convert to path in the selection."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:551
+msgid "Select <b>path(s)</b> to reverse."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:560
+msgid "Reversing paths..."
+msgstr ""
+
+#: ../src/path-chemistry.cpp:594
+msgid "Reverse path"
+msgstr ""
+
+#: ../src/path-chemistry.cpp:596
+msgid "<b>No paths</b> to reverse in the selection."
+msgstr ""
+
+#: ../src/pencil-context.cpp:269 ../src/pen-context.cpp:493
+msgid "Continuing selected path"
+msgstr ""
+
+#: ../src/pencil-context.cpp:277 ../src/pen-context.cpp:503
+msgid "Creating new path"
+msgstr ""
+
+#: ../src/pencil-context.cpp:280 ../src/pen-context.cpp:505
+msgid "Appending to selected path"
+msgstr ""
+
+#: ../src/pencil-context.cpp:381
+msgid "<b>Release</b> here to close and finish the path."
+msgstr ""
+
+#: ../src/pencil-context.cpp:387
+msgid "Drawing a freehand path"
+msgstr ""
+
+#: ../src/pencil-context.cpp:392
+msgid "<b>Drag</b> to continue the path from this point."
+msgstr ""
+
+#. Write curves to object
+#: ../src/pencil-context.cpp:466
+msgid "Finishing freehand"
+msgstr ""
+
+#: ../src/pencil-context.cpp:522 ../src/pen-context.cpp:253
+msgid "Drawing cancelled"
+msgstr ""
+
+#: ../src/pencil-context.cpp:572
+msgid ""
+"<b>Sketch mode</b>: holding <b>Alt</b> interpolates between sketched paths. "
+"Release <b>Alt</b> to finalize."
+msgstr ""
+
+#: ../src/pencil-context.cpp:600
+msgid "Finishing freehand sketch"
+msgstr ""
+
+#: ../src/pen-context.cpp:662
+msgid "<b>Click</b> or <b>click and drag</b> to close and finish the path."
+msgstr ""
+
+#: ../src/pen-context.cpp:672
+msgid ""
+"<b>Click</b> or <b>click and drag</b> to continue the path from this point."
+msgstr ""
+
+#: ../src/pen-context.cpp:1266
+#, c-format
+msgid ""
+"<b>Curve segment</b>: angle %3.2f&#176;, distance %s; with <b>Ctrl</b> to "
+"snap angle, <b>Enter</b> to finish the path"
+msgstr ""
+
+#: ../src/pen-context.cpp:1267
+#, c-format
+msgid ""
+"<b>Line segment</b>: angle %3.2f&#176;, distance %s; with <b>Ctrl</b> to "
+"snap angle, <b>Enter</b> to finish the path"
+msgstr ""
+
+#: ../src/pen-context.cpp:1285
+#, c-format
+msgid ""
+"<b>Curve handle</b>: angle %3.2f&#176;, length %s; with <b>Ctrl</b> to snap "
+"angle"
+msgstr ""
+
+#: ../src/pen-context.cpp:1307
+#, c-format
+msgid ""
+"<b>Curve handle, symmetric</b>: angle %3.2f&#176;, length %s; with <b>Ctrl</"
+"b> to snap angle, with <b>Shift</b> to move this handle only"
+msgstr ""
+
+#: ../src/pen-context.cpp:1308
+#, c-format
+msgid ""
+"<b>Curve handle</b>: angle %3.2f&#176;, length %s; with <b>Ctrl</b> to snap "
+"angle, with <b>Shift</b> to move this handle only"
+msgstr ""
+
+#: ../src/pen-context.cpp:1355
+msgid "Drawing finished"
+msgstr ""
+
+#: ../src/persp3d.cpp:335
+msgid "Toggle vanishing point"
+msgstr ""
+
+#: ../src/persp3d.cpp:346
+msgid "Toggle multiple vanishing points"
+msgstr ""
+
+#: ../src/preferences.cpp:129
+msgid ""
+"Inkscape will run with default settings, and new settings will not be saved. "
+msgstr ""
+
+#. the creation failed
+#. _reportError(Glib::ustring::compose(_("Cannot create profile directory %1."),
+#. Glib::filename_to_utf8(_prefs_dir)), not_saved);
+#: ../src/preferences.cpp:144
+#, c-format
+msgid "Cannot create profile directory %s."
+msgstr ""
+
+#. The profile dir is not actually a directory
+#. _reportError(Glib::ustring::compose(_("%1 is not a valid directory."),
+#. Glib::filename_to_utf8(_prefs_dir)), not_saved);
+#: ../src/preferences.cpp:162
+#, c-format
+msgid "%s is not a valid directory."
+msgstr ""
+
+#. The write failed.
+#. _reportError(Glib::ustring::compose(_("Failed to create the preferences file %1."),
+#. Glib::filename_to_utf8(_prefs_filename)), not_saved);
+#: ../src/preferences.cpp:173
+#, c-format
+msgid "Failed to create the preferences file %s."
+msgstr ""
+
+#: ../src/preferences.cpp:209
+#, c-format
+msgid "The preferences file %s is not a regular file."
+msgstr ""
+
+#: ../src/preferences.cpp:219
+#, c-format
+msgid "The preferences file %s could not be read."
+msgstr ""
+
+#: ../src/preferences.cpp:230
+#, c-format
+msgid "The preferences file %s is not a valid XML document."
+msgstr ""
+
+#: ../src/preferences.cpp:239
+#, c-format
+msgid "The file %s is not a valid Inkscape preferences file."
+msgstr ""
+
+#: ../src/preferences-skeleton.h:98
+msgid "Dip pen"
+msgstr ""
+
+#: ../src/preferences-skeleton.h:99
+msgid "Marker"
+msgstr ""
+
+#: ../src/preferences-skeleton.h:100
+msgid "Brush"
+msgstr ""
+
+#: ../src/preferences-skeleton.h:101
+msgid "Wiggly"
+msgstr ""
+
+#: ../src/preferences-skeleton.h:102
+msgid "Splotchy"
+msgstr ""
+
+#: ../src/preferences-skeleton.h:103
+msgid "Tracing"
+msgstr ""
+
+#: ../src/rdf.cpp:172
+msgid "CC Attribution"
+msgstr ""
+
+#: ../src/rdf.cpp:177
+msgid "CC Attribution-ShareAlike"
+msgstr ""
+
+#: ../src/rdf.cpp:182
+msgid "CC Attribution-NoDerivs"
+msgstr ""
+
+#: ../src/rdf.cpp:187
+msgid "CC Attribution-NonCommercial"
+msgstr ""
+
+#: ../src/rdf.cpp:192
+msgid "CC Attribution-NonCommercial-ShareAlike"
+msgstr ""
+
+#: ../src/rdf.cpp:197
+msgid "CC Attribution-NonCommercial-NoDerivs"
+msgstr ""
+
+#: ../src/rdf.cpp:202
+msgid "Public Domain"
+msgstr ""
+
+#: ../src/rdf.cpp:207
+msgid "FreeArt"
+msgstr ""
+
+#: ../src/rdf.cpp:212
+msgid "Open Font License"
+msgstr ""
+
+#: ../src/rdf.cpp:229
+msgid "Title"
+msgstr ""
+
+#: ../src/rdf.cpp:230
+msgid "Name by which this document is formally known."
+msgstr ""
+
+#: ../src/rdf.cpp:232
+msgid "Date"
+msgstr ""
+
+#: ../src/rdf.cpp:233
+msgid "Date associated with the creation of this document (YYYY-MM-DD)."
+msgstr ""
+
+#: ../src/rdf.cpp:235
+msgid "Format"
+msgstr ""
+
+#: ../src/rdf.cpp:236
+msgid "The physical or digital manifestation of this document (MIME type)."
+msgstr ""
+
+#: ../src/rdf.cpp:239
+msgid "Type of document (DCMI Type)."
+msgstr ""
+
+#: ../src/rdf.cpp:242
+msgid "Creator"
+msgstr ""
+
+#: ../src/rdf.cpp:243
+msgid ""
+"Name of entity primarily responsible for making the content of this document."
+msgstr ""
+
+#: ../src/rdf.cpp:245
+msgid "Rights"
+msgstr ""
+
+#: ../src/rdf.cpp:246
+msgid ""
+"Name of entity with rights to the Intellectual Property of this document."
+msgstr ""
+
+#: ../src/rdf.cpp:248
+msgid "Publisher"
+msgstr ""
+
+#: ../src/rdf.cpp:249
+msgid "Name of entity responsible for making this document available."
+msgstr ""
+
+#: ../src/rdf.cpp:252
+msgid "Identifier"
+msgstr ""
+
+#: ../src/rdf.cpp:253
+msgid "Unique URI to reference this document."
+msgstr ""
+
+#: ../src/rdf.cpp:255 ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1438
+msgid "Source"
+msgstr ""
+
+#: ../src/rdf.cpp:256
+msgid "Unique URI to reference the source of this document."
+msgstr ""
+
+#: ../src/rdf.cpp:258
+msgid "Relation"
+msgstr ""
+
+#: ../src/rdf.cpp:259
+msgid "Unique URI to a related document."
+msgstr ""
+
+#: ../src/rdf.cpp:261
+msgid "Language"
+msgstr ""
+
+#: ../src/rdf.cpp:262
+msgid ""
+"Two-letter language tag with optional subtags for the language of this "
+"document.  (e.g. 'en-GB')"
+msgstr ""
+
+#: ../src/rdf.cpp:264
+msgid "Keywords"
+msgstr ""
+
+#: ../src/rdf.cpp:265
+msgid ""
+"The topic of this document as comma-separated key words, phrases, or "
+"classifications."
+msgstr ""
+
+#. TRANSLATORS: "Coverage": the spatial or temporal characteristics of the content.
+#. For info, see Appendix D of http://www.w3.org/TR/1998/WD-rdf-schema-19980409/
+#: ../src/rdf.cpp:269
+msgid "Coverage"
+msgstr ""
+
+#: ../src/rdf.cpp:270
+msgid "Extent or scope of this document."
+msgstr ""
+
+#: ../src/rdf.cpp:273 ../src/ui/widget/page-sizer.cpp:239
+msgid "Description"
+msgstr ""
+
+#: ../src/rdf.cpp:274
+msgid "A short account of the content of this document."
+msgstr ""
+
+#. FIXME: need to handle 1 agent per line of input
+#: ../src/rdf.cpp:278
+msgid "Contributors"
+msgstr ""
+
+#: ../src/rdf.cpp:279
+msgid ""
+"Names of entities responsible for making contributions to the content of "
+"this document."
+msgstr ""
+
+#. TRANSLATORS: URL to a page that defines the license for the document
+#: ../src/rdf.cpp:283
+msgid "URI"
+msgstr ""
+
+#. TRANSLATORS: this is where you put a URL to a page that defines the license
+#: ../src/rdf.cpp:285
+msgid "URI to this document's license's namespace definition."
+msgstr ""
+
+#. TRANSLATORS: fragment of XML representing the license of the document
+#: ../src/rdf.cpp:289
+msgid "Fragment"
+msgstr ""
+
+#: ../src/rdf.cpp:290
+msgid "XML fragment for the RDF 'License' section."
+msgstr ""
+
+#: ../src/rect-context.cpp:361
+msgid ""
+"<b>Ctrl</b>: make square or integer-ratio rect, lock a rounded corner "
+"circular"
+msgstr ""
+
+#: ../src/rect-context.cpp:508
+#, c-format
+msgid ""
+"<b>Rectangle</b>: %s &#215; %s (constrained to ratio %d:%d); with <b>Shift</"
+"b> to draw around the starting point"
+msgstr ""
+
+#: ../src/rect-context.cpp:511
+#, c-format
+msgid ""
+"<b>Rectangle</b>: %s &#215; %s (constrained to golden ratio 1.618 : 1); with "
+"<b>Shift</b> to draw around the starting point"
+msgstr ""
+
+#: ../src/rect-context.cpp:513
+#, c-format
+msgid ""
+"<b>Rectangle</b>: %s &#215; %s (constrained to golden ratio 1 : 1.618); with "
+"<b>Shift</b> to draw around the starting point"
+msgstr ""
+
+#: ../src/rect-context.cpp:517
+#, c-format
+msgid ""
+"<b>Rectangle</b>: %s &#215; %s; with <b>Ctrl</b> to make square or integer-"
+"ratio rectangle; with <b>Shift</b> to draw around the starting point"
+msgstr ""
+
+#: ../src/rect-context.cpp:542
+msgid "Create rectangle"
+msgstr ""
+
+#: ../src/select-context.cpp:233
+msgid "Move canceled."
+msgstr ""
+
+#: ../src/select-context.cpp:241
+msgid "Selection canceled."
+msgstr ""
+
+#: ../src/select-context.cpp:555
+msgid ""
+"<b>Draw over</b> objects to select them; release <b>Alt</b> to switch to "
+"rubberband selection"
+msgstr ""
+
+#: ../src/select-context.cpp:557
+msgid ""
+"<b>Drag around</b> objects to select them; press <b>Alt</b> to switch to "
+"touch selection"
+msgstr ""
+
+#: ../src/select-context.cpp:721
+msgid "<b>Ctrl</b>: click to select in groups; drag to move hor/vert"
+msgstr ""
+
+#: ../src/select-context.cpp:722
+msgid "<b>Shift</b>: click to toggle select; drag for rubberband selection"
+msgstr ""
+
+#: ../src/select-context.cpp:723
+msgid ""
+"<b>Alt</b>: click to select under; drag to move selected or select by touch"
+msgstr ""
+
+#: ../src/select-context.cpp:898
+msgid "Selected object is not a group. Cannot enter."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:195
+msgid "Delete text"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:203
+msgid "<b>Nothing</b> was deleted."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:221 ../src/text-context.cpp:995
+#: ../src/ui/dialog/swatches.cpp:471 ../src/widgets/toolbox.cpp:1304
+#: ../src/widgets/toolbox.cpp:5752
+msgid "Delete"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:249
+msgid "Select <b>object(s)</b> to duplicate."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:341
+msgid "Delete all"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:464
+msgid "Select <b>some objects</b> to group."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:537 ../src/selection-describer.cpp:53
+msgid "Group"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:551
+msgid "Select a <b>group</b> to ungroup."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:592
+msgid "<b>No groups</b> to ungroup in the selection."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:598 ../src/sp-item-group.cpp:516
+msgid "Ungroup"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:688
+msgid "Select <b>object(s)</b> to raise."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:694 ../src/selection-chemistry.cpp:756
+#: ../src/selection-chemistry.cpp:790 ../src/selection-chemistry.cpp:854
+msgid ""
+"You cannot raise/lower objects from <b>different groups</b> or <b>layers</b>."
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "Raise" means "to raise an object" in the undo history
+#: ../src/selection-chemistry.cpp:736
+msgid "undo_action|Raise"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:748
+msgid "Select <b>object(s)</b> to raise to top."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:771
+msgid "Raise to top"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:784
+msgid "Select <b>object(s)</b> to lower."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:834
+msgid "Lower"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:846
+msgid "Select <b>object(s)</b> to lower to bottom."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:881
+msgid "Lower to bottom"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:888
+msgid "Nothing to undo."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:895
+msgid "Nothing to redo."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:955
+msgid "Paste"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:962
+msgid "Paste style"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:971
+msgid "Paste live path effect"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:991
+msgid "Select <b>object(s)</b> to remove live path effects from."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1003
+msgid "Remove live path effect"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1014
+msgid "Select <b>object(s)</b> to remove filters from."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1024
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1336
+msgid "Remove filter"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1033
+msgid "Paste size"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1041
+msgid "Paste size separately"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1050
+msgid "Select <b>object(s)</b> to move to the layer above."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1076
+msgid "Raise to next layer"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1083
+msgid "No more layers above."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1095
+msgid "Select <b>object(s)</b> to move to the layer below."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1121
+msgid "Lower to previous layer"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1128
+msgid "No more layers below."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1315
+msgid "Remove transform"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1418
+msgid "Rotate 90&#176; CCW"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1418
+msgid "Rotate 90&#176; CW"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1439 ../src/seltrans.cpp:534
+#: ../src/ui/dialog/transformation.cpp:760
+msgid "Rotate"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1486
+msgid "Rotate by pixels"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1541
+msgid "Scale by whole factor"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1556
+msgid "Move vertically"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1559
+msgid "Move horizontally"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1562 ../src/selection-chemistry.cpp:1588
+#: ../src/seltrans.cpp:528 ../src/ui/dialog/transformation.cpp:681
+msgid "Move"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1582
+msgid "Move vertically by pixels"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1585
+msgid "Move horizontally by pixels"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1713
+msgid "The selection has no applied path effect."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1760
+msgid "The selection has no applied clip path."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1762
+msgid "The selection has no applied mask."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1919
+msgid "action|Clone"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1935
+msgid "Select <b>clones</b> to relink."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1942
+msgid "Copy an <b>object</b> to clipboard to relink clones to."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1966
+msgid "<b>No clones to relink</b> in the selection."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1969
+msgid "Relink clone"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:1983
+msgid "Select <b>clones</b> to unlink."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2032
+msgid "<b>No clones to unlink</b> in the selection."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2036
+msgid "Unlink clone"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2049
+msgid ""
+"Select a <b>clone</b> to go to its original. Select a <b>linked offset</b> "
+"to go to its source. Select a <b>text on path</b> to go to the path. Select "
+"a <b>flowed text</b> to go to its frame."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2072
+msgid ""
+"<b>Cannot find</b> the object to select (orphaned clone, offset, textpath, "
+"flowed text?)"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2078
+msgid ""
+"The object you're trying to select is <b>not visible</b> (it is in &lt;"
+"defs&gt;)"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2124
+msgid "Select <b>object(s)</b> to convert to marker."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2192
+msgid "Objects to marker"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2220
+msgid "Select <b>object(s)</b> to convert to guides."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2232
+msgid "Objects to guides"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2248
+msgid "Select <b>object(s)</b> to convert to pattern."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2336
+msgid "Objects to pattern"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2352
+msgid "Select an <b>object with pattern fill</b> to extract objects from."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2405
+msgid "<b>No pattern fills</b> in the selection."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2408
+msgid "Pattern to objects"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2493
+msgid "Select <b>object(s)</b> to make a bitmap copy."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2497
+msgid "Rendering bitmap..."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2676
+msgid "Create bitmap"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2708
+msgid "Select <b>object(s)</b> to create clippath or mask from."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2711
+msgid "Select mask object and <b>object(s)</b> to apply clippath or mask to."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2818
+msgid "Set clipping path"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2820
+msgid "Set mask"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2833
+msgid "Select <b>object(s)</b> to remove clippath or mask from."
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2906
+msgid "Release clipping path"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2908
+msgid "Release mask"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2924
+msgid "Select <b>object(s)</b> to fit canvas to."
+msgstr ""
+
+#. Fit Page
+#: ../src/selection-chemistry.cpp:2944 ../src/verbs.cpp:2723
+msgid "Fit Page to Selection"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2969 ../src/verbs.cpp:2725
+msgid "Fit Page to Drawing"
+msgstr ""
+
+#: ../src/selection-chemistry.cpp:2985 ../src/verbs.cpp:2727
+msgid "Fit Page to Selection or Drawing"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "Link" means internet link (anchor)
+#: ../src/selection-describer.cpp:45
+msgid "web|Link"
+msgstr ""
+
+#: ../src/selection-describer.cpp:47
+msgid "Circle"
+msgstr ""
+
+#. ellipse
+#: ../src/selection-describer.cpp:49 ../src/selection-describer.cpp:76
+#: ../src/ui/dialog/inkscape-preferences.cpp:474 ../src/verbs.cpp:2510
+#: ../src/widgets/toolbox.cpp:3890
+msgid "Ellipse"
+msgstr ""
+
+#: ../src/selection-describer.cpp:51
+msgid "Flowed text"
+msgstr ""
+
+#: ../src/selection-describer.cpp:57
+msgid "Line"
+msgstr ""
+
+#: ../src/selection-describer.cpp:59
+msgid "Path"
+msgstr ""
+
+#: ../src/selection-describer.cpp:61 ../src/widgets/toolbox.cpp:2726
+msgid "Polygon"
+msgstr ""
+
+#: ../src/selection-describer.cpp:63
+msgid "Polyline"
+msgstr ""
+
+#. Rectangle
+#: ../src/selection-describer.cpp:65
+#: ../src/ui/dialog/inkscape-preferences.cpp:464 ../src/verbs.cpp:2506
+msgid "Rectangle"
+msgstr ""
+
+#. 3D box
+#: ../src/selection-describer.cpp:67
+#: ../src/ui/dialog/inkscape-preferences.cpp:469 ../src/verbs.cpp:2508
+msgid "3D Box"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "Clone" is a noun, type of object
+#: ../src/selection-describer.cpp:74
+msgid "object|Clone"
+msgstr ""
+
+#: ../src/selection-describer.cpp:78
+msgid "Offset path"
+msgstr ""
+
+#. spiral
+#: ../src/selection-describer.cpp:80
+#: ../src/ui/dialog/inkscape-preferences.cpp:482 ../src/verbs.cpp:2514
+msgid "Spiral"
+msgstr ""
+
+#. star
+#: ../src/selection-describer.cpp:82
+#: ../src/ui/dialog/inkscape-preferences.cpp:478 ../src/verbs.cpp:2512
+#: ../src/widgets/toolbox.cpp:2733
+msgid "Star"
+msgstr ""
+
+#: ../src/selection-describer.cpp:128
+msgid "Click selection to toggle scale/rotation handles"
+msgstr ""
+
+#. no items
+#: ../src/selection-describer.cpp:130
+msgid ""
+"No objects selected. Click, Shift+click, or drag around objects to select."
+msgstr ""
+
+#: ../src/selection-describer.cpp:139
+msgid "root"
+msgstr ""
+
+#: ../src/selection-describer.cpp:151
+#, c-format
+msgid "layer <b>%s</b>"
+msgstr ""
+
+#: ../src/selection-describer.cpp:153
+#, c-format
+msgid "layer <b><i>%s</i></b>"
+msgstr ""
+
+#: ../src/selection-describer.cpp:162
+#, c-format
+msgid "<i>%s</i>"
+msgstr ""
+
+#: ../src/selection-describer.cpp:171
+#, c-format
+msgid " in %s"
+msgstr ""
+
+#: ../src/selection-describer.cpp:173
+#, c-format
+msgid " in group %s (%s)"
+msgstr ""
+
+#: ../src/selection-describer.cpp:175
+#, c-format
+msgid " in <b>%i</b> parents (%s)"
+msgid_plural " in <b>%i</b> parents (%s)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/selection-describer.cpp:178
+#, c-format
+msgid " in <b>%i</b> layers"
+msgid_plural " in <b>%i</b> layers"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/selection-describer.cpp:188
+msgid "Use <b>Shift+D</b> to look up original"
+msgstr ""
+
+#: ../src/selection-describer.cpp:192
+msgid "Use <b>Shift+D</b> to look up path"
+msgstr ""
+
+#: ../src/selection-describer.cpp:196
+msgid "Use <b>Shift+D</b> to look up frame"
+msgstr ""
+
+#. this is only used with 2 or more objects
+#: ../src/selection-describer.cpp:211 ../src/tweak-context.cpp:202
+#, c-format
+msgid "<b>%i</b> object selected"
+msgid_plural "<b>%i</b> objects selected"
+msgstr[0] ""
+msgstr[1] ""
+
+#. this is only used with 2 or more objects
+#: ../src/selection-describer.cpp:216
+#, c-format
+msgid "<b>%i</b> object of type <b>%s</b>"
+msgid_plural "<b>%i</b> objects of type <b>%s</b>"
+msgstr[0] ""
+msgstr[1] ""
+
+#. this is only used with 2 or more objects
+#: ../src/selection-describer.cpp:221
+#, c-format
+msgid "<b>%i</b> object of types <b>%s</b>, <b>%s</b>"
+msgid_plural "<b>%i</b> objects of types <b>%s</b>, <b>%s</b>"
+msgstr[0] ""
+msgstr[1] ""
+
+#. this is only used with 2 or more objects
+#: ../src/selection-describer.cpp:226
+#, c-format
+msgid "<b>%i</b> object of types <b>%s</b>, <b>%s</b>, <b>%s</b>"
+msgid_plural "<b>%i</b> objects of types <b>%s</b>, <b>%s</b>, <b>%s</b>"
+msgstr[0] ""
+msgstr[1] ""
+
+#. this is only used with 2 or more objects
+#: ../src/selection-describer.cpp:231
+#, c-format
+msgid "<b>%i</b> object of <b>%i</b> types"
+msgid_plural "<b>%i</b> objects of <b>%i</b> types"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/selection-describer.cpp:236
+#, c-format
+msgid "%s%s. %s."
+msgstr ""
+
+#: ../src/seltrans.cpp:537 ../src/ui/dialog/transformation.cpp:819
+msgid "Skew"
+msgstr ""
+
+#: ../src/seltrans.cpp:549
+msgid "Set center"
+msgstr ""
+
+#: ../src/seltrans.cpp:646
+msgid ""
+"<b>Center</b> of rotation and skewing: drag to reposition; scaling with "
+"Shift also uses this center"
+msgstr ""
+
+#: ../src/seltrans.cpp:673
+msgid ""
+"<b>Squeeze or stretch</b> selection; with <b>Ctrl</b> to scale uniformly; "
+"with <b>Shift</b> to scale around rotation center"
+msgstr ""
+
+#: ../src/seltrans.cpp:674
+msgid ""
+"<b>Scale</b> selection; with <b>Ctrl</b> to scale uniformly; with <b>Shift</"
+"b> to scale around rotation center"
+msgstr ""
+
+#: ../src/seltrans.cpp:678
+msgid ""
+"<b>Skew</b> selection; with <b>Ctrl</b> to snap angle; with <b>Shift</b> to "
+"skew around the opposite side"
+msgstr ""
+
+#: ../src/seltrans.cpp:679
+msgid ""
+"<b>Rotate</b> selection; with <b>Ctrl</b> to snap angle; with <b>Shift</b> "
+"to rotate around the opposite corner"
+msgstr ""
+
+#: ../src/seltrans.cpp:813
+msgid "Reset center"
+msgstr ""
+
+#: ../src/seltrans.cpp:1058 ../src/seltrans.cpp:1157
+#, c-format
+msgid "<b>Scale</b>: %0.2f%% x %0.2f%%; with <b>Ctrl</b> to lock ratio"
+msgstr ""
+
+#. TRANSLATORS: don't modify the first ";"
+#. (it will NOT be displayed as ";" - only the second one will be)
+#: ../src/seltrans.cpp:1269
+#, c-format
+msgid "<b>Skew</b>: %0.2f&#176;; with <b>Ctrl</b> to snap angle"
+msgstr ""
+
+#. TRANSLATORS: don't modify the first ";"
+#. (it will NOT be displayed as ";" - only the second one will be)
+#: ../src/seltrans.cpp:1329
+#, c-format
+msgid "<b>Rotate</b>: %0.2f&#176;; with <b>Ctrl</b> to snap angle"
+msgstr ""
+
+#: ../src/seltrans.cpp:1371
+#, c-format
+msgid "Move <b>center</b> to %s, %s"
+msgstr ""
+
+#: ../src/seltrans.cpp:1541
+#, c-format
+msgid ""
+"<b>Move</b> by %s, %s; with <b>Ctrl</b> to restrict to horizontal/vertical; "
+"with <b>Shift</b> to disable snapping"
+msgstr ""
+
+#: ../src/shape-editor.cpp:472
+msgid "Drag curve"
+msgstr ""
+
+#: ../src/sp-anchor.cpp:178
+#, c-format
+msgid "<b>Link</b> to %s"
+msgstr ""
+
+#: ../src/sp-anchor.cpp:182
+msgid "<b>Link</b> without URI"
+msgstr ""
+
+#: ../src/sp-ellipse.cpp:502 ../src/sp-ellipse.cpp:879
+msgid "<b>Ellipse</b>"
+msgstr ""
+
+#: ../src/sp-ellipse.cpp:643
+msgid "<b>Circle</b>"
+msgstr ""
+
+#: ../src/sp-ellipse.cpp:874
+msgid "<b>Segment</b>"
+msgstr ""
+
+#: ../src/sp-ellipse.cpp:876
+msgid "<b>Arc</b>"
+msgstr ""
+
+#. TRANSLATORS: "Flow region" is an area where text is allowed to flow
+#: ../src/sp-flowregion.cpp:270
+#, c-format
+msgid "Flow region"
+msgstr ""
+
+#. TRANSLATORS: A region "cut out of" a flow region; text is not allowed to flow inside the
+#. * flow excluded region.  flowRegionExclude in SVG 1.2: see
+#. * http://www.w3.org/TR/2004/WD-SVG12-20041027/flow.html#flowRegion-elem and
+#. * http://www.w3.org/TR/2004/WD-SVG12-20041027/flow.html#flowRegionExclude-elem.
+#: ../src/sp-flowregion.cpp:487
+#, c-format
+msgid "Flow excluded region"
+msgstr ""
+
+#: ../src/sp-flowtext.cpp:376
+#, c-format
+msgid "<b>Flowed text</b> (%d character)"
+msgid_plural "<b>Flowed text</b> (%d characters)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/sp-flowtext.cpp:378
+#, c-format
+msgid "<b>Linked flowed text</b> (%d character)"
+msgid_plural "<b>Linked flowed text</b> (%d characters)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/sp-guide.cpp:287
+msgid "Guides Around Page"
+msgstr ""
+
+#: ../src/sp-guide.cpp:421
+msgid ""
+"<b>Shift+drag</b> to rotate, <b>Ctrl+drag</b> to move origin, <b>Del</b> to "
+"delete"
+msgstr ""
+
+#: ../src/sp-guide.cpp:426
+#, c-format
+msgid "vertical, at %s"
+msgstr ""
+
+#: ../src/sp-guide.cpp:429
+#, c-format
+msgid "horizontal, at %s"
+msgstr ""
+
+#: ../src/sp-guide.cpp:434
+#, c-format
+msgid "at %d degrees, through (%s,%s)"
+msgstr ""
+
+#: ../src/sp-image.cpp:1128
+msgid "embedded"
+msgstr ""
+
+#: ../src/sp-image.cpp:1136
+#, c-format
+msgid "<b>Image with bad reference</b>: %s"
+msgstr ""
+
+#: ../src/sp-image.cpp:1137
+#, c-format
+msgid "<b>Image</b> %d &#215; %d: %s"
+msgstr ""
+
+#: ../src/spiral-context.cpp:319
+msgid "<b>Ctrl</b>: snap angle"
+msgstr ""
+
+#: ../src/spiral-context.cpp:321
+msgid "<b>Alt</b>: lock spiral radius"
+msgstr ""
+
+#: ../src/spiral-context.cpp:453
+#, c-format
+msgid ""
+"<b>Spiral</b>: radius %s, angle %5g&#176;; with <b>Ctrl</b> to snap angle"
+msgstr ""
+
+#: ../src/spiral-context.cpp:479
+msgid "Create spiral"
+msgstr ""
+
+#: ../src/sp-item.cpp:1035
+msgid "Object"
+msgstr ""
+
+#: ../src/sp-item.cpp:1052
+#, c-format
+msgid "%s; <i>clipped</i>"
+msgstr ""
+
+#: ../src/sp-item.cpp:1057
+#, c-format
+msgid "%s; <i>masked</i>"
+msgstr ""
+
+#: ../src/sp-item.cpp:1065
+#, c-format
+msgid "%s; <i>filtered (%s)</i>"
+msgstr ""
+
+#: ../src/sp-item.cpp:1067
+#, c-format
+msgid "%s; <i>filtered</i>"
+msgstr ""
+
+#: ../src/sp-item-group.cpp:761
+#, c-format
+msgid "<b>Group</b> of <b>%d</b> object"
+msgid_plural "<b>Group</b> of <b>%d</b> objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/sp-line.cpp:194
+msgid "<b>Line</b>"
+msgstr ""
+
+#: ../src/splivarot.cpp:66 ../src/splivarot.cpp:72
+msgid "Union"
+msgstr ""
+
+#: ../src/splivarot.cpp:78
+msgid "Intersection"
+msgstr ""
+
+#: ../src/splivarot.cpp:84 ../src/splivarot.cpp:90
+msgid "Difference"
+msgstr ""
+
+#: ../src/splivarot.cpp:96
+msgid "Exclusion"
+msgstr ""
+
+#: ../src/splivarot.cpp:101
+msgid "Division"
+msgstr ""
+
+#: ../src/splivarot.cpp:106
+msgid "Cut path"
+msgstr ""
+
+#: ../src/splivarot.cpp:121
+msgid "Select <b>at least 2 paths</b> to perform a boolean operation."
+msgstr ""
+
+#: ../src/splivarot.cpp:125
+msgid "Select <b>at least 1 path</b> to perform a boolean union."
+msgstr ""
+
+#: ../src/splivarot.cpp:131
+msgid ""
+"Select <b>exactly 2 paths</b> to perform difference, division, or path cut."
+msgstr ""
+
+#: ../src/splivarot.cpp:147 ../src/splivarot.cpp:162
+msgid ""
+"Unable to determine the <b>z-order</b> of the objects selected for "
+"difference, XOR, division, or path cut."
+msgstr ""
+
+#: ../src/splivarot.cpp:192
+msgid ""
+"One of the objects is <b>not a path</b>, cannot perform boolean operation."
+msgstr ""
+
+#: ../src/splivarot.cpp:633
+msgid "Select <b>stroked path(s)</b> to convert stroke to path."
+msgstr ""
+
+#: ../src/splivarot.cpp:976
+msgid "Convert stroke to path"
+msgstr ""
+
+#. TRANSLATORS: "to outline" means "to convert stroke to path"
+#: ../src/splivarot.cpp:979
+msgid "<b>No stroked paths</b> in the selection."
+msgstr ""
+
+#: ../src/splivarot.cpp:1062
+msgid "Selected object is <b>not a path</b>, cannot inset/outset."
+msgstr ""
+
+#: ../src/splivarot.cpp:1181 ../src/splivarot.cpp:1250
+msgid "Create linked offset"
+msgstr ""
+
+#: ../src/splivarot.cpp:1182 ../src/splivarot.cpp:1251
+msgid "Create dynamic offset"
+msgstr ""
+
+#: ../src/splivarot.cpp:1276
+msgid "Select <b>path(s)</b> to inset/outset."
+msgstr ""
+
+#: ../src/splivarot.cpp:1494
+msgid "Outset path"
+msgstr ""
+
+#: ../src/splivarot.cpp:1494
+msgid "Inset path"
+msgstr ""
+
+#: ../src/splivarot.cpp:1496
+msgid "<b>No paths</b> to inset/outset in the selection."
+msgstr ""
+
+#: ../src/splivarot.cpp:1674
+msgid "Simplifying paths (separately):"
+msgstr ""
+
+#: ../src/splivarot.cpp:1676
+msgid "Simplifying paths:"
+msgstr ""
+
+#: ../src/splivarot.cpp:1713
+#, c-format
+msgid "%s <b>%d</b> of <b>%d</b> paths simplified..."
+msgstr ""
+
+#: ../src/splivarot.cpp:1725
+#, c-format
+msgid "<b>%d</b> paths simplified."
+msgstr ""
+
+#: ../src/splivarot.cpp:1739
+msgid "Select <b>path(s)</b> to simplify."
+msgstr ""
+
+#: ../src/splivarot.cpp:1753
+msgid "Simplify"
+msgstr ""
+
+#: ../src/splivarot.cpp:1755
+msgid "<b>No paths</b> to simplify in the selection."
+msgstr ""
+
+#: ../src/sp-lpe-item.cpp:363
+msgid "An exception occurred during execution of the Path Effect."
+msgstr ""
+
+#. TRANSLATORS COMMENT: %s is either "outset" or "inset" depending on sign
+#: ../src/sp-offset.cpp:426
+#, c-format
+msgid "<b>Linked offset</b>, %s by %f pt"
+msgstr ""
+
+#: ../src/sp-offset.cpp:427 ../src/sp-offset.cpp:431
+msgid "outset"
+msgstr ""
+
+#: ../src/sp-offset.cpp:427 ../src/sp-offset.cpp:431
+msgid "inset"
+msgstr ""
+
+#. TRANSLATORS COMMENT: %s is either "outset" or "inset" depending on sign
+#: ../src/sp-offset.cpp:430
+#, c-format
+msgid "<b>Dynamic offset</b>, %s by %f pt"
+msgstr ""
+
+#: ../src/sp-path.cpp:156
+#, c-format
+msgid "<b>Path</b> (%i node, path effect: %s)"
+msgid_plural "<b>Path</b> (%i nodes, path effect: %s)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/sp-path.cpp:159
+#, c-format
+msgid "<b>Path</b> (%i node)"
+msgid_plural "<b>Path</b> (%i nodes)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/sp-polygon.cpp:226
+msgid "<b>Polygon</b>"
+msgstr ""
+
+#: ../src/sp-polyline.cpp:177
+msgid "<b>Polyline</b>"
+msgstr ""
+
+#: ../src/sp-rect.cpp:223
+msgid "<b>Rectangle</b>"
+msgstr ""
+
+#. TRANSLATORS: since turn count isn't an integer, please adjust the
+#. string as needed to deal with an localized plural forms.
+#: ../src/sp-spiral.cpp:325
+#, c-format
+msgid "<b>Spiral</b> with %3f turns"
+msgstr ""
+
+#: ../src/sp-star.cpp:309
+#, c-format
+msgid "<b>Star</b> with %d vertex"
+msgid_plural "<b>Star</b> with %d vertices"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/sp-star.cpp:313
+#, c-format
+msgid "<b>Polygon</b> with %d vertex"
+msgid_plural "<b>Polygon</b> with %d vertices"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/sp-switch.cpp:100
+#, c-format
+msgid "<b>Conditional group</b> of <b>%d</b> object"
+msgid_plural "<b>Conditional group</b> of <b>%d</b> objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#. TRANSLATORS: For description of font with no name.
+#: ../src/sp-text.cpp:419
+msgid "&lt;no name found&gt;"
+msgstr ""
+
+#: ../src/sp-text.cpp:425
+#, c-format
+msgid "<b>Text on path</b> (%s, %s)"
+msgstr ""
+
+#: ../src/sp-text.cpp:426
+#, c-format
+msgid "<b>Text</b> (%s, %s)"
+msgstr ""
+
+#: ../src/sp-tref.cpp:368
+#, c-format
+msgid "<b>Cloned character data</b>%s%s"
+msgstr ""
+
+#: ../src/sp-tref.cpp:369
+msgid " from "
+msgstr ""
+
+#: ../src/sp-tref.cpp:374
+msgid "<b>Orphaned cloned character data</b>"
+msgstr ""
+
+#: ../src/sp-tspan.cpp:284
+msgid "<b>Text span</b>"
+msgstr ""
+
+#. TRANSLATORS: Used for statusbar description for long <use> chains:
+#. * "Clone of: Clone of: ... in Layer 1".
+#: ../src/sp-use.cpp:327
+msgid "..."
+msgstr ""
+
+#: ../src/sp-use.cpp:335
+#, c-format
+msgid "<b>Clone</b> of: %s"
+msgstr ""
+
+#: ../src/sp-use.cpp:339
+msgid "<b>Orphaned clone</b>"
+msgstr ""
+
+#: ../src/star-context.cpp:333
+msgid "<b>Ctrl</b>: snap angle; keep rays radial"
+msgstr ""
+
+#: ../src/star-context.cpp:464
+#, c-format
+msgid ""
+"<b>Polygon</b>: radius %s, angle %5g&#176;; with <b>Ctrl</b> to snap angle"
+msgstr ""
+
+#: ../src/star-context.cpp:465
+#, c-format
+msgid "<b>Star</b>: radius %s, angle %5g&#176;; with <b>Ctrl</b> to snap angle"
+msgstr ""
+
+#: ../src/star-context.cpp:494
+msgid "Create star"
+msgstr ""
+
+#: ../src/text-chemistry.cpp:104
+msgid "Select <b>a text and a path</b> to put text on path."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:109
+msgid ""
+"This text object is <b>already put on a path</b>. Remove it from the path "
+"first. Use <b>Shift+D</b> to look up its path."
+msgstr ""
+
+#. rect is the only SPShape which is not <path> yet, and thus SVG forbids us from putting text on it
+#: ../src/text-chemistry.cpp:115
+msgid ""
+"You cannot put text on a rectangle in this version. Convert rectangle to "
+"path first."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:125
+msgid "The flowed text(s) must be <b>visible</b> in order to be put on a path."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:192 ../src/verbs.cpp:2364
+msgid "Put text on path"
+msgstr ""
+
+#: ../src/text-chemistry.cpp:204
+msgid "Select <b>a text on path</b> to remove it from path."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:226
+msgid "<b>No texts-on-paths</b> in the selection."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:229 ../src/verbs.cpp:2366
+msgid "Remove text from path"
+msgstr ""
+
+#: ../src/text-chemistry.cpp:269 ../src/text-chemistry.cpp:290
+msgid "Select <b>text(s)</b> to remove kerns from."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:293
+msgid "Remove manual kerns"
+msgstr ""
+
+#: ../src/text-chemistry.cpp:313
+msgid ""
+"Select <b>a text</b> and one or more <b>paths or shapes</b> to flow text "
+"into frame."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:381
+msgid "Flow text into shape"
+msgstr ""
+
+#: ../src/text-chemistry.cpp:403
+msgid "Select <b>a flowed text</b> to unflow it."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:477
+msgid "Unflow flowed text"
+msgstr ""
+
+#: ../src/text-chemistry.cpp:489
+msgid "Select <b>flowed text(s)</b> to convert."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:507
+msgid "The flowed text(s) must be <b>visible</b> in order to be converted."
+msgstr ""
+
+#: ../src/text-chemistry.cpp:535
+msgid "Convert flowed text to text"
+msgstr ""
+
+#: ../src/text-chemistry.cpp:540
+msgid "<b>No flowed text(s)</b> to convert in the selection."
+msgstr ""
+
+#: ../src/text-context.cpp:441
+msgid "<b>Click</b> to edit the text, <b>drag</b> to select part of the text."
+msgstr ""
+
+#: ../src/text-context.cpp:443
+msgid ""
+"<b>Click</b> to edit the flowed text, <b>drag</b> to select part of the text."
+msgstr ""
+
+#: ../src/text-context.cpp:498
+msgid "Create text"
+msgstr ""
+
+#: ../src/text-context.cpp:522
+msgid "Non-printable character"
+msgstr ""
+
+#: ../src/text-context.cpp:537
+msgid "Insert Unicode character"
+msgstr ""
+
+#: ../src/text-context.cpp:572
+#, c-format
+msgid "Unicode (<b>Enter</b> to finish): %s: %s"
+msgstr ""
+
+#: ../src/text-context.cpp:574 ../src/text-context.cpp:849
+msgid "Unicode (<b>Enter</b> to finish): "
+msgstr ""
+
+#: ../src/text-context.cpp:649
+#, c-format
+msgid "<b>Flowed text frame</b>: %s &#215; %s"
+msgstr ""
+
+#: ../src/text-context.cpp:681
+msgid "Type text; <b>Enter</b> to start new line."
+msgstr ""
+
+#: ../src/text-context.cpp:694
+msgid "Flowed text is created."
+msgstr ""
+
+#: ../src/text-context.cpp:696
+msgid "Create flowed text"
+msgstr ""
+
+#: ../src/text-context.cpp:698
+msgid ""
+"The frame is <b>too small</b> for the current font size. Flowed text not "
+"created."
+msgstr ""
+
+#: ../src/text-context.cpp:834
+msgid "No-break space"
+msgstr ""
+
+#: ../src/text-context.cpp:836
+msgid "Insert no-break space"
+msgstr ""
+
+#: ../src/text-context.cpp:873
+msgid "Make bold"
+msgstr ""
+
+#: ../src/text-context.cpp:891
+msgid "Make italic"
+msgstr ""
+
+#: ../src/text-context.cpp:930
+msgid "New line"
+msgstr ""
+
+#: ../src/text-context.cpp:964
+msgid "Backspace"
+msgstr ""
+
+#: ../src/text-context.cpp:1012
+msgid "Kern to the left"
+msgstr ""
+
+#: ../src/text-context.cpp:1037
+msgid "Kern to the right"
+msgstr ""
+
+#: ../src/text-context.cpp:1062
+msgid "Kern up"
+msgstr ""
+
+#: ../src/text-context.cpp:1088
+msgid "Kern down"
+msgstr ""
+
+#: ../src/text-context.cpp:1165
+msgid "Rotate counterclockwise"
+msgstr ""
+
+#: ../src/text-context.cpp:1186
+msgid "Rotate clockwise"
+msgstr ""
+
+#: ../src/text-context.cpp:1203
+msgid "Contract line spacing"
+msgstr ""
+
+#: ../src/text-context.cpp:1211
+msgid "Contract letter spacing"
+msgstr ""
+
+#: ../src/text-context.cpp:1230
+msgid "Expand line spacing"
+msgstr ""
+
+#: ../src/text-context.cpp:1238
+msgid "Expand letter spacing"
+msgstr ""
+
+#: ../src/text-context.cpp:1368
+msgid "Paste text"
+msgstr ""
+
+#: ../src/text-context.cpp:1602
+#, c-format
+msgid ""
+"Type or edit flowed text (%d characters); <b>Enter</b> to start new "
+"paragraph."
+msgstr ""
+
+#: ../src/text-context.cpp:1604
+#, c-format
+msgid "Type or edit text (%d characters); <b>Enter</b> to start new line."
+msgstr ""
+
+#: ../src/text-context.cpp:1612 ../src/tools-switch.cpp:190
+msgid ""
+"<b>Click</b> to select or create text, <b>drag</b> to create flowed text; "
+"then type."
+msgstr ""
+
+#: ../src/text-context.cpp:1722
+msgid "Type text"
+msgstr ""
+
+#: ../src/text-editing.cpp:40
+msgid "You cannot edit <b>cloned character data</b>."
+msgstr ""
+
+#: ../src/tools-switch.cpp:130
+msgid ""
+"To edit a path, <b>click</b>, <b>Shift+click</b>, or <b>drag around</b> "
+"nodes to select them, then <b>drag</b> nodes and handles. <b>Click</b> on an "
+"object to select."
+msgstr ""
+
+#: ../src/tools-switch.cpp:136
+msgid "To tweak a path by pushing, select it and drag over it."
+msgstr ""
+
+#: ../src/tools-switch.cpp:142
+msgid ""
+"<b>Drag</b> to create a rectangle. <b>Drag controls</b> to round corners and "
+"resize. <b>Click</b> to select."
+msgstr ""
+
+#: ../src/tools-switch.cpp:148
+msgid ""
+"<b>Drag</b> to create a 3D box. <b>Drag controls</b> to resize in "
+"perspective. <b>Click</b> to select (with <b>Ctrl+Alt</b> for single faces)."
+msgstr ""
+
+#: ../src/tools-switch.cpp:154
+msgid ""
+"<b>Drag</b> to create an ellipse. <b>Drag controls</b> to make an arc or "
+"segment. <b>Click</b> to select."
+msgstr ""
+
+#: ../src/tools-switch.cpp:160
+msgid ""
+"<b>Drag</b> to create a star. <b>Drag controls</b> to edit the star shape. "
+"<b>Click</b> to select."
+msgstr ""
+
+#: ../src/tools-switch.cpp:166
+msgid ""
+"<b>Drag</b> to create a spiral. <b>Drag controls</b> to edit the spiral "
+"shape. <b>Click</b> to select."
+msgstr ""
+
+#: ../src/tools-switch.cpp:172
+msgid ""
+"<b>Drag</b> to create a freehand line. <b>Shift</b> appends to selected "
+"path, <b>Alt</b> activates sketch mode."
+msgstr ""
+
+#: ../src/tools-switch.cpp:178
+msgid ""
+"<b>Click</b> or <b>click and drag</b> to start a path; with <b>Shift</b> to "
+"append to selected path. <b>Ctrl+click</b> to create single dots (straight "
+"line modes only)."
+msgstr ""
+
+#: ../src/tools-switch.cpp:184
+msgid ""
+"<b>Drag</b> to draw a calligraphic stroke; with <b>Ctrl</b> to track a guide "
+"path. <b>Arrow keys</b> adjust width (left/right) and angle (up/down)."
+msgstr ""
+
+#: ../src/tools-switch.cpp:196
+msgid ""
+"<b>Drag</b> or <b>double click</b> to create a gradient on selected objects, "
+"<b>drag handles</b> to adjust gradients."
+msgstr ""
+
+#: ../src/tools-switch.cpp:202
+msgid ""
+"<b>Click</b> or <b>drag around an area</b> to zoom in, <b>Shift+click</b> to "
+"zoom out."
+msgstr ""
+
+#: ../src/tools-switch.cpp:214
+msgid "<b>Click and drag</b> between shapes to create a connector."
+msgstr ""
+
+#: ../src/tools-switch.cpp:220
+msgid ""
+"<b>Click</b> to paint a bounded area, <b>Shift+click</b> to union the new "
+"fill with the current selection, <b>Ctrl+click</b> to change the clicked "
+"object's fill and stroke to the current setting."
+msgstr ""
+
+#: ../src/tools-switch.cpp:226
+msgid "<b>Drag</b> to erase."
+msgstr ""
+
+#: ../src/tools-switch.cpp:232
+msgid "Choose a subtool from the toolbar"
+msgstr ""
+
+#: ../src/trace/potrace/inkscape-potrace.cpp:524
+#: ../src/trace/potrace/inkscape-potrace.cpp:598
+#, c-format
+msgid "Trace: %d.  %ld nodes"
+msgstr ""
+
+#: ../src/trace/trace.cpp:71 ../src/trace/trace.cpp:136
+#: ../src/trace/trace.cpp:144 ../src/trace/trace.cpp:243
+msgid "Select an <b>image</b> to trace"
+msgstr ""
+
+#: ../src/trace/trace.cpp:106
+msgid "Select only one <b>image</b> to trace"
+msgstr ""
+
+#: ../src/trace/trace.cpp:124
+msgid "Select one image and one or more shapes above it"
+msgstr ""
+
+#: ../src/trace/trace.cpp:234
+msgid "Trace: No active desktop"
+msgstr ""
+
+#: ../src/trace/trace.cpp:334
+msgid "Invalid SIOX result"
+msgstr ""
+
+#: ../src/trace/trace.cpp:439
+msgid "Trace: No active document"
+msgstr ""
+
+#: ../src/trace/trace.cpp:462
+msgid "Trace: Image has no bitmap data"
+msgstr ""
+
+#: ../src/trace/trace.cpp:469
+msgid "Trace: Starting trace..."
+msgstr ""
+
+#. ## inform the document, so we can undo
+#: ../src/trace/trace.cpp:571
+msgid "Trace bitmap"
+msgstr ""
+
+#: ../src/trace/trace.cpp:575
+#, c-format
+msgid "Trace: Done. %ld nodes created"
+msgstr ""
+
+#: ../src/tweak-context.cpp:204
+#, c-format
+msgid "<b>Nothing</b> selected"
+msgstr ""
+
+#: ../src/tweak-context.cpp:210
+#, c-format
+msgid "%s. Drag to <b>move</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:214
+#, c-format
+msgid "%s. Drag or click to <b>move in</b>; with Shift to <b>move out</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:218
+#, c-format
+msgid "%s. Drag or click to <b>move randomly</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:222
+#, c-format
+msgid "%s. Drag or click to <b>scale down</b>; with Shift to <b>scale up</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:226
+#, c-format
+msgid ""
+"%s. Drag or click to <b>rotate clockwise</b>; with Shift, "
+"<b>counterclockwise</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:230
+#, c-format
+msgid "%s. Drag or click to <b>duplicate</b>; with Shift, <b>delete</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:234
+#, c-format
+msgid "%s. Drag to <b>push paths</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:238
+#, c-format
+msgid "%s. Drag or click to <b>inset paths</b>; with Shift to <b>outset</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:246
+#, c-format
+msgid "%s. Drag or click to <b>attract paths</b>; with Shift to <b>repel</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:254
+#, c-format
+msgid "%s. Drag or click to <b>roughen paths</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:258
+#, c-format
+msgid "%s. Drag or click to <b>paint objects</b> with color."
+msgstr ""
+
+#: ../src/tweak-context.cpp:262
+#, c-format
+msgid "%s. Drag or click to <b>randomize colors</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:266
+#, c-format
+msgid ""
+"%s. Drag or click to <b>increase blur</b>; with Shift to <b>decrease</b>."
+msgstr ""
+
+#: ../src/tweak-context.cpp:1223
+msgid "<b>Nothing selected!</b> Select objects to tweak."
+msgstr ""
+
+#: ../src/tweak-context.cpp:1259
+msgid "Move tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1263
+msgid "Move in/out tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1267
+msgid "Move jitter tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1271
+msgid "Scale tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1275
+msgid "Rotate tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1279
+msgid "Duplicate/delete tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1283
+msgid "Push path tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1287
+msgid "Shrink/grow path tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1291
+msgid "Attract/repel path tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1295
+msgid "Roughen path tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1299
+msgid "Color paint tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1303
+msgid "Color jitter tweak"
+msgstr ""
+
+#: ../src/tweak-context.cpp:1307
+msgid "Blur tweak"
+msgstr ""
+
+#. check whether something is selected
+#: ../src/ui/clipboard.cpp:257
+msgid "Nothing was copied."
+msgstr ""
+
+#: ../src/ui/clipboard.cpp:318 ../src/ui/clipboard.cpp:520
+#: ../src/ui/clipboard.cpp:544
+msgid "Nothing on the clipboard."
+msgstr ""
+
+#: ../src/ui/clipboard.cpp:374
+msgid "Select <b>object(s)</b> to paste style to."
+msgstr ""
+
+#: ../src/ui/clipboard.cpp:385 ../src/ui/clipboard.cpp:403
+msgid "No style on the clipboard."
+msgstr ""
+
+#: ../src/ui/clipboard.cpp:425
+msgid "Select <b>object(s)</b> to paste size to."
+msgstr ""
+
+#: ../src/ui/clipboard.cpp:432
+msgid "No size on the clipboard."
+msgstr ""
+
+#: ../src/ui/clipboard.cpp:483
+msgid "Select <b>object(s)</b> to paste live path effect to."
+msgstr ""
+
+#. no_effect:
+#: ../src/ui/clipboard.cpp:507
+msgid "No effect on the clipboard."
+msgstr ""
+
+#: ../src/ui/clipboard.cpp:527 ../src/ui/clipboard.cpp:554
+msgid "Clipboard does not contain a path."
+msgstr ""
+
+#. Item dialog
+#: ../src/ui/context-menu.cpp:105
+msgid "Object _Properties"
+msgstr ""
+
+#. Select item
+#: ../src/ui/context-menu.cpp:115
+msgid "_Select This"
+msgstr ""
+
+#. Create link
+#: ../src/ui/context-menu.cpp:125
+msgid "_Create Link"
+msgstr ""
+
+#. Set mask
+#: ../src/ui/context-menu.cpp:132
+msgid "Set Mask"
+msgstr ""
+
+#. Release mask
+#: ../src/ui/context-menu.cpp:143
+msgid "Release Mask"
+msgstr ""
+
+#. Set Clip
+#: ../src/ui/context-menu.cpp:154
+msgid "Set Clip"
+msgstr ""
+
+#. Release Clip
+#: ../src/ui/context-menu.cpp:165
+msgid "Release Clip"
+msgstr ""
+
+#: ../src/ui/context-menu.cpp:288
+msgid "Create link"
+msgstr ""
+
+#. "Ungroup"
+#: ../src/ui/context-menu.cpp:306 ../src/verbs.cpp:2360
+msgid "_Ungroup"
+msgstr ""
+
+#. Link dialog
+#: ../src/ui/context-menu.cpp:346
+msgid "Link _Properties"
+msgstr ""
+
+#. Select item
+#: ../src/ui/context-menu.cpp:352
+msgid "_Follow Link"
+msgstr ""
+
+#. Reset transformations
+#: ../src/ui/context-menu.cpp:357
+msgid "_Remove Link"
+msgstr ""
+
+#. Link dialog
+#: ../src/ui/context-menu.cpp:405
+msgid "Image _Properties"
+msgstr ""
+
+#: ../src/ui/context-menu.cpp:411
+msgid "Edit Externally..."
+msgstr ""
+
+#. Item dialog
+#: ../src/ui/context-menu.cpp:504
+msgid "_Fill and Stroke"
+msgstr ""
+
+#. *
+#. * Constructor
+#.
+#: ../src/ui/dialog/aboutbox.cpp:77
+msgid "About Inkscape"
+msgstr ""
+
+#: ../src/ui/dialog/aboutbox.cpp:88
+msgid "_Splash"
+msgstr ""
+
+#: ../src/ui/dialog/aboutbox.cpp:92
+msgid "_Authors"
+msgstr ""
+
+#: ../src/ui/dialog/aboutbox.cpp:94
+msgid "_Translators"
+msgstr ""
+
+#: ../src/ui/dialog/aboutbox.cpp:96
+msgid "_License"
+msgstr ""
+
+#. TRANSLATORS: This is the filename of the `About Inkscape' picture in
+#. the `screens' directory.  Thus the translation of "about.svg" should be
+#. the filename of its translated version, e.g. about.zh.svg for Chinese.
+#.
+#. N.B. about.svg changes once per release.  (We should probably rename
+#. the original to about-0.40.svg etc. as soon as we have a translation.
+#. If we do so, then add an item to release-checklist saying that the
+#. string here should be changed.)
+#. FIXME? INKSCAPE_SCREENSDIR and "about.svg" are in UTF-8, not the
+#. native filename encoding... and the filename passed to sp_document_new
+#. should be in UTF-*8..
+#: ../src/ui/dialog/aboutbox.cpp:149
+msgid "about.svg"
+msgstr ""
+
+#. TRANSLATORS: Put here your name (and other national contributors')
+#. one per line in the form of: name surname (email). Use \n for newline.
+#: ../src/ui/dialog/aboutbox.cpp:371
+msgid "translator-credits"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:238
+#: ../src/ui/dialog/align-and-distribute.cpp:787
+msgid "Align"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:397
+#: ../src/ui/dialog/align-and-distribute.cpp:788
+msgid "Distribute"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:466
+msgid "Minimum horizontal gap (in px units) between bounding boxes"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "H:" stands for horizontal gap
+#: ../src/ui/dialog/align-and-distribute.cpp:470
+msgid "gap|H:"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:478
+msgid "Minimum vertical gap (in px units) between bounding boxes"
+msgstr ""
+
+#. TRANSLATORS: Vertical gap
+#: ../src/ui/dialog/align-and-distribute.cpp:480
+msgid "V:"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:509
+#: ../src/ui/dialog/align-and-distribute.cpp:789
+#: ../src/widgets/toolbox.cpp:7068
+msgid "Remove overlaps"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:540
+#: ../src/widgets/toolbox.cpp:6931
+msgid "Arrange connector network"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:571
+msgid "Unclump"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:642
+msgid "Randomize positions"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:739
+msgid "Distribute text baselines"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:759
+msgid "Align text baselines"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:790
+msgid "Connector network layout"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:791
+#: ../src/widgets/toolbox.cpp:2083
+msgid "Nodes"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:797
+msgid "Relative to: "
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:798
+msgid "Treat selection as group: "
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:804
+msgid "Align right edges of objects to the left edge of the anchor"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:807
+msgid "Align left edges"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:810
+msgid "Center on vertical axis"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:813
+msgid "Align right sides"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:816
+msgid "Align left edges of objects to the right edge of the anchor"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:819
+msgid "Align bottom edges of objects to the top edge of the anchor"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:822
+msgid "Align top edges"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:825
+msgid "Center on horizontal axis"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:828
+msgid "Align bottom edges"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:831
+msgid "Align top edges of objects to the bottom edge of the anchor"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:836
+msgid "Align baseline anchors of texts horizontally"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:839
+msgid "Align baselines of texts"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:844
+msgid "Make horizontal gaps between objects equal"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:848
+msgid "Distribute left edges equidistantly"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:851
+msgid "Distribute centers equidistantly horizontally"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:854
+msgid "Distribute right edges equidistantly"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:858
+msgid "Make vertical gaps between objects equal"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:862
+msgid "Distribute top edges equidistantly"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:865
+msgid "Distribute centers equidistantly vertically"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:868
+msgid "Distribute bottom edges equidistantly"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:873
+msgid "Distribute baseline anchors of texts horizontally"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:876
+msgid "Distribute baselines of texts vertically"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:881
+msgid "Randomize centers in both dimensions"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:884
+msgid "Unclump objects: try to equalize edge-to-edge distances"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:889
+msgid ""
+"Move objects as little as possible so that their bounding boxes do not "
+"overlap"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:893
+#: ../src/widgets/toolbox.cpp:7031
+msgid "Nicely arrange selected connector network"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:901
+msgid "Align selected nodes to a common horizontal line"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:904
+msgid "Align selected nodes to a common vertical line"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:907
+msgid "Distribute selected nodes horizontally"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:910
+msgid "Distribute selected nodes vertically"
+msgstr ""
+
+#. Rest of the widgetry
+#: ../src/ui/dialog/align-and-distribute.cpp:915
+msgid "Last selected"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:916
+msgid "First selected"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:917
+msgid "Biggest object"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:918
+msgid "Smallest object"
+msgstr ""
+
+#: ../src/ui/dialog/align-and-distribute.cpp:921
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1414
+#: ../src/ui/dialog/icon-preview.cpp:178
+#: ../src/widgets/desktop-widget.cpp:1580
+msgid "Selection"
+msgstr ""
+
+#: ../src/ui/dialog/calligraphic-profile-rename.cpp:38
+msgid "Profile name:"
+msgstr ""
+
+#. When changing the interval or enabling/disabling the autosave function,
+#. * update our running configuration
+#. *
+#. * FIXME!
+#. * the inkscape_autosave_init should be called AFTER the values have been changed
+#. * (which cannot be guaranteed from here) - use a PrefObserver somewhere
+#.
+#.
+#. _autosave_autosave_enable.signal_toggled().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE );
+#. _autosave_autosave_interval.signal_changed().connect( sigc::ptr_fun(inkscape_autosave_init), TRUE );
+#.
+#. -----------
+#: ../src/ui/dialog/calligraphic-profile-rename.cpp:52
+#: ../src/ui/dialog/inkscape-preferences.cpp:1145
+msgid "Save"
+msgstr ""
+
+#: ../src/ui/dialog/debug.cpp:68
+msgid "Messages"
+msgstr ""
+
+#: ../src/ui/dialog/debug.cpp:77 ../src/ui/dialog/messages.cpp:55
+msgid "Capture log messages"
+msgstr ""
+
+#: ../src/ui/dialog/debug.cpp:79 ../src/ui/dialog/messages.cpp:57
+msgid "Release log messages"
+msgstr ""
+
+#: ../src/ui/dialog/document-metadata.cpp:73
+msgid "Metadata"
+msgstr ""
+
+#: ../src/ui/dialog/document-metadata.cpp:74
+msgid "License"
+msgstr ""
+
+#: ../src/ui/dialog/document-metadata.cpp:154
+msgid "<b>Dublin Core Entities</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-metadata.cpp:176
+msgid "<b>License</b>"
+msgstr ""
+
+#. ---------------------------------------------------------------
+#: ../src/ui/dialog/document-properties.cpp:90
+msgid "Show page _border"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:90
+msgid "If set, rectangular page border is shown"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:91
+msgid "Border on _top of drawing"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:91
+msgid "If set, border is always on top of the drawing"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:92
+msgid "_Show border shadow"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:92
+msgid "If set, page border shows a shadow on its right and lower side"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:93
+msgid "Back_ground:"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:93
+msgid "Background color"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:93
+msgid ""
+"Color and transparency of the page background (also used for bitmap export)"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:94
+msgid "Border _color:"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:94
+msgid "Page border color"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:94
+msgid "Color of the page border"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:95
+msgid "Default _units:"
+msgstr ""
+
+#. ---------------------------------------------------------------
+#. General snap options
+#: ../src/ui/dialog/document-properties.cpp:99
+msgid "Show _guides"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:99
+msgid "Show or hide guides"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:100
+msgid "_Snap guides while dragging"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:100
+msgid ""
+"While dragging a guide, snap to object nodes or bounding box corners ('Snap "
+"to nodes' or 'snap to bounding box corners' must be enabled; only a small "
+"part of the guide near the cursor will snap)"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:102
+msgid "Guide co_lor:"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:102
+msgid "Guideline color"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:102
+msgid "Color of guidelines"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:103
+msgid "_Highlight color:"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:103
+msgid "Highlighted guideline color"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:103
+msgid "Color of a guideline when it is under mouse"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "New" refers to grid
+#: ../src/ui/dialog/document-properties.cpp:109
+msgid "Grid|_New"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:109
+msgid "Create new grid."
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:110
+msgid "_Remove"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:110
+msgid "Remove selected grid."
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:119
+#: ../src/widgets/toolbox.cpp:2172
+msgid "Guides"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:120
+#: ../src/ui/dialog/inkscape-preferences.cpp:1014
+#: ../src/widgets/toolbox.cpp:2163
+msgid "Grids"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:121 ../src/verbs.cpp:2587
+#: ../src/widgets/toolbox.cpp:2028
+msgid "Snap"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:122
+msgid "Color Management"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:123
+msgid "Scripting"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:221
+msgid "<b>General</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:223
+msgid "<b>Border</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:225
+msgid "<b>Format</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:253
+msgid "<b>Guides</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:272
+msgid "Snap _distance"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:272
+msgid "Snap only when _closer than:"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:272
+#: ../src/ui/dialog/document-properties.cpp:278
+#: ../src/ui/dialog/document-properties.cpp:284
+msgid "Always snap"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:273
+msgid "Snapping distance, in screen pixels, for snapping to objects"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:273
+msgid "Always snap to objects, regardless of their distance"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:274
+msgid ""
+"If set, objects only snap to another object when it's within the range "
+"specified below"
+msgstr ""
+
+#. Options for snapping to grids
+#: ../src/ui/dialog/document-properties.cpp:278
+msgid "Snap d_istance"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:278
+msgid "Snap only when c_loser than:"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:279
+msgid "Snapping distance, in screen pixels, for snapping to grid"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:279
+msgid "Always snap to grids, regardless of the distance"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:280
+msgid ""
+"If set, objects only snap to a grid line when it's within the range "
+"specified below"
+msgstr ""
+
+#. Options for snapping to guides
+#: ../src/ui/dialog/document-properties.cpp:284
+msgid "Snap dist_ance"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:284
+msgid "Snap only when close_r than:"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:285
+msgid "Snapping distance, in screen pixels, for snapping to guides"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:285
+msgid "Always snap to guides, regardless of the distance"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:286
+msgid ""
+"If set, objects only snap to a guide when it's within the range specified "
+"below"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:290
+msgid "<b>Snap to objects</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:292
+msgid "<b>Snap to grids</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:294
+msgid "<b>Snap to guides</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:323
+msgid "(invalid UTF-8 string)"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:349
+#, c-format
+msgid "Color profiles directory (%s) is unavailable."
+msgstr ""
+
+#. TODO check if this next line was sometimes needed. It being there caused an assertion.
+#. Inkscape::GC::release(defsRepr);
+#. inform the document, so we can undo
+#. Color Management
+#: ../src/ui/dialog/document-properties.cpp:451 ../src/verbs.cpp:2739
+msgid "Link Color Profile"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:524
+msgid "Remove linked color profile"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:538
+msgid "<b>Linked Color Profiles:</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:540
+msgid "<b>Available Color Profiles:</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:542
+msgid "Link Profile"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:573
+msgid "Profile Name"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:604
+msgid "<b>External script files:</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:606
+#: ../src/ui/dialog/swatches.cpp:463
+msgid "Add"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:629
+msgid "Filename"
+msgstr ""
+
+#. inform the document, so we can undo
+#: ../src/ui/dialog/document-properties.cpp:669
+msgid "Add external script..."
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:693
+msgid "Remove external script"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:774
+msgid "<b>Creation</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:775
+msgid "<b>Defined grids</b>"
+msgstr ""
+
+#: ../src/ui/dialog/document-properties.cpp:985
+msgid "Remove grid"
+msgstr ""
+
+#: ../src/ui/dialog/extension-editor.cpp:80
+msgid "Information"
+msgstr ""
+
+#: ../src/ui/dialog/extension-editor.cpp:81
+#: ../share/extensions/draw_from_triangle.inx.h:20
+#: ../share/extensions/dxf_input.inx.h:9
+#: ../share/extensions/dxf_outlines.inx.h:8
+#: ../share/extensions/lindenmayer.inx.h:23
+#: ../share/extensions/measure.inx.h:2 ../share/extensions/scour.inx.h:4
+msgid "Help"
+msgstr ""
+
+#: ../src/ui/dialog/extension-editor.cpp:82
+msgid "Parameters"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:383
+msgid "No preview"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:489
+msgid "too large for preview"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:577
+msgid "Enable preview"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:711
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:712
+#: ../src/ui/dialog/filedialogimpl-win32.cpp:197
+msgid "All Inkscape Files"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:716
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:717
+#: ../src/ui/dialog/filedialogimpl-win32.cpp:196
+msgid "All Files"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:722
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:723
+#: ../src/ui/dialog/filedialogimpl-win32.cpp:198
+msgid "All Images"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:727
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:728
+#: ../src/ui/dialog/filedialogimpl-win32.cpp:199
+msgid "All Vectors"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:732
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:733
+#: ../src/ui/dialog/filedialogimpl-win32.cpp:200
+msgid "All Bitmaps"
+msgstr ""
+
+#. ###### File options
+#. ###### Do we want the .xxx extension automatically added?
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:927
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1475
+msgid "Append filename extension automatically"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1085
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1339
+msgid "Guess from extension"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1360
+msgid "Left edge of source"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1361
+msgid "Top edge of source"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1362
+msgid "Right edge of source"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1363
+msgid "Bottom edge of source"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1364
+msgid "Source width"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1365
+msgid "Source height"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1366
+msgid "Destination width"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1367
+msgid "Destination height"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1368
+msgid "Resolution (dots per inch)"
+msgstr ""
+
+#. #########################################
+#. ## EXTRA WIDGET -- SOURCE SIDE
+#. #########################################
+#. ##### Export options buttons/spinners, etc
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1406
+msgid "Document"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1418
+#: ../share/extensions/color_custom.inx.h:3
+msgid "Custom"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1458
+msgid "Cairo"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1461
+msgid "Antialias"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1464
+msgid "Background"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-gtkmm.cpp:1487
+msgid "Destination"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-win32.cpp:476
+msgid "Show Preview"
+msgstr ""
+
+#: ../src/ui/dialog/filedialogimpl-win32.cpp:611
+msgid "No file selected"
+msgstr ""
+
+#: ../src/ui/dialog/fill-and-stroke.cpp:48
+#: ../share/extensions/interp_att_g.inx.h:4
+msgid "Fill"
+msgstr ""
+
+#: ../src/ui/dialog/fill-and-stroke.cpp:49
+msgid "Stroke _paint"
+msgstr ""
+
+#: ../src/ui/dialog/fill-and-stroke.cpp:50
+msgid "Stroke st_yle"
+msgstr ""
+
+#. TRANSLATORS: this dialog is accessible via menu Filters - Filter editor
+#: ../src/ui/dialog/filter-effects-dialog.cpp:465
+msgid ""
+"This matrix determines a linear transform on color space. Each line affects "
+"one of the color components. Each column determines how much of each color "
+"component from the input is passed to the output. The last column does not "
+"depend on input colors, so can be used to adjust a constant component value."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:575
+msgid "Image File"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:578
+msgid "Selected SVG Element"
+msgstr ""
+
+#. TODO: any image, not just svg
+#: ../src/ui/dialog/filter-effects-dialog.cpp:648
+msgid "Select an image to be used as feImage input"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:740
+msgid "This SVG filter effect does not require any parameters."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:746
+msgid "This SVG filter effect is not yet implemented in Inkscape."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:938
+msgid "Light Source:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:955
+msgid "Direction angle for the light source on the XY plane, in degrees"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:956
+msgid "Direction angle for the light source on the YZ plane, in degrees"
+msgstr ""
+
+#. default x:
+#. default y:
+#. default z:
+#: ../src/ui/dialog/filter-effects-dialog.cpp:959
+#: ../src/ui/dialog/filter-effects-dialog.cpp:962
+msgid "Location"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:959
+#: ../src/ui/dialog/filter-effects-dialog.cpp:962
+#: ../src/ui/dialog/filter-effects-dialog.cpp:965
+msgid "X coordinate"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:959
+#: ../src/ui/dialog/filter-effects-dialog.cpp:962
+#: ../src/ui/dialog/filter-effects-dialog.cpp:965
+msgid "Y coordinate"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:959
+#: ../src/ui/dialog/filter-effects-dialog.cpp:962
+#: ../src/ui/dialog/filter-effects-dialog.cpp:965
+msgid "Z coordinate"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:965
+msgid "Points At"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:966
+msgid "Specular Exponent"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:966
+msgid "Exponent value controlling the focus for the light source"
+msgstr ""
+
+#. TODO: here I have used 100 degrees as default value. But spec says that if not specified, no limiting cone is applied. So, there should be a way for the user to set a "no limiting cone" option.
+#: ../src/ui/dialog/filter-effects-dialog.cpp:968
+msgid "Cone Angle"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:968
+msgid ""
+"This is the angle between the spot light axis (i.e. the axis between the "
+"light source and the point to which it is pointing at) and the spot light "
+"cone. No light is projected outside this cone."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1029
+msgid "New light source"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1070
+msgid "_Duplicate"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1096
+msgid "_Filter"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1110
+msgid "R_ename"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1213
+msgid "Rename filter"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1249
+msgid "Apply filter"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1318
+msgid "filter"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1325
+msgid "Add filter"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1351
+msgid "Duplicate filter"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1418
+msgid "_Effect"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1426
+msgid "Connections"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1542
+msgid "Remove filter primitive"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:1914
+msgid "Remove merge node"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2030
+msgid "Reorder filter primitive"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2064
+msgid "Add Effect:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2065
+msgid "No effect selected"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2066
+msgid "No filter selected"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2104
+msgid "Effect parameters"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2105
+msgid "Filter General Settings"
+msgstr ""
+
+#. default x:
+#. default y:
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2161
+msgid "Coordinates:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2161
+msgid "X coordinate of the left corners of filter effects region"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2161
+msgid "Y coordinate of the upper corners of filter effects region"
+msgstr ""
+
+#. default width:
+#. default height:
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2162
+msgid "Dimensions:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2162
+msgid "Width of filter effects region"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2162
+msgid "Height of filter effects region"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2165
+#: ../src/widgets/toolbox.cpp:3859 ../src/widgets/toolbox.cpp:4250
+#: ../share/extensions/extrude.inx.h:4
+msgid "Mode:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2168
+msgid ""
+"Indicates the type of matrix operation. The keyword 'matrix' indicates that "
+"a full 5x4 matrix of values will be provided. The other keywords represent "
+"convenience shortcuts to allow commonly used color operations to be "
+"performed without specifying a complete matrix."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2169
+msgid "Value(s):"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2183
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2223
+msgid "Operator:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2184
+msgid "K1:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2184
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2185
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2186
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2187
+msgid ""
+"If the arithmetic operation is chosen, each result pixel is computed using "
+"the formula k1*i1*i2 + k2*i1 + k3*i2 + k4 where i1 and i2 are the pixel "
+"values of the first and second inputs respectively."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2185
+msgid "K2:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2186
+msgid "K3:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2187
+msgid "K4:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2190
+#: ../src/ui/dialog/tracedialog.cpp:581
+msgid "Size:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2190
+msgid "width of the convolve matrix"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2190
+msgid "height of the convolve matrix"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2191
+msgid ""
+"X coordinate of the target point in the convolve matrix. The convolution is "
+"applied to pixels around this point."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2191
+msgid ""
+"Y coordinate of the target point in the convolve matrix. The convolution is "
+"applied to pixels around this point."
+msgstr ""
+
+#. TRANSLATORS: for info on "Kernel", see http://en.wikipedia.org/wiki/Kernel_(matrix)
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2193
+msgid "Kernel:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2193
+msgid ""
+"This matrix describes the convolve operation that is applied to the input "
+"image in order to calculate the pixel colors at the output. Different "
+"arrangements of values in this matrix result in various possible visual "
+"effects. An identity matrix would lead to a motion blur effect (parallel to "
+"the matrix diagonal) while a matrix filled with a constant non-zero value "
+"would lead to a common blur effect."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2195
+msgid "Divisor:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2195
+msgid ""
+"After applying the kernelMatrix to the input image to yield a number, that "
+"number is divided by divisor to yield the final destination color value. A "
+"divisor that is the sum of all the matrix values tends to have an evening "
+"effect on the overall color intensity of the result."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2196
+msgid "Bias:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2196
+msgid ""
+"This value is added to each component. This is useful to define a constant "
+"value as the zero response of the filter."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2197
+msgid "Edge Mode:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2197
+msgid ""
+"Determines how to extend the input image as necessary with color values so "
+"that the matrix operations can be applied when the kernel is positioned at "
+"or near the edge of the input image."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2198
+msgid "Preserve Alpha"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2198
+msgid "If set, the alpha channel won't be altered by this filter primitive."
+msgstr ""
+
+#. default: white
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2201
+msgid "Diffuse Color:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2201
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2234
+msgid "Defines the color of the light source"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2202
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2235
+msgid "Surface Scale:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2202
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2235
+msgid ""
+"This value amplifies the heights of the bump map defined by the input alpha "
+"channel"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2203
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2236
+msgid "Constant:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2203
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2236
+msgid "This constant affects the Phong lighting model."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2204
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2238
+msgid "Kernel Unit Length:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2208
+msgid "Scale:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2208
+msgid "This defines the intensity of the displacement effect."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2209
+msgid "X displacement:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2209
+msgid "Color component that controls the displacement in the X direction"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2210
+msgid "Y displacement:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2210
+msgid "Color component that controls the displacement in the Y direction"
+msgstr ""
+
+#. default: black
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2213
+msgid "Flood Color:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2213
+msgid "The whole filter region will be filled with this color."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2214
+#: ../src/widgets/toolbox.cpp:5299
+msgid "Opacity:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2217
+msgid "Standard Deviation:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2217
+msgid "The standard deviation for the blur operation."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2223
+msgid ""
+"Erode: performs \"thinning\" of input image.\n"
+"Dilate: performs \"fattenning\" of input image."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2224
+msgid "Radius:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2227
+msgid "Source of Image:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2230
+msgid "Delta X:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2230
+msgid "This is how far the input image gets shifted to the right"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2231
+msgid "Delta Y:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2231
+msgid "This is how far the input image gets shifted downwards"
+msgstr ""
+
+#. default: white
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2234
+msgid "Specular Color:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2237
+msgid "Exponent:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2237
+msgid "Exponent for specular term, larger is more \"shiny\"."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2246
+msgid ""
+"Indicates whether the filter primitive should perform a noise or turbulence "
+"function."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2247
+msgid "Base Frequency:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2248
+msgid "Octaves:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2249
+msgid "Seed:"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2249
+msgid "The starting number for the pseudo random number generator."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2261
+msgid "Add filter primitive"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2278
+msgid ""
+"The <b>feBlend</b> filter primitive provides 4 image blending modes: screen, "
+"multiply, darken and lighten."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2282
+msgid ""
+"The <b>feColorMatrix</b> filter primitive applies a matrix transformation to "
+"color of each rendered pixel. This allows for effects like turning object to "
+"grayscale, modifying color saturation and changing color hue."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2286
+msgid ""
+"The <b>feComponentTransfer</b> filter primitive manipulates the input's "
+"color components (red, green, blue, and alpha) according to particular "
+"transfer functions, allowing operations like brightness and contrast "
+"adjustment, color balance, and thresholding."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2290
+msgid ""
+"The <b>feComposite</b> filter primitive composites two images using one of "
+"the Porter-Duff blending modes or the arithmetic mode described in SVG "
+"standard. Porter-Duff blending modes are essentially logical operations "
+"between the corresponding pixel values of the images."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2294
+msgid ""
+"The <b>feConvolveMatrix</b> lets you specify a Convolution to be applied on "
+"the image. Common effects created using convolution matrices are blur, "
+"sharpening, embossing and edge detection. Note that while gaussian blur can "
+"be created using this filter primitive, the special gaussian blur primitive "
+"is faster and resolution-independent."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2298
+msgid ""
+"The <b>feDiffuseLighting</b> and feSpecularLighting filter primitives create "
+"\"embossed\" shadings.  The input's alpha channel is used to provide depth "
+"information: higher opacity areas are raised toward the viewer and lower "
+"opacity areas recede away from the viewer."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2302
+msgid ""
+"The <b>feDisplacementMap</b> filter primitive displaces the pixels in the "
+"first input using the second input as a displacement map, that shows from "
+"how far the pixel should come from. Classical examples are whirl and pinch "
+"effects."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2306
+msgid ""
+"The <b>feFlood</b> filter primitive fills the region with a given color and "
+"opacity.  It is usually used as an input to other filters to apply color to "
+"a graphic."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2310
+msgid ""
+"The <b>feGaussianBlur</b> filter primitive uniformly blurs its input.  It is "
+"commonly used together with feOffset to create a drop shadow effect."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2314
+msgid ""
+"The <b>feImage</b> filter primitive fills the region with an external image "
+"or another part of the document."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2318
+msgid ""
+"The <b>feMerge</b> filter primitive composites several temporary images "
+"inside the filter primitive to a single image. It uses normal alpha "
+"compositing for this. This is equivalent to using several feBlend primitives "
+"in 'normal' mode or several feComposite primitives in 'over' mode."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2322
+msgid ""
+"The <b>feMorphology</b> filter primitive provides erode and dilate effects. "
+"For single-color objects erode makes the object thinner and dilate makes it "
+"thicker."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2326
+msgid ""
+"The <b>feOffset</b> filter primitive offsets the image by an user-defined "
+"amount. For example, this is useful for drop shadows, where the shadow is in "
+"a slightly different position than the actual object."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2330
+msgid ""
+"The feDiffuseLighting and <b>feSpecularLighting</b> filter primitives create "
+"\"embossed\" shadings.  The input's alpha channel is used to provide depth "
+"information: higher opacity areas are raised toward the viewer and lower "
+"opacity areas recede away from the viewer."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2334
+msgid ""
+"The <b>feTile</b> filter primitive tiles a region with its input graphic"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2338
+msgid ""
+"The <b>feTurbulence</b> filter primitive renders Perlin noise. This kind of "
+"noise is useful in simulating several nature phenomena like clouds, fire and "
+"smoke and in generating complex textures like marble or granite."
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2357
+msgid "Duplicate filter primitive"
+msgstr ""
+
+#: ../src/ui/dialog/filter-effects-dialog.cpp:2410
+msgid "Set filter primitive attribute"
+msgstr ""
+
+#: ../src/ui/dialog/guides.cpp:42
+msgid "Unit:"
+msgstr ""
+
+#: ../src/ui/dialog/guides.cpp:45
+msgid "Angle (degrees):"
+msgstr ""
+
+#: ../src/ui/dialog/guides.cpp:46
+msgid "Rela_tive change"
+msgstr ""
+
+#: ../src/ui/dialog/guides.cpp:46
+msgid "Move and/or rotate the guide relative to current settings"
+msgstr ""
+
+#: ../src/ui/dialog/guides.cpp:112
+msgid "Set guide properties"
+msgstr ""
+
+#: ../src/ui/dialog/guides.cpp:151
+msgid "Guideline"
+msgstr ""
+
+#: ../src/ui/dialog/guides.cpp:239
+#, c-format
+msgid "Guideline ID: %s"
+msgstr ""
+
+#: ../src/ui/dialog/guides.cpp:245
+#, c-format
+msgid "Current: %s"
+msgstr ""
+
+#: ../src/ui/dialog/icon-preview.cpp:130
+#, c-format
+msgid "%d x %d"
+msgstr ""
+
+#: ../src/ui/dialog/icon-preview.cpp:180
+msgid "Selection only or whole document"
+msgstr ""
+
+#: ../src/ui/dialog/icon-preview.cpp:188
+msgid "Refresh the icons"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:169
+msgid "Mouse"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:171
+msgid "Grab sensitivity:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:171
+#: ../src/ui/dialog/inkscape-preferences.cpp:174
+#: ../src/ui/dialog/inkscape-preferences.cpp:190
+#: ../src/ui/dialog/inkscape-preferences.cpp:194
+#: ../src/ui/dialog/inkscape-preferences.cpp:204
+msgid "pixels"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:172
+msgid ""
+"How close on the screen you need to be to an object to be able to grab it "
+"with mouse (in screen pixels)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:174
+msgid "Click/drag threshold:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:175
+msgid ""
+"Maximum mouse drag (in screen pixels) which is considered a click, not a drag"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:177
+msgid "Use pressure-sensitive tablet (requires restart)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:179
+msgid ""
+"Use the capabilities of a tablet or other pressure-sensitive device. Disable "
+"this only if you have problems with the tablet (you can still use it as a "
+"mouse)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:181
+msgid "Switch tool based on tablet device (requires restart)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:183
+msgid ""
+"Change tool as different devices are used on the tablet (pen, eraser, mouse)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:188
+msgid "Scrolling"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:190
+msgid "Mouse wheel scrolls by:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:191
+msgid ""
+"One mouse wheel notch scrolls by this distance in screen pixels "
+"(horizontally with Shift)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:192
+msgid "Ctrl+arrows"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:194
+msgid "Scroll by:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:195
+msgid "Pressing Ctrl+arrow key scrolls by this distance (in screen pixels)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:197
+msgid "Acceleration:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:198
+msgid ""
+"Pressing and holding Ctrl+arrow will gradually speed up scrolling (0 for no "
+"acceleration)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:199
+msgid "Autoscrolling"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:201
+msgid "Speed:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:202
+msgid ""
+"How fast the canvas autoscrolls when you drag beyond canvas edge (0 to turn "
+"autoscroll off)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:204
+#: ../src/ui/dialog/tracedialog.cpp:420 ../src/ui/dialog/tracedialog.cpp:453
+#: ../src/ui/dialog/tracedialog.cpp:596 ../src/widgets/toolbox.cpp:7185
+msgid "Threshold:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:205
+msgid ""
+"How far (in screen pixels) you need to be from the canvas edge to trigger "
+"autoscroll; positive is outside the canvas, negative is within the canvas"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:206
+msgid "Left mouse button pans when Space is pressed"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:208
+msgid ""
+"When on, pressing and holding Space and dragging with left mouse button pans "
+"canvas (as in Adobe Illustrator). When off, Space temporarily switches to "
+"Selector tool (default)."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:209
+msgid "Mouse wheel zooms by default"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:211
+msgid ""
+"When on, mouse wheel zooms without Ctrl and scrolls canvas with Ctrl; when "
+"off, it zooms with Ctrl and scrolls without Ctrl."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:217
+msgid "Enable snap indicator"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:219
+msgid "After snapping, a symbol is drawn at the point that has snapped"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:222
+msgid "Delay (in ms):"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:223
+msgid ""
+"Postpone snapping as long as the mouse is moving, and then wait an "
+"additional fraction of a second. This additional delay is specified here. "
+"When set to zero or to a very small number, snapping will be immediate."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:225
+msgid "Only snap the node closest to the pointer"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:227
+msgid ""
+"Only try to snap the node that is initially closest to the mouse pointer"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:230
+msgid "Weight factor:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:231
+msgid ""
+"When multiple snap solutions are found, then Inkscape can either prefer the "
+"closest transformation (when set to 0), or prefer the node that was "
+"initially the closest to the pointer (when set to 1)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:233
+msgid "Snap the mouse pointer when dragging a constrained knot"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:235
+msgid ""
+"When dragging a knot along a constraint line, then snap the position of the "
+"mouse pointer instead of snapping the projection of the knot onto the "
+"constraint line"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:237
+msgid "Snapping"
+msgstr ""
+
+#. nudgedistance is limited to 1000 in select-context.cpp: use the same limit here
+#: ../src/ui/dialog/inkscape-preferences.cpp:246
+msgid "Arrow keys move by:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:247
+msgid ""
+"Pressing an arrow key moves selected object(s) or node(s) by this distance "
+"(in px units)"
+msgstr ""
+
+#. defaultscale is limited to 1000 in select-context.cpp: use the same limit here
+#: ../src/ui/dialog/inkscape-preferences.cpp:250
+msgid "> and < scale by:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:251
+msgid ""
+"Pressing > or < scales selection up or down by this increment (in px units)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:253
+msgid "Inset/Outset by:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:254
+msgid ""
+"Inset and Outset commands displace the path by this distance (in px units)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:255
+msgid "Compass-like display of angles"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:257
+msgid ""
+"When on, angles are displayed with 0 at north, 0 to 360 range, positive "
+"clockwise; otherwise with 0 at east, -180 to 180 range, positive "
+"counterclockwise"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:263
+msgid "Rotation snaps every:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:263
+msgid "degrees"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:264
+msgid ""
+"Rotating with Ctrl pressed snaps every that much degrees; also, pressing "
+"[ or ] rotates by this amount"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:266
+msgid "Zoom in/out by:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:267
+msgid ""
+"Zoom tool click, +/- keys, and middle click zoom in and out by this "
+"multiplier"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:273
+msgid "Show selection cue"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:274
+msgid ""
+"Whether selected objects display a selection cue (the same as in selector)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:280
+msgid "Enable gradient editing"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:281
+msgid "Whether selected objects display gradient editing controls"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:286
+msgid "Conversion to guides uses edges instead of bounding box"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:287
+msgid ""
+"Converting an object to guides places these along the object's true edges "
+"(imitating the object's shape), not along the bounding box."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:294
+msgid "Ctrl+click dot size:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:294
+msgid "times current stroke width"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:295
+msgid "Size of dots created with Ctrl+click (relative to current stroke width)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:310
+msgid "<b>No objects selected</b> to take the style from."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:319
+msgid ""
+"<b>More than one object selected.</b>  Cannot take style from multiple "
+"objects."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:352
+msgid "Create new objects with:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:354
+msgid "Last used style"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:356
+msgid "Apply the style you last set on an object"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:361
+msgid "This tool's own style:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:365
+msgid ""
+"Each tool may store its own style to apply to the newly created objects. Use "
+"the button below to set it."
+msgstr ""
+
+#. style swatch
+#: ../src/ui/dialog/inkscape-preferences.cpp:369
+msgid "Take from selection"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:374
+msgid "This tool's style of new objects"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:381
+msgid "Remember the style of the (first) selected object as this tool's style"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:386
+msgid "Tools"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:389
+msgid "Bounding box to use:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:390
+msgid "Visual bounding box"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:392
+msgid "This bounding box includes stroke width, markers, filter margins, etc."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:393
+msgid "Geometric bounding box"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:395
+msgid "This bounding box includes only the bare path"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:397
+msgid "Conversion to guides:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:398
+msgid "Keep objects after conversion to guides"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:400
+msgid ""
+"When converting an object to guides, don't delete the object after the "
+"conversion."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:401
+msgid "Treat groups as a single object"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:403
+msgid ""
+"Treat groups as a single object during conversion to guides rather than "
+"converting each child separately."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:405
+msgid "Average all sketches"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:406
+msgid "Width is in absolute units"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:407
+msgid "Select new path"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:408
+msgid "Don't attach connectors to text objects"
+msgstr ""
+
+#. Selector
+#: ../src/ui/dialog/inkscape-preferences.cpp:411
+msgid "Selector"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:414
+msgid "When transforming, show:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:415
+msgid "Objects"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:417
+msgid "Show the actual objects when moving or transforming"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:418
+msgid "Box outline"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:420
+msgid "Show only a box outline of the objects when moving or transforming"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:421
+msgid "Per-object selection cue:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:424
+msgid "No per-object selection indication"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:425
+msgid "Mark"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:427
+msgid "Each selected object has a diamond mark in the top left corner"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:428
+msgid "Box"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:430
+msgid "Each selected object displays its bounding box"
+msgstr ""
+
+#. Node
+#: ../src/ui/dialog/inkscape-preferences.cpp:433
+msgid "Node"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:436
+msgid "Path outline:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:437
+#: ../src/ui/dialog/inkscape-preferences.cpp:438
+msgid "Path outline color"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:438
+msgid "Selects the color used for showing the path outline."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:439
+msgid "Path outline flash on mouse-over"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:440
+msgid "When hovering over a path, briefly flash its outline."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:441
+msgid "Suppress path outline flash when one path selected"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:442
+msgid "If a path is selected, do not continue flashing path outlines."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:444
+msgid "Flash time"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:444
+msgid ""
+"Specifies how long the path outline will be visible after a mouse-over (in "
+"milliseconds). Specify 0 to have the outline shown until mouse leaves the "
+"path."
+msgstr ""
+
+#. Tweak
+#: ../src/ui/dialog/inkscape-preferences.cpp:447 ../src/verbs.cpp:2504
+msgid "Tweak"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:448
+msgid "Paint objects with:"
+msgstr ""
+
+#. Zoom
+#: ../src/ui/dialog/inkscape-preferences.cpp:453
+#: ../src/ui/view/edit-widget.cpp:1062 ../src/verbs.cpp:2526
+#: ../src/widgets/desktop-widget.cpp:483
+msgid "Zoom"
+msgstr ""
+
+#. Shapes
+#: ../src/ui/dialog/inkscape-preferences.cpp:458
+msgid "Shapes"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:490
+msgid "Sketch mode"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:492
+msgid ""
+"If on, the sketch result will be the normal average of all sketches made, "
+"instead of averaging the old result with the new sketch."
+msgstr ""
+
+#. Pen
+#: ../src/ui/dialog/inkscape-preferences.cpp:495 ../src/verbs.cpp:2518
+msgid "Pen"
+msgstr ""
+
+#. Calligraphy
+#: ../src/ui/dialog/inkscape-preferences.cpp:501 ../src/verbs.cpp:2520
+msgid "Calligraphy"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:505
+msgid ""
+"If on, pen width is in absolute units (px) independent of zoom; otherwise "
+"pen width depends on zoom so that it looks the same at any zoom"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:507
+msgid ""
+"If on, each newly created object will be selected (deselecting previous "
+"selection)"
+msgstr ""
+
+#. Paint Bucket
+#: ../src/ui/dialog/inkscape-preferences.cpp:509 ../src/verbs.cpp:2532
+msgid "Paint Bucket"
+msgstr ""
+
+#. Eraser
+#: ../src/ui/dialog/inkscape-preferences.cpp:514 ../src/verbs.cpp:2536
+msgid "Eraser"
+msgstr ""
+
+#. LPETool
+#: ../src/ui/dialog/inkscape-preferences.cpp:518 ../src/verbs.cpp:2538
+msgid "LPE Tool"
+msgstr ""
+
+#. Gradient
+#: ../src/ui/dialog/inkscape-preferences.cpp:528 ../src/verbs.cpp:2524
+msgid "Gradient"
+msgstr ""
+
+#. Connector
+#: ../src/ui/dialog/inkscape-preferences.cpp:532 ../src/verbs.cpp:2530
+msgid "Connector"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:535
+msgid "If on, connector attachment points will not be shown for text objects"
+msgstr ""
+
+#. Dropper
+#: ../src/ui/dialog/inkscape-preferences.cpp:537 ../src/verbs.cpp:2528
+msgid "Dropper"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:544
+msgid "Save and restore window geometry for each document"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:545
+msgid "Remember and use last window's geometry"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:546
+msgid "Don't save window geometry"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:548
+#: ../src/ui/dialog/inkscape-preferences.cpp:568
+msgid "Dockable"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:551
+msgid "Dialogs are hidden in taskbar"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:552
+msgid "Zoom when window is resized"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:553
+msgid "Show close button on dialogs"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:555
+msgid "Normal"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:556
+msgid "Aggressive"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:558
+msgid "Saving window geometry (size and position):"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:560
+msgid "Let the window manager determine placement of all windows"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:562
+msgid ""
+"Remember and use the last window's geometry (saves geometry to user "
+"preferences)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:564
+msgid ""
+"Save and restore window geometry for each document (saves geometry in the "
+"document)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:566
+msgid "Dialog behavior (requires restart):"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:573
+msgid "Dialogs on top:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:576
+msgid "Dialogs are treated as regular windows"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:578
+msgid "Dialogs stay on top of document windows"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:580
+msgid "Same as Normal but may work better with some window managers"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:584
+msgid "Dialog Transparency:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:586
+msgid "Opacity when focused:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:588
+msgid "Opacity when unfocused:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:590
+msgid "Time of opacity change animation:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:593
+msgid "Miscellaneous:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:596
+msgid "Whether dialog windows are to be hidden in the window manager taskbar"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:599
+msgid ""
+"Zoom drawing when document window is resized, to keep the same area visible "
+"(this is the default which can be changed in any window using the button "
+"above the right scrollbar)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:601
+msgid "Whether dialog windows have a close button (requires restart)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:602
+msgid "Windows"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:607
+msgid "Move in parallel"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:609
+msgid "Stay unmoved"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:611
+msgid "Move according to transform"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:613
+msgid "Are unlinked"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:615
+msgid "Are deleted"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:618
+msgid "When the original moves, its clones and linked offsets:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:620
+msgid "Clones are translated by the same vector as their original."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:622
+msgid "Clones preserve their positions when their original is moved."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:624
+msgid ""
+"Each clone moves according to the value of its transform= attribute. For "
+"example, a rotated clone will move in a different direction than its "
+"original."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:625
+msgid "When the original is deleted, its clones:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:627
+msgid "Orphaned clones are converted to regular objects."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:629
+msgid "Orphaned clones are deleted along with their original."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:631
+msgid "When duplicating original+clones:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:633
+msgid "Relink duplicated clones"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:635
+msgid ""
+"When duplicating a selection containing both a clone and its original "
+"(possibly in groups), relink the duplicated clone to the duplicated original "
+"instead of the old original"
+msgstr ""
+
+#. TRANSLATORS: Heading for the Inkscape Preferences "Clones" Page
+#: ../src/ui/dialog/inkscape-preferences.cpp:638
+msgid "Clones"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:643
+msgid "When applying, use the topmost selected object as clippath/mask"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:645
+msgid ""
+"Uncheck this to use the bottom selected object as the clipping path or mask"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:646
+msgid "Remove clippath/mask object after applying"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:648
+msgid ""
+"After applying, remove the object used as the clipping path or mask from the "
+"drawing"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:649
+msgid "Clippaths and masks"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:654
+#: ../src/widgets/select-toolbar.cpp:544
+msgid "Scale stroke width"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:655
+msgid "Scale rounded corners in rectangles"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:656
+msgid "Transform gradients"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:657
+msgid "Transform patterns"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:658
+msgid "Optimized"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:659
+msgid "Preserved"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:662
+#: ../src/widgets/select-toolbar.cpp:545
+msgid "When scaling objects, scale the stroke width by the same proportion"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:664
+#: ../src/widgets/select-toolbar.cpp:556
+msgid "When scaling rectangles, scale the radii of rounded corners"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:666
+#: ../src/widgets/select-toolbar.cpp:567
+msgid "Move gradients (in fill or stroke) along with the objects"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:668
+#: ../src/widgets/select-toolbar.cpp:578
+msgid "Move patterns (in fill or stroke) along with the objects"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:669
+msgid "Store transformation:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:671
+msgid ""
+"If possible, apply transformation to objects without adding a transform= "
+"attribute"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:673
+msgid "Always store transformation as a transform= attribute on objects"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:675
+msgid "Transforms"
+msgstr ""
+
+#. blur quality
+#. filter quality
+#: ../src/ui/dialog/inkscape-preferences.cpp:681
+#: ../src/ui/dialog/inkscape-preferences.cpp:705
+msgid "Best quality (slowest)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:683
+#: ../src/ui/dialog/inkscape-preferences.cpp:707
+msgid "Better quality (slower)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:685
+#: ../src/ui/dialog/inkscape-preferences.cpp:709
+msgid "Average quality"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:687
+#: ../src/ui/dialog/inkscape-preferences.cpp:711
+msgid "Lower quality (faster)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:689
+#: ../src/ui/dialog/inkscape-preferences.cpp:713
+msgid "Lowest quality (fastest)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:692
+msgid "Gaussian blur quality for display:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:694
+#: ../src/ui/dialog/inkscape-preferences.cpp:718
+msgid ""
+"Best quality, but display may be very slow at high zooms (bitmap export "
+"always uses best quality)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:696
+#: ../src/ui/dialog/inkscape-preferences.cpp:720
+msgid "Better quality, but slower display"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:698
+#: ../src/ui/dialog/inkscape-preferences.cpp:722
+msgid "Average quality, acceptable display speed"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:700
+#: ../src/ui/dialog/inkscape-preferences.cpp:724
+msgid "Lower quality (some artifacts), but display is faster"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:702
+#: ../src/ui/dialog/inkscape-preferences.cpp:726
+msgid "Lowest quality (considerable artifacts), but display is fastest"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:716
+msgid "Filter effects quality for display:"
+msgstr ""
+
+#. show infobox
+#: ../src/ui/dialog/inkscape-preferences.cpp:729
+msgid "Show filter primitives infobox"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:731
+msgid ""
+"Show icons and descriptions for the filter primitives available at the "
+"filter effects dialog."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:739
+msgid "Select in all layers"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:740
+msgid "Select only within current layer"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:741
+msgid "Select in current layer and sublayers"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:742
+msgid "Ignore hidden objects and layers"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:743
+msgid "Ignore locked objects and layers"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:744
+msgid "Deselect upon layer change"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:746
+msgid "Ctrl+A, Tab, Shift+Tab:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:748
+msgid "Make keyboard selection commands work on objects in all layers"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:750
+msgid "Make keyboard selection commands work on objects in current layer only"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:752
+msgid ""
+"Make keyboard selection commands work on objects in current layer and all "
+"its sublayers"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:754
+msgid ""
+"Uncheck this to be able to select objects that are hidden (either by "
+"themselves or by being in a hidden layer)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:756
+msgid ""
+"Uncheck this to be able to select objects that are locked (either by "
+"themselves or by being in a locked layer)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:759
+msgid ""
+"Uncheck this to be able to keep the current objects selected when the "
+"current layer changes"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:761
+msgid "Selecting"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:768
+msgid "Default export resolution:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:769
+msgid "Default bitmap resolution (in dots per inch) in the Export dialog"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:771
+msgid "Open Clip Art Library Server Name:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:772
+msgid ""
+"The server name of the Open Clip Art Library webdav server. It's used by the "
+"Import and Export to OCAL function."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:774
+msgid "Open Clip Art Library Username:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:775
+msgid "The username used to log into Open Clip Art Library."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:777
+msgid "Open Clip Art Library Password:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:778
+msgid "The password used to log into Open Clip Art Library."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:780
+msgid "Import/Export"
+msgstr ""
+
+#. TRANSLATORS: see http://www.newsandtech.com/issues/2004/03-04/pt/03-04_rendering.htm
+#: ../src/ui/dialog/inkscape-preferences.cpp:830
+msgid "Perceptual"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:830
+msgid "Relative Colorimetric"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:830
+msgid "Absolute Colorimetric"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:834
+msgid "(Note: Color management has been disabled in this build)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:838
+msgid "Display adjustment"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:848
+#, c-format
+msgid ""
+"The ICC profile to use to calibrate display output.\n"
+"Searched directories:%s"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:849
+msgid "Display profile:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:854
+msgid "Retrieve profile from display"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:857
+msgid "Retrieve profiles from those attached to displays via XICC."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:859
+msgid "Retrieve profiles from those attached to displays."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:864
+msgid "Display rendering intent:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:865
+#: ../src/ui/dialog/inkscape-preferences.cpp:888
+msgid "The rendering intent to use to calibrate display output."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:867
+msgid "Proofing"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:869
+msgid "Simulate output on screen"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:871
+msgid "Simulates output of target device."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:873
+msgid "Mark out of gamut colors"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:875
+msgid "Highlights colors that are out of gamut for the target device."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:880
+msgid "Out of gamut warning color:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:881
+msgid "Selects the color used for out of gamut warning."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:883
+msgid "Device profile:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:884
+msgid "The ICC profile to use to simulate device output."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:887
+msgid "Device rendering intent:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:890
+msgid "Black point compensation"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:892
+msgid "Enables black point compensation."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:894
+msgid "Preserve black"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:899
+msgid "(LittleCMS 1.15 or later required)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:901
+msgid "Preserve K channel in CMYK -> CMYK transforms"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:914
+#: ../src/widgets/sp-color-icc-selector.cpp:306
+#: ../src/widgets/sp-color-icc-selector.cpp:579
+msgid "<none>"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:959
+msgid "Color management"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:964
+msgid "Major grid line emphasizing"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:966
+msgid "Don't emphasize gridlines when zoomed out"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:967
+msgid ""
+"If set and zoomed out, the gridlines will be shown in normal color instead "
+"of major grid line color."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:969
+msgid "Default grid settings"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:975
+#: ../src/ui/dialog/inkscape-preferences.cpp:996
+msgid "Grid units:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:978
+#: ../src/ui/dialog/inkscape-preferences.cpp:999
+msgid "Origin X:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:979
+#: ../src/ui/dialog/inkscape-preferences.cpp:1000
+msgid "Origin Y:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:982
+msgid "Spacing X:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:983
+#: ../src/ui/dialog/inkscape-preferences.cpp:1002
+msgid "Spacing Y:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:985
+#: ../src/ui/dialog/inkscape-preferences.cpp:986
+#: ../src/ui/dialog/inkscape-preferences.cpp:1007
+#: ../src/ui/dialog/inkscape-preferences.cpp:1008
+msgid "Grid line color:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:986
+#: ../src/ui/dialog/inkscape-preferences.cpp:1008
+msgid "Color used for normal grid lines"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:987
+#: ../src/ui/dialog/inkscape-preferences.cpp:988
+#: ../src/ui/dialog/inkscape-preferences.cpp:1009
+#: ../src/ui/dialog/inkscape-preferences.cpp:1010
+msgid "Major grid line color:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:988
+#: ../src/ui/dialog/inkscape-preferences.cpp:1010
+msgid "Color used for major (highlighted) grid lines"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:990
+#: ../src/ui/dialog/inkscape-preferences.cpp:1012
+msgid "Major grid line every:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:991
+msgid "Show dots instead of lines"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:992
+msgid "If set, display dots at gridpoints instead of gridlines"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1019
+msgid "Use named colors"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1020
+msgid ""
+"If set, write the CSS name of the color when available (e.g. 'red' or "
+"'magenta') instead of the numeric value"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1022
+msgid "XML formatting"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1024
+msgid "Inline attributes"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1025
+msgid "Put attributes on the same line as the element tag"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1028
+msgid "Indent, spaces:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1028
+msgid ""
+"The number of spaces to use for indenting nested elements; set to 0 for no "
+"indentation"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1030
+msgid "Path data"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1032
+msgid "Allow relative coordinates"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1033
+msgid "If set, relative coordinates may be used in path data"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1035
+msgid "Force repeat commands"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1036
+msgid ""
+"Force repeating of the same path command (for example, 'L 1,2 L 3,4' instead "
+"of 'L 1,2 3,4')"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1038
+msgid "Numbers"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1041
+msgid "Numeric precision:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1041
+msgid "How many digits to write after the decimal dot"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1044
+msgid "Minimum exponent:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1044
+msgid ""
+"The smallest number written to SVG is 10 to the power of this exponent; "
+"anything smaller is written as zero."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1046
+msgid "SVG output"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1051
+msgid "System default"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1051
+msgid "Albanian (sq)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1051
+msgid "Amharic (am)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1051
+msgid "Arabic (ar)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1051
+msgid "Armenian (hy)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1051
+msgid "Azerbaijani (az)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1051
+msgid "Basque (eu)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1051
+msgid "Belarusian (be)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1052
+msgid "Bulgarian (bg)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1052
+msgid "Bengali (bn)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1052
+msgid "Breton (br)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1052
+msgid "Catalan (ca)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1052
+msgid "Valencian Catalan (ca@valencia)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1052
+msgid "Chinese/China (zh_CN)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1053
+msgid "Chinese/Taiwan (zh_TW)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1053
+msgid "Croatian (hr)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1053
+msgid "Czech (cs)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1054
+msgid "Danish (da)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1054
+msgid "Dutch (nl)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1054
+msgid "Dzongkha (dz)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1054
+msgid "German (de)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1054
+msgid "Greek (el)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1054
+msgid "English (en)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1054
+msgid "English/Australia (en_AU)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1055
+msgid "English/Canada (en_CA)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1055
+msgid "English/Great Britain (en_GB)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1055
+msgid "Pig Latin (en_US@piglatin)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1056
+msgid "Esperanto (eo)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1056
+msgid "Estonian (et)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1056
+msgid "Finnish (fi)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1057
+msgid "French (fr)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1057
+msgid "Irish (ga)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1057
+msgid "Galician (gl)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1057
+msgid "Hebrew (he)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1057
+msgid "Hungarian (hu)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1058
+msgid "Indonesian (id)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1058
+msgid "Italian (it)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1058
+msgid "Japanese (ja)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1058
+msgid "Khmer (km)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1058
+msgid "Kinyarwanda (rw)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1058
+msgid "Korean (ko)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1058
+msgid "Lithuanian (lt)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1058
+msgid "Macedonian (mk)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1059
+msgid "Mongolian (mn)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1059
+msgid "Nepali (ne)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1059
+msgid "Norwegian BokmÃ¥l (nb)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1059
+msgid "Norwegian Nynorsk (nn)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1059
+msgid "Panjabi (pa)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1060
+msgid "Polish (pl)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1060
+msgid "Portuguese (pt)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1060
+msgid "Portuguese/Brazil (pt_BR)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1060
+msgid "Romanian (ro)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1060
+msgid "Russian (ru)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1061
+msgid "Serbian (sr)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1061
+msgid "Serbian in Latin script (sr@latin)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1061
+msgid "Slovak (sk)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1061
+msgid "Slovenian (sl)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1061
+msgid "Spanish (es)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1061
+msgid "Spanish/Mexico (es_MX)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1062
+msgid "Swedish (sv)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1062
+msgid "Thai (th)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1062
+msgid "Turkish (tr)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1062
+msgid "Ukrainian (uk)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1062
+msgid "Vietnamese (vi)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1069
+msgid "Language (requires restart):"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1070
+msgid "Set the language for menus and number formats"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1072
+msgid "Smaller"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1076
+msgid "Toolbox icon size"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1077
+msgid "Set the size for the tool icons (requires restart)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1080
+msgid "Control bar icon size"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1081
+msgid ""
+"Set the size for the icons in tools' control bars to use (requires restart)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1084
+msgid "Secondary toolbar icon size"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1085
+msgid ""
+"Set the size for the icons in secondary toolbars to use (requires restart)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1088
+msgid "Work-around color sliders not drawing."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1090
+msgid ""
+"When on, will attempt to work around bugs in certain GTK themes drawing "
+"color sliders."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1096
+msgid "Clear list"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1101
+msgid "Maximum documents in Open Recent:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1102
+msgid ""
+"Set the maximum length of the Open Recent list in the File menu, or clear "
+"the list"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1105
+msgid "Zoom correction factor (in %):"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1106
+msgid ""
+"Adjust the slider until the length of the ruler on your screen matches its "
+"real length. This information is used when zooming to 1:1, 1:2, etc., to "
+"display objects in their true sizes"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1108
+msgid "Interface"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1114
+msgid "Use current directory for \"Save As ...\""
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1116
+msgid ""
+"When this option is on, the \"Save as...\" dialog will always open in the "
+"directory where the currently open document is. When it's off, it will open "
+"in the directory where you last saved a file using that dialog."
+msgstr ""
+
+#. Autosave options
+#: ../src/ui/dialog/inkscape-preferences.cpp:1120
+msgid "Enable autosave (requires restart)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1121
+msgid ""
+"Automatically save the current document(s) at a given interval, thus "
+"minimizing loss in case of a crash"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1123
+msgid "Interval (in minutes):"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1123
+msgid "Interval (in minutes) at which document will be autosaved"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/ui/dialog/inkscape-preferences.cpp:1127
+msgid "filesystem|Path:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1127
+msgid "The directory where autosaves will be written"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1129
+msgid "Maximum number of autosaves:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1129
+msgid ""
+"Maximum number of autosaved files; use this to limit the storage space used"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1151
+msgid "2x2"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1151
+msgid "4x4"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1151
+msgid "8x8"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1151
+msgid "16x16"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1155
+msgid "Oversample bitmaps:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1158
+msgid "Automatically reload bitmaps"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1160
+msgid "Automatically reload linked images when file is changed on disk"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1174
+msgid "Bitmap editor:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1180
+msgid "Resolution for Create Bitmap Copy:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1181
+msgid "Resolution used by the Create Bitmap Copy command"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1183
+msgid "Bitmaps"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1235
+msgid "Language:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1236
+msgid "Set the main spell check language"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1239
+msgid "Second language:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1240
+msgid ""
+"Set the second spell check language; checking will only stop on words "
+"unknown in ALL chosen languages"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1243
+msgid "Third language:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1244
+msgid ""
+"Set the third spell check language; checking will only stop on words unknown "
+"in ALL chosen languages"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1246
+msgid "Ignore words with digits"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1248
+msgid "Ignore words containing digits, such as \"R2D2\""
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1250
+msgid "Ignore words in ALL CAPITALS"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1252
+msgid "Ignore words in all capitals, such as \"IUPAC\""
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1254
+msgid "Spellcheck"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1273
+msgid "Add label comments to printing output"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1275
+msgid ""
+"When on, a comment will be added to the raw print output, marking the "
+"rendered output for an object with its label"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1277
+msgid "Prevent sharing of gradient definitions"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1279
+msgid ""
+"When on, shared gradient definitions are automatically forked on change; "
+"uncheck to allow sharing of gradient definitions so that editing one object "
+"may affect other objects using the same gradient"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1282
+msgid "Simplification threshold:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1283
+msgid ""
+"How strong is the Node tool's Simplify command by default. If you invoke "
+"this command several times in quick succession, it will act more and more "
+"aggressively; invoking it again after a pause restores the default threshold."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1286
+msgid "Latency skew:"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1286
+msgid "(requires restart)"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1287
+msgid ""
+"Factor by which the event clock is skewed from the actual time (0.9766 on "
+"some systems)."
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1289
+msgid "Pre-render named icons"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1291
+msgid ""
+"When on, named icons will be rendered before displaying the ui. This is for "
+"working around bugs in GTK+ named icon notification"
+msgstr ""
+
+#. TRANSLATORS: following strings are paths in Inkscape preferences - Misc - System info
+#: ../src/ui/dialog/inkscape-preferences.cpp:1297
+msgid "User config: "
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1301
+msgid "User data: "
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1305
+msgid "User cache: "
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1309
+msgid "System config: "
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1312
+msgid "System data: "
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1315
+msgid "PIXMAP: "
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1319
+msgid "DATA: "
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1323
+msgid "UI: "
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1332
+msgid "Icon theme: "
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1347
+msgid "System info"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1347
+msgid "General system information"
+msgstr ""
+
+#: ../src/ui/dialog/inkscape-preferences.cpp:1349
+msgid "Misc"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:41
+msgid "Layer name:"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:109
+msgid "Add layer"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:147
+msgid "Above current"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:151
+msgid "Below current"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:154
+msgid "As sublayer of current"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:158
+msgid "Position:"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:176
+msgid "Rename Layer"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:179
+msgid "_Rename"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:192
+msgid "Rename layer"
+msgstr ""
+
+#. TRANSLATORS: This means "The layer has been renamed"
+#: ../src/ui/dialog/layer-properties.cpp:194
+msgid "Renamed layer"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:198
+msgid "Add Layer"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:201
+msgid "_Add"
+msgstr ""
+
+#: ../src/ui/dialog/layer-properties.cpp:225
+msgid "New layer created."
+msgstr ""
+
+#: ../src/ui/dialog/layers.cpp:495 ../src/ui/widget/layer-selector.cpp:595
+msgid "Unhide layer"
+msgstr ""
+
+#: ../src/ui/dialog/layers.cpp:495 ../src/ui/widget/layer-selector.cpp:595
+msgid "Hide layer"
+msgstr ""
+
+#: ../src/ui/dialog/layers.cpp:506 ../src/ui/widget/layer-selector.cpp:587
+msgid "Lock layer"
+msgstr ""
+
+#: ../src/ui/dialog/layers.cpp:506 ../src/ui/widget/layer-selector.cpp:587
+msgid "Unlock layer"
+msgstr ""
+
+#: ../src/ui/dialog/layers.cpp:656
+msgid "New"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/ui/dialog/layers.cpp:663
+msgid "layers|Top"
+msgstr ""
+
+#: ../src/ui/dialog/layers.cpp:669
+msgid "Up"
+msgstr ""
+
+#: ../src/ui/dialog/layers.cpp:675
+msgid "Dn"
+msgstr ""
+
+#: ../src/ui/dialog/layers.cpp:681
+msgid "Bot"
+msgstr ""
+
+#: ../src/ui/dialog/layers.cpp:691
+msgid "X"
+msgstr ""
+
+#. TRANSLATORS: this dialog is accessible via menu Path - Path Effect Editor...
+#: ../src/ui/dialog/livepatheffect-editor.cpp:78
+msgid "Apply new effect"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:79
+msgid "Current effect"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:80
+msgid "Effect list"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:269
+msgid "Unknown effect is applied"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:272
+msgid "No effect applied"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:276
+msgid "Item is not a path or shape"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:280
+msgid "Only one item can be selected"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:284
+msgid "Empty selection"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:308
+msgid "Unknown effect"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:374
+msgid "Create and apply path effect"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:391
+msgid "Remove path effect"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:407
+msgid "Move path effect up"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:423
+msgid "Move path effect down"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:462
+msgid "Activate path effect"
+msgstr ""
+
+#: ../src/ui/dialog/livepatheffect-editor.cpp:462
+msgid "Deactivate path effect"
+msgstr ""
+
+#: ../src/ui/dialog/memory.cpp:94
+msgid "Heap"
+msgstr ""
+
+#: ../src/ui/dialog/memory.cpp:95
+msgid "In Use"
+msgstr ""
+
+#. TRANSLATORS: "Slack" refers to memory which is in the heap but currently unused.
+#. More typical usage is to call this memory "free" rather than "slack".
+#: ../src/ui/dialog/memory.cpp:98
+msgid "Slack"
+msgstr ""
+
+#: ../src/ui/dialog/memory.cpp:99
+msgid "Total"
+msgstr ""
+
+#: ../src/ui/dialog/memory.cpp:139 ../src/ui/dialog/memory.cpp:145
+#: ../src/ui/dialog/memory.cpp:152 ../src/ui/dialog/memory.cpp:184
+msgid "Unknown"
+msgstr ""
+
+#: ../src/ui/dialog/memory.cpp:165
+msgid "Combined"
+msgstr ""
+
+#: ../src/ui/dialog/memory.cpp:207
+msgid "Recalculate"
+msgstr ""
+
+#: ../src/ui/dialog/messages.cpp:73
+msgid "Ready."
+msgstr ""
+
+#: ../src/ui/dialog/messages.cpp:74
+msgid ""
+"Enable log display by setting dialogs.debug 'redirect' attribute to 1 in "
+"preferences.xml"
+msgstr ""
+
+#: ../src/ui/dialog/ocaldialogs.cpp:422
+msgid "Error while reading the Open Clip Art RSS feed"
+msgstr ""
+
+#: ../src/ui/dialog/ocaldialogs.cpp:461
+msgid ""
+"Failed to receive the Open Clip Art Library RSS feed. Verify if the server "
+"name is correct in Configuration->Import/Export (e.g.: openclipart.org)"
+msgstr ""
+
+#: ../src/ui/dialog/ocaldialogs.cpp:475
+msgid "Server supplied malformed Clip Art feed"
+msgstr ""
+
+#: ../src/ui/dialog/ocaldialogs.cpp:566
+msgid "Search for:"
+msgstr ""
+
+#: ../src/ui/dialog/ocaldialogs.cpp:567
+msgid "No files matched your search"
+msgstr ""
+
+#: ../src/ui/dialog/ocaldialogs.cpp:578
+msgid "Search"
+msgstr ""
+
+#: ../src/ui/dialog/ocaldialogs.cpp:595
+msgid "Files found"
+msgstr ""
+
+#: ../src/ui/dialog/print.cpp:93
+msgid "Could not open temporary PNG for bitmap printing"
+msgstr ""
+
+#: ../src/ui/dialog/print.cpp:136
+msgid "Could not set up Document"
+msgstr ""
+
+#: ../src/ui/dialog/print.cpp:140
+msgid "Failed to set CairoRenderContext"
+msgstr ""
+
+#. set up dialog title, based on document name
+#: ../src/ui/dialog/print.cpp:180
+msgid "SVG Document"
+msgstr ""
+
+#: ../src/ui/dialog/print.cpp:181
+msgid "Print"
+msgstr ""
+
+#. build custom preferences tab
+#: ../src/ui/dialog/print.cpp:215
+msgid "Rendering"
+msgstr ""
+
+#: ../src/ui/dialog/scriptdialog.cpp:211
+msgid "_Execute Javascript"
+msgstr ""
+
+#: ../src/ui/dialog/scriptdialog.cpp:213
+msgid "_Execute Python"
+msgstr ""
+
+#: ../src/ui/dialog/scriptdialog.cpp:215
+msgid "_Execute Ruby"
+msgstr ""
+
+#: ../src/ui/dialog/scriptdialog.cpp:224
+msgid "Script"
+msgstr ""
+
+#: ../src/ui/dialog/scriptdialog.cpp:234
+msgid "Output"
+msgstr ""
+
+#: ../src/ui/dialog/scriptdialog.cpp:244
+msgid "Errors"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:121
+msgid "Set SVG Font attribute"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:174
+msgid "Adjust kerning value"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:364
+msgid "Family Name:"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:374
+msgid "Set width:"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:433
+msgid "glyph"
+msgstr ""
+
+#. SPGlyph* glyph =
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:465
+msgid "Add glyph"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:481
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:525
+msgid "Select a <b>path</b> to define the curves of a glyph"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:489
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:533
+msgid "The selected object does not have a <b>path</b> description."
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:504
+msgid "No glyph selected in the SVGFonts dialog."
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:509
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:551
+msgid "Set glyph curves"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:570
+msgid "Reset missing-glyph"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:585
+msgid "Edit glyph name"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:598
+msgid "Set glyph unicode"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:608
+msgid "Remove font"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:623
+msgid "Remove glyph"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:638
+msgid "Remove kerning pair"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:648
+msgid "Missing Glyph:"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:652
+msgid "From selection..."
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:654
+#: ../src/ui/widget/preferences-widget.cpp:590
+msgid "Reset"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:665
+msgid "Glyph name"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:666
+msgid "Matching string"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:669
+msgid "Add Glyph"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:676
+msgid "Get curves from selection..."
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:726
+msgid "Add kerning pair"
+msgstr ""
+
+#. Kerning Setup:
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:734
+msgid "Kerning Setup:"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:736
+msgid "1st Glyph:"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:738
+msgid "2nd Glyph:"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:741
+msgid "Add pair"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:753
+msgid "First Unicode range"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:754
+msgid "Second Unicode range"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:761
+msgid "Kerning value:"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:819
+msgid "Set font family"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:828
+msgid "font"
+msgstr ""
+
+#. select_font(font);
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:842
+msgid "Add font"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:862
+msgid "_Font"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:870
+msgid "_Global Settings"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:871
+msgid "_Glyphs"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:872
+msgid "_Kerning"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:879
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:880
+msgid "Sample Text"
+msgstr ""
+
+#: ../src/ui/dialog/svg-fonts-dialog.cpp:884
+msgid "Preview Text:"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:331
+#, c-format
+msgid ""
+"Color: <b>%s</b>; <b>Click</b> to set fill, <b>Shift+click</b> to set stroke"
+msgstr ""
+
+#. TRANSLATORS: An item in context menu on a colour in the swatches
+#: ../src/ui/dialog/swatches.cpp:442
+msgid "Set fill"
+msgstr ""
+
+#. TRANSLATORS: An item in context menu on a colour in the swatches
+#: ../src/ui/dialog/swatches.cpp:450
+msgid "Set stroke"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:476 ../src/widgets/gradient-selector.cpp:144
+#: ../src/widgets/gradient-toolbar.cpp:466
+msgid "Edit..."
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:488
+msgid "Convert"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:651
+msgid "Change color definition"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:852
+msgid "Remove stroke color"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:852
+msgid "Remove fill color"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:857
+msgid "Set stroke color to none"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:857
+msgid "Set fill color to none"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:874
+msgid "Set stroke color from swatch"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:874
+msgid "Set fill color from swatch"
+msgstr ""
+
+#: ../src/ui/dialog/swatches.cpp:1198
+#, c-format
+msgid "Palettes directory (%s) is unavailable."
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:346
+msgid "Arrange in a grid"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:652
+msgid "Rows:"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:660
+msgid "Number of rows"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:664
+msgid "Equal height"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:674
+msgid "If not set, each row has the height of the tallest object in it"
+msgstr ""
+
+#. #### Radio buttons to control vertical alignment ####
+#. #### Radio buttons to control horizontal alignment ####
+#: ../src/ui/dialog/tile.cpp:680 ../src/ui/dialog/tile.cpp:750
+msgid "Align:"
+msgstr ""
+
+#. #### Number of columns ####
+#: ../src/ui/dialog/tile.cpp:722
+msgid "Columns:"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:730
+msgid "Number of columns"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:734
+msgid "Equal width"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:743
+msgid "If not set, each column has the width of the widest object in it"
+msgstr ""
+
+#. #### Radio buttons to control spacing manually or to fit selection bbox ####
+#: ../src/ui/dialog/tile.cpp:789
+msgid "Fit into selection box"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:795
+msgid "Set spacing:"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:815
+msgid "Vertical spacing between rows (px units)"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:840
+msgid "Horizontal spacing between columns (px units)"
+msgstr ""
+
+#. ## The OK button
+#: ../src/ui/dialog/tile.cpp:863
+msgid "tileClonesDialog|Arrange"
+msgstr ""
+
+#: ../src/ui/dialog/tile.cpp:864
+msgid "Arrange selected objects"
+msgstr ""
+
+#. #### begin left panel
+#. ### begin notebook
+#. ## begin mode page
+#. # begin single scan
+#. brightness
+#: ../src/ui/dialog/tracedialog.cpp:406
+msgid "Brightness cutoff"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:410
+msgid "Trace by a given brightness level"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:418
+msgid "Brightness cutoff for black/white"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:425
+msgid "Single scan: creates a path"
+msgstr ""
+
+#. canny edge detection
+#. TRANSLATORS: "Canny" is the name of the inventor of this edge detection method
+#: ../src/ui/dialog/tracedialog.cpp:430
+msgid "Edge detection"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:434
+msgid "Trace with optimal edge detection by J. Canny's algorithm"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:451
+msgid "Brightness cutoff for adjacent pixels (determines edge thickness)"
+msgstr ""
+
+#. quantization
+#. TRANSLATORS: Color Quantization: the process of reducing the number
+#. of colors in an image by selecting an optimized set of representative
+#. colors and then re-applying this reduced set to the original image.
+#: ../src/ui/dialog/tracedialog.cpp:463
+msgid "Color quantization"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:467
+msgid "Trace along the boundaries of reduced colors"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:475
+msgid "The number of reduced colors"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:477
+msgid "Colors:"
+msgstr ""
+
+#. swap black and white
+#: ../src/ui/dialog/tracedialog.cpp:483
+msgid "Invert image"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:488
+msgid "Invert black and white regions"
+msgstr ""
+
+#. # end single scan
+#. # begin multiple scan
+#: ../src/ui/dialog/tracedialog.cpp:497
+msgid "Brightness steps"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:501
+msgid "Trace the given number of brightness levels"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:508
+msgid "Scans:"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:511
+msgid "The desired number of scans"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:515
+#: ../share/extensions/svgcalendar.inx.h:6
+msgid "Colors"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:519
+msgid "Trace the given number of reduced colors"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:523
+msgid "Grays"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:527
+msgid "Same as Colors, but the result is converted to grayscale"
+msgstr ""
+
+#. TRANSLATORS: "Smooth" is a verb here
+#: ../src/ui/dialog/tracedialog.cpp:532
+msgid "Smooth"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:536
+msgid "Apply Gaussian blur to the bitmap before tracing"
+msgstr ""
+
+#. TRANSLATORS: "Stack" is a verb here
+#: ../src/ui/dialog/tracedialog.cpp:539
+msgid "Stack scans"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:542
+msgid ""
+"Stack scans on top of one another (no gaps) instead of tiling (usually with "
+"gaps)"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:545
+msgid "Remove background"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:550
+msgid "Remove bottom (background) layer when done"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:554
+msgid "Multiple scans: creates a group of paths"
+msgstr ""
+
+#. # end multiple scan
+#. ## end mode page
+#: ../src/ui/dialog/tracedialog.cpp:563 ../src/widgets/toolbox.cpp:4249
+#: ../share/extensions/triangle.inx.h:9
+msgid "Mode"
+msgstr ""
+
+#. ## begin option page
+#. # potrace parameters
+#: ../src/ui/dialog/tracedialog.cpp:569
+msgid "Suppress speckles"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:571
+msgid "Ignore small spots (speckles) in the bitmap"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:579
+msgid "Speckles of up to this many pixels will be suppressed"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:584
+msgid "Smooth corners"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:586
+msgid "Smooth out sharp corners of the trace"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:595
+msgid "Increase this to smooth corners more"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:599
+msgid "Optimize paths"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:602
+msgid "Try to optimize paths by joining adjacent Bezier curve segments"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:610
+msgid ""
+"Increase this to reduce the number of nodes in the trace by more aggressive "
+"optimization"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:611
+msgid "Tolerance:"
+msgstr ""
+
+#. ## end option page
+#: ../src/ui/dialog/tracedialog.cpp:617 ../src/ui/dialog/tracedialog.cpp:623
+#: ../share/extensions/dxf_input.inx.h:11
+#: ../share/extensions/dxf_outlines.inx.h:9 ../share/extensions/scour.inx.h:10
+msgid "Options"
+msgstr ""
+
+#. ### credits
+#: ../src/ui/dialog/tracedialog.cpp:627
+msgid ""
+"Inkscape bitmap tracing\n"
+"is based on Potrace,\n"
+"created by Peter Selinger\n"
+"\n"
+"http://potrace.sourceforge.net"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:630
+msgid "Credits"
+msgstr ""
+
+#. #### begin right panel
+#. ## SIOX
+#: ../src/ui/dialog/tracedialog.cpp:644
+msgid "SIOX foreground selection"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:647
+msgid "Cover the area you want to select as the foreground"
+msgstr ""
+
+#. ## preview
+#: ../src/ui/dialog/tracedialog.cpp:652
+msgid "Update"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:658
+msgid ""
+"Preview the intermediate bitmap with the current settings, without actual "
+"tracing"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:662
+msgid "Preview"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:679
+msgid "Abort a trace in progress"
+msgstr ""
+
+#: ../src/ui/dialog/tracedialog.cpp:683
+msgid "Execute the trace"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:82
+#: ../src/ui/dialog/transformation.cpp:92
+msgid "_Horizontal"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:82
+msgid "Horizontal displacement (relative) or position (absolute)"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:84
+#: ../src/ui/dialog/transformation.cpp:94
+msgid "_Vertical"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:84
+msgid "Vertical displacement (relative) or position (absolute)"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:86
+msgid "_Width"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:86
+msgid "Horizontal size (absolute or percentage of current)"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:88
+msgid "_Height"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:88
+msgid "Vertical size (absolute or percentage of current)"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:90
+msgid "A_ngle"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:90
+msgid "Rotation angle (positive = counterclockwise)"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:92
+msgid ""
+"Horizontal skew angle (positive = counterclockwise), or absolute "
+"displacement, or percentage displacement"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:94
+msgid ""
+"Vertical skew angle (positive = counterclockwise), or absolute displacement, "
+"or percentage displacement"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:97
+msgid "Transformation matrix element A"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:98
+msgid "Transformation matrix element B"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:99
+msgid "Transformation matrix element C"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:100
+msgid "Transformation matrix element D"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:101
+msgid "Transformation matrix element E"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:102
+msgid "Transformation matrix element F"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:104
+msgid "Rela_tive move"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:104
+msgid ""
+"Add the specified relative displacement to the current position; otherwise, "
+"edit the current absolute position directly"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:105
+msgid "Scale proportionally"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:105
+msgid "Preserve the width/height ratio of the scaled objects"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:106
+msgid "Apply to each _object separately"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:106
+msgid ""
+"Apply the scale/rotate/skew to each selected object separately; otherwise, "
+"transform the selection as a whole"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:107
+msgid "Edit c_urrent matrix"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:107
+msgid ""
+"Edit the current transform= matrix; otherwise, post-multiply transform= by "
+"this matrix"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:117
+msgid "_Move"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:120
+msgid "_Scale"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:123
+msgid "_Rotate"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:126
+msgid "Ske_w"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:129
+msgid "Matri_x"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:153
+msgid "Reset the values on the current tab to defaults"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:160
+msgid "Apply transformation to selection"
+msgstr ""
+
+#: ../src/ui/dialog/transformation.cpp:846
+msgid "Edit transformation matrix"
+msgstr ""
+
+#: ../src/ui/view/edit-widget.cpp:330 ../src/ui/view/edit-widget.cpp:335
+#: ../src/ui/view/edit-widget.cpp:343 ../src/ui/view/edit-widget.cpp:348
+#: ../src/ui/view/edit-widget.cpp:353 ../src/ui/view/edit-widget.cpp:368
+#: ../src/ui/view/edit-widget.cpp:381 ../src/ui/view/edit-widget.cpp:386
+#: ../src/ui/view/edit-widget.cpp:400 ../src/ui/view/edit-widget.cpp:404
+#: ../src/ui/view/edit-widget.cpp:412 ../src/ui/view/edit-widget.cpp:416
+#: ../src/ui/view/edit-widget.cpp:420 ../src/ui/view/edit-widget.cpp:756
+#: ../src/ui/view/edit-widget.cpp:761 ../src/ui/view/edit-widget.cpp:867
+#: ../src/ui/view/edit-widget.cpp:871 ../src/ui/view/edit-widget.cpp:992
+msgid "PLACEHOLDER, do not translate"
+msgstr ""
+
+#: ../src/ui/view/edit-widget.cpp:1051 ../src/widgets/desktop-widget.cpp:379
+msgid "Zoom drawing if window size changes"
+msgstr ""
+
+#: ../src/ui/view/edit-widget.cpp:1072 ../src/widgets/desktop-widget.cpp:503
+msgid "Cursor coordinates"
+msgstr ""
+
+#: ../src/ui/view/edit-widget.cpp:1082 ../src/widgets/desktop-widget.cpp:518
+msgid "Z:"
+msgstr ""
+
+#: ../src/ui/view/edit-widget.cpp:1089
+msgid ""
+"<b>Welcome to Inkscape!</b> Use shape or drawing tools to create objects; "
+"use selector (arrow) to move or transform them."
+msgstr ""
+
+#: ../src/ui/view/edit-widget.cpp:1200 ../src/widgets/desktop-widget.cpp:838
+#, c-format
+msgid ""
+"<span weight=\"bold\" size=\"larger\">Save changes to document \"%s\" before "
+"closing?</span>\n"
+"\n"
+"If you close without saving, your changes will be discarded."
+msgstr ""
+
+#: ../src/ui/view/edit-widget.cpp:1211 ../src/ui/view/edit-widget.cpp:1259
+#: ../src/widgets/desktop-widget.cpp:845 ../src/widgets/desktop-widget.cpp:902
+msgid "Close _without saving"
+msgstr ""
+
+#: ../src/ui/view/edit-widget.cpp:1247 ../src/widgets/desktop-widget.cpp:894
+#, c-format
+msgid ""
+"<span weight=\"bold\" size=\"larger\">The file \"%s\" was saved with a "
+"format (%s) that may cause data loss!</span>\n"
+"\n"
+"Do you want to save this file as an Inkscape SVG?"
+msgstr ""
+
+#: ../src/ui/view/edit-widget.cpp:1262 ../src/widgets/desktop-widget.cpp:905
+msgid "_Save as SVG"
+msgstr ""
+
+#: ../src/ui/widget/filter-effect-chooser.cpp:25
+msgid "_Blend mode:"
+msgstr ""
+
+#: ../src/ui/widget/filter-effect-chooser.cpp:26
+msgid "B_lur:"
+msgstr ""
+
+#: ../src/ui/widget/layer-selector.cpp:114
+msgid "Toggle current layer visibility"
+msgstr ""
+
+#: ../src/ui/widget/layer-selector.cpp:135
+msgid "Lock or unlock current layer"
+msgstr ""
+
+#: ../src/ui/widget/layer-selector.cpp:138
+msgid "Current layer"
+msgstr ""
+
+#: ../src/ui/widget/layer-selector.cpp:566
+msgid "(root)"
+msgstr ""
+
+#: ../src/ui/widget/licensor.cpp:35
+msgid "Proprietary"
+msgstr ""
+
+#: ../src/ui/widget/licensor.cpp:38
+msgid "MetadataLicence|Other"
+msgstr ""
+
+#: ../src/ui/widget/object-composite-settings.cpp:172
+msgid "Change blur"
+msgstr ""
+
+#: ../src/ui/widget/object-composite-settings.cpp:212
+#: ../src/ui/widget/selected-style.cpp:857
+#: ../src/ui/widget/selected-style.cpp:1151
+msgid "Change opacity"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:229
+msgid "U_nits:"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:230
+msgid "Width of paper"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:231
+msgid "Height of paper"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:277
+msgid "P_age size:"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:285
+msgid "Page orientation:"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:288
+msgid "_Landscape"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:293
+msgid "_Portrait"
+msgstr ""
+
+#. ## Set up custom size frame
+#: ../src/ui/widget/page-sizer.cpp:300
+msgid "Custom size"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:313
+msgid "_Fit page to selection"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:314
+msgid ""
+"Resize the page to fit the current selection, or the entire drawing if there "
+"is no selection"
+msgstr ""
+
+#: ../src/ui/widget/page-sizer.cpp:377
+msgid "Set page size"
+msgstr ""
+
+#: ../src/ui/widget/panel.cpp:111
+msgid "List"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/ui/widget/panel.cpp:136
+msgid "swatches|Size"
+msgstr ""
+
+#: ../src/ui/widget/panel.cpp:140
+msgid "tiny"
+msgstr ""
+
+#: ../src/ui/widget/panel.cpp:141
+msgid "small"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "medium" indicates size of colour swatches
+#: ../src/ui/widget/panel.cpp:145
+msgid "swatchesHeight|medium"
+msgstr ""
+
+#: ../src/ui/widget/panel.cpp:146
+msgid "large"
+msgstr ""
+
+#: ../src/ui/widget/panel.cpp:147
+msgid "huge"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/ui/widget/panel.cpp:171
+msgid "swatches|Width"
+msgstr ""
+
+#: ../src/ui/widget/panel.cpp:175
+msgid "narrower"
+msgstr ""
+
+#: ../src/ui/widget/panel.cpp:176
+msgid "narrow"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "medium" indicates width of colour swatches
+#: ../src/ui/widget/panel.cpp:180
+msgid "swatchesWidth|medium"
+msgstr ""
+
+#: ../src/ui/widget/panel.cpp:181
+msgid "wide"
+msgstr ""
+
+#: ../src/ui/widget/panel.cpp:182
+msgid "wider"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "Wrap" indicates how colour swatches are displayed
+#: ../src/ui/widget/panel.cpp:215
+msgid "swatches|Wrap"
+msgstr ""
+
+#: ../src/ui/widget/random.cpp:123
+msgid ""
+"Reseed the random number generator; this creates a different sequence of "
+"random numbers."
+msgstr ""
+
+#: ../src/ui/widget/rendering-options.cpp:39
+msgid "Backend"
+msgstr ""
+
+#: ../src/ui/widget/rendering-options.cpp:40
+msgid "Vector"
+msgstr ""
+
+#: ../src/ui/widget/rendering-options.cpp:41
+msgid "Bitmap"
+msgstr ""
+
+#: ../src/ui/widget/rendering-options.cpp:42
+msgid "Bitmap options"
+msgstr ""
+
+#: ../src/ui/widget/rendering-options.cpp:44
+msgid "Preferred resolution of rendering, in dots per inch."
+msgstr ""
+
+#: ../src/ui/widget/rendering-options.cpp:52
+msgid ""
+"Render using Cairo vector operations.  The resulting image is usually "
+"smaller in file size and can be arbitrarily scaled, but some filter effects "
+"will not be correctly rendered."
+msgstr ""
+
+#: ../src/ui/widget/rendering-options.cpp:57
+msgid ""
+"Render everything as bitmap.  The resulting image is usually larger in file "
+"size and cannot be arbitrarily scaled without quality loss, but all objects "
+"will be rendered exactly as displayed."
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:112
+#: ../src/ui/widget/style-swatch.cpp:117
+msgid "Fill:"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:113
+#: ../src/ui/widget/style-swatch.cpp:118
+msgid "Stroke:"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:114
+msgid "O:"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:156
+msgid "N/A"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:159
+#: ../src/ui/widget/selected-style.cpp:1026
+#: ../src/ui/widget/selected-style.cpp:1027
+msgid "Nothing selected"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:161
+#: ../src/ui/widget/style-swatch.cpp:296
+msgid "<i>None</i>"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:164
+#: ../src/ui/widget/style-swatch.cpp:298
+msgid "No fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:164
+#: ../src/ui/widget/style-swatch.cpp:298
+msgid "No stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:166
+#: ../src/ui/widget/style-swatch.cpp:277 ../src/widgets/paint-selector.cpp:189
+msgid "Pattern"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:169
+#: ../src/ui/widget/style-swatch.cpp:279 ../src/widgets/paint-selector.cpp:997
+msgid "Pattern fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:169
+#: ../src/ui/widget/style-swatch.cpp:279
+msgid "Pattern stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:171
+msgid "<b>L</b>"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:174
+#: ../src/ui/widget/style-swatch.cpp:271
+msgid "Linear gradient fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:174
+#: ../src/ui/widget/style-swatch.cpp:271
+msgid "Linear gradient stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:181
+msgid "<b>R</b>"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:184
+#: ../src/ui/widget/style-swatch.cpp:275
+msgid "Radial gradient fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:184
+#: ../src/ui/widget/style-swatch.cpp:275
+msgid "Radial gradient stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:191
+msgid "Different"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:194
+msgid "Different fills"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:194
+msgid "Different strokes"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:196
+#: ../src/ui/widget/style-swatch.cpp:301
+msgid "<b>Unset</b>"
+msgstr ""
+
+#. TRANSLATORS COMMENT: unset is a verb here
+#: ../src/ui/widget/selected-style.cpp:199
+#: ../src/ui/widget/selected-style.cpp:257
+#: ../src/ui/widget/selected-style.cpp:499
+#: ../src/ui/widget/style-swatch.cpp:303 ../src/widgets/fill-style.cpp:528
+msgid "Unset fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:199
+#: ../src/ui/widget/selected-style.cpp:257
+#: ../src/ui/widget/selected-style.cpp:515
+#: ../src/ui/widget/style-swatch.cpp:303 ../src/widgets/stroke-style.cpp:462
+msgid "Unset stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:202
+msgid "Flat color fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:202
+msgid "Flat color stroke"
+msgstr ""
+
+#. TRANSLATOR COMMENT: A means "Averaged"
+#: ../src/ui/widget/selected-style.cpp:205
+msgid "<b>a</b>"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:208
+msgid "Fill is averaged over selected objects"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:208
+msgid "Stroke is averaged over selected objects"
+msgstr ""
+
+#. TRANSLATOR COMMENT: M means "Multiple"
+#: ../src/ui/widget/selected-style.cpp:211
+msgid "<b>m</b>"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:214
+msgid "Multiple selected objects have the same fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:214
+msgid "Multiple selected objects have the same stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:216
+msgid "Edit fill..."
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:216
+msgid "Edit stroke..."
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:220
+msgid "Last set color"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:224
+msgid "Last selected color"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:232
+msgid "White"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:236
+#: ../src/widgets/sp-color-icc-selector.cpp:238
+#: ../src/widgets/sp-color-scales.cpp:463
+#: ../src/widgets/sp-color-scales.cpp:464
+msgid "Black"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:240
+msgid "Copy color"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:244
+msgid "Paste color"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:248
+#: ../src/ui/widget/selected-style.cpp:782
+msgid "Swap fill and stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:252
+#: ../src/ui/widget/selected-style.cpp:524
+#: ../src/ui/widget/selected-style.cpp:533
+msgid "Make fill opaque"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:252
+msgid "Make stroke opaque"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:261
+#: ../src/ui/widget/selected-style.cpp:481 ../src/widgets/fill-style.cpp:385
+msgid "Remove fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:261
+#: ../src/ui/widget/selected-style.cpp:490 ../src/widgets/stroke-style.cpp:336
+msgid "Remove stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:314
+msgid "Remove"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:545
+msgid "Apply last set color to fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:557
+msgid "Apply last set color to stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:568
+msgid "Apply last selected color to fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:579
+msgid "Apply last selected color to stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:599
+msgid "Invert fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:619
+msgid "Invert stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:631
+msgid "White fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:643
+msgid "White stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:655
+msgid "Black fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:667
+msgid "Black stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:710
+msgid "Paste fill"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:728
+msgid "Paste stroke"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:892
+msgid "Change stroke width"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:987
+msgid ", drag to adjust"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1068
+#, c-format
+msgid "Stroke width: %.5g%s%s"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1072
+msgid " (averaged)"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1100
+msgid "0 (transparent)"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1124
+msgid "100% (opaque)"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1278
+msgid "Adjust saturation"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1280
+#, c-format
+msgid ""
+"Adjusting <b>saturation</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with "
+"<b>Ctrl</b> to adjust lightness, without modifiers to adjust hue"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1284
+msgid "Adjust lightness"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1286
+#, c-format
+msgid ""
+"Adjusting <b>lightness</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with "
+"<b>Shift</b> to adjust saturation, without modifiers to adjust hue"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1290
+msgid "Adjust hue"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1292
+#, c-format
+msgid ""
+"Adjusting <b>hue</b>: was %.3g, now <b>%.3g</b> (diff %.3g); with <b>Shift</"
+"b> to adjust saturation, with <b>Ctrl</b> to adjust lightness"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1401
+#: ../src/ui/widget/selected-style.cpp:1415
+msgid "Adjust stroke width"
+msgstr ""
+
+#: ../src/ui/widget/selected-style.cpp:1402
+#, c-format
+msgid "Adjusting <b>stroke width</b>: was %.3g, now <b>%.3g</b> (diff %.3g)"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. "Link" means to _link_ two sliders together
+#: ../src/ui/widget/spin-slider.cpp:120
+msgid "sliders|Link"
+msgstr ""
+
+#: ../src/ui/widget/style-swatch.cpp:269
+msgid "L Gradient"
+msgstr ""
+
+#: ../src/ui/widget/style-swatch.cpp:273
+msgid "R Gradient"
+msgstr ""
+
+#: ../src/ui/widget/style-swatch.cpp:289
+#, c-format
+msgid "Fill: %06x/%.3g"
+msgstr ""
+
+#: ../src/ui/widget/style-swatch.cpp:291
+#, c-format
+msgid "Stroke: %06x/%.3g"
+msgstr ""
+
+#: ../src/ui/widget/style-swatch.cpp:323
+#, c-format
+msgid "Stroke width: %.5g%s"
+msgstr ""
+
+#: ../src/ui/widget/style-swatch.cpp:339
+#, c-format
+msgid "O:%.3g"
+msgstr ""
+
+#: ../src/ui/widget/style-swatch.cpp:341
+#, c-format
+msgid "O:.%d"
+msgstr ""
+
+#: ../src/ui/widget/style-swatch.cpp:346
+#, c-format
+msgid "Opacity: %.3g"
+msgstr ""
+
+#: ../src/vanishing-point.cpp:123
+msgid "Split vanishing points"
+msgstr ""
+
+#: ../src/vanishing-point.cpp:168
+msgid "Merge vanishing points"
+msgstr ""
+
+#: ../src/vanishing-point.cpp:224
+msgid "3D box: Move vanishing point"
+msgstr ""
+
+#: ../src/vanishing-point.cpp:305
+#, c-format
+msgid "<b>Finite</b> vanishing point shared by <b>%d</b> box"
+msgid_plural ""
+"<b>Finite</b> vanishing point shared by <b>%d</b> boxes; drag with <b>Shift</"
+"b> to separate selected box(es)"
+msgstr[0] ""
+msgstr[1] ""
+
+#. This won't make sense any more when infinite VPs are not shown on the canvas,
+#. but currently we update the status message anyway
+#: ../src/vanishing-point.cpp:312
+#, c-format
+msgid "<b>Infinite</b> vanishing point shared by <b>%d</b> box"
+msgid_plural ""
+"<b>Infinite</b> vanishing point shared by <b>%d</b> boxes; drag with "
+"<b>Shift</b> to separate selected box(es)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/vanishing-point.cpp:320
+#, c-format
+msgid ""
+"shared by <b>%d</b> box; drag with <b>Shift</b> to separate selected box(es)"
+msgid_plural ""
+"shared by <b>%d</b> boxes; drag with <b>Shift</b> to separate selected box"
+"(es)"
+msgstr[0] ""
+msgstr[1] ""
+
+#: ../src/verbs.cpp:1140
+msgid "Switch to next layer"
+msgstr ""
+
+#: ../src/verbs.cpp:1141
+msgid "Switched to next layer."
+msgstr ""
+
+#: ../src/verbs.cpp:1143
+msgid "Cannot go past last layer."
+msgstr ""
+
+#: ../src/verbs.cpp:1152
+msgid "Switch to previous layer"
+msgstr ""
+
+#: ../src/verbs.cpp:1153
+msgid "Switched to previous layer."
+msgstr ""
+
+#: ../src/verbs.cpp:1155
+msgid "Cannot go before first layer."
+msgstr ""
+
+#: ../src/verbs.cpp:1172 ../src/verbs.cpp:1268 ../src/verbs.cpp:1300
+#: ../src/verbs.cpp:1306
+msgid "No current layer."
+msgstr ""
+
+#: ../src/verbs.cpp:1201 ../src/verbs.cpp:1205
+#, c-format
+msgid "Raised layer <b>%s</b>."
+msgstr ""
+
+#: ../src/verbs.cpp:1202
+msgid "Layer to top"
+msgstr ""
+
+#: ../src/verbs.cpp:1206
+msgid "Raise layer"
+msgstr ""
+
+#: ../src/verbs.cpp:1209 ../src/verbs.cpp:1213
+#, c-format
+msgid "Lowered layer <b>%s</b>."
+msgstr ""
+
+#: ../src/verbs.cpp:1210
+msgid "Layer to bottom"
+msgstr ""
+
+#: ../src/verbs.cpp:1214
+msgid "Lower layer"
+msgstr ""
+
+#: ../src/verbs.cpp:1223
+msgid "Cannot move layer any further."
+msgstr ""
+
+#: ../src/verbs.cpp:1237 ../src/verbs.cpp:1255
+#, c-format
+msgid "%s copy"
+msgstr ""
+
+#: ../src/verbs.cpp:1263
+msgid "Duplicate layer"
+msgstr ""
+
+#. TRANSLATORS: this means "The layer has been duplicated."
+#: ../src/verbs.cpp:1266
+msgid "Duplicated layer."
+msgstr ""
+
+#: ../src/verbs.cpp:1295
+msgid "Delete layer"
+msgstr ""
+
+#. TRANSLATORS: this means "The layer has been deleted."
+#: ../src/verbs.cpp:1298
+msgid "Deleted layer."
+msgstr ""
+
+#: ../src/verbs.cpp:1309
+msgid "Toggle layer solo"
+msgstr ""
+
+#: ../src/verbs.cpp:1389
+msgid "Flip horizontally"
+msgstr ""
+
+#: ../src/verbs.cpp:1404
+msgid "Flip vertically"
+msgstr ""
+
+#. TRANSLATORS: If you have translated the tutorial-basic.svg file to your language,
+#. then translate this string as "tutorial-basic.LANG.svg" (where LANG is your language
+#. code); otherwise leave as "tutorial-basic.svg".
+#: ../src/verbs.cpp:1912
+msgid "tutorial-basic.svg"
+msgstr ""
+
+#. TRANSLATORS: See "tutorial-basic.svg" comment.
+#: ../src/verbs.cpp:1916
+msgid "tutorial-shapes.svg"
+msgstr ""
+
+#. TRANSLATORS: See "tutorial-basic.svg" comment.
+#: ../src/verbs.cpp:1920
+msgid "tutorial-advanced.svg"
+msgstr ""
+
+#. TRANSLATORS: See "tutorial-basic.svg" comment.
+#: ../src/verbs.cpp:1924
+msgid "tutorial-tracing.svg"
+msgstr ""
+
+#. TRANSLATORS: See "tutorial-basic.svg" comment.
+#: ../src/verbs.cpp:1928
+msgid "tutorial-calligraphy.svg"
+msgstr ""
+
+#. TRANSLATORS: See "tutorial-basic.svg" comment.
+#: ../src/verbs.cpp:1932
+msgid "tutorial-elements.svg"
+msgstr ""
+
+#. TRANSLATORS: See "tutorial-basic.svg" comment.
+#: ../src/verbs.cpp:1936
+msgid "tutorial-tips.svg"
+msgstr ""
+
+#: ../src/verbs.cpp:2212 ../src/verbs.cpp:2731
+msgid "Unlock all objects in the current layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2216 ../src/verbs.cpp:2733
+msgid "Unlock all objects in all layers"
+msgstr ""
+
+#: ../src/verbs.cpp:2220 ../src/verbs.cpp:2735
+msgid "Unhide all objects in the current layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2224 ../src/verbs.cpp:2737
+msgid "Unhide all objects in all layers"
+msgstr ""
+
+#: ../src/verbs.cpp:2239
+msgid "Does nothing"
+msgstr ""
+
+#: ../src/verbs.cpp:2242
+msgid "Create new document from the default template"
+msgstr ""
+
+#: ../src/verbs.cpp:2244
+msgid "_Open..."
+msgstr ""
+
+#: ../src/verbs.cpp:2245
+msgid "Open an existing document"
+msgstr ""
+
+#: ../src/verbs.cpp:2246
+msgid "Re_vert"
+msgstr ""
+
+#: ../src/verbs.cpp:2247
+msgid "Revert to the last saved version of document (changes will be lost)"
+msgstr ""
+
+#: ../src/verbs.cpp:2248
+msgid "_Save"
+msgstr ""
+
+#: ../src/verbs.cpp:2248
+msgid "Save document"
+msgstr ""
+
+#: ../src/verbs.cpp:2250
+msgid "Save _As..."
+msgstr ""
+
+#: ../src/verbs.cpp:2251
+msgid "Save document under a new name"
+msgstr ""
+
+#: ../src/verbs.cpp:2252
+msgid "Save a Cop_y..."
+msgstr ""
+
+#: ../src/verbs.cpp:2253
+msgid "Save a copy of the document under a new name"
+msgstr ""
+
+#: ../src/verbs.cpp:2254
+msgid "_Print..."
+msgstr ""
+
+#: ../src/verbs.cpp:2254
+msgid "Print document"
+msgstr ""
+
+#. TRANSLATORS: "Vacuum Defs" means "Clean up defs" (so as to remove unused definitions)
+#: ../src/verbs.cpp:2257
+msgid "Vac_uum Defs"
+msgstr ""
+
+#: ../src/verbs.cpp:2257
+msgid ""
+"Remove unused definitions (such as gradients or clipping paths) from the &lt;"
+"defs&gt; of the document"
+msgstr ""
+
+#: ../src/verbs.cpp:2259
+msgid "Print Previe_w"
+msgstr ""
+
+#: ../src/verbs.cpp:2260
+msgid "Preview document printout"
+msgstr ""
+
+#: ../src/verbs.cpp:2261
+msgid "_Import..."
+msgstr ""
+
+#: ../src/verbs.cpp:2262
+msgid "Import a bitmap or SVG image into this document"
+msgstr ""
+
+#: ../src/verbs.cpp:2263
+msgid "_Export Bitmap..."
+msgstr ""
+
+#: ../src/verbs.cpp:2264
+msgid "Export this document or a selection as a bitmap image"
+msgstr ""
+
+#: ../src/verbs.cpp:2265
+msgid "Import a document from Open Clip Art Library"
+msgstr ""
+
+#. new FileVerb(SP_VERB_FILE_EXPORT_TO_OCAL, "FileExportToOCAL", N_("Export To Open Clip Art Library"), N_("Export this document to Open Clip Art Library"), INKSCAPE_ICON_DOCUMENT_EXPORT_OCAL),
+#: ../src/verbs.cpp:2267
+msgid "N_ext Window"
+msgstr ""
+
+#: ../src/verbs.cpp:2268
+msgid "Switch to the next document window"
+msgstr ""
+
+#: ../src/verbs.cpp:2269
+msgid "P_revious Window"
+msgstr ""
+
+#: ../src/verbs.cpp:2270
+msgid "Switch to the previous document window"
+msgstr ""
+
+#: ../src/verbs.cpp:2271
+msgid "_Close"
+msgstr ""
+
+#: ../src/verbs.cpp:2272
+msgid "Close this document window"
+msgstr ""
+
+#: ../src/verbs.cpp:2273
+msgid "_Quit"
+msgstr ""
+
+#: ../src/verbs.cpp:2273
+msgid "Quit Inkscape"
+msgstr ""
+
+#: ../src/verbs.cpp:2276
+msgid "Undo last action"
+msgstr ""
+
+#: ../src/verbs.cpp:2279
+msgid "Do again the last undone action"
+msgstr ""
+
+#: ../src/verbs.cpp:2280
+msgid "Cu_t"
+msgstr ""
+
+#: ../src/verbs.cpp:2281
+msgid "Cut selection to clipboard"
+msgstr ""
+
+#: ../src/verbs.cpp:2282
+msgid "_Copy"
+msgstr ""
+
+#: ../src/verbs.cpp:2283
+msgid "Copy selection to clipboard"
+msgstr ""
+
+#: ../src/verbs.cpp:2284
+msgid "_Paste"
+msgstr ""
+
+#: ../src/verbs.cpp:2285
+msgid "Paste objects from clipboard to mouse point, or paste text"
+msgstr ""
+
+#: ../src/verbs.cpp:2286
+msgid "Paste _Style"
+msgstr ""
+
+#: ../src/verbs.cpp:2287
+msgid "Apply the style of the copied object to selection"
+msgstr ""
+
+#: ../src/verbs.cpp:2289
+msgid "Scale selection to match the size of the copied object"
+msgstr ""
+
+#: ../src/verbs.cpp:2290
+msgid "Paste _Width"
+msgstr ""
+
+#: ../src/verbs.cpp:2291
+msgid "Scale selection horizontally to match the width of the copied object"
+msgstr ""
+
+#: ../src/verbs.cpp:2292
+msgid "Paste _Height"
+msgstr ""
+
+#: ../src/verbs.cpp:2293
+msgid "Scale selection vertically to match the height of the copied object"
+msgstr ""
+
+#: ../src/verbs.cpp:2294
+msgid "Paste Size Separately"
+msgstr ""
+
+#: ../src/verbs.cpp:2295
+msgid "Scale each selected object to match the size of the copied object"
+msgstr ""
+
+#: ../src/verbs.cpp:2296
+msgid "Paste Width Separately"
+msgstr ""
+
+#: ../src/verbs.cpp:2297
+msgid ""
+"Scale each selected object horizontally to match the width of the copied "
+"object"
+msgstr ""
+
+#: ../src/verbs.cpp:2298
+msgid "Paste Height Separately"
+msgstr ""
+
+#: ../src/verbs.cpp:2299
+msgid ""
+"Scale each selected object vertically to match the height of the copied "
+"object"
+msgstr ""
+
+#: ../src/verbs.cpp:2300
+msgid "Paste _In Place"
+msgstr ""
+
+#: ../src/verbs.cpp:2301
+msgid "Paste objects from clipboard to the original location"
+msgstr ""
+
+#: ../src/verbs.cpp:2302
+msgid "Paste Path _Effect"
+msgstr ""
+
+#: ../src/verbs.cpp:2303
+msgid "Apply the path effect of the copied object to selection"
+msgstr ""
+
+#: ../src/verbs.cpp:2304
+msgid "Remove Path _Effect"
+msgstr ""
+
+#: ../src/verbs.cpp:2305
+msgid "Remove any path effects from selected objects"
+msgstr ""
+
+#: ../src/verbs.cpp:2306
+msgid "Remove Filters"
+msgstr ""
+
+#: ../src/verbs.cpp:2307
+msgid "Remove any filters from selected objects"
+msgstr ""
+
+#: ../src/verbs.cpp:2308
+msgid "_Delete"
+msgstr ""
+
+#: ../src/verbs.cpp:2309
+msgid "Delete selection"
+msgstr ""
+
+#: ../src/verbs.cpp:2310
+msgid "Duplic_ate"
+msgstr ""
+
+#: ../src/verbs.cpp:2311
+msgid "Duplicate selected objects"
+msgstr ""
+
+#: ../src/verbs.cpp:2312
+msgid "Create Clo_ne"
+msgstr ""
+
+#: ../src/verbs.cpp:2313
+msgid "Create a clone (a copy linked to the original) of selected object"
+msgstr ""
+
+#: ../src/verbs.cpp:2314
+msgid "Unlin_k Clone"
+msgstr ""
+
+#: ../src/verbs.cpp:2315
+msgid ""
+"Cut the selected clones' links to the originals, turning them into "
+"standalone objects"
+msgstr ""
+
+#: ../src/verbs.cpp:2316
+msgid "Relink to Copied"
+msgstr ""
+
+#: ../src/verbs.cpp:2317
+msgid "Relink the selected clones to the object currently on the clipboard"
+msgstr ""
+
+#: ../src/verbs.cpp:2318
+msgid "Select _Original"
+msgstr ""
+
+#: ../src/verbs.cpp:2319
+msgid "Select the object to which the selected clone is linked"
+msgstr ""
+
+#: ../src/verbs.cpp:2320
+msgid "Objects to _Marker"
+msgstr ""
+
+#: ../src/verbs.cpp:2321
+msgid "Convert selection to a line marker"
+msgstr ""
+
+#: ../src/verbs.cpp:2322
+msgid "Objects to Gu_ides"
+msgstr ""
+
+#: ../src/verbs.cpp:2323
+msgid ""
+"Convert selected objects to a collection of guidelines aligned with their "
+"edges"
+msgstr ""
+
+#: ../src/verbs.cpp:2324
+msgid "Objects to Patter_n"
+msgstr ""
+
+#: ../src/verbs.cpp:2325
+msgid "Convert selection to a rectangle with tiled pattern fill"
+msgstr ""
+
+#: ../src/verbs.cpp:2326
+msgid "Pattern to _Objects"
+msgstr ""
+
+#: ../src/verbs.cpp:2327
+msgid "Extract objects from a tiled pattern fill"
+msgstr ""
+
+#: ../src/verbs.cpp:2328
+msgid "Clea_r All"
+msgstr ""
+
+#: ../src/verbs.cpp:2329
+msgid "Delete all objects from document"
+msgstr ""
+
+#: ../src/verbs.cpp:2330
+msgid "Select Al_l"
+msgstr ""
+
+#: ../src/verbs.cpp:2331
+msgid "Select all objects or all nodes"
+msgstr ""
+
+#: ../src/verbs.cpp:2332
+msgid "Select All in All La_yers"
+msgstr ""
+
+#: ../src/verbs.cpp:2333
+msgid "Select all objects in all visible and unlocked layers"
+msgstr ""
+
+#: ../src/verbs.cpp:2334
+msgid "In_vert Selection"
+msgstr ""
+
+#: ../src/verbs.cpp:2335
+msgid "Invert selection (unselect what is selected and select everything else)"
+msgstr ""
+
+#: ../src/verbs.cpp:2336
+msgid "Invert in All Layers"
+msgstr ""
+
+#: ../src/verbs.cpp:2337
+msgid "Invert selection in all visible and unlocked layers"
+msgstr ""
+
+#: ../src/verbs.cpp:2338
+msgid "Select Next"
+msgstr ""
+
+#: ../src/verbs.cpp:2339
+msgid "Select next object or node"
+msgstr ""
+
+#: ../src/verbs.cpp:2340
+msgid "Select Previous"
+msgstr ""
+
+#: ../src/verbs.cpp:2341
+msgid "Select previous object or node"
+msgstr ""
+
+#: ../src/verbs.cpp:2342
+msgid "D_eselect"
+msgstr ""
+
+#: ../src/verbs.cpp:2343
+msgid "Deselect any selected objects or nodes"
+msgstr ""
+
+#: ../src/verbs.cpp:2344
+msgid "_Guides Around Page"
+msgstr ""
+
+#: ../src/verbs.cpp:2345
+msgid "Create four guides aligned with the page borders"
+msgstr ""
+
+#: ../src/verbs.cpp:2346
+msgid "Next Path Effect Parameter"
+msgstr ""
+
+#: ../src/verbs.cpp:2347
+msgid "Show next Path Effect parameter for editing"
+msgstr ""
+
+#. Selection
+#: ../src/verbs.cpp:2350
+msgid "Raise to _Top"
+msgstr ""
+
+#: ../src/verbs.cpp:2351
+msgid "Raise selection to top"
+msgstr ""
+
+#: ../src/verbs.cpp:2352
+msgid "Lower to _Bottom"
+msgstr ""
+
+#: ../src/verbs.cpp:2353
+msgid "Lower selection to bottom"
+msgstr ""
+
+#: ../src/verbs.cpp:2354
+msgid "_Raise"
+msgstr ""
+
+#: ../src/verbs.cpp:2355
+msgid "Raise selection one step"
+msgstr ""
+
+#: ../src/verbs.cpp:2356
+msgid "_Lower"
+msgstr ""
+
+#: ../src/verbs.cpp:2357
+msgid "Lower selection one step"
+msgstr ""
+
+#: ../src/verbs.cpp:2358
+msgid "_Group"
+msgstr ""
+
+#: ../src/verbs.cpp:2359
+msgid "Group selected objects"
+msgstr ""
+
+#: ../src/verbs.cpp:2361
+msgid "Ungroup selected groups"
+msgstr ""
+
+#: ../src/verbs.cpp:2363
+msgid "_Put on Path"
+msgstr ""
+
+#: ../src/verbs.cpp:2365
+msgid "_Remove from Path"
+msgstr ""
+
+#: ../src/verbs.cpp:2367
+msgid "Remove Manual _Kerns"
+msgstr ""
+
+#. TRANSLATORS: "glyph": An image used in the visual representation of characters;
+#. roughly speaking, how a character looks. A font is a set of glyphs.
+#: ../src/verbs.cpp:2370
+msgid "Remove all manual kerns and glyph rotations from a text object"
+msgstr ""
+
+#: ../src/verbs.cpp:2372
+msgid "_Union"
+msgstr ""
+
+#: ../src/verbs.cpp:2373
+msgid "Create union of selected paths"
+msgstr ""
+
+#: ../src/verbs.cpp:2374
+msgid "_Intersection"
+msgstr ""
+
+#: ../src/verbs.cpp:2375
+msgid "Create intersection of selected paths"
+msgstr ""
+
+#: ../src/verbs.cpp:2376
+msgid "_Difference"
+msgstr ""
+
+#: ../src/verbs.cpp:2377
+msgid "Create difference of selected paths (bottom minus top)"
+msgstr ""
+
+#: ../src/verbs.cpp:2378
+msgid "E_xclusion"
+msgstr ""
+
+#: ../src/verbs.cpp:2379
+msgid ""
+"Create exclusive OR of selected paths (those parts that belong to only one "
+"path)"
+msgstr ""
+
+#: ../src/verbs.cpp:2380
+msgid "Di_vision"
+msgstr ""
+
+#: ../src/verbs.cpp:2381
+msgid "Cut the bottom path into pieces"
+msgstr ""
+
+#. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the
+#. Advanced tutorial for more info
+#: ../src/verbs.cpp:2384
+msgid "Cut _Path"
+msgstr ""
+
+#: ../src/verbs.cpp:2385
+msgid "Cut the bottom path's stroke into pieces, removing fill"
+msgstr ""
+
+#. TRANSLATORS: "outset": expand a shape by offsetting the object's path,
+#. i.e. by displacing it perpendicular to the path in each point.
+#. See also the Advanced Tutorial for explanation.
+#: ../src/verbs.cpp:2389
+msgid "Outs_et"
+msgstr ""
+
+#: ../src/verbs.cpp:2390
+msgid "Outset selected paths"
+msgstr ""
+
+#: ../src/verbs.cpp:2392
+msgid "O_utset Path by 1 px"
+msgstr ""
+
+#: ../src/verbs.cpp:2393
+msgid "Outset selected paths by 1 px"
+msgstr ""
+
+#: ../src/verbs.cpp:2395
+msgid "O_utset Path by 10 px"
+msgstr ""
+
+#: ../src/verbs.cpp:2396
+msgid "Outset selected paths by 10 px"
+msgstr ""
+
+#. TRANSLATORS: "inset": contract a shape by offsetting the object's path,
+#. i.e. by displacing it perpendicular to the path in each point.
+#. See also the Advanced Tutorial for explanation.
+#: ../src/verbs.cpp:2400
+msgid "I_nset"
+msgstr ""
+
+#: ../src/verbs.cpp:2401
+msgid "Inset selected paths"
+msgstr ""
+
+#: ../src/verbs.cpp:2403
+msgid "I_nset Path by 1 px"
+msgstr ""
+
+#: ../src/verbs.cpp:2404
+msgid "Inset selected paths by 1 px"
+msgstr ""
+
+#: ../src/verbs.cpp:2406
+msgid "I_nset Path by 10 px"
+msgstr ""
+
+#: ../src/verbs.cpp:2407
+msgid "Inset selected paths by 10 px"
+msgstr ""
+
+#: ../src/verbs.cpp:2409
+msgid "D_ynamic Offset"
+msgstr ""
+
+#: ../src/verbs.cpp:2409
+msgid "Create a dynamic offset object"
+msgstr ""
+
+#: ../src/verbs.cpp:2411
+msgid "_Linked Offset"
+msgstr ""
+
+#: ../src/verbs.cpp:2412
+msgid "Create a dynamic offset object linked to the original path"
+msgstr ""
+
+#: ../src/verbs.cpp:2414
+msgid "_Stroke to Path"
+msgstr ""
+
+#: ../src/verbs.cpp:2415
+msgid "Convert selected object's stroke to paths"
+msgstr ""
+
+#: ../src/verbs.cpp:2416
+msgid "Si_mplify"
+msgstr ""
+
+#: ../src/verbs.cpp:2417
+msgid "Simplify selected paths (remove extra nodes)"
+msgstr ""
+
+#: ../src/verbs.cpp:2418
+msgid "_Reverse"
+msgstr ""
+
+#: ../src/verbs.cpp:2419
+msgid "Reverse the direction of selected paths (useful for flipping markers)"
+msgstr ""
+
+#. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize)
+#: ../src/verbs.cpp:2421
+msgid "_Trace Bitmap..."
+msgstr ""
+
+#: ../src/verbs.cpp:2422
+msgid "Create one or more paths from a bitmap by tracing it"
+msgstr ""
+
+#: ../src/verbs.cpp:2423
+msgid "_Make a Bitmap Copy"
+msgstr ""
+
+#: ../src/verbs.cpp:2424
+msgid "Export selection to a bitmap and insert it into document"
+msgstr ""
+
+#: ../src/verbs.cpp:2425
+msgid "_Combine"
+msgstr ""
+
+#: ../src/verbs.cpp:2426
+msgid "Combine several paths into one"
+msgstr ""
+
+#. TRANSLATORS: "to cut a path" is not the same as "to break a path apart" - see the
+#. Advanced tutorial for more info
+#: ../src/verbs.cpp:2429
+msgid "Break _Apart"
+msgstr ""
+
+#: ../src/verbs.cpp:2430
+msgid "Break selected paths into subpaths"
+msgstr ""
+
+#: ../src/verbs.cpp:2431
+msgid "Rows and Columns..."
+msgstr ""
+
+#: ../src/verbs.cpp:2432
+msgid "Arrange selected objects in a table"
+msgstr ""
+
+#. Layer
+#: ../src/verbs.cpp:2434
+msgid "_Add Layer..."
+msgstr ""
+
+#: ../src/verbs.cpp:2435
+msgid "Create a new layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2436
+msgid "Re_name Layer..."
+msgstr ""
+
+#: ../src/verbs.cpp:2437
+msgid "Rename the current layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2438
+msgid "Switch to Layer Abov_e"
+msgstr ""
+
+#: ../src/verbs.cpp:2439
+msgid "Switch to the layer above the current"
+msgstr ""
+
+#: ../src/verbs.cpp:2440
+msgid "Switch to Layer Belo_w"
+msgstr ""
+
+#: ../src/verbs.cpp:2441
+msgid "Switch to the layer below the current"
+msgstr ""
+
+#: ../src/verbs.cpp:2442
+msgid "Move Selection to Layer Abo_ve"
+msgstr ""
+
+#: ../src/verbs.cpp:2443
+msgid "Move selection to the layer above the current"
+msgstr ""
+
+#: ../src/verbs.cpp:2444
+msgid "Move Selection to Layer Bel_ow"
+msgstr ""
+
+#: ../src/verbs.cpp:2445
+msgid "Move selection to the layer below the current"
+msgstr ""
+
+#: ../src/verbs.cpp:2446
+msgid "Layer to _Top"
+msgstr ""
+
+#: ../src/verbs.cpp:2447
+msgid "Raise the current layer to the top"
+msgstr ""
+
+#: ../src/verbs.cpp:2448
+msgid "Layer to _Bottom"
+msgstr ""
+
+#: ../src/verbs.cpp:2449
+msgid "Lower the current layer to the bottom"
+msgstr ""
+
+#: ../src/verbs.cpp:2450
+msgid "_Raise Layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2451
+msgid "Raise the current layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2452
+msgid "_Lower Layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2453
+msgid "Lower the current layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2454
+msgid "Duplicate Current Layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2455
+msgid "Duplicate an existing layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2456
+msgid "_Delete Current Layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2457
+msgid "Delete the current layer"
+msgstr ""
+
+#: ../src/verbs.cpp:2458
+msgid "_Show/hide other layers"
+msgstr ""
+
+#: ../src/verbs.cpp:2459
+msgid "Solo the current layer"
+msgstr ""
+
+#. Object
+#: ../src/verbs.cpp:2462
+msgid "Rotate _90&#176; CW"
+msgstr ""
+
+#. This is shared between tooltips and statusbar, so they
+#. must use UTF-8, not HTML entities for special characters.
+#: ../src/verbs.cpp:2465
+msgid "Rotate selection 90° clockwise"
+msgstr ""
+
+#: ../src/verbs.cpp:2466
+msgid "Rotate 9_0&#176; CCW"
+msgstr ""
+
+#. This is shared between tooltips and statusbar, so they
+#. must use UTF-8, not HTML entities for special characters.
+#: ../src/verbs.cpp:2469
+msgid "Rotate selection 90° counter-clockwise"
+msgstr ""
+
+#: ../src/verbs.cpp:2470
+msgid "Remove _Transformations"
+msgstr ""
+
+#: ../src/verbs.cpp:2471
+msgid "Remove transformations from object"
+msgstr ""
+
+#: ../src/verbs.cpp:2472
+msgid "_Object to Path"
+msgstr ""
+
+#: ../src/verbs.cpp:2473
+msgid "Convert selected object to path"
+msgstr ""
+
+#: ../src/verbs.cpp:2474
+msgid "_Flow into Frame"
+msgstr ""
+
+#: ../src/verbs.cpp:2475
+msgid ""
+"Put text into a frame (path or shape), creating a flowed text linked to the "
+"frame object"
+msgstr ""
+
+#: ../src/verbs.cpp:2476
+msgid "_Unflow"
+msgstr ""
+
+#: ../src/verbs.cpp:2477
+msgid "Remove text from frame (creates a single-line text object)"
+msgstr ""
+
+#: ../src/verbs.cpp:2478
+msgid "_Convert to Text"
+msgstr ""
+
+#: ../src/verbs.cpp:2479
+msgid "Convert flowed text to regular text object (preserves appearance)"
+msgstr ""
+
+#: ../src/verbs.cpp:2481
+msgid "Flip _Horizontal"
+msgstr ""
+
+#: ../src/verbs.cpp:2481
+msgid "Flip selected objects horizontally"
+msgstr ""
+
+#: ../src/verbs.cpp:2484
+msgid "Flip _Vertical"
+msgstr ""
+
+#: ../src/verbs.cpp:2484
+msgid "Flip selected objects vertically"
+msgstr ""
+
+#: ../src/verbs.cpp:2487
+msgid "Apply mask to selection (using the topmost object as mask)"
+msgstr ""
+
+#: ../src/verbs.cpp:2489
+msgid "Edit mask"
+msgstr ""
+
+#: ../src/verbs.cpp:2490 ../src/verbs.cpp:2496
+msgid "_Release"
+msgstr ""
+
+#: ../src/verbs.cpp:2491
+msgid "Remove mask from selection"
+msgstr ""
+
+#: ../src/verbs.cpp:2493
+msgid ""
+"Apply clipping path to selection (using the topmost object as clipping path)"
+msgstr ""
+
+#: ../src/verbs.cpp:2495 ../src/widgets/toolbox.cpp:1446
+msgid "Edit clipping path"
+msgstr ""
+
+#: ../src/verbs.cpp:2497
+msgid "Remove clipping path from selection"
+msgstr ""
+
+#. Tools
+#: ../src/verbs.cpp:2500
+msgid "Select"
+msgstr ""
+
+#: ../src/verbs.cpp:2501
+msgid "Select and transform objects"
+msgstr ""
+
+#: ../src/verbs.cpp:2502
+msgid "Node Edit"
+msgstr ""
+
+#: ../src/verbs.cpp:2503
+msgid "Edit paths by nodes"
+msgstr ""
+
+#: ../src/verbs.cpp:2505
+msgid "Tweak objects by sculpting or painting"
+msgstr ""
+
+#: ../src/verbs.cpp:2507
+msgid "Create rectangles and squares"
+msgstr ""
+
+#: ../src/verbs.cpp:2509
+msgid "Create 3D boxes"
+msgstr ""
+
+#: ../src/verbs.cpp:2511
+msgid "Create circles, ellipses, and arcs"
+msgstr ""
+
+#: ../src/verbs.cpp:2513
+msgid "Create stars and polygons"
+msgstr ""
+
+#: ../src/verbs.cpp:2515
+msgid "Create spirals"
+msgstr ""
+
+#: ../src/verbs.cpp:2517
+msgid "Draw freehand lines"
+msgstr ""
+
+#: ../src/verbs.cpp:2519
+msgid "Draw Bezier curves and straight lines"
+msgstr ""
+
+#: ../src/verbs.cpp:2521
+msgid "Draw calligraphic or brush strokes"
+msgstr ""
+
+#: ../src/verbs.cpp:2523
+msgid "Create and edit text objects"
+msgstr ""
+
+#: ../src/verbs.cpp:2525
+msgid "Create and edit gradients"
+msgstr ""
+
+#: ../src/verbs.cpp:2527
+msgid "Zoom in or out"
+msgstr ""
+
+#: ../src/verbs.cpp:2529
+msgid "Pick colors from image"
+msgstr ""
+
+#: ../src/verbs.cpp:2531
+msgid "Create diagram connectors"
+msgstr ""
+
+#: ../src/verbs.cpp:2533
+msgid "Fill bounded areas"
+msgstr ""
+
+#: ../src/verbs.cpp:2534
+msgid "LPE Edit"
+msgstr ""
+
+#: ../src/verbs.cpp:2535
+msgid "Edit Path Effect parameters"
+msgstr ""
+
+#: ../src/verbs.cpp:2537
+msgid "Erase existing paths"
+msgstr ""
+
+#: ../src/verbs.cpp:2539
+msgid "Do geometric constructions"
+msgstr ""
+
+#. Tool prefs
+#: ../src/verbs.cpp:2541
+msgid "Selector Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2542
+msgid "Open Preferences for the Selector tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2543
+msgid "Node Tool Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2544
+msgid "Open Preferences for the Node tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2545
+msgid "Tweak Tool Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2546
+msgid "Open Preferences for the Tweak tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2547
+msgid "Rectangle Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2548
+msgid "Open Preferences for the Rectangle tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2549
+msgid "3D Box Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2550
+msgid "Open Preferences for the 3D Box tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2551
+msgid "Ellipse Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2552
+msgid "Open Preferences for the Ellipse tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2553
+msgid "Star Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2554
+msgid "Open Preferences for the Star tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2555
+msgid "Spiral Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2556
+msgid "Open Preferences for the Spiral tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2557
+msgid "Pencil Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2558
+msgid "Open Preferences for the Pencil tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2559
+msgid "Pen Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2560
+msgid "Open Preferences for the Pen tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2561
+msgid "Calligraphic Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2562
+msgid "Open Preferences for the Calligraphy tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2563
+msgid "Text Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2564
+msgid "Open Preferences for the Text tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2565
+msgid "Gradient Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2566
+msgid "Open Preferences for the Gradient tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2567
+msgid "Zoom Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2568
+msgid "Open Preferences for the Zoom tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2569
+msgid "Dropper Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2570
+msgid "Open Preferences for the Dropper tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2571
+msgid "Connector Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2572
+msgid "Open Preferences for the Connector tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2573
+msgid "Paint Bucket Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2574
+msgid "Open Preferences for the Paint Bucket tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2575
+msgid "Eraser Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2576
+msgid "Open Preferences for the Eraser tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2577
+msgid "LPE Tool Preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2578
+msgid "Open Preferences for the LPETool tool"
+msgstr ""
+
+#. Zoom/View
+#: ../src/verbs.cpp:2581
+msgid "Zoom In"
+msgstr ""
+
+#: ../src/verbs.cpp:2581
+msgid "Zoom in"
+msgstr ""
+
+#: ../src/verbs.cpp:2582
+msgid "Zoom Out"
+msgstr ""
+
+#: ../src/verbs.cpp:2582
+msgid "Zoom out"
+msgstr ""
+
+#: ../src/verbs.cpp:2583
+msgid "_Rulers"
+msgstr ""
+
+#: ../src/verbs.cpp:2583
+msgid "Show or hide the canvas rulers"
+msgstr ""
+
+#: ../src/verbs.cpp:2584
+msgid "Scroll_bars"
+msgstr ""
+
+#: ../src/verbs.cpp:2584
+msgid "Show or hide the canvas scrollbars"
+msgstr ""
+
+#: ../src/verbs.cpp:2585
+msgid "_Grid"
+msgstr ""
+
+#: ../src/verbs.cpp:2585
+msgid "Show or hide the grid"
+msgstr ""
+
+#: ../src/verbs.cpp:2586
+msgid "G_uides"
+msgstr ""
+
+#: ../src/verbs.cpp:2586
+msgid "Show or hide guides (drag from a ruler to create a guide)"
+msgstr ""
+
+#: ../src/verbs.cpp:2587
+msgid "Toggle snapping on or off"
+msgstr ""
+
+#: ../src/verbs.cpp:2588
+msgid "Nex_t Zoom"
+msgstr ""
+
+#: ../src/verbs.cpp:2588
+msgid "Next zoom (from the history of zooms)"
+msgstr ""
+
+#: ../src/verbs.cpp:2590
+msgid "Pre_vious Zoom"
+msgstr ""
+
+#: ../src/verbs.cpp:2590
+msgid "Previous zoom (from the history of zooms)"
+msgstr ""
+
+#: ../src/verbs.cpp:2592
+msgid "Zoom 1:_1"
+msgstr ""
+
+#: ../src/verbs.cpp:2592
+msgid "Zoom to 1:1"
+msgstr ""
+
+#: ../src/verbs.cpp:2594
+msgid "Zoom 1:_2"
+msgstr ""
+
+#: ../src/verbs.cpp:2594
+msgid "Zoom to 1:2"
+msgstr ""
+
+#: ../src/verbs.cpp:2596
+msgid "_Zoom 2:1"
+msgstr ""
+
+#: ../src/verbs.cpp:2596
+msgid "Zoom to 2:1"
+msgstr ""
+
+#: ../src/verbs.cpp:2599
+msgid "_Fullscreen"
+msgstr ""
+
+#: ../src/verbs.cpp:2599
+msgid "Stretch this document window to full screen"
+msgstr ""
+
+#: ../src/verbs.cpp:2602
+msgid "Toggle _Focus Mode"
+msgstr ""
+
+#: ../src/verbs.cpp:2602
+msgid "Remove excess toolbars to focus on drawing"
+msgstr ""
+
+#: ../src/verbs.cpp:2604
+msgid "Duplic_ate Window"
+msgstr ""
+
+#: ../src/verbs.cpp:2604
+msgid "Open a new window with the same document"
+msgstr ""
+
+#: ../src/verbs.cpp:2606
+msgid "_New View Preview"
+msgstr ""
+
+#: ../src/verbs.cpp:2607
+msgid "New View Preview"
+msgstr ""
+
+#. "view_new_preview"
+#: ../src/verbs.cpp:2609
+msgid "_Normal"
+msgstr ""
+
+#: ../src/verbs.cpp:2610
+msgid "Switch to normal display mode"
+msgstr ""
+
+#: ../src/verbs.cpp:2611
+msgid "No _Filters"
+msgstr ""
+
+#: ../src/verbs.cpp:2612
+msgid "Switch to normal display without filters"
+msgstr ""
+
+#: ../src/verbs.cpp:2613
+msgid "_Outline"
+msgstr ""
+
+#: ../src/verbs.cpp:2614
+msgid "Switch to outline (wireframe) display mode"
+msgstr ""
+
+#: ../src/verbs.cpp:2615
+msgid "_Toggle"
+msgstr ""
+
+#: ../src/verbs.cpp:2616
+msgid "Toggle between normal and outline display modes"
+msgstr ""
+
+#: ../src/verbs.cpp:2618
+msgid "Color-managed view"
+msgstr ""
+
+#: ../src/verbs.cpp:2619
+msgid "Toggle color-managed display for this document window"
+msgstr ""
+
+#: ../src/verbs.cpp:2621
+msgid "Ico_n Preview..."
+msgstr ""
+
+#: ../src/verbs.cpp:2622
+msgid "Open a window to preview objects at different icon resolutions"
+msgstr ""
+
+#: ../src/verbs.cpp:2624
+msgid "Zoom to fit page in window"
+msgstr ""
+
+#: ../src/verbs.cpp:2625
+msgid "Page _Width"
+msgstr ""
+
+#: ../src/verbs.cpp:2626
+msgid "Zoom to fit page width in window"
+msgstr ""
+
+#: ../src/verbs.cpp:2628
+msgid "Zoom to fit drawing in window"
+msgstr ""
+
+#: ../src/verbs.cpp:2630
+msgid "Zoom to fit selection in window"
+msgstr ""
+
+#. Dialogs
+#: ../src/verbs.cpp:2633
+msgid "In_kscape Preferences..."
+msgstr ""
+
+#: ../src/verbs.cpp:2634
+msgid "Edit global Inkscape preferences"
+msgstr ""
+
+#: ../src/verbs.cpp:2635
+msgid "_Document Properties..."
+msgstr ""
+
+#: ../src/verbs.cpp:2636
+msgid "Edit properties of this document (to be saved with the document)"
+msgstr ""
+
+#: ../src/verbs.cpp:2637
+msgid "Document _Metadata..."
+msgstr ""
+
+#: ../src/verbs.cpp:2638
+msgid "Edit document metadata (to be saved with the document)"
+msgstr ""
+
+#: ../src/verbs.cpp:2639
+msgid "_Fill and Stroke..."
+msgstr ""
+
+#: ../src/verbs.cpp:2640
+msgid ""
+"Edit objects' colors, gradients, stroke width, arrowheads, dash patterns..."
+msgstr ""
+
+#. TRANSLATORS: "Swatches" means: color samples
+#: ../src/verbs.cpp:2642
+msgid "S_watches..."
+msgstr ""
+
+#: ../src/verbs.cpp:2643
+msgid "Select colors from a swatches palette"
+msgstr ""
+
+#: ../src/verbs.cpp:2644
+msgid "Transfor_m..."
+msgstr ""
+
+#: ../src/verbs.cpp:2645
+msgid "Precisely control objects' transformations"
+msgstr ""
+
+#: ../src/verbs.cpp:2646
+msgid "_Align and Distribute..."
+msgstr ""
+
+#: ../src/verbs.cpp:2647
+msgid "Align and distribute objects"
+msgstr ""
+
+#: ../src/verbs.cpp:2648
+msgid "Undo _History..."
+msgstr ""
+
+#: ../src/verbs.cpp:2649
+msgid "Undo History"
+msgstr ""
+
+#: ../src/verbs.cpp:2650
+msgid "_Text and Font..."
+msgstr ""
+
+#: ../src/verbs.cpp:2651
+msgid "View and select font family, font size and other text properties"
+msgstr ""
+
+#: ../src/verbs.cpp:2652
+msgid "_XML Editor..."
+msgstr ""
+
+#: ../src/verbs.cpp:2653
+msgid "View and edit the XML tree of the document"
+msgstr ""
+
+#: ../src/verbs.cpp:2654
+msgid "_Find..."
+msgstr ""
+
+#: ../src/verbs.cpp:2655
+msgid "Find objects in document"
+msgstr ""
+
+#: ../src/verbs.cpp:2656
+msgid "Find and _Replace Text..."
+msgstr ""
+
+#: ../src/verbs.cpp:2657
+msgid "Find and replace text in document"
+msgstr ""
+
+#: ../src/verbs.cpp:2658
+msgid "Check Spellin_g..."
+msgstr ""
+
+#: ../src/verbs.cpp:2659
+msgid "Check spelling of text in document"
+msgstr ""
+
+#: ../src/verbs.cpp:2660
+msgid "_Messages..."
+msgstr ""
+
+#: ../src/verbs.cpp:2661
+msgid "View debug messages"
+msgstr ""
+
+#: ../src/verbs.cpp:2662
+msgid "S_cripts..."
+msgstr ""
+
+#: ../src/verbs.cpp:2663
+msgid "Run scripts"
+msgstr ""
+
+#: ../src/verbs.cpp:2664
+msgid "Show/Hide D_ialogs"
+msgstr ""
+
+#: ../src/verbs.cpp:2665
+msgid "Show or hide all open dialogs"
+msgstr ""
+
+#: ../src/verbs.cpp:2666
+msgid "Create Tiled Clones..."
+msgstr ""
+
+#: ../src/verbs.cpp:2667
+msgid ""
+"Create multiple clones of selected object, arranging them into a pattern or "
+"scattering"
+msgstr ""
+
+#: ../src/verbs.cpp:2668
+msgid "_Object Properties..."
+msgstr ""
+
+#: ../src/verbs.cpp:2669
+msgid "Edit the ID, locked and visible status, and other object properties"
+msgstr ""
+
+#. #ifdef WITH_INKBOARD
+#. new DialogVerb(SP_VERB_XMPP_CLIENT, "DialogXmppClient",
+#. N_("_Instant Messaging..."), N_("Jabber Instant Messaging Client"), NULL),
+#. #endif
+#: ../src/verbs.cpp:2674
+msgid "_Input Devices..."
+msgstr ""
+
+#: ../src/verbs.cpp:2675 ../src/verbs.cpp:2677
+msgid "Configure extended input devices, such as a graphics tablet"
+msgstr ""
+
+#: ../src/verbs.cpp:2676
+msgid "_Input Devices (new)..."
+msgstr ""
+
+#: ../src/verbs.cpp:2678
+msgid "_Extensions..."
+msgstr ""
+
+#: ../src/verbs.cpp:2679
+msgid "Query information about extensions"
+msgstr ""
+
+#: ../src/verbs.cpp:2680
+msgid "Layer_s..."
+msgstr ""
+
+#: ../src/verbs.cpp:2681
+msgid "View Layers"
+msgstr ""
+
+#: ../src/verbs.cpp:2682
+msgid "Path Effect Editor..."
+msgstr ""
+
+#: ../src/verbs.cpp:2683
+msgid "Manage, edit, and apply path effects"
+msgstr ""
+
+#: ../src/verbs.cpp:2684
+msgid "Filter Editor..."
+msgstr ""
+
+#: ../src/verbs.cpp:2685
+msgid "Manage, edit, and apply SVG filters"
+msgstr ""
+
+#: ../src/verbs.cpp:2686
+msgid "SVG Font Editor..."
+msgstr ""
+
+#: ../src/verbs.cpp:2687
+msgid "Edit SVG fonts"
+msgstr ""
+
+#. Help
+#: ../src/verbs.cpp:2690
+msgid "About E_xtensions"
+msgstr ""
+
+#: ../src/verbs.cpp:2691
+msgid "Information on Inkscape extensions"
+msgstr ""
+
+#: ../src/verbs.cpp:2692
+msgid "About _Memory"
+msgstr ""
+
+#: ../src/verbs.cpp:2693
+msgid "Memory usage information"
+msgstr ""
+
+#: ../src/verbs.cpp:2694
+msgid "_About Inkscape"
+msgstr ""
+
+#: ../src/verbs.cpp:2695
+msgid "Inkscape version, authors, license"
+msgstr ""
+
+#. new HelpVerb(SP_VERB_SHOW_LICENSE, "ShowLicense", N_("_License"),
+#. N_("Distribution terms"), /*"show_license"*/"inkscape_options"),
+#. Tutorials
+#: ../src/verbs.cpp:2700
+msgid "Inkscape: _Basic"
+msgstr ""
+
+#: ../src/verbs.cpp:2701
+msgid "Getting started with Inkscape"
+msgstr ""
+
+#. "tutorial_basic"
+#: ../src/verbs.cpp:2702
+msgid "Inkscape: _Shapes"
+msgstr ""
+
+#: ../src/verbs.cpp:2703
+msgid "Using shape tools to create and edit shapes"
+msgstr ""
+
+#: ../src/verbs.cpp:2704
+msgid "Inkscape: _Advanced"
+msgstr ""
+
+#: ../src/verbs.cpp:2705
+msgid "Advanced Inkscape topics"
+msgstr ""
+
+#. "tutorial_advanced"
+#. TRANSLATORS: "to trace" means "to convert a bitmap to vector graphics" (to vectorize)
+#: ../src/verbs.cpp:2707
+msgid "Inkscape: T_racing"
+msgstr ""
+
+#: ../src/verbs.cpp:2708
+msgid "Using bitmap tracing"
+msgstr ""
+
+#. "tutorial_tracing"
+#: ../src/verbs.cpp:2709
+msgid "Inkscape: _Calligraphy"
+msgstr ""
+
+#: ../src/verbs.cpp:2710
+msgid "Using the Calligraphy pen tool"
+msgstr ""
+
+#: ../src/verbs.cpp:2711
+msgid "_Elements of Design"
+msgstr ""
+
+#: ../src/verbs.cpp:2712
+msgid "Principles of design in the tutorial form"
+msgstr ""
+
+#. "tutorial_design"
+#: ../src/verbs.cpp:2713
+msgid "_Tips and Tricks"
+msgstr ""
+
+#: ../src/verbs.cpp:2714
+msgid "Miscellaneous tips and tricks"
+msgstr ""
+
+#. "tutorial_tips"
+#. Effect -- renamed Extension
+#: ../src/verbs.cpp:2717
+msgid "Previous Extension"
+msgstr ""
+
+#: ../src/verbs.cpp:2718
+msgid "Repeat the last extension with the same settings"
+msgstr ""
+
+#: ../src/verbs.cpp:2719
+msgid "Previous Extension Settings..."
+msgstr ""
+
+#: ../src/verbs.cpp:2720
+msgid "Repeat the last extension with new settings"
+msgstr ""
+
+#: ../src/verbs.cpp:2724
+msgid "Fit the page to the current selection"
+msgstr ""
+
+#: ../src/verbs.cpp:2726
+msgid "Fit the page to the drawing"
+msgstr ""
+
+#: ../src/verbs.cpp:2728
+msgid ""
+"Fit the page to the current selection or the drawing if there is no selection"
+msgstr ""
+
+#. LockAndHide
+#: ../src/verbs.cpp:2730
+msgid "Unlock All"
+msgstr ""
+
+#: ../src/verbs.cpp:2732
+msgid "Unlock All in All Layers"
+msgstr ""
+
+#: ../src/verbs.cpp:2734
+msgid "Unhide All"
+msgstr ""
+
+#: ../src/verbs.cpp:2736
+msgid "Unhide All in All Layers"
+msgstr ""
+
+#: ../src/verbs.cpp:2740
+msgid "Link an ICC color profile"
+msgstr ""
+
+#: ../src/verbs.cpp:2741
+msgid "Remove Color Profile"
+msgstr ""
+
+#: ../src/verbs.cpp:2742
+msgid "Remove a linked ICC color profile"
+msgstr ""
+
+#: ../src/widgets/dash-selector.cpp:62
+msgid "Dash pattern"
+msgstr ""
+
+#: ../src/widgets/dash-selector.cpp:77
+msgid "Pattern offset"
+msgstr ""
+
+#. display the initial welcome message in the statusbar
+#: ../src/widgets/desktop-widget.cpp:551
+msgid ""
+"<b>Welcome to Inkscape!</b> Use shape or freehand tools to create objects; "
+"use selector (arrow) to move or transform them."
+msgstr ""
+
+#: ../src/widgets/desktop-widget.cpp:615
+#, c-format
+msgid "%s: %d (outline) - Inkscape"
+msgstr ""
+
+#: ../src/widgets/desktop-widget.cpp:617
+#, c-format
+msgid "%s: %d - Inkscape"
+msgstr ""
+
+#: ../src/widgets/desktop-widget.cpp:621
+#, c-format
+msgid "%s (outline) - Inkscape"
+msgstr ""
+
+#: ../src/widgets/desktop-widget.cpp:623
+#, c-format
+msgid "%s - Inkscape"
+msgstr ""
+
+#: ../src/widgets/ege-paint-def.cpp:70 ../src/widgets/ege-paint-def.cpp:92
+#: ../src/widgets/gradient-selector.cpp:167
+msgid "none"
+msgstr ""
+
+#: ../src/widgets/ege-paint-def.cpp:89
+msgid "remove"
+msgstr ""
+
+#: ../src/widgets/fill-style.cpp:283
+msgid "Change fill rule"
+msgstr ""
+
+#: ../src/widgets/fill-style.cpp:323 ../src/widgets/fill-style.cpp:397
+msgid "Set fill color"
+msgstr ""
+
+#: ../src/widgets/fill-style.cpp:466
+msgid "Set gradient on fill"
+msgstr ""
+
+#: ../src/widgets/fill-style.cpp:513
+msgid "Set pattern on fill"
+msgstr ""
+
+#. Family frame
+#: ../src/widgets/font-selector.cpp:157
+msgid "Font family"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. Style frame
+#: ../src/widgets/font-selector.cpp:190
+msgid "fontselector|Style"
+msgstr ""
+
+#: ../src/widgets/font-selector.cpp:228
+msgid "Font size:"
+msgstr ""
+
+#. TRANSLATORS: Test string used in text and font dialog (when no
+#. * text has been entered) to get a preview of the font.  Choose
+#. * some representative characters that users of your locale will be
+#. * interested in.
+#: ../src/widgets/font-selector.cpp:641 ../src/widgets/toolbox.cpp:6522
+msgid "AaBbCcIiPpQq12369$€¢?.;/()"
+msgstr ""
+
+#. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/pservers.html#LinearGradientSpreadMethodAttribute
+#: ../src/widgets/gradient-selector.cpp:161
+msgid ""
+"Whether to fill with flat color beyond the ends of the gradient vector "
+"(spreadMethod=\"pad\"), or repeat the gradient in the same direction "
+"(spreadMethod=\"repeat\"), or repeat the gradient in alternating opposite "
+"directions (spreadMethod=\"reflect\")"
+msgstr ""
+
+#: ../src/widgets/gradient-selector.cpp:171
+msgid "reflected"
+msgstr ""
+
+#: ../src/widgets/gradient-selector.cpp:175
+msgid "direct"
+msgstr ""
+
+#: ../src/widgets/gradient-selector.cpp:183
+msgid "Repeat:"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:155
+msgid "Assign gradient to object"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:189
+msgid "<small>No gradients</small>"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:198
+msgid "<small>Nothing selected</small>"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:209
+msgid "<small>No gradients in selection</small>"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:219
+msgid "<small>Multiple gradients</small>"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:467
+msgid "Edit the stops of the gradient"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:527 ../src/widgets/toolbox.cpp:2630
+#: ../src/widgets/toolbox.cpp:2708 ../src/widgets/toolbox.cpp:3039
+#: ../src/widgets/toolbox.cpp:3077 ../src/widgets/toolbox.cpp:3692
+#: ../src/widgets/toolbox.cpp:3716 ../src/widgets/toolbox.cpp:5130
+#: ../src/widgets/toolbox.cpp:5159
+msgid "<b>New:</b>"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:540
+msgid "Create linear gradient"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:554
+msgid "Create radial (elliptic or circular) gradient"
+msgstr ""
+
+#. TODO replace aux_toolbox_space(tbl, AUX_SPACING);
+#: ../src/widgets/gradient-toolbar.cpp:569
+msgid "on"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:582
+msgid "Create gradient in the fill"
+msgstr ""
+
+#: ../src/widgets/gradient-toolbar.cpp:596
+msgid "Create gradient in the stroke"
+msgstr ""
+
+#. FIXME: implement averaging of all parameters for multiple selected
+#. gtk_label_set_markup(GTK_LABEL(l), _("<b>Average:</b>"));
+#: ../src/widgets/gradient-toolbar.cpp:610 ../src/widgets/toolbox.cpp:2632
+#: ../src/widgets/toolbox.cpp:3047 ../src/widgets/toolbox.cpp:3065
+#: ../src/widgets/toolbox.cpp:3694 ../src/widgets/toolbox.cpp:3705
+#: ../src/widgets/toolbox.cpp:5133 ../src/widgets/toolbox.cpp:5144
+msgid "<b>Change:</b>"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:270
+#: ../src/widgets/paint-selector.cpp:885 ../src/widgets/stroke-style.cpp:820
+msgid "No document selected"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:276
+msgid "No gradients in document"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:282
+msgid "No gradient selected"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:547
+msgid "No stops in gradient"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:670
+msgid "Change gradient stop offset"
+msgstr ""
+
+#. TRANSLATORS: "Stop" means: a "phase" of a gradient
+#: ../src/widgets/gradient-vector.cpp:811
+msgid "Add stop"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:814
+msgid "Add another control stop to gradient"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:816
+msgid "Delete stop"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:819
+msgid "Delete current control stop from gradient"
+msgstr ""
+
+#. Label
+#: ../src/widgets/gradient-vector.cpp:830
+#: ../share/extensions/printing-marks.inx.h:9
+msgid "Offset:"
+msgstr ""
+
+#. TRANSLATORS: "Stop" means: a "phase" of a gradient
+#: ../src/widgets/gradient-vector.cpp:875
+msgid "Stop Color"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:905
+msgid "Gradient editor"
+msgstr ""
+
+#: ../src/widgets/gradient-vector.cpp:1192
+msgid "Change gradient stop color"
+msgstr ""
+
+#: ../src/widgets/paint-selector.cpp:181 ../src/widgets/paint-selector.cpp:564
+msgid "No paint"
+msgstr ""
+
+#: ../src/widgets/paint-selector.cpp:183 ../src/widgets/paint-selector.cpp:636
+msgid "Flat color"
+msgstr ""
+
+#: ../src/widgets/paint-selector.cpp:185 ../src/widgets/paint-selector.cpp:707
+msgid "Linear gradient"
+msgstr ""
+
+#: ../src/widgets/paint-selector.cpp:187 ../src/widgets/paint-selector.cpp:710
+msgid "Radial gradient"
+msgstr ""
+
+#: ../src/widgets/paint-selector.cpp:191
+msgid "Unset paint (make it undefined so it can be inherited)"
+msgstr ""
+
+#. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty
+#: ../src/widgets/paint-selector.cpp:203
+msgid ""
+"Any path self-intersections or subpaths create holes in the fill (fill-rule: "
+"evenodd)"
+msgstr ""
+
+#. TRANSLATORS: for info, see http://www.w3.org/TR/2000/CR-SVG-20000802/painting.html#FillRuleProperty
+#: ../src/widgets/paint-selector.cpp:214
+msgid ""
+"Fill is solid unless a subpath is counterdirectional (fill-rule: nonzero)"
+msgstr ""
+
+#: ../src/widgets/paint-selector.cpp:531
+msgid "No objects"
+msgstr ""
+
+#: ../src/widgets/paint-selector.cpp:542
+msgid "Multiple styles"
+msgstr ""
+
+#: ../src/widgets/paint-selector.cpp:553
+msgid "Paint is undefined"
+msgstr ""
+
+#: ../src/widgets/paint-selector.cpp:984
+msgid ""
+"Use the <b>Node tool</b> to adjust position, scale, and rotation of the "
+"pattern on canvas. Use <b>Object &gt; Pattern &gt; Objects to Pattern</b> to "
+"create a new pattern from selection."
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:247
+msgid "Transform by toolbar"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:304
+msgid "Now <b>stroke width</b> is <b>scaled</b> when objects are scaled."
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:306
+msgid "Now <b>stroke width</b> is <b>not scaled</b> when objects are scaled."
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:317
+msgid ""
+"Now <b>rounded rectangle corners</b> are <b>scaled</b> when rectangles are "
+"scaled."
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:319
+msgid ""
+"Now <b>rounded rectangle corners</b> are <b>not scaled</b> when rectangles "
+"are scaled."
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:330
+msgid ""
+"Now <b>gradients</b> are <b>transformed</b> along with their objects when "
+"those are transformed (moved, scaled, rotated, or skewed)."
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:332
+msgid ""
+"Now <b>gradients</b> remain <b>fixed</b> when objects are transformed "
+"(moved, scaled, rotated, or skewed)."
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:343
+msgid ""
+"Now <b>patterns</b> are <b>transformed</b> along with their objects when "
+"those are transformed (moved, scaled, rotated, or skewed)."
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:345
+msgid ""
+"Now <b>patterns</b> remain <b>fixed</b> when objects are transformed (moved, "
+"scaled, rotated, or skewed)."
+msgstr ""
+
+#. four spinbuttons
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/widgets/select-toolbar.cpp:460
+msgid "select_toolbar|X position"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:460
+msgid "select_toolbar|X"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:462
+msgid "Horizontal coordinate of selection"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/widgets/select-toolbar.cpp:468
+msgid "select_toolbar|Y position"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:468
+msgid "select_toolbar|Y"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:470
+msgid "Vertical coordinate of selection"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/widgets/select-toolbar.cpp:476
+msgid "select_toolbar|Width"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:476
+msgid "select_toolbar|W"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:478
+msgid "Width of selection"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:485
+msgid "Lock width and height"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:486
+msgid "When locked, change both width and height by the same proportion"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#: ../src/widgets/select-toolbar.cpp:497
+msgid "select_toolbar|Height"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:497
+msgid "select_toolbar|H"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:499
+msgid "Height of selection"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:536
+msgid "Affect:"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:536
+msgid ""
+"Control whether or not to scale stroke widths, scale rectangle corners, "
+"transform gradient fills, and transform pattern fills with the object"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:555
+msgid "Scale rounded corners"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:566
+msgid "Move gradients"
+msgstr ""
+
+#: ../src/widgets/select-toolbar.cpp:577
+msgid "Move patterns"
+msgstr ""
+
+#: ../src/widgets/sp-color-gtkselector.cpp:50
+msgid "System"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:111
+msgid "CMS"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:220
+#: ../src/widgets/sp-color-scales.cpp:399
+msgid "_R"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:220
+#: ../src/widgets/sp-color-icc-selector.cpp:221
+#: ../src/widgets/sp-color-scales.cpp:402
+msgid "_G"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:220
+#: ../src/widgets/sp-color-scales.cpp:405
+msgid "_B"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:222
+#: ../src/widgets/sp-color-icc-selector.cpp:223
+#: ../src/widgets/sp-color-scales.cpp:425
+msgid "_H"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:222
+#: ../src/widgets/sp-color-icc-selector.cpp:223
+#: ../src/widgets/sp-color-scales.cpp:428
+msgid "_S"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:223
+#: ../src/widgets/sp-color-scales.cpp:431
+msgid "_L"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:224
+#: ../src/widgets/sp-color-icc-selector.cpp:225
+#: ../src/widgets/sp-color-scales.cpp:453
+msgid "_C"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:224
+#: ../src/widgets/sp-color-icc-selector.cpp:225
+#: ../src/widgets/sp-color-scales.cpp:456
+msgid "_M"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:224
+#: ../src/widgets/sp-color-icc-selector.cpp:225
+#: ../src/widgets/sp-color-scales.cpp:459
+msgid "_Y"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:224
+#: ../src/widgets/sp-color-scales.cpp:462
+msgid "_K"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:235
+msgid "Gray"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:238
+#: ../src/widgets/sp-color-icc-selector.cpp:239
+#: ../src/widgets/sp-color-scales.cpp:454
+#: ../src/widgets/sp-color-scales.cpp:455
+msgid "Cyan"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:238
+#: ../src/widgets/sp-color-icc-selector.cpp:239
+#: ../src/widgets/sp-color-scales.cpp:457
+#: ../src/widgets/sp-color-scales.cpp:458
+msgid "Magenta"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:238
+#: ../src/widgets/sp-color-icc-selector.cpp:239
+#: ../src/widgets/sp-color-scales.cpp:460
+#: ../src/widgets/sp-color-scales.cpp:461
+msgid "Yellow"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:296
+msgid "Fix"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:299
+msgid "Fix RGB fallback to match icc-color() value."
+msgstr ""
+
+#. Label
+#: ../src/widgets/sp-color-icc-selector.cpp:380
+#: ../src/widgets/sp-color-scales.cpp:408
+#: ../src/widgets/sp-color-scales.cpp:434
+#: ../src/widgets/sp-color-scales.cpp:465
+#: ../src/widgets/sp-color-wheel-selector.cpp:134
+msgid "_A"
+msgstr ""
+
+#: ../src/widgets/sp-color-icc-selector.cpp:390
+#: ../src/widgets/sp-color-icc-selector.cpp:402
+#: ../src/widgets/sp-color-scales.cpp:409
+#: ../src/widgets/sp-color-scales.cpp:410
+#: ../src/widgets/sp-color-scales.cpp:435
+#: ../src/widgets/sp-color-scales.cpp:436
+#: ../src/widgets/sp-color-scales.cpp:466
+#: ../src/widgets/sp-color-scales.cpp:467
+#: ../src/widgets/sp-color-wheel-selector.cpp:144
+#: ../src/widgets/sp-color-wheel-selector.cpp:156
+msgid "Alpha (opacity)"
+msgstr ""
+
+#: ../src/widgets/sp-color-notebook.cpp:330
+msgid "RGBA_:"
+msgstr ""
+
+#: ../src/widgets/sp-color-notebook.cpp:338
+msgid "Hexadecimal RGBA value of the color"
+msgstr ""
+
+#: ../src/widgets/sp-color-scales.cpp:79
+msgid "RGB"
+msgstr ""
+
+#: ../src/widgets/sp-color-scales.cpp:79
+msgid "HSL"
+msgstr ""
+
+#: ../src/widgets/sp-color-scales.cpp:79
+msgid "CMYK"
+msgstr ""
+
+#: ../src/widgets/sp-color-selector.cpp:64
+msgid "Unnamed"
+msgstr ""
+
+#: ../src/widgets/sp-color-wheel-selector.cpp:61
+msgid "Wheel"
+msgstr ""
+
+#: ../src/widgets/sp-xmlview-attr-list.cpp:46
+msgid "Attribute"
+msgstr ""
+
+#: ../src/widgets/sp-xmlview-attr-list.cpp:47
+#: ../share/extensions/perfectboundcover.inx.h:19
+msgid "Value"
+msgstr ""
+
+#: ../src/widgets/sp-xmlview-content.cpp:169
+msgid "Type text in a text node"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:286 ../src/widgets/stroke-style.cpp:345
+msgid "Set stroke color"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:397
+msgid "Set gradient on stroke"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:441
+msgid "Set pattern on stroke"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:904
+msgid "Set markers"
+msgstr ""
+
+#. TRANSLATORS: only translate "string" in "context|string".
+#. For more details, see http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS
+#. Stroke width
+#: ../src/widgets/stroke-style.cpp:1079
+msgid "StrokeWidth|Width:"
+msgstr ""
+
+#. Join type
+#. TRANSLATORS: The line join style specifies the shape to be used at the
+#. corners of paths. It can be "miter", "round" or "bevel".
+#: ../src/widgets/stroke-style.cpp:1117
+msgid "Join:"
+msgstr ""
+
+#. TRANSLATORS: Miter join: joining lines with a sharp (pointed) corner.
+#. For an example, draw a triangle with a large stroke width and modify the
+#. "Join" option (in the Fill and Stroke dialog).
+#: ../src/widgets/stroke-style.cpp:1129
+msgid "Miter join"
+msgstr ""
+
+#. TRANSLATORS: Round join: joining lines with a rounded corner.
+#. For an example, draw a triangle with a large stroke width and modify the
+#. "Join" option (in the Fill and Stroke dialog).
+#: ../src/widgets/stroke-style.cpp:1139
+msgid "Round join"
+msgstr ""
+
+#. TRANSLATORS: Bevel join: joining lines with a blunted (flattened) corner.
+#. For an example, draw a triangle with a large stroke width and modify the
+#. "Join" option (in the Fill and Stroke dialog).
+#: ../src/widgets/stroke-style.cpp:1149
+msgid "Bevel join"
+msgstr ""
+
+#. Miterlimit
+#. TRANSLATORS: Miter limit: only for "miter join", this limits the length
+#. of the sharp "spike" when the lines connect at too sharp an angle.
+#. When two line segments meet at a sharp angle, a miter join results in a
+#. spike that extends well beyond the connection point. The purpose of the
+#. miter limit is to cut off such spikes (i.e. convert them into bevels)
+#. when they become too long.
+#: ../src/widgets/stroke-style.cpp:1161
+msgid "Miter limit:"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:1169
+msgid "Maximum length of the miter (in units of stroke width)"
+msgstr ""
+
+#. Cap type
+#. TRANSLATORS: cap type specifies the shape for the ends of lines
+#: ../src/widgets/stroke-style.cpp:1181
+msgid "Cap:"
+msgstr ""
+
+#. TRANSLATORS: Butt cap: the line shape does not extend beyond the end point
+#. of the line; the ends of the line are square
+#: ../src/widgets/stroke-style.cpp:1193
+msgid "Butt cap"
+msgstr ""
+
+#. TRANSLATORS: Round cap: the line shape extends beyond the end point of the
+#. line; the ends of the line are rounded
+#: ../src/widgets/stroke-style.cpp:1201
+msgid "Round cap"
+msgstr ""
+
+#. TRANSLATORS: Square cap: the line shape extends beyond the end point of the
+#. line; the ends of the line are square
+#: ../src/widgets/stroke-style.cpp:1209
+msgid "Square cap"
+msgstr ""
+
+#. Dash
+#: ../src/widgets/stroke-style.cpp:1215
+msgid "Dashes:"
+msgstr ""
+
+#. TRANSLATORS: Path markers are an SVG feature that allows you to attach arbitrary shapes
+#. (arrowheads, bullets, faces, whatever) to the start, end, or middle nodes of a path.
+#: ../src/widgets/stroke-style.cpp:1232
+msgid "Start Markers:"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:1234
+msgid "Start Markers are drawn on the first node of a path or shape"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:1243
+msgid "Mid Markers:"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:1245
+msgid ""
+"Mid Markers are drawn on every node of a path or shape except the first and "
+"last nodes"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:1254
+msgid "End Markers:"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:1256
+msgid "End Markers are drawn on the last node of a path or shape"
+msgstr ""
+
+#: ../src/widgets/stroke-style.cpp:1605 ../src/widgets/stroke-style.cpp:1701
+msgid "Set stroke style"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:183
+msgid "Color/opacity used for color tweaking"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:187
+msgid "Style of new stars"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:189
+msgid "Style of new rectangles"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:191
+msgid "Style of new 3D boxes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:193
+msgid "Style of new ellipses"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:195
+msgid "Style of new spirals"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:197
+msgid "Style of new paths created by Pencil"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:199
+msgid "Style of new paths created by Pen"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:201
+msgid "Style of new calligraphic strokes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:203 ../src/widgets/toolbox.cpp:205
+msgid "TBD"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:215
+msgid "Style of Paint Bucket fill objects"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1289
+msgid "Insert node"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1290
+msgid "Insert new nodes into selected segments"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1293
+msgid "Insert"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1301
+msgid "Delete selected nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1311
+msgid "Join endnodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1312
+msgid "Join selected endnodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1315
+msgid "Join"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1322
+msgid "Break nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1323
+msgid "Break path at selected nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1333
+msgid "Join with segment"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1334
+msgid "Join selected endnodes with a new segment"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1344
+msgid "Delete segment between two non-endpoint nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1353
+msgid "Node Cusp"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1354
+msgid "Make selected nodes corner"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1363
+msgid "Node Smooth"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1364
+msgid "Make selected nodes smooth"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1373
+msgid "Node Symmetric"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1374
+msgid "Make selected nodes symmetric"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1383
+msgid "Node Auto"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1384
+msgid "Make selected nodes auto-smooth"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1393
+msgid "Node Line"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1394
+msgid "Make selected segments lines"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1403
+msgid "Node Curve"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1404
+msgid "Make selected segments curves"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1413
+msgid "Show Handles"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1414
+msgid "Show the Bezier handles of selected nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1424
+msgid "Show Outline"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1425
+msgid "Show the outline of the path"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1435
+msgid "Next path effect parameter"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1436
+msgid "Show next path effect parameter for editing"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1447
+msgid "Edit the clipping path of the object"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1457
+msgid "Edit mask path"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1458
+msgid "Edit the mask of the object"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1472
+msgid "X coordinate:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1472
+msgid "X coordinate of selected node(s)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1490
+msgid "Y coordinate:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:1490
+msgid "Y coordinate of selected node(s)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2028
+msgid "Enable snapping"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2037
+msgid "Bounding box"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2037
+msgid "Snap bounding box corners"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2046
+msgid "Bounding box edges"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2046
+msgid "Snap to edges of a bounding box"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2055
+msgid "Bounding box corners"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2055
+msgid "Snap to bounding box corners"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2064
+msgid "BBox Edge Midpoints"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2064
+msgid "Snap from and to midpoints of bounding box edges"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2074
+msgid "BBox Centers"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2074
+msgid "Snapping from and to centers of bounding boxes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2083
+msgid "Snap nodes or handles"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2091
+msgid "Snap to paths"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2100
+msgid "Path intersections"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2100
+msgid "Snap to path intersections"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2109
+msgid "To nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2109
+msgid "Snap to cusp nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2118
+msgid "Smooth nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2118
+msgid "Snap to smooth nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2127
+msgid "Line Midpoints"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2127
+msgid "Snap from and to midpoints of line segments"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2136
+msgid "Object Centers"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2136
+msgid "Snap from and to centers of objects"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2145
+msgid "Rotation Centers"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2145
+msgid "Snap from and to an item's rotation center"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2154
+msgid "Page border"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2154
+msgid "Snap to the page border"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2163
+msgid "Snap to grids"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2172
+msgid "Snap to guides"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2377
+msgid "Star: Change number of corners"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2422
+msgid "Star: Change spoke ratio"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2465
+msgid "Make polygon"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2465
+msgid "Make star"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2501
+msgid "Star: Change rounding"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2536
+msgid "Star: Change randomization"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2727
+msgid "Regular polygon (with one handle) instead of a star"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2734
+msgid "Star instead of a regular polygon (with one handle)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2755
+msgid "triangle/tri-star"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2755
+msgid "square/quad-star"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2755
+msgid "pentagon/five-pointed star"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2755
+msgid "hexagon/six-pointed star"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2758
+msgid "Corners"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2758
+msgid "Corners:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2758
+msgid "Number of corners of a polygon or star"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2771
+msgid "thin-ray star"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2771
+msgid "pentagram"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2771
+msgid "hexagram"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2771
+msgid "heptagram"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2771
+msgid "octagram"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2771
+msgid "regular polygon"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2774
+msgid "Spoke ratio"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2774
+msgid "Spoke ratio:"
+msgstr ""
+
+#. TRANSLATORS: Tip radius of a star is the distance from the center to the farthest handle.
+#. Base radius is the same for the closest handle.
+#: ../src/widgets/toolbox.cpp:2777
+msgid "Base radius to tip radius ratio"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2795
+msgid "stretched"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2795
+msgid "twisted"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2795
+msgid "slightly pinched"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2795
+msgid "NOT rounded"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2795
+msgid "slightly rounded"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2795
+msgid "visibly rounded"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2795
+msgid "well rounded"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2795
+msgid "amply rounded"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2795 ../src/widgets/toolbox.cpp:2810
+msgid "blown up"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2798
+msgid "Rounded"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2798
+msgid "Rounded:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2798
+msgid "How much rounded are the corners (0 for sharp)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2810
+msgid "NOT randomized"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2810
+msgid "slightly irregular"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2810
+msgid "visibly randomized"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2810
+msgid "strongly randomized"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2813
+msgid "Randomized"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2813
+msgid "Randomized:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2813
+msgid "Scatter randomly the corners and angles"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2828 ../src/widgets/toolbox.cpp:3767
+#: ../src/widgets/toolbox.cpp:4027 ../src/widgets/toolbox.cpp:7249
+msgid "Defaults"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2829 ../src/widgets/toolbox.cpp:3768
+msgid ""
+"Reset shape parameters to defaults (use Inkscape Preferences > Tools to "
+"change defaults)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:2902
+msgid "Change rectangle"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3095
+msgid "W:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3095
+msgid "Width of rectangle"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3112
+msgid "H:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3112
+msgid "Height of rectangle"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3126 ../src/widgets/toolbox.cpp:3141
+msgid "not rounded"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3129
+msgid "Horizontal radius"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3129
+msgid "Rx:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3129
+msgid "Horizontal radius of rounded corners"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3144
+msgid "Vertical radius"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3144
+msgid "Ry:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3144
+msgid "Vertical radius of rounded corners"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3163
+msgid "Not rounded"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3164
+msgid "Make corners sharp"
+msgstr ""
+
+#. TODO: use the correct axis here, too
+#: ../src/widgets/toolbox.cpp:3352
+msgid "3D Box: Change perspective (angle of infinite axis)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3422
+msgid "Angle in X direction"
+msgstr ""
+
+#. Translators: PL is short for 'perspective line'
+#: ../src/widgets/toolbox.cpp:3424
+msgid "Angle of PLs in X direction"
+msgstr ""
+
+#. Translators: VP is short for 'vanishing point'
+#: ../src/widgets/toolbox.cpp:3446
+msgid "State of VP in X direction"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3447
+msgid "Toggle VP in X direction between 'finite' and 'infinite' (=parallel)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3462
+msgid "Angle in Y direction"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3462
+msgid "Angle Y:"
+msgstr ""
+
+#. Translators: PL is short for 'perspective line'
+#: ../src/widgets/toolbox.cpp:3464
+msgid "Angle of PLs in Y direction"
+msgstr ""
+
+#. Translators: VP is short for 'vanishing point'
+#: ../src/widgets/toolbox.cpp:3485
+msgid "State of VP in Y direction"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3486
+msgid "Toggle VP in Y direction between 'finite' and 'infinite' (=parallel)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3501
+msgid "Angle in Z direction"
+msgstr ""
+
+#. Translators: PL is short for 'perspective line'
+#: ../src/widgets/toolbox.cpp:3503
+msgid "Angle of PLs in Z direction"
+msgstr ""
+
+#. Translators: VP is short for 'vanishing point'
+#: ../src/widgets/toolbox.cpp:3524
+msgid "State of VP in Z direction"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3525
+msgid "Toggle VP in Z direction between 'finite' and 'infinite' (=parallel)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3583
+msgid "Change spiral"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3724
+msgid "just a curve"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3724
+msgid "one full revolution"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3727
+msgid "Number of turns"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3727
+msgid "Turns:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3727
+msgid "Number of revolutions"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3738
+msgid "circle"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3738
+msgid "edge is much denser"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3738
+msgid "edge is denser"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3738
+msgid "even"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3738
+msgid "center is denser"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3738
+msgid "center is much denser"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3741
+msgid "Divergence"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3741
+msgid "Divergence:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3741
+msgid "How much denser/sparser are outer revolutions; 1 = uniform"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3752
+msgid "starts from center"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3752
+msgid "starts mid-way"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3752
+msgid "starts near edge"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3755
+msgid "Inner radius"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3755
+msgid "Inner radius:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3755
+msgid "Radius of the innermost revolution (relative to the spiral size)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3828
+msgid "Bezier"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3829
+msgid "Create regular Bezier path"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3835
+msgid "Spiro"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3836
+msgid "Create Spiro path"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3843
+msgid "Zigzag"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3844
+msgid "Create a sequence of straight line segments"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3850
+msgid "Paraxial"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3851
+msgid "Create a sequence of paraxial line segments"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3859
+msgid "Mode of new lines drawn by this tool"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3888
+msgid "Triangle in"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3889
+msgid "Triangle out"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3891
+msgid "From clipboard"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3916 ../src/widgets/toolbox.cpp:3917
+msgid "Shape:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:3916
+msgid "Shape of new paths drawn by this tool"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4001
+msgid "(many nodes, rough)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4001 ../src/widgets/toolbox.cpp:4121
+#: ../src/widgets/toolbox.cpp:4138 ../src/widgets/toolbox.cpp:4341
+#: ../src/widgets/toolbox.cpp:4712 ../src/widgets/toolbox.cpp:4745
+#: ../src/widgets/toolbox.cpp:5731
+msgid "(default)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4001
+msgid "(few nodes, smooth)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4004
+msgid "Smoothing:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4004
+msgid "Smoothing: "
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4005
+msgid "How much smoothing (simplifying) is applied to the line"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4028
+msgid ""
+"Reset pencil parameters to defaults (use Inkscape Preferences > Tools to "
+"change defaults)"
+msgstr ""
+
+#. Width
+#: ../src/widgets/toolbox.cpp:4121
+msgid "(pinch tweak)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4121
+msgid "(broad tweak)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4124
+msgid "The width of the tweak area (relative to the visible canvas area)"
+msgstr ""
+
+#. Force
+#: ../src/widgets/toolbox.cpp:4138
+msgid "(minimum force)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4138
+msgid "(maximum force)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4141
+msgid "Force"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4141
+msgid "Force:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4141
+msgid "The force of the tweak action"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4159
+msgid "Move mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4160
+msgid "Move objects in any direction"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4166
+msgid "Move in/out mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4167
+msgid "Move objects towards cursor; with Shift from cursor"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4173
+msgid "Move jitter mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4174
+msgid "Move objects in random directions"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4180
+msgid "Scale mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4181
+msgid "Shrink objects, with Shift enlarge"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4187
+msgid "Rotate mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4188
+msgid "Rotate objects, with Shift counterclockwise"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4194
+msgid "Duplicate/delete mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4195
+msgid "Duplicate objects, with Shift delete"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4201
+msgid "Push mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4202
+msgid "Push parts of paths in any direction"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4208
+msgid "Shrink/grow mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4209
+msgid "Shrink (inset) parts of paths; with Shift grow (outset)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4215
+msgid "Attract/repel mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4216
+msgid "Attract parts of paths towards cursor; with Shift from cursor"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4222
+msgid "Roughen mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4223
+msgid "Roughen parts of paths"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4229
+msgid "Color paint mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4230
+msgid "Paint the tool's color upon selected objects"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4236
+msgid "Color jitter mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4237
+msgid "Jitter the colors of selected objects"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4243
+msgid "Blur mode"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4244
+msgid "Blur selected objects more; with Shift, blur less"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4271
+msgid "Channels:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4282
+msgid "In color mode, act on objects' hue"
+msgstr ""
+
+#. TRANSLATORS:  "H" here stands for hue
+#: ../src/widgets/toolbox.cpp:4286
+msgid "H"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4297
+msgid "In color mode, act on objects' saturation"
+msgstr ""
+
+#. TRANSLATORS: "S" here stands for Saturation
+#: ../src/widgets/toolbox.cpp:4301
+msgid "S"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4312
+msgid "In color mode, act on objects' lightness"
+msgstr ""
+
+#. TRANSLATORS: "L" here stands for Lightness
+#: ../src/widgets/toolbox.cpp:4316
+msgid "L"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4327
+msgid "In color mode, act on objects' opacity"
+msgstr ""
+
+#. TRANSLATORS: "O" here stands for Opacity
+#: ../src/widgets/toolbox.cpp:4331
+msgid "O"
+msgstr ""
+
+#. Fidelity
+#: ../src/widgets/toolbox.cpp:4341
+msgid "(rough, simplified)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4341
+msgid "(fine, but many nodes)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4344
+msgid "Fidelity"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4344
+msgid "Fidelity:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4345
+msgid ""
+"Low fidelity simplifies paths; high fidelity preserves path features but may "
+"generate a lot of new nodes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4362 ../src/widgets/toolbox.cpp:4863
+msgid "Pressure"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4363
+msgid "Use the pressure of the input device to alter the force of tweak action"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4543
+msgid "No preset"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4561
+msgid "Save..."
+msgstr ""
+
+#. Width
+#: ../src/widgets/toolbox.cpp:4712 ../src/widgets/toolbox.cpp:5731
+msgid "(hairline)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4712 ../src/widgets/toolbox.cpp:5731
+msgid "(broad stroke)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4715 ../src/widgets/toolbox.cpp:5734
+msgid "Pen Width"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4716
+msgid "The width of the calligraphic pen (relative to the visible canvas area)"
+msgstr ""
+
+#. Thinning
+#: ../src/widgets/toolbox.cpp:4729
+msgid "(speed blows up stroke)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4729
+msgid "(slight widening)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4729
+msgid "(constant width)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4729
+msgid "(slight thinning, default)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4729
+msgid "(speed deflates stroke)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4732
+msgid "Stroke Thinning"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4732
+msgid "Thinning:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4733
+msgid ""
+"How much velocity thins the stroke (> 0 makes fast strokes thinner, < 0 "
+"makes them broader, 0 makes width independent of velocity)"
+msgstr ""
+
+#. Angle
+#: ../src/widgets/toolbox.cpp:4745
+msgid "(left edge up)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4745
+msgid "(horizontal)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4745
+msgid "(right edge up)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4748
+msgid "Pen Angle"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4748
+msgid "Angle:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4749
+msgid ""
+"The angle of the pen's nib (in degrees; 0 = horizontal; has no effect if "
+"fixation = 0)"
+msgstr ""
+
+#. Fixation
+#: ../src/widgets/toolbox.cpp:4763
+msgid "(perpendicular to stroke, \"brush\")"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4763
+msgid "(almost fixed, default)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4763
+msgid "(fixed by Angle, \"pen\")"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4766
+msgid "Fixation"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4766
+msgid "Fixation:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4767
+msgid ""
+"Angle behavior (0 = nib always perpendicular to stroke direction, 100 = "
+"fixed angle)"
+msgstr ""
+
+#. Cap Rounding
+#: ../src/widgets/toolbox.cpp:4779
+msgid "(blunt caps, default)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4779
+msgid "(slightly bulging)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4779
+msgid "(approximately round)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4779
+msgid "(long protruding caps)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4783
+msgid "Cap rounding"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4783
+msgid "Caps:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4784
+msgid ""
+"Increase to make caps at the ends of strokes protrude more (0 = no caps, 1 = "
+"round caps)"
+msgstr ""
+
+#. Tremor
+#: ../src/widgets/toolbox.cpp:4796
+msgid "(smooth line)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4796
+msgid "(slight tremor)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4796
+msgid "(noticeable tremor)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4796
+msgid "(maximum tremor)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4799
+msgid "Stroke Tremor"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4799
+msgid "Tremor:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4800
+msgid "Increase to make strokes rugged and trembling"
+msgstr ""
+
+#. Wiggle
+#: ../src/widgets/toolbox.cpp:4814
+msgid "(no wiggle)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4814
+msgid "(slight deviation)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4814
+msgid "(wild waves and curls)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4817
+msgid "Pen Wiggle"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4817
+msgid "Wiggle:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4818
+msgid "Increase to make the pen waver and wiggle"
+msgstr ""
+
+#. Mass
+#: ../src/widgets/toolbox.cpp:4831
+msgid "(no inertia)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4831
+msgid "(slight smoothing, default)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4831
+msgid "(noticeable lagging)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4831
+msgid "(maximum inertia)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4834
+msgid "Pen Mass"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4834
+msgid "Mass:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4835
+msgid "Increase to make the pen drag behind, as if slowed by inertia"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4850
+msgid "Trace Background"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4851
+msgid ""
+"Trace the lightness of the background by the width of the pen (white - "
+"minimum width, black - maximum width)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4864
+msgid "Use the pressure of the input device to alter the width of the pen"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4876
+msgid "Tilt"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4877
+msgid "Use the tilt of the input device to alter the angle of the pen's nib"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4890
+msgid "Choose a preset"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:4978
+msgid "Arc: Change start/end"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5042
+msgid "Arc: Change open/closed"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5168
+msgid "Start:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5169
+msgid "The angle (in degrees) from the horizontal to the arc's start point"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5181
+msgid "End:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5182
+msgid "The angle (in degrees) from the horizontal to the arc's end point"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5198
+msgid "Closed arc"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5199
+msgid "Switch to segment (closed shape with two radii)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5205
+msgid "Open Arc"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5206
+msgid "Switch to arc (unclosed shape)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5229
+msgid "Make whole"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5230
+msgid "Make the shape a whole ellipse, not arc or segment"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5306
+msgid "Pick opacity"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5307
+msgid ""
+"Pick both the color and the alpha (transparency) under cursor; otherwise, "
+"pick only the visible color premultiplied by alpha"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5310
+msgid "Pick"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5319
+msgid "Assign opacity"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5320
+msgid ""
+"If alpha was picked, assign it to selection as fill or stroke transparency"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5323
+msgid "Assign"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5509
+msgid "Closed"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5511
+msgid "Open start"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5513
+msgid "Open end"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5515
+msgid "Open both"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5574
+msgid "All inactive"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5575
+msgid "No geometric tool is active"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5608
+msgid "Show limiting bounding box"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5609
+msgid "Show bounding box (used to cut infinite lines)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5620
+msgid "Get limiting bounding box from selection"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5621
+msgid ""
+"Set limiting bounding box (used to cut infinite lines) to the bounding box "
+"of current selection"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5633
+msgid "Choose a line segment type"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5649
+msgid "Display measuring info"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5650
+msgid "Display measuring info for selected items"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5670
+msgid "Open LPE dialog"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5671
+msgid "Open LPE dialog (to adapt parameters numerically)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5735
+msgid "The width of the eraser pen (relative to the visible canvas area)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5753
+msgid "Delete objects touched by the eraser"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5759
+msgid "Cut"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:5760
+msgid "Cut out from objects"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6104
+msgid "Text: Change font family"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6174
+msgid "Text: Change alignment"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6278
+msgid "Text: Change font style"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6325
+msgid "Text: Change orientation"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6439
+msgid "Text: Change font size"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6650
+msgid "Select font family (Alt+X to access)"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6687
+msgid ""
+"This font is currently not installed on your system. Inkscape will use the "
+"default font instead."
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6723
+msgid "Align left"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6745
+msgid "Align right"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6756
+msgid "Justify"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6771
+msgid "Bold"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6782
+msgid "Italic"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6913
+msgid "Change connector spacing"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:6996
+msgid "Avoid"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7006
+msgid "Ignore"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7018
+msgid "Connector Spacing"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7018
+msgid "Spacing:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7019
+msgid "The amount of space left around objects by auto-routing connectors"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7030
+msgid "Graph"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7040
+msgid "Connector Length"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7040
+msgid "Length:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7041
+msgid "Ideal length for connectors when layout is applied"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7053
+msgid "Downwards"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7054
+msgid "Make connectors with end-markers (arrows) point downwards"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7069
+msgid "Do not allow overlapping shapes"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7172
+msgid "Fill by"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7173
+msgid "Fill by:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7185
+msgid "Fill Threshold"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7186
+msgid ""
+"The maximum allowed difference between the clicked pixel and the neighboring "
+"pixels to be counted in the fill"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7211
+msgid "Grow/shrink by"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7211
+msgid "Grow/shrink by:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7212
+msgid ""
+"The amount to grow (positive) or shrink (negative) the created fill path"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7237
+msgid "Close gaps"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7238
+msgid "Close gaps:"
+msgstr ""
+
+#: ../src/widgets/toolbox.cpp:7250
+msgid ""
+"Reset paint bucket parameters to defaults (use Inkscape Preferences > Tools "
+"to change defaults)"
+msgstr ""
+
+#: ../share/extensions/dimension.py:99
+msgid "Unable to process this object.  Try changing it into a path first."
+msgstr ""
+
+#. report to the Inkscape console using errormsg
+#: ../share/extensions/draw_from_triangle.py:175
+msgid "Side Length 'a'/px: "
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.py:176
+msgid "Side Length 'b'/px: "
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.py:177
+msgid "Side Length 'c'/px: "
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.py:178
+msgid "Angle 'A'/radians: "
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.py:179
+msgid "Angle 'B'/radians: "
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.py:180
+msgid "Angle 'C'/radians: "
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.py:181
+msgid "Semiperimeter/px: "
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.py:182
+msgid "Area /px^2: "
+msgstr ""
+
+#: ../share/extensions/dxf_outlines.py:33
+msgid ""
+"Failed to import the numpy or numpy.linalg modules. These modules are "
+"required by this extension. Please install them and try again."
+msgstr ""
+
+#: ../share/extensions/embedimage.py:74
+msgid ""
+"No xlink:href or sodipodi:absref attributes found, or they do not point to "
+"an existing file! Unable to embed image."
+msgstr ""
+
+#: ../share/extensions/embedimage.py:76
+#, python-format
+msgid "Sorry we could not locate %s"
+msgstr ""
+
+#: ../share/extensions/embedimage.py:101
+#, python-format
+msgid ""
+"%s is not of type image/png, image/jpeg, image/bmp, image/gif, image/tiff, "
+"or image/x-icon"
+msgstr ""
+
+#: ../share/extensions/export_gimp_palette.py:14
+msgid ""
+"The export_gpl.py module requires PyXML.  Please download the latest version "
+"from http://pyxml.sourceforge.net/."
+msgstr ""
+
+#: ../share/extensions/extractimage.py:66
+msgid "Unable to find image data."
+msgstr ""
+
+#: ../share/extensions/inkex.py:66
+msgid ""
+"The fantastic lxml wrapper for libxml2 is required by inkex.py and therefore "
+"this extension. Please download and install the latest version from http://"
+"cheeseshop.python.org/pypi/lxml/, or install it through your package manager "
+"by a command like: sudo apt-get install python-lxml"
+msgstr ""
+
+#: ../share/extensions/inkex.py:222
+#, python-format
+msgid "No matching node for expression: %s"
+msgstr ""
+
+#: ../share/extensions/markers_strokepaint.py:41
+#, python-format
+msgid "No style attribute found for id: %s"
+msgstr ""
+
+#: ../share/extensions/markers_strokepaint.py:56
+#, python-format
+msgid "unable to locate marker: %s"
+msgstr ""
+
+#: ../share/extensions/pathalongpath.py:197
+#: ../share/extensions/pathscatter.py:208
+#: ../share/extensions/perspective.py:61
+msgid "This extension requires two selected paths."
+msgstr ""
+
+#: ../share/extensions/pathmodifier.py:229
+#, python-format
+msgid "Please first convert objects to paths!  (Got [%s].)"
+msgstr ""
+
+#: ../share/extensions/perspective.py:29
+msgid ""
+"Failed to import the numpy or numpy.linalg modules. These modules are "
+"required by this extension. Please install them and try again.  On a Debian-"
+"like system this can be done with the command, sudo apt-get install python-"
+"numpy."
+msgstr ""
+
+#: ../share/extensions/perspective.py:68
+#: ../share/extensions/summersnight.py:43
+#, python-format
+msgid ""
+"The first selected object is of type '%s'.\n"
+"Try using the procedure Path->Object to Path."
+msgstr ""
+
+#: ../share/extensions/perspective.py:74
+#: ../share/extensions/summersnight.py:50
+msgid ""
+"This extension requires that the second selected path be four nodes long."
+msgstr ""
+
+#: ../share/extensions/perspective.py:99
+#: ../share/extensions/summersnight.py:82
+msgid ""
+"The second selected object is a group, not a path.\n"
+"Try using the procedure Object->Ungroup."
+msgstr ""
+
+#: ../share/extensions/perspective.py:101
+#: ../share/extensions/summersnight.py:84
+msgid ""
+"The second selected object is not a path.\n"
+"Try using the procedure Path->Object to Path."
+msgstr ""
+
+#: ../share/extensions/perspective.py:104
+#: ../share/extensions/summersnight.py:87
+msgid ""
+"The first selected object is not a path.\n"
+"Try using the procedure Path->Object to Path."
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.py:60
+msgid ""
+"Failed to import the numpy module. This module is required by this "
+"extension. Please install it and try again.  On a Debian-like system this "
+"can be done with the command 'sudo apt-get install python-numpy'."
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.py:331
+msgid "No face data found in specified file."
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.py:332
+msgid "Try selecting \"Edge Specified\" in the Model File tab.\n"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.py:338
+msgid "No edge data found in specified file."
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.py:339
+msgid "Try selecting \"Face Specified\" in the Model File tab.\n"
+msgstr ""
+
+#. we cannot generate a list of faces from the edges without a lot of computation
+#: ../share/extensions/polyhedron_3d.py:514
+msgid ""
+"Face Data Not Found. Ensure file contains face data, and check the file is "
+"imported as \"Face-Specified\" under the \"Model File\" tab.\n"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.py:516
+msgid "Internal Error. No view type selected\n"
+msgstr ""
+
+#: ../share/extensions/summersnight.py:36
+msgid ""
+"This extension requires two selected paths. \n"
+"The second path must be exactly four nodes long."
+msgstr ""
+
+#: ../share/extensions/svg_and_media_zip_output.py:125
+#, python-format
+msgid "Could not locate file: %s"
+msgstr ""
+
+#: ../share/extensions/uniconv_output.py:118
+msgid "You need to install the UniConvertor software.\n"
+msgstr ""
+
+#: ../share/extensions/web-set-att.py:52
+#: ../share/extensions/web-transmit-att.py:48
+msgid "You must select at least two elements."
+msgstr ""
+
+#: ../share/extensions/addnodes.inx.h:1
+msgid "Add Nodes"
+msgstr ""
+
+#: ../share/extensions/addnodes.inx.h:2
+msgid "By max. segment length"
+msgstr ""
+
+#: ../share/extensions/addnodes.inx.h:3
+msgid "By number of segments"
+msgstr ""
+
+#: ../share/extensions/addnodes.inx.h:4
+msgid "Division method"
+msgstr ""
+
+#: ../share/extensions/addnodes.inx.h:5
+msgid "Maximum segment length (px)"
+msgstr ""
+
+#: ../share/extensions/addnodes.inx.h:6
+#: ../share/extensions/convert2dashes.inx.h:2
+#: ../share/extensions/edge3d.inx.h:6 ../share/extensions/flatten.inx.h:3
+#: ../share/extensions/fractalize.inx.h:2
+#: ../share/extensions/interp_att_g.inx.h:10
+#: ../share/extensions/markers_strokepaint.inx.h:2
+#: ../share/extensions/perspective.inx.h:1
+#: ../share/extensions/radiusrand.inx.h:4
+#: ../share/extensions/rubberstretch.inx.h:3
+#: ../share/extensions/straightseg.inx.h:2
+#: ../share/extensions/summersnight.inx.h:2 ../share/extensions/whirl.inx.h:2
+msgid "Modify Path"
+msgstr ""
+
+#: ../share/extensions/addnodes.inx.h:7
+msgid "Number of segments"
+msgstr ""
+
+#: ../share/extensions/ai_input.inx.h:1
+msgid "AI 8.0 Input"
+msgstr ""
+
+#: ../share/extensions/ai_input.inx.h:2
+msgid "Adobe Illustrator 8.0 and below (*.ai)"
+msgstr ""
+
+#: ../share/extensions/ai_input.inx.h:3
+msgid "Open files saved with Adobe Illustrator 8.0 or older"
+msgstr ""
+
+#: ../share/extensions/aisvg.inx.h:1
+msgid "AI SVG Input"
+msgstr ""
+
+#: ../share/extensions/aisvg.inx.h:2
+msgid "Adobe Illustrator SVG (*.ai.svg)"
+msgstr ""
+
+#: ../share/extensions/aisvg.inx.h:3
+msgid "Cleans the cruft out of Adobe Illustrator SVGs before opening"
+msgstr ""
+
+#: ../share/extensions/ccx_input.inx.h:1
+msgid "Corel DRAW Compressed Exchange files (.ccx)"
+msgstr ""
+
+#: ../share/extensions/ccx_input.inx.h:2
+msgid "Corel DRAW Compressed Exchange files input"
+msgstr ""
+
+#: ../share/extensions/ccx_input.inx.h:3
+msgid "Open compressed exchange files saved in Corel DRAW"
+msgstr ""
+
+#: ../share/extensions/cdr_input.inx.h:1
+msgid "Corel DRAW 7-X4 files (*.cdr)"
+msgstr ""
+
+#: ../share/extensions/cdr_input.inx.h:2
+msgid "Corel DRAW Input"
+msgstr ""
+
+#: ../share/extensions/cdr_input.inx.h:3
+msgid "Open files saved in Corel DRAW 7-X4"
+msgstr ""
+
+#: ../share/extensions/cdt_input.inx.h:1
+msgid "Corel DRAW 7-13 template files (.cdt)"
+msgstr ""
+
+#: ../share/extensions/cdt_input.inx.h:2
+msgid "Corel DRAW templates input"
+msgstr ""
+
+#: ../share/extensions/cdt_input.inx.h:3
+msgid "Open files saved in Corel DRAW 7-13"
+msgstr ""
+
+#: ../share/extensions/cgm_input.inx.h:1
+msgid "Computer Graphics Metafile files (.cgm)"
+msgstr ""
+
+#: ../share/extensions/cgm_input.inx.h:2
+msgid "Computer Graphics Metafile files input"
+msgstr ""
+
+#: ../share/extensions/cgm_input.inx.h:3
+msgid "Open Computer Graphics Metafile files"
+msgstr ""
+
+#: ../share/extensions/cmx_input.inx.h:1
+msgid "Corel DRAW Presentation Exchange files (.cmx)"
+msgstr ""
+
+#: ../share/extensions/cmx_input.inx.h:2
+msgid "Corel DRAW Presentation Exchange files input"
+msgstr ""
+
+#: ../share/extensions/cmx_input.inx.h:3
+msgid "Open presentation exchange files saved in Corel DRAW"
+msgstr ""
+
+#: ../share/extensions/color_brighter.inx.h:1
+msgid "Brighter"
+msgstr ""
+
+#: ../share/extensions/color_custom.inx.h:1
+msgid "Blue Function"
+msgstr ""
+
+#: ../share/extensions/color_custom.inx.h:4
+msgid "Green Function"
+msgstr ""
+
+#: ../share/extensions/color_custom.inx.h:5
+msgid "Red Function"
+msgstr ""
+
+#: ../share/extensions/color_darker.inx.h:2
+msgid "Darker"
+msgstr ""
+
+#: ../share/extensions/color_grayscale.inx.h:2
+msgid "Grayscale"
+msgstr ""
+
+#: ../share/extensions/color_lesshue.inx.h:2
+msgid "Less Hue"
+msgstr ""
+
+#: ../share/extensions/color_lesslight.inx.h:2
+msgid "Less Light"
+msgstr ""
+
+#: ../share/extensions/color_lesssaturation.inx.h:2
+msgid "Less Saturation"
+msgstr ""
+
+#: ../share/extensions/color_morehue.inx.h:2
+msgid "More Hue"
+msgstr ""
+
+#: ../share/extensions/color_morelight.inx.h:2
+msgid "More Light"
+msgstr ""
+
+#: ../share/extensions/color_moresaturation.inx.h:2
+msgid "More Saturation"
+msgstr ""
+
+#: ../share/extensions/color_negative.inx.h:2
+msgid "Negative"
+msgstr ""
+
+#: ../share/extensions/color_randomize.inx.h:4
+msgid "Randomize"
+msgstr ""
+
+#: ../share/extensions/color_removeblue.inx.h:2
+msgid "Remove Blue"
+msgstr ""
+
+#: ../share/extensions/color_removegreen.inx.h:2
+msgid "Remove Green"
+msgstr ""
+
+#: ../share/extensions/color_removered.inx.h:2
+msgid "Remove Red"
+msgstr ""
+
+#: ../share/extensions/color_replace.inx.h:1
+msgid "By color (RRGGBB hex):"
+msgstr ""
+
+#: ../share/extensions/color_replace.inx.h:3
+msgid "Replace color"
+msgstr ""
+
+#: ../share/extensions/color_replace.inx.h:4
+msgid "Replace color (RRGGBB hex):"
+msgstr ""
+
+#: ../share/extensions/color_rgbbarrel.inx.h:2
+msgid "RGB Barrel"
+msgstr ""
+
+#: ../share/extensions/convert2dashes.inx.h:1
+msgid "Convert to Dashes"
+msgstr ""
+
+#: ../share/extensions/dia.inx.h:1
+msgid "A diagram created with the program Dia"
+msgstr ""
+
+#: ../share/extensions/dia.inx.h:2
+msgid "Dia Diagram (*.dia)"
+msgstr ""
+
+#: ../share/extensions/dia.inx.h:3
+msgid "Dia Input"
+msgstr ""
+
+#: ../share/extensions/dia.inx.h:4
+msgid ""
+"In order to import Dia files, Dia itself must be installed.  You can get Dia "
+"at http://live.gnome.org/Dia"
+msgstr ""
+
+#: ../share/extensions/dia.inx.h:5
+msgid ""
+"The dia2svg.sh script should be installed with your Inkscape distribution.  "
+"If you do not have it, there is likely to be something wrong with your "
+"Inkscape installation."
+msgstr ""
+
+#: ../share/extensions/dimension.inx.h:1
+msgid "Dimensions"
+msgstr ""
+
+#: ../share/extensions/dimension.inx.h:2 ../share/extensions/dots.inx.h:4
+#: ../share/extensions/handles.inx.h:2 ../share/extensions/measure.inx.h:11
+msgid "Visualize Path"
+msgstr ""
+
+#: ../share/extensions/dimension.inx.h:3
+msgid "X Offset"
+msgstr ""
+
+#: ../share/extensions/dimension.inx.h:4
+msgid "Y Offset"
+msgstr ""
+
+#: ../share/extensions/dots.inx.h:1
+msgid "Dot size"
+msgstr ""
+
+#: ../share/extensions/dots.inx.h:2
+msgid "Font size"
+msgstr ""
+
+#: ../share/extensions/dots.inx.h:3
+msgid "Number Nodes"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:1
+msgid "Altitudes"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:2
+msgid "Angle Bisectors"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:3
+msgid "Centroid"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:4
+msgid "Circumcentre"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:5
+msgid "Circumcircle"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:6
+msgid "Common Objects"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:7
+msgid "Contact Triangle"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:8
+msgid "Custom Point Specified By:"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:9
+msgid "Custom Points and Options"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:10
+msgid "Draw Circle Around This Point"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:11
+msgid "Draw From Triangle"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:12
+msgid "Draw Isogonal Conjugate"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:13
+msgid "Draw Isotomic Conjugate"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:14
+msgid "Draw Marker At This Point"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:15
+msgid "Excentral Triangle"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:16
+msgid "Excentres"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:17
+msgid "Excircles"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:18
+msgid "Extouch Triangle"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:19
+msgid "Gergonne Point"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:21
+msgid "Incentre"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:22
+msgid "Incircle"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:23
+msgid "Nagel Point"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:24
+msgid "Nine-Point Centre"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:25
+msgid "Nine-Point Circle"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:26
+msgid "Orthic Triangle"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:27
+msgid "Orthocentre"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:28
+msgid "Point At"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:29
+msgid "Radius / px"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:31
+msgid "Report this triangle's properties"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:32
+msgid "Symmedial Triangle"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:33
+msgid "Symmedian Point"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:34
+msgid "Symmedians"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:35
+msgid ""
+"This extension draws constructions about a triangle defined by the first 3 "
+"nodes of a selected path. You may select one of preset objects or create "
+"your own ones.\n"
+"            \n"
+"All units are the Inkscape's pixel unit. Angles are all in radians.\n"
+"You can specify a point by trilinear coordinates or by a triangle centre "
+"function.\n"
+"Enter as functions of the side length or angles.\n"
+"Trilinear elements should be separated by a colon: ':'.\n"
+"Side lengths are represented as 's_a', 's_b' and 's_c'.\n"
+"Angles corresponding to these are 'a_a', 'a_b', and 'a_c'.\n"
+"You can also use the semi-perimeter and area of the triangle as constants. "
+"Write 'area' or 'semiperim' for these.\n"
+"\n"
+"You can use any standard Python math function:\n"
+"ceil(x); fabs(x); floor(x); fmod(x,y); frexp(x); ldexp(x,i); \n"
+"modf(x); exp(x); log(x [, base]); log10(x); pow(x,y); sqrt(x); \n"
+"acos(x); asin(x); atan(x); atan2(y,x); hypot(x,y); \n"
+"cos(x); sin(x); tan(x); degrees(x); radians(x); \n"
+"cosh(x); sinh(x); tanh(x)\n"
+"\n"
+"Also available are the inverse trigonometric functions:\n"
+"sec(x); csc(x); cot(x)\n"
+"\n"
+"You can specify the radius of a circle around a custom point using a "
+"formula, which may also contain the side lengths, angles, etc. You can also "
+"plot the isogonal and isotomic conjugate of the point. Be aware that this "
+"may cause a divide-by-zero error for certain points.\n"
+"            "
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:57
+msgid "Triangle Function"
+msgstr ""
+
+#: ../share/extensions/draw_from_triangle.inx.h:58
+msgid "Trilinear Coordinates"
+msgstr ""
+
+#: ../share/extensions/dxf_input.inx.h:1
+msgid ""
+"- AutoCAD Release 13 and newer.\n"
+"- assume dxf drawing is in mm.\n"
+"- assume svg drawing is in pixels, at 90 dpi.\n"
+"- layers are preserved only on File->Open, not Import.\n"
+"- limited support for BLOCKS, use AutoCAD Explode Blocks instead, if needed."
+msgstr ""
+
+#: ../share/extensions/dxf_input.inx.h:6
+msgid "AutoCAD DXF R13 (*.dxf)"
+msgstr ""
+
+#: ../share/extensions/dxf_input.inx.h:7
+msgid "Character Encoding"
+msgstr ""
+
+#: ../share/extensions/dxf_input.inx.h:8
+msgid "DXF Input"
+msgstr ""
+
+#: ../share/extensions/dxf_input.inx.h:10
+msgid "Import AutoCAD's Document Exchange Format"
+msgstr ""
+
+#: ../share/extensions/dxf_input.inx.h:12
+msgid "Or, use manual scale factor"
+msgstr ""
+
+#: ../share/extensions/dxf_input.inx.h:13
+msgid "Use automatic scaling to size A4"
+msgstr ""
+
+#: ../share/extensions/dxf_outlines.inx.h:1
+msgid ""
+"- AutoCAD Release 13 format.\n"
+"- assume svg drawing is in pixels, at 90 dpi.\n"
+"- assume dxf drawing is in mm.\n"
+"- only LWPOLYLINE and SPLINE elements are supported.\n"
+"- ROBO-Master option is a specialized spline readable only by ROBO-Master "
+"and AutoDesk viewers, not Inkscape."
+msgstr ""
+
+#: ../share/extensions/dxf_outlines.inx.h:6
+msgid "Desktop Cutting Plotter"
+msgstr ""
+
+#: ../share/extensions/dxf_outlines.inx.h:7
+msgid "Desktop Cutting Plotter (R13) (*.dxf)"
+msgstr ""
+
+#: ../share/extensions/dxf_outlines.inx.h:10
+msgid "enable ROBO-Master output"
+msgstr ""
+
+#: ../share/extensions/dxf_output.inx.h:1
+msgid "AutoCAD DXF R12 (*.dxf)"
+msgstr ""
+
+#: ../share/extensions/dxf_output.inx.h:2
+msgid "DXF Output"
+msgstr ""
+
+#: ../share/extensions/dxf_output.inx.h:3
+msgid "DXF file written by pstoedit"
+msgstr ""
+
+#: ../share/extensions/dxf_output.inx.h:4
+msgid "pstoedit must be installed to run; see http://www.pstoedit.net/pstoedit"
+msgstr ""
+
+#: ../share/extensions/edge3d.inx.h:1
+msgid "Blur height"
+msgstr ""
+
+#: ../share/extensions/edge3d.inx.h:2
+msgid "Blur stdDeviation"
+msgstr ""
+
+#: ../share/extensions/edge3d.inx.h:3
+msgid "Blur width"
+msgstr ""
+
+#: ../share/extensions/edge3d.inx.h:4
+msgid "Edge 3D"
+msgstr ""
+
+#: ../share/extensions/edge3d.inx.h:5
+msgid "Illumination Angle"
+msgstr ""
+
+#: ../share/extensions/edge3d.inx.h:7
+msgid "Only black and white"
+msgstr ""
+
+#: ../share/extensions/edge3d.inx.h:8
+msgid "Shades"
+msgstr ""
+
+#: ../share/extensions/embedimage.inx.h:1
+msgid "Embed Images"
+msgstr ""
+
+#: ../share/extensions/embedimage.inx.h:2
+msgid "Embed only selected images"
+msgstr ""
+
+#: ../share/extensions/eps_input.inx.h:1
+msgid "EPS Input"
+msgstr ""
+
+#: ../share/extensions/eqtexsvg.inx.h:1
+msgid "LaTeX formula"
+msgstr ""
+
+#: ../share/extensions/eqtexsvg.inx.h:2
+msgid "LaTeX formula: "
+msgstr ""
+
+#: ../share/extensions/export_gimp_palette.inx.h:1
+msgid "Export as GIMP Palette"
+msgstr ""
+
+#: ../share/extensions/export_gimp_palette.inx.h:2
+msgid "Exports the colors of this document as GIMP Palette"
+msgstr ""
+
+#: ../share/extensions/export_gimp_palette.inx.h:3
+msgid "GIMP Palette (*.gpl)"
+msgstr ""
+
+#: ../share/extensions/extractimage.inx.h:1
+msgid "Extract Image"
+msgstr ""
+
+#: ../share/extensions/extractimage.inx.h:3
+msgid "Note: The file extension is appended automatically."
+msgstr ""
+
+#: ../share/extensions/extractimage.inx.h:4
+msgid "Path to save image"
+msgstr ""
+
+#: ../share/extensions/extrude.inx.h:3
+msgid "Lines"
+msgstr ""
+
+#: ../share/extensions/extrude.inx.h:5
+msgid "Polygons"
+msgstr ""
+
+#: ../share/extensions/fig_input.inx.h:1
+msgid "Open files saved with XFIG"
+msgstr ""
+
+#: ../share/extensions/fig_input.inx.h:2
+msgid "XFIG Graphics File (*.fig)"
+msgstr ""
+
+#: ../share/extensions/fig_input.inx.h:3
+msgid "XFIG Input"
+msgstr ""
+
+#: ../share/extensions/flatten.inx.h:1
+msgid "Flatness"
+msgstr ""
+
+#: ../share/extensions/flatten.inx.h:2
+msgid "Flatten Beziers"
+msgstr ""
+
+#: ../share/extensions/foldablebox.inx.h:1
+msgid "Add Guide Lines"
+msgstr ""
+
+#: ../share/extensions/foldablebox.inx.h:2
+msgid "Depth"
+msgstr ""
+
+#: ../share/extensions/foldablebox.inx.h:3
+msgid "Foldable Box"
+msgstr ""
+
+#: ../share/extensions/foldablebox.inx.h:5
+msgid "Paper Thickness"
+msgstr ""
+
+#: ../share/extensions/foldablebox.inx.h:7
+msgid "Tab Proportion"
+msgstr ""
+
+#: ../share/extensions/fractalize.inx.h:1
+msgid "Fractalize"
+msgstr ""
+
+#: ../share/extensions/fractalize.inx.h:3
+msgid "Smoothness"
+msgstr ""
+
+#: ../share/extensions/fractalize.inx.h:4
+msgid "Subdivisions"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:1
+msgid "Calculate first derivative numerically"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:2
+#: ../share/extensions/param_curves.inx.h:1
+msgid "Draw Axes"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:3
+msgid "End X value"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:4
+msgid "First derivative"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:5
+msgid "Function"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:6
+msgid "Function Plotter"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:7
+#: ../share/extensions/param_curves.inx.h:3
+msgid "Functions"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:8
+msgid "Isotropic scaling (uses smallest of width/xrange or height/yrange)"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:9
+msgid "Multiply X range by 2*pi"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:10
+msgid "Number of samples"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:11
+msgid "Range and sampling"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:12
+#: ../share/extensions/param_curves.inx.h:8
+msgid "Remove rectangle"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:14
+msgid ""
+"Select a rectangle before calling the extension,\n"
+"it will determine X and Y scales.\n"
+"\n"
+"With polar coordinates:\n"
+"   Start and end X values define the angle range in radians.\n"
+"   X scale is set so that left and right edges of rectangle are at +/-1.\n"
+"   Isotropic scaling is disabled.\n"
+"   First derivative is always determined numerically."
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:22
+#: ../share/extensions/param_curves.inx.h:15
+msgid ""
+"Standard Python math functions are available:\n"
+"\n"
+"ceil(x); fabs(x); floor(x); fmod(x,y); frexp(x); ldexp(x,i); \n"
+"modf(x); exp(x); log(x [, base]); log10(x); pow(x,y); sqrt(x); \n"
+"acos(x); asin(x); atan(x); atan2(y,x); hypot(x,y); \n"
+"cos(x); sin(x); tan(x); degrees(x); radians(x); \n"
+"cosh(x); sinh(x); tanh(x).\n"
+"\n"
+"The constants pi and e are also available."
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:31
+msgid "Start X value"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:32
+#: ../share/extensions/param_curves.inx.h:25
+msgid "Use"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:33
+msgid "Use polar coordinates"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:34
+msgid "Y value of rectangle's bottom"
+msgstr ""
+
+#: ../share/extensions/funcplot.inx.h:35
+msgid "Y value of rectangle's top"
+msgstr ""
+
+#: ../share/extensions/gears.inx.h:1
+msgid "Circular pitch, px"
+msgstr ""
+
+#: ../share/extensions/gears.inx.h:2
+msgid "Gear"
+msgstr ""
+
+#: ../share/extensions/gears.inx.h:3
+msgid "Number of teeth"
+msgstr ""
+
+#: ../share/extensions/gears.inx.h:4
+msgid "Pressure angle"
+msgstr ""
+
+#: ../share/extensions/gimp_xcf.inx.h:1
+msgid "GIMP XCF"
+msgstr ""
+
+#: ../share/extensions/gimp_xcf.inx.h:2
+msgid "GIMP XCF maintaining layers (*.xcf)"
+msgstr ""
+
+#: ../share/extensions/gimp_xcf.inx.h:3
+msgid "Save Grid:"
+msgstr ""
+
+#: ../share/extensions/gimp_xcf.inx.h:4
+msgid "Save Guides:"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:1
+msgid "Border Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:2
+msgid "Cartesian Grid"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:3
+msgid "Halve X Subsubdiv. Frequency after 'n' Subdivs. (log only)"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:4
+msgid "Halve Y Subsubdiv. Frequency after 'n' Subdivs. (log only)"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:5
+msgid "Logarithmic X Subdiv. (Base given by entry above)"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:6
+msgid "Logarithmic Y Subdiv. (Base given by entry above)"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:7
+msgid "Major X Division Spacing [px]"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:8
+msgid "Major X Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:9
+msgid "Major X Divisions"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:10
+msgid "Major Y Division Spacing [px]"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:11
+msgid "Major Y Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:12
+msgid "Major Y Divisions"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:13
+msgid "Minor X Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:14
+msgid "Minor Y Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:16
+msgid "Subdivisions per Major X Division"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:17
+msgid "Subdivisions per Major Y Division"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:18
+msgid "Subminor X Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:19
+msgid "Subminor Y Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:20
+msgid "Subsubdivs. per X Subdivision"
+msgstr ""
+
+#: ../share/extensions/grid_cartesian.inx.h:21
+msgid "Subsubdivs. per Y Subdivision"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:1
+msgid "Angle Divisions"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:2
+msgid "Angle Divisions at Centre"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:3
+msgid "Centre Dot Diameter [px]"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:4
+msgid "Circumferential Label Outset [px]"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:5
+msgid "Circumferential Label Size [px]"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:6
+msgid "Circumferential Labels"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:8
+msgid "Logarithmic Subdiv. (Base given by entry above)"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:9
+msgid "Major Angular Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:10
+msgid "Major Circular Division Spacing [px]"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:11
+msgid "Major Circular Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:12
+msgid "Major Circular Divisions"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:13
+msgid "Minor Angle Division End 'n' Divs. Before Centre"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:14
+msgid "Minor Angular Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:15
+msgid "Minor Circular Division Thickness [px]"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:17
+msgid "Polar Grid"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:19
+msgid "Subdivisions per Major Angular Division"
+msgstr ""
+
+#: ../share/extensions/grid_polar.inx.h:20
+msgid "Subdivisions per Major Circular Division"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:1
+msgid "1/10"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:2
+msgid "1/2"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:3
+msgid "1/3"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:4
+msgid "1/4"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:5
+msgid "1/5"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:6
+msgid "1/6"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:7
+msgid "1/7"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:8
+msgid "1/8"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:9
+msgid "1/9"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:10
+msgid "Custom..."
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:11
+msgid "Delete existing guides"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:12
+msgid "Golden ratio"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:13
+msgid "Guides creator"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:14
+msgid "Horizontal guide each"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:16
+msgid "Preset"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:18
+msgid "Rule-of-third"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:19
+msgid "Start from edges"
+msgstr ""
+
+#: ../share/extensions/guides_creator.inx.h:20
+msgid "Vertical guide each"
+msgstr ""
+
+#: ../share/extensions/handles.inx.h:1
+msgid "Draw Handles"
+msgstr ""
+
+#: ../share/extensions/hpgl_output.inx.h:1
+msgid "Export to an HP Graphics Language file"
+msgstr ""
+
+#: ../share/extensions/hpgl_output.inx.h:2
+msgid "HP Graphics Language file (*.hpgl)"
+msgstr ""
+
+#: ../share/extensions/hpgl_output.inx.h:3
+msgid "HPGL Output"
+msgstr ""
+
+#: ../share/extensions/hpgl_output.inx.h:4
+msgid "Mirror Y-axis"
+msgstr ""
+
+#: ../share/extensions/hpgl_output.inx.h:5
+msgid "Plot invisible layers"
+msgstr ""
+
+#: ../share/extensions/hpgl_output.inx.h:6
+msgid "X-origin (px)"
+msgstr ""
+
+#: ../share/extensions/hpgl_output.inx.h:7
+msgid "Y-origin (px)"
+msgstr ""
+
+#: ../share/extensions/hpgl_output.inx.h:8
+msgid "hpgl output flatness"
+msgstr ""
+
+#: ../share/extensions/inkscape_help_askaquestion.inx.h:1
+msgid "Ask Us a Question"
+msgstr ""
+
+#: ../share/extensions/inkscape_help_commandline.inx.h:1
+msgid "Command Line Options"
+msgstr ""
+
+#: ../share/extensions/inkscape_help_faq.inx.h:1
+msgid "FAQ"
+msgstr ""
+
+#: ../share/extensions/inkscape_help_keys.inx.h:1
+msgid "Keys and Mouse Reference"
+msgstr ""
+
+#: ../share/extensions/inkscape_help_manual.inx.h:1
+msgid "Inkscape Manual"
+msgstr ""
+
+#: ../share/extensions/inkscape_help_relnotes.inx.h:1
+msgid "New in This Version"
+msgstr ""
+
+#: ../share/extensions/inkscape_help_reportabug.inx.h:1
+msgid "Report a Bug"
+msgstr ""
+
+#: ../share/extensions/inkscape_help_svgspec.inx.h:1
+msgid "SVG 1.1 Specification"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:1
+msgid "Attribute to Interpolate"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:3
+msgid "End Value"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:5
+msgid "Float Number"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:7
+msgid ""
+"If you select \"Other\", you must know the SVG attributes to identify here "
+"this \"other\":"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:8
+msgid "Integer Number"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:9
+msgid "Interpolate Attribute in a group"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:11
+msgid "No Unit"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:13
+msgid "Other"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:14
+msgid "Other Attribute"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:15
+msgid "Other Attribute type"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:17
+msgid "Start Value"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:18
+#: ../share/extensions/polyhedron_3d.inx.h:43
+msgid "Style"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:19
+msgid "Tag"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:20
+msgid ""
+"This effect applies a value for any interpolatable attribute for all "
+"elements inside the selected group or for all elements in a multiple "
+"selection"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:21
+msgid "Transformation"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:22
+msgid "Translate X"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:23
+msgid "Translate Y"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:25
+msgid "Where to apply?"
+msgstr ""
+
+#: ../share/extensions/interp_att_g.inx.h:27
+#: ../share/extensions/web-set-att.inx.h:28
+#: ../share/extensions/web-transmit-att.inx.h:26
+msgid "••••••••••••••••••••••••••••••••••••••••••••••••"
+msgstr ""
+
+#: ../share/extensions/interp.inx.h:1
+msgid "Duplicate endpaths"
+msgstr ""
+
+#: ../share/extensions/interp.inx.h:2
+msgid "Exponent"
+msgstr ""
+
+#: ../share/extensions/interp.inx.h:4
+msgid "Interpolate"
+msgstr ""
+
+#: ../share/extensions/interp.inx.h:5
+msgid "Interpolate style"
+msgstr ""
+
+#: ../share/extensions/interp.inx.h:6
+msgid "Interpolation method"
+msgstr ""
+
+#: ../share/extensions/interp.inx.h:7
+msgid "Interpolation steps"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:1
+msgid ""
+"\n"
+"The path is generated by applying the \n"
+"substitutions of Rules to the Axiom, \n"
+"Order times. The following commands are \n"
+"recognized in Axiom and Rules:\n"
+"\n"
+"Any of A,B,C,D,E,F: draw forward \n"
+"\n"
+"Any of G,H,I,J,K,L: move forward \n"
+"\n"
+"+: turn left\n"
+"\n"
+"-: turn right\n"
+"\n"
+"|: turn 180 degrees\n"
+"\n"
+"[: remember point\n"
+"\n"
+"]: return to remembered point\n"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:21
+msgid "Axiom"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:22
+msgid "Axiom and rules"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:24
+msgid "L-system"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:25
+msgid "Left angle"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:28
+#, no-c-format
+msgid "Randomize angle (%)"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:30
+#, no-c-format
+msgid "Randomize step (%)"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:32
+msgid "Right angle"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:33
+msgid "Rules"
+msgstr ""
+
+#: ../share/extensions/lindenmayer.inx.h:34
+msgid "Step length (px)"
+msgstr ""
+
+#: ../share/extensions/lorem_ipsum.inx.h:1
+msgid "Lorem ipsum"
+msgstr ""
+
+#: ../share/extensions/lorem_ipsum.inx.h:2
+msgid "Number of paragraphs"
+msgstr ""
+
+#: ../share/extensions/lorem_ipsum.inx.h:3
+msgid "Paragraph length fluctuation (sentences)"
+msgstr ""
+
+#: ../share/extensions/lorem_ipsum.inx.h:4
+msgid "Sentences per paragraph"
+msgstr ""
+
+#: ../share/extensions/lorem_ipsum.inx.h:6
+msgid ""
+"This effect creates the standard \"Lorem Ipsum\" pseudolatin placeholder "
+"text. If a flowed text is selected, Lorem Ipsum is added to it; otherwise a "
+"new flowed text object, the size of the page, is created in a new layer."
+msgstr ""
+
+#: ../share/extensions/markers_strokepaint.inx.h:1
+msgid "Color Markers to Match Stroke"
+msgstr ""
+
+#: ../share/extensions/measure.inx.h:1
+msgid "Font size [px]"
+msgstr ""
+
+#. <param name="unit" type="string" _gui-text="Unit {km|m|cm|mm|in|px|pt}">mm</param>
+#: ../share/extensions/measure.inx.h:4
+msgid "Length Unit: "
+msgstr ""
+
+#: ../share/extensions/measure.inx.h:5
+msgid "Measure"
+msgstr ""
+
+#: ../share/extensions/measure.inx.h:6
+msgid "Measure Path"
+msgstr ""
+
+#: ../share/extensions/measure.inx.h:7
+msgid "Offset [px]"
+msgstr ""
+
+#: ../share/extensions/measure.inx.h:8
+msgid "Precision"
+msgstr ""
+
+#: ../share/extensions/measure.inx.h:9
+msgid "Scale Factor (Drawing:Real Length) = 1:"
+msgstr ""
+
+#: ../share/extensions/measure.inx.h:10
+msgid ""
+"This effect measures the length of the selected path and adds it as a text-"
+"on-path object with the selected unit. The number of significant digits can "
+"be controlled by the Precision field. The Offset field controls the distance "
+"from the text to the path. The Scale factor can be used to make measurements "
+"in scaled drawings. For example, if 1 cm in the drawing equals 2.5 m in the "
+"real world, Scale must be set to 250."
+msgstr ""
+
+#: ../share/extensions/motion.inx.h:1 ../share/extensions/restack.inx.h:1
+msgid "Angle"
+msgstr ""
+
+#: ../share/extensions/motion.inx.h:3
+msgid "Magnitude"
+msgstr ""
+
+#: ../share/extensions/motion.inx.h:4
+msgid "Motion"
+msgstr ""
+
+#: ../share/extensions/outline2svg.inx.h:1
+msgid "ASCII Text with outline markup"
+msgstr ""
+
+#: ../share/extensions/outline2svg.inx.h:2
+msgid "Text Outline File (*.outline)"
+msgstr ""
+
+#: ../share/extensions/outline2svg.inx.h:3
+msgid "Text Outline Input"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:2
+msgid "End t-value"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:4
+msgid "Isotropic scaling (uses smallest: width/xrange or height/yrange)"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:5
+msgid "Multiply t-range by 2*pi"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:6
+msgid "Parametric Curves"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:7
+msgid "Range and Sampling"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:10
+msgid "Samples"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:11
+msgid ""
+"Select a rectangle before calling the extension,\n"
+"it will determine X and Y scales.\n"
+"\n"
+"First derivatives are always determined numerically."
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:24
+msgid "Start t-value"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:26
+msgid "x-Function"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:27
+msgid "x-value of rectangle's left"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:28
+msgid "x-value of rectangle's right"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:29
+msgid "y-Function"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:30
+msgid "y-value of rectangle's bottom"
+msgstr ""
+
+#: ../share/extensions/param_curves.inx.h:31
+msgid "y-value of rectangle's top"
+msgstr ""
+
+#: ../share/extensions/pathalongpath.inx.h:1
+msgid "Copies of the pattern:"
+msgstr ""
+
+#: ../share/extensions/pathalongpath.inx.h:2
+msgid "Deformation type:"
+msgstr ""
+
+#: ../share/extensions/pathalongpath.inx.h:3
+#: ../share/extensions/pathscatter.inx.h:3
+msgid "Duplicate the pattern before deformation"
+msgstr ""
+
+#: ../share/extensions/pathalongpath.inx.h:6
+msgid "Pattern along Path"
+msgstr ""
+
+#: ../share/extensions/pathalongpath.inx.h:10
+msgid "Ribbon"
+msgstr ""
+
+#: ../share/extensions/pathalongpath.inx.h:13
+msgid "Snake"
+msgstr ""
+
+#: ../share/extensions/pathalongpath.inx.h:14
+#: ../share/extensions/pathscatter.inx.h:11
+msgid "Space between copies:"
+msgstr ""
+
+#: ../share/extensions/pathalongpath.inx.h:16
+msgid ""
+"This effect bends a pattern object along arbitrary \"skeleton\" paths. The "
+"pattern is the topmost object in the selection. (groups of paths/shapes/"
+"clones... allowed)"
+msgstr ""
+
+#: ../share/extensions/pathscatter.inx.h:1
+msgid "Cloned"
+msgstr ""
+
+#: ../share/extensions/pathscatter.inx.h:2
+msgid "Copied"
+msgstr ""
+
+#: ../share/extensions/pathscatter.inx.h:4
+msgid "Follow path orientation"
+msgstr ""
+
+#: ../share/extensions/pathscatter.inx.h:6
+msgid "Moved"
+msgstr ""
+
+#: ../share/extensions/pathscatter.inx.h:8
+msgid "Original pattern will be:"
+msgstr ""
+
+#: ../share/extensions/pathscatter.inx.h:12
+msgid "Stretch spaces to fit skeleton length"
+msgstr ""
+
+#: ../share/extensions/pathscatter.inx.h:14
+msgid ""
+"This effect scatters a pattern along arbitrary \"skeleton\" paths. The "
+"pattern must be the topmost object in the selection. Groups of paths, "
+"shapes, clones are allowed."
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:1
+msgid "Bleed (in)"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:2
+msgid "Bond Weight #"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:3
+msgid "Book Height (inches)"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:4
+msgid "Book Properties"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:5
+msgid "Book Width (inches)"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:6
+msgid "Caliper (inches)"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:7
+msgid "Cover"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:8
+msgid "Cover Thickness Measurement"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:9
+msgid "Interior Pages"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:10
+msgid "Note: Bond Weight # calculations are a best-guess estimate."
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:11
+msgid "Number of Pages"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:12
+msgid "Pages Per Inch (PPI)"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:13
+msgid "Paper Thickness Measurement"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:14
+msgid "Perfect-Bound Cover Template"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:16
+msgid "Remove existing guides"
+msgstr ""
+
+#: ../share/extensions/perfectboundcover.inx.h:18
+msgid "Specify Width"
+msgstr ""
+
+#: ../share/extensions/perspective.inx.h:2
+msgid "Perspective"
+msgstr ""
+
+#: ../share/extensions/plt_input.inx.h:1
+msgid "AutoCAD Plot Input"
+msgstr ""
+
+#: ../share/extensions/plt_input.inx.h:2
+#: ../share/extensions/plt_output.inx.h:2
+msgid "HP Graphics Language Plot file [AutoCAD] (*.plt)"
+msgstr ""
+
+#: ../share/extensions/plt_input.inx.h:3
+msgid "Open HPGL plotter files"
+msgstr ""
+
+#: ../share/extensions/plt_output.inx.h:1
+msgid "AutoCAD Plot Output"
+msgstr ""
+
+#: ../share/extensions/plt_output.inx.h:3
+msgid "Save a file for plotters"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:1
+msgid "3D Polyhedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:2
+msgid "Clockwise wound object"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:3
+msgid "Cube"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:4
+msgid "Cuboctahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:5
+msgid "Dodecahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:6
+msgid "Draw back-facing polygons"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:7
+msgid "Edge-Specified"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:8
+msgid "Edges"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:9
+msgid "Face-Specified"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:10
+msgid "Faces"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:11
+msgid "Filename:"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:12
+msgid "Fill color, Blue"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:13
+msgid "Fill color, Green"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:14
+msgid "Fill color, Red"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:16
+#, no-c-format
+msgid "Fill opacity, %"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:17
+msgid "Great Dodecahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:18
+msgid "Great Stellated Dodecahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:19
+msgid "Icosahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:20
+msgid "Light X"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:21
+msgid "Light Y"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:22
+msgid "Light Z"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:23
+msgid "Load from file"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:24
+msgid "Maximum"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:25
+msgid "Mean"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:26
+msgid "Minimum"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:27
+msgid "Model file"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:28
+msgid "Object Type"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:29
+msgid "Object:"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:30
+msgid "Octahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:32
+msgid "Rotate around:"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:33
+msgid "Rotation, degrees"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:34
+msgid "Scaling factor"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:35
+msgid "Shading"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:37
+msgid "Small Triambic Icosahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:38
+msgid "Snub Cube"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:39
+msgid "Snub Dodecahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:41
+#, no-c-format
+msgid "Stroke opacity, %"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:42
+msgid "Stroke width, px"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:44
+msgid "Tetrahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:45
+msgid "Then rotate around:"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:46
+msgid "Truncated Cube"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:47
+msgid "Truncated Dodecahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:48
+msgid "Truncated Icosahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:49
+msgid "Truncated Octahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:50
+msgid "Truncated Tetrahedron"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:51
+msgid "Vertices"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:52
+msgid "View"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:53
+msgid "X-Axis"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:54
+msgid "Y-Axis"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:55
+msgid "Z-Axis"
+msgstr ""
+
+#: ../share/extensions/polyhedron_3d.inx.h:56
+msgid "Z-sort faces by:"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:1
+msgid "Bleed Margin"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:2
+msgid "Bleed Marks"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:3
+msgid "Bottom:"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:4
+msgid "Canvas"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:5
+msgid "Color Bars"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:6
+msgid "Crop Marks"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:7
+msgid "Left:"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:8
+msgid "Marks"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:10
+msgid "Page Information"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:11
+msgid "Positioning"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:12
+msgid "Printing Marks"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:13
+msgid "Registration Marks"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:15
+msgid "Right:"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:16
+msgid "Set crop marks to"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:17
+msgid "Star Target"
+msgstr ""
+
+#: ../share/extensions/printing-marks.inx.h:18
+msgid "Top:"
+msgstr ""
+
+#: ../share/extensions/ps_input.inx.h:3
+msgid "PostScript Input"
+msgstr ""
+
+#: ../share/extensions/radiusrand.inx.h:1
+msgid "Jitter nodes"
+msgstr ""
+
+#: ../share/extensions/radiusrand.inx.h:2
+msgid "Maximum displacement in X, px"
+msgstr ""
+
+#: ../share/extensions/radiusrand.inx.h:3
+msgid "Maximum displacement in Y, px"
+msgstr ""
+
+#: ../share/extensions/radiusrand.inx.h:5
+msgid "Shift node handles"
+msgstr ""
+
+#: ../share/extensions/radiusrand.inx.h:6
+msgid "Shift nodes"
+msgstr ""
+
+#: ../share/extensions/radiusrand.inx.h:7
+msgid ""
+"This effect randomly shifts the nodes (and optionally node handles) of the "
+"selected path."
+msgstr ""
+
+#: ../share/extensions/radiusrand.inx.h:8
+msgid "Use normal distribution"
+msgstr ""
+
+#: ../share/extensions/render_alphabetsoup.inx.h:1
+msgid "Alphabet Soup"
+msgstr ""
+
+#: ../share/extensions/render_alphabetsoup.inx.h:2
+msgid "Random Seed"
+msgstr ""
+
+#: ../share/extensions/render_barcode.inx.h:1
+msgid "Bar Height:"
+msgstr ""
+
+#: ../share/extensions/render_barcode.inx.h:2
+msgid "Barcode"
+msgstr ""
+
+#: ../share/extensions/render_barcode.inx.h:3
+msgid "Barcode Data:"
+msgstr ""
+
+#: ../share/extensions/render_barcode.inx.h:4
+msgid "Barcode Type:"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:2
+msgid "Arbitrary Angle:"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:3
+msgid "Arrange"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:4
+msgid "Bottom"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:5
+msgid "Bottom to Top (90)"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:6
+msgid "Horizontal Point:"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:8
+msgid "Left to Right (0)"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:9
+msgid "Middle"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:10
+msgid "Radial Inward"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:11
+msgid "Radial Outward"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:12
+msgid "Restack"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:13
+msgid "Restack Direction:"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:15
+msgid "Right to Left (180)"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:16
+msgid "Top"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:17
+msgid "Top to Bottom (270)"
+msgstr ""
+
+#: ../share/extensions/restack.inx.h:18
+msgid "Vertical Point:"
+msgstr ""
+
+#: ../share/extensions/rtree.inx.h:1
+msgid "Initial size"
+msgstr ""
+
+#: ../share/extensions/rtree.inx.h:2
+msgid "Minimum size"
+msgstr ""
+
+#: ../share/extensions/rtree.inx.h:3
+msgid "Random Tree"
+msgstr ""
+
+#: ../share/extensions/rubberstretch.inx.h:2
+#, no-c-format
+msgid "Curve (%):"
+msgstr ""
+
+#: ../share/extensions/rubberstretch.inx.h:4
+msgid "Rubber Stretch"
+msgstr ""
+
+#: ../share/extensions/rubberstretch.inx.h:6
+#, no-c-format
+msgid "Strength (%):"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:1
+msgid "Embed rasters"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:2
+msgid "Enable id stripping"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:3
+msgid "Group collapsing"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:5
+msgid "Indent"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:6
+msgid "Keep editor data"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:8
+msgid "Optimized SVG (*.svg)"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:9
+msgid "Optimized SVG Output"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:11
+msgid "Scalable Vector Graphics"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:12
+msgid "Set precision"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:13
+msgid "Simplify colors"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:14
+msgid "Space"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:15
+msgid "Strip xml prolog"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:16
+msgid "Style to xml"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:17
+msgid "Tab"
+msgstr ""
+
+#: ../share/extensions/scour.inx.h:18
+msgid ""
+"This extension optimize the SVG file according to the following options:\n"
+"    * Simplify colors: convert all colors to #RRGGBB format.\n"
+"    * Style to xml: convert styles into XML attributes.\n"
+"    * Group collapsing: collapse &lt;g&gt; elements.\n"
+"    * Enable id stripping: remove all un-referenced ID attributes.\n"
+"    * Embed rasters: embed rasters as base64-encoded data.\n"
+"    * Keep editor data: don't remove Inkscape, Sodipodi or Adobe Illustrator "
+"elements and attributes.\n"
+"    * Strip xml prolog: don't output the xml prolog.\n"
+"    * Set precision: set number of significant digits (default: 5).\n"
+"    * Indent: indentation of the output: none, space, tab (default: space)."
+msgstr ""
+
+#: ../share/extensions/sk1_input.inx.h:1
+msgid "Open files saved in sK1 vector graphics editor"
+msgstr ""
+
+#: ../share/extensions/sk1_input.inx.h:2
+#: ../share/extensions/sk1_output.inx.h:2
+msgid "sK1 vector graphics files (.sk1)"
+msgstr ""
+
+#: ../share/extensions/sk1_input.inx.h:3
+msgid "sK1 vector graphics files input"
+msgstr ""
+
+#: ../share/extensions/sk1_output.inx.h:1
+msgid "File format for use in sK1 vector graphics editor"
+msgstr ""
+
+#: ../share/extensions/sk1_output.inx.h:3
+msgid "sK1 vector graphics files output"
+msgstr ""
+
+#: ../share/extensions/sk_input.inx.h:1
+msgid "A diagram created with the program Sketch"
+msgstr ""
+
+#: ../share/extensions/sk_input.inx.h:2
+msgid "Sketch Diagram (*.sk)"
+msgstr ""
+
+#: ../share/extensions/sk_input.inx.h:3
+msgid "Sketch Input"
+msgstr ""
+
+#: ../share/extensions/spirograph.inx.h:1
+msgid "Gear Placement"
+msgstr ""
+
+#: ../share/extensions/spirograph.inx.h:2
+msgid "Inside (Hypotrochoid)"
+msgstr ""
+
+#: ../share/extensions/spirograph.inx.h:3
+msgid "Outside (Epitrochoid)"
+msgstr ""
+
+#: ../share/extensions/spirograph.inx.h:4
+msgid "Quality (Default = 16)"
+msgstr ""
+
+#: ../share/extensions/spirograph.inx.h:5
+msgid "R - Ring Radius (px)"
+msgstr ""
+
+#: ../share/extensions/spirograph.inx.h:7
+msgid "Rotation (deg)"
+msgstr ""
+
+#: ../share/extensions/spirograph.inx.h:8
+msgid "Spirograph"
+msgstr ""
+
+#: ../share/extensions/spirograph.inx.h:9
+msgid "d - Pen Radius (px)"
+msgstr ""
+
+#: ../share/extensions/spirograph.inx.h:10
+msgid "r - Gear Radius (px)"
+msgstr ""
+
+#: ../share/extensions/straightseg.inx.h:1
+msgid "Behavior"
+msgstr ""
+
+#: ../share/extensions/straightseg.inx.h:4
+msgid "Straighten Segments"
+msgstr ""
+
+#: ../share/extensions/summersnight.inx.h:1
+msgid "Envelope"
+msgstr ""
+
+#: ../share/extensions/svg2xaml.inx.h:1 ../share/extensions/xaml2svg.inx.h:1
+msgid "Microsoft XAML (*.xaml)"
+msgstr ""
+
+#: ../share/extensions/svg2xaml.inx.h:2 ../share/extensions/xaml2svg.inx.h:2
+msgid "Microsoft's GUI definition format"
+msgstr ""
+
+#: ../share/extensions/svg2xaml.inx.h:3
+msgid "XAML Output"
+msgstr ""
+
+#: ../share/extensions/svg_and_media_zip_output.inx.h:1
+msgid "Compressed Inkscape SVG with media (*.zip)"
+msgstr ""
+
+#: ../share/extensions/svg_and_media_zip_output.inx.h:2
+msgid ""
+"Inkscape's native file format compressed with Zip and including all media "
+"files"
+msgstr ""
+
+#: ../share/extensions/svg_and_media_zip_output.inx.h:3
+msgid "ZIP Output"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:1
+msgid ""
+"(Select your system encoding. More information at http://docs.python.org/"
+"library/codecs.html#standard-encodings)"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:2
+msgid "(The day names list must start from Sunday)"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:3
+msgid "Automatically set size and position"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:4
+msgid "Calendar"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:5
+msgid "Char Encoding"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:7
+msgid "Configuration"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:8
+msgid "Day color"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:9
+msgid "Day names"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:10
+msgid "Fill empty day boxes with next month's days"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:11
+msgid ""
+"January February March April May June July August September October November "
+"December"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:13
+msgid "Localization"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:14
+msgid "Monday"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:15
+msgid "Month (0 for all)"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:16
+msgid "Month Margin"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:17
+msgid "Month Width"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:18
+msgid "Month color"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:19
+msgid "Month names"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:20
+msgid "Months per line"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:21
+msgid "Next month day color"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:23
+msgid "Saturday"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:24
+msgid "Saturday and Sunday"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:25
+msgid "Sun Mon Tue Wed Thu Fri Sat"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:26
+msgid "Sunday"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:27
+msgid "The options below have no influence when the above is checked."
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:28
+msgid "Week start day"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:29
+msgid "Weekday name color "
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:30
+msgid "Weekend"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:31
+msgid "Weekend day color"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:32
+msgid "Year (0 for current)"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:33
+msgid "Year color"
+msgstr ""
+
+#: ../share/extensions/svgcalendar.inx.h:34
+msgid "You may change the names for other languages:"
+msgstr ""
+
+#: ../share/extensions/text_braille.inx.h:1
+msgid "Convert to Braille"
+msgstr ""
+
+#: ../share/extensions/text_flipcase.inx.h:2
+msgid "fLIP cASE"
+msgstr ""
+
+#: ../share/extensions/text_lowercase.inx.h:2
+msgid "lowercase"
+msgstr ""
+
+#: ../share/extensions/text_randomcase.inx.h:2
+msgid "rANdOm CasE"
+msgstr ""
+
+#: ../share/extensions/text_replace.inx.h:1
+msgid "By:"
+msgstr ""
+
+#: ../share/extensions/text_replace.inx.h:2
+msgid "Replace text"
+msgstr ""
+
+#: ../share/extensions/text_replace.inx.h:3
+msgid "Replace:"
+msgstr ""
+
+#: ../share/extensions/text_sentencecase.inx.h:1
+msgid "Sentence case"
+msgstr ""
+
+#: ../share/extensions/text_titlecase.inx.h:2
+msgid "Title Case"
+msgstr ""
+
+#: ../share/extensions/text_uppercase.inx.h:2
+msgid "UPPERCASE"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:1
+msgid "Angle a / deg"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:2
+msgid "Angle b / deg"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:3
+msgid "Angle c / deg"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:4
+msgid "From Side a and Angles a, b"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:5
+msgid "From Side c and Angles a, b"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:6
+msgid "From Sides a, b and Angle a"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:7
+msgid "From Sides a, b and Angle c"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:8
+msgid "From Three Sides"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:11
+msgid "Side Length a / px"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:12
+msgid "Side Length b / px"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:13
+msgid "Side Length c / px"
+msgstr ""
+
+#: ../share/extensions/triangle.inx.h:14
+msgid "Triangle"
+msgstr ""
+
+#: ../share/extensions/txt2svg.inx.h:1
+msgid "ASCII Text"
+msgstr ""
+
+#: ../share/extensions/txt2svg.inx.h:2
+msgid "Text File (*.txt)"
+msgstr ""
+
+#: ../share/extensions/txt2svg.inx.h:3
+msgid "Text Input"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:1
+msgid "All selected ones set an attribute in the last one"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:2
+msgid "Attribute to set"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:3
+#: ../share/extensions/web-transmit-att.inx.h:3
+msgid "Compatibility with previews code to this event"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:4
+msgid ""
+"If you want to set more than one attribute, you must separate this with a "
+"space, and only with a space."
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:6
+#: ../share/extensions/web-transmit-att.inx.h:6
+msgid "Run it after"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:7
+#: ../share/extensions/web-transmit-att.inx.h:7
+msgid "Run it before"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:8
+msgid "Set Attributes"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:9
+msgid "Source and destination of setting"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:10
+msgid "The first selected sets an attribute in all others"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:11
+msgid "The list of values must have the same size as the attributes list."
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:12
+#: ../share/extensions/web-transmit-att.inx.h:10
+msgid "The next parameter is useful when you select more than two elements"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:13
+#: ../share/extensions/web-transmit-att.inx.h:11
+msgid ""
+"This effect adds a feature visible (or usable) only on a SVG enabled web "
+"browser (like Firefox)."
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:14
+msgid ""
+"This effect sets one or more attributes in the second selected element, when "
+"a defined event occurs on the first selected element."
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:15
+msgid "Value to set"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:16
+#: ../share/extensions/web-transmit-att.inx.h:14
+msgid "Web"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:17
+msgid "When should the set be done?"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:18
+#: ../share/extensions/web-transmit-att.inx.h:16
+msgid "on activate"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:19
+#: ../share/extensions/web-transmit-att.inx.h:17
+msgid "on blur"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:20
+#: ../share/extensions/web-transmit-att.inx.h:18
+msgid "on click"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:21
+#: ../share/extensions/web-transmit-att.inx.h:19
+msgid "on element loaded"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:22
+#: ../share/extensions/web-transmit-att.inx.h:20
+msgid "on focus"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:23
+#: ../share/extensions/web-transmit-att.inx.h:21
+msgid "on mouse down"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:24
+#: ../share/extensions/web-transmit-att.inx.h:22
+msgid "on mouse move"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:25
+#: ../share/extensions/web-transmit-att.inx.h:23
+msgid "on mouse out"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:26
+#: ../share/extensions/web-transmit-att.inx.h:24
+msgid "on mouse over"
+msgstr ""
+
+#: ../share/extensions/web-set-att.inx.h:27
+#: ../share/extensions/web-transmit-att.inx.h:25
+msgid "on mouse up"
+msgstr ""
+
+#: ../share/extensions/web-transmit-att.inx.h:1
+msgid "All selected ones transmit to the last one"
+msgstr ""
+
+#: ../share/extensions/web-transmit-att.inx.h:2
+msgid "Attribute to transmit"
+msgstr ""
+
+#: ../share/extensions/web-transmit-att.inx.h:4
+msgid ""
+"If you want to transmit more than one attribute, you should separate this "
+"with a space, and only with a space."
+msgstr ""
+
+#: ../share/extensions/web-transmit-att.inx.h:8
+msgid "Source and destination of transmitting"
+msgstr ""
+
+#: ../share/extensions/web-transmit-att.inx.h:9
+msgid "The first selected transmits to all others"
+msgstr ""
+
+#: ../share/extensions/web-transmit-att.inx.h:12
+msgid ""
+"This effect transmits one or more attributes from the first selected element "
+"to the second when an event occurs."
+msgstr ""
+
+#: ../share/extensions/web-transmit-att.inx.h:13
+msgid "Transmit Attributes"
+msgstr ""
+
+#: ../share/extensions/web-transmit-att.inx.h:15
+msgid "When to transmit"
+msgstr ""
+
+#: ../share/extensions/whirl.inx.h:1
+msgid "Amount of whirl"
+msgstr ""
+
+#: ../share/extensions/whirl.inx.h:3
+msgid "Rotation is clockwise"
+msgstr ""
+
+#: ../share/extensions/whirl.inx.h:4
+msgid "Whirl"
+msgstr ""
+
+#: ../share/extensions/wmf_input.inx.h:1
+#: ../share/extensions/wmf_output.inx.h:1
+msgid "A popular graphics file format for clipart"
+msgstr ""
+
+#: ../share/extensions/wmf_input.inx.h:2
+#: ../share/extensions/wmf_output.inx.h:2
+msgid "Windows Metafile (*.wmf)"
+msgstr ""
+
+#: ../share/extensions/wmf_input.inx.h:3
+#: ../share/extensions/wmf_output.inx.h:3
+msgid "Windows Metafile Input"
+msgstr ""
+
+#: ../share/extensions/xaml2svg.inx.h:3
+msgid "XAML Input"
+msgstr ""
diff --git a/src/libavoid/.dirstamp b/src/libavoid/.dirstamp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/libavoid/assertions.h b/src/libavoid/assertions.h
new file mode 100644 (file)
index 0000000..0725c44
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * vim: ts=4 sw=4 et tw=0 wm=0
+ *
+ * libavoid - Fast, Incremental, Object-avoiding Line Router
+ *
+ * Copyright (C) 2009  Monash University
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * See the file LICENSE.LGPL distributed with the library.
+ *
+ * Licensees holding a valid commercial license may use this file in
+ * accordance with the commercial license agreement provided with the 
+ * library.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ *
+ * Author(s):   Michael Wybrow <mjwybrow@users.sourceforge.net>
+*/
+
+#ifndef AVOID_ASSERTIONS_H
+#define AVOID_ASSERTIONS_H
+
+#ifdef NDEBUG 
+
+  #define COLA_ASSERT(expr)  static_cast<void>(0)
+
+#else // Not NDEBUG
+
+  #if defined(USE_ASSERT_EXCEPTIONS)
+
+    #include "libvpsc/assertions.h"
+
+  #else
+
+    #include <cassert>
+    #define COLA_ASSERT(expr)  assert(expr)
+
+  #endif
+
+#endif
+
+
+#endif // AVOID_ASSERTIONS_H
+
diff --git a/src/libavoid/geomtypes.cpp b/src/libavoid/geomtypes.cpp
new file mode 100644 (file)
index 0000000..10bb95a
--- /dev/null
@@ -0,0 +1,548 @@
+/*
+ * vim: ts=4 sw=4 et tw=0 wm=0
+ *
+ * libavoid - Fast, Incremental, Object-avoiding Line Router
+ *
+ * Copyright (C) 2004-2009  Monash University
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * See the file LICENSE.LGPL distributed with the library.
+ *
+ * Licensees holding a valid commercial license may use this file in
+ * accordance with the commercial license agreement provided with the 
+ * library.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ *
+ * Author(s):   Michael Wybrow <mjwybrow@users.sourceforge.net>
+*/
+
+
+#include <cmath>
+#include <cfloat>
+#include <cstdlib>
+
+#include "libavoid/geomtypes.h"
+#include "libavoid/shape.h"
+#include "libavoid/router.h"
+#include "libavoid/assertions.h"
+
+
+namespace Avoid
+{
+
+    
+Point::Point() :
+    id(0),
+    vn(kUnassignedVertexNumber)
+{
+}
+
+
+Point::Point(const double xv, const double yv) :
+    x(xv),
+    y(yv),
+    id(0),
+    vn(kUnassignedVertexNumber)
+{
+}
+
+
+bool Point::operator==(const Point& rhs) const
+{
+    if ((x == rhs.x) && (y == rhs.y))
+    {
+        return true;
+    }
+    return false;
+}
+
+
+bool Point::operator!=(const Point& rhs) const
+{
+    if ((x != rhs.x) || (y != rhs.y))
+    {
+        return true;
+    }
+    return false;
+}
+
+
+// Just defined to allow std::set<Point>.  Not particularly meaningful!
+bool Point::operator<(const Point& rhs) const
+{
+    if (x == rhs.x)
+    {
+        return (y < rhs.y);
+    }
+    return (x < rhs.x);
+}
+
+
+double& Point::operator[](const unsigned int dimension)
+{
+    COLA_ASSERT((dimension == 0) || (dimension == 1));
+    return ((dimension == 0) ? x : y);
+}
+
+
+const double& Point::operator[](const unsigned int dimension) const
+{
+    COLA_ASSERT((dimension == 0) || (dimension == 1));
+    return ((dimension == 0) ? x : y);
+}
+
+
+ReferencingPolygon::ReferencingPolygon(const Polygon& poly, const Router *router)
+    : PolygonInterface(),
+      _id(poly._id),
+      ps(poly.size())
+{
+    COLA_ASSERT(router != NULL);
+    for (size_t i = 0; i < poly.size(); ++i)
+    {
+        const Polygon *polyPtr = NULL;
+        for (ShapeRefList::const_iterator sh = router->shapeRefs.begin();
+                sh != router->shapeRefs.end(); ++sh) 
+        {
+            if ((*sh)->id() == poly.ps[i].id)
+            {
+                const Polygon& poly = (*sh)->polygon();
+                polyPtr = &poly;
+                break;
+            }
+        }
+        COLA_ASSERT(polyPtr != NULL);
+        ps[i] = std::make_pair(polyPtr, poly.ps[i].vn);
+    }
+}
+
+
+ReferencingPolygon::ReferencingPolygon()
+    : PolygonInterface()
+{
+    clear();
+}
+
+
+void ReferencingPolygon::clear(void)
+{
+    ps.clear();
+}
+
+
+bool ReferencingPolygon::empty(void) const
+{
+    return ps.empty();
+}
+
+
+size_t ReferencingPolygon::size(void) const
+{
+    return ps.size();
+}
+
+
+int ReferencingPolygon::id(void) const
+{
+    return _id;
+}
+
+
+const Point& ReferencingPolygon::at(size_t index) const 
+{
+    COLA_ASSERT(index < size());
+    const Polygon& poly = *(ps[index].first);
+    unsigned short poly_index = ps[index].second;
+    COLA_ASSERT(poly_index < poly.size());
+
+    return poly.ps[poly_index];
+}
+
+
+void PolygonInterface::getBoundingRect(double *minX, double *minY,
+        double *maxX, double *maxY) const
+{
+    double progressiveMinX = DBL_MAX;
+    double progressiveMinY = DBL_MAX;
+    double progressiveMaxX = -DBL_MAX;
+    double progressiveMaxY = -DBL_MAX;
+
+    for (size_t i = 0; i < size(); ++i)
+    {
+        progressiveMinX = std::min(progressiveMinX, at(i).x);
+        progressiveMinY = std::min(progressiveMinY, at(i).y);
+        progressiveMaxX = std::max(progressiveMaxX, at(i).x);
+        progressiveMaxY = std::max(progressiveMaxY, at(i).y);
+    }
+
+    if (minX)
+    {
+        *minX = progressiveMinX;
+    }
+    if (maxX)
+    {
+        *maxX = progressiveMaxX;
+    }
+    if (minY)
+    {
+        *minY = progressiveMinY;
+    }
+    if (maxY)
+    {
+        *maxY = progressiveMaxY;
+    }
+}
+
+
+Polygon::Polygon()
+    : PolygonInterface()
+{
+    clear();
+}
+
+
+Polygon::Polygon(const int pn)
+    : PolygonInterface(),
+      ps(pn)
+{
+}
+
+
+Polygon::Polygon(const PolygonInterface& poly)
+    : PolygonInterface(),
+      _id(poly.id()),
+      ps(poly.size())
+{
+    for (size_t i = 0; i < poly.size(); ++i)
+    {
+        ps[i] = poly.at(i);
+    }
+}
+
+
+void Polygon::clear(void)
+{
+    ps.clear();
+    ts.clear();
+}
+
+
+bool Polygon::empty(void) const
+{
+    return ps.empty();
+}
+
+
+size_t Polygon::size(void) const
+{
+    return ps.size();
+}
+
+
+int Polygon::id(void) const
+{
+    return _id;
+}
+
+
+const Point& Polygon::at(size_t index) const
+{
+    COLA_ASSERT(index < size());
+
+    return ps[index];
+}
+
+
+static const unsigned int SHORTEN_NONE  = 0;
+static const unsigned int SHORTEN_START = 1;
+static const unsigned int SHORTEN_END   = 2;
+static const unsigned int SHORTEN_BOTH  = SHORTEN_START | SHORTEN_END;
+
+// shorten_line():
+//     Given the two endpoints of a line segment, this function adjusts the
+//     endpoints of the line to shorten the line by shorten_length at either
+//     or both ends.
+//
+static void shorten_line(double& x1, double& y1, double& x2, double& y2, 
+        const unsigned int mode, const double shorten_length)
+{
+    if (mode == SHORTEN_NONE)
+    {
+        return;
+    }
+    
+    double rise = y1 - y2;
+    double run = x1 - x2;
+    double disty = fabs(rise);
+    double distx = fabs(run);
+
+    // Handle case where shorten length is greater than the length of the
+    // line segment.
+    if ((mode == SHORTEN_BOTH) &&
+            (((distx > disty) && ((shorten_length * 2) > distx)) ||
+             ((disty >= distx) && ((shorten_length * 2) > disty))))
+    {
+        x1 = x2 = x1 - (run / 2); 
+        y1 = y2 = y1 - (rise / 2); 
+        return;
+    }
+    else if ((mode == SHORTEN_START) && 
+            (((distx > disty) && (shorten_length > distx)) ||
+             ((disty >= distx) && (shorten_length > disty))))
+    {
+        x1 = x2;
+        y1 = y2;
+        return;
+    }
+    else if ((mode == SHORTEN_END) && 
+            (((distx > disty) && (shorten_length > distx)) ||
+             ((disty >= distx) && (shorten_length > disty))))
+    {
+        x2 = x1;
+        y2 = y1;
+        return;
+    }
+
+    // Handle orthogonal line segments.
+    if (x1 == x2)
+    {
+        // Vertical
+        int sign = (y1 < y2) ? 1: -1;
+        
+        if (mode & SHORTEN_START)
+        {
+            y1 += (sign * shorten_length);
+        }
+        if (mode & SHORTEN_END)
+        {
+            y2 -= (sign * shorten_length);
+        }
+        return;
+    }
+    else if (y1 == y2)
+    {
+        // Horizontal
+        int sign = (x1 < x2) ? 1: -1;
+        
+        if (mode & SHORTEN_START)
+        {
+            x1 += (sign * shorten_length);
+        }
+        if (mode & SHORTEN_END)
+        {
+            x2 -= (sign * shorten_length);
+        }
+        return;
+    }
+    
+    int xpos = (x1 < x2) ? -1 : 1;
+    int ypos = (y1 < y2) ? -1 : 1;
+    
+    double tangent = rise / run;
+   
+    if (mode & SHORTEN_END)
+    {
+        if (disty > distx)
+        {
+            y2 += shorten_length * ypos;
+            x2 += shorten_length * ypos * (1 / tangent);
+        }
+        else if (disty < distx)
+        {
+            y2 += shorten_length * xpos * tangent;
+            x2 += shorten_length * xpos;
+        }
+    }
+
+    if (mode & SHORTEN_START)
+    {
+        if (disty > distx)
+        {
+            y1 -= shorten_length * ypos;
+            x1 -= shorten_length * ypos * (1 / tangent);
+        }
+        else if (disty < distx)
+        {
+            y1 -= shorten_length * xpos * tangent;
+            x1 -= shorten_length * xpos;
+        }
+    }
+}
+
+
+void Polygon::translate(const double xDist, const double yDist)
+{
+    for (size_t i = 0; i < size(); ++i)
+    {
+        ps[i].x += xDist;
+        ps[i].y += yDist;
+    }
+}
+
+
+Polygon Polygon::simplify(void) const
+{
+    Polygon simplified = *this;
+    std::vector<Point>::iterator it = simplified.ps.begin();
+    if (it != simplified.ps.end()) ++it;
+
+    // Combine collinear line segments into single segments:
+    for (size_t j = 2; j < simplified.size(); )
+    {
+        if (vecDir(simplified.ps[j - 2], simplified.ps[j - 1], 
+                simplified.ps[j]) == 0)
+        {
+            // These three points make up two collinear segments, so just
+            // compine them into a single segment.
+            it = simplified.ps.erase(it);
+        }
+        else
+        {
+            ++j;
+            ++it;
+        }
+    }
+
+    return simplified;
+}
+
+
+#define mid(a, b) ((a < b) ? a + ((b - a) / 2) : b + ((a - b) / 2))
+
+
+// curvedPolyline():
+//     Returns a curved approximation of this multi-segment PolyLine, with 
+//     the corners replaced by smooth Bezier curves.  curve_amount describes
+//     how large to make the curves.
+//     The ts value for each point in the returned Polygon describes the 
+//     drawing operation: 'M' (move) marks the first point, a line segment 
+//     is marked with an 'L' and three 'C's (along with the previous point) 
+//     describe the control points of a Bezier curve.
+//
+Polygon Polygon::curvedPolyline(const double curve_amount,
+        const bool closed) const
+{
+    Polygon simplified = this->simplify();
+
+    Polygon curved;
+    size_t num_of_points = size();
+    if (num_of_points <= 2)
+    {
+        // There is only a single segment, do nothing.
+        curved = *this;
+        curved.ts.push_back('M');
+        curved.ts.push_back('L');
+        return curved;
+    }
+
+    // Build the curved polyline:
+    curved._id = _id;
+    double last_x = 0;
+    double last_y = 0;
+    if (closed)
+    {
+        double x1 = simplified.ps[0].x;
+        double y1 = simplified.ps[0].y;
+        double x2 = simplified.ps[1].x;
+        double y2 = simplified.ps[1].y;
+        shorten_line(x1, y1, x2, y2, SHORTEN_START, curve_amount);
+        curved.ps.push_back(Point(x1, y1));
+        curved.ts.push_back('M');
+    }
+    else
+    {
+        curved.ps.push_back(ps[0]);
+        curved.ts.push_back('M');
+    }
+   
+    size_t simpSize = simplified.size();
+    size_t finish = (closed) ? simpSize + 2 : simpSize;
+    for (size_t j = 1; j < finish; ++j)
+    {
+        double x1 = simplified.ps[(simpSize + j - 1) % simpSize].x;
+        double y1 = simplified.ps[(simpSize + j - 1) % simpSize].y;
+        double x2 = simplified.ps[j % simpSize].x;
+        double y2 = simplified.ps[j % simpSize].y;
+
+        double old_x = x1;
+        double old_y = y1;
+        
+        unsigned int mode = SHORTEN_BOTH;
+        if (!closed)
+        {
+            if (j == 1)
+            {
+                mode = SHORTEN_END;
+            }
+            else if (j == (size() - 1))
+            {
+                mode = SHORTEN_START;
+            }
+        }
+        shorten_line(x1, y1, x2, y2, mode, curve_amount);
+
+        if (j > 1)
+        {
+            curved.ts.insert(curved.ts.end(), 3, 'C');
+            curved.ps.push_back(Point(mid(last_x, old_x), mid(last_y, old_y)));
+            curved.ps.push_back(Point(mid(x1, old_x), mid(y1, old_y)));
+            curved.ps.push_back(Point(x1, y1));
+        }
+        if (closed && (j == (finish - 1)))
+        {
+            // Close the path.
+            curved.ts.push_back('Z');
+            curved.ps.push_back(Point(x1, y1));
+            break;
+        }
+        curved.ts.push_back('L');
+        curved.ps.push_back(Point(x2, y2));
+            
+        last_x = x2;
+        last_y = y2;
+    }
+    
+    return curved;
+}
+
+
+Rectangle::Rectangle(const Point& topLeft, const Point& bottomRight)
+    : Polygon(4)
+{
+    double xMin = std::min(topLeft.x, bottomRight.x);
+    double xMax = std::max(topLeft.x, bottomRight.x);
+    double yMin = std::min(topLeft.y, bottomRight.y);
+    double yMax = std::max(topLeft.y, bottomRight.y);
+
+    ps[0] = Point(xMax, yMin);
+    ps[1] = Point(xMax, yMax);
+    ps[2] = Point(xMin, yMax);
+    ps[3] = Point(xMin, yMin);
+}
+
+
+Rectangle::Rectangle(const Point& centre, const double width, 
+        const double height)
+{
+    double halfWidth  = width / 2.0;
+    double halfHeight = height / 2.0;
+    double xMin = centre.x - halfWidth;
+    double xMax = centre.x + halfWidth;
+    double yMin = centre.y - halfHeight;
+    double yMax = centre.y + halfHeight;
+
+    ps[0] = Point(xMax, yMin);
+    ps[1] = Point(xMax, yMax);
+    ps[2] = Point(xMin, yMax);
+    ps[3] = Point(xMin, yMin);
+}
+
+
+}
+
diff --git a/src/libavoid/makefile b/src/libavoid/makefile
new file mode 100644 (file)
index 0000000..e4f83a5
--- /dev/null
@@ -0,0 +1,17 @@
+# Convenience stub makefile to call the real Makefile.
+
+
+
+OBJEXT = o
+
+# Explicit so that it's the default rule.
+all:
+       cd .. && $(MAKE) libavoid/all
+
+clean %.a %.$(OBJEXT):
+       cd .. && $(MAKE) libavoid/$@
+
+.PHONY: all clean
+
+.SUFFIXES:
+.SUFFIXES: .a .$(OBJEXT)
diff --git a/src/libavoid/orthogonal.cpp b/src/libavoid/orthogonal.cpp
new file mode 100644 (file)
index 0000000..747fd1f
--- /dev/null
@@ -0,0 +1,2343 @@
+/*
+ * vim: ts=4 sw=4 et tw=0 wm=0
+ *
+ * libavoid - Fast, Incremental, Object-avoiding Line Router
+ *
+ * Copyright (C) 2009  Monash University
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * See the file LICENSE.LGPL distributed with the library.
+ *
+ * Licensees holding a valid commercial license may use this file in
+ * accordance with the commercial license agreement provided with the 
+ * library.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ *
+ * Author(s):   Michael Wybrow <mjwybrow@users.sourceforge.net>
+*/
+
+
+#include <cstdlib>
+#include <cfloat>
+#include <cmath>
+#include <set>
+#include <list>
+#include <algorithm>
+
+#include "libavoid/router.h"
+#include "libavoid/geomtypes.h"
+#include "libavoid/shape.h"
+#include "libavoid/orthogonal.h"
+#include "libavoid/connector.h"
+#include "libavoid/vpsc.h"
+#include "libavoid/assertions.h"
+
+#ifdef LIBAVOID_SDL
+  #include <SDL_gfxPrimitives.h>
+#endif
+
+
+namespace Avoid {
+
+
+static const double CHANNEL_MAX = 100000000;
+
+static const size_t XDIM = 0;
+static const size_t YDIM = 1;
+
+
+class ShiftSegment 
+{
+    public:
+        // For shiftable segments.
+        ShiftSegment(ConnRef *conn, const size_t low, const size_t high, 
+                bool isSBend, const size_t dim, double minLim, double maxLim)
+            : connRef(conn),
+              indexLow(low),
+              indexHigh(high),
+              sBend(isSBend),
+              fixed(false),
+              dimension(dim),
+              variable(NULL),
+              minSpaceLimit(minLim),
+              maxSpaceLimit(maxLim)
+        {
+        }
+        // For fixed segments.
+        ShiftSegment(ConnRef *conn, const size_t low, const size_t high, 
+                const size_t dim)
+            : connRef(conn),
+              indexLow(low),
+              indexHigh(high),
+              sBend(false),
+              fixed(true),
+              dimension(dim),
+              variable(NULL)
+        {
+            // This has no space to shift.
+            minSpaceLimit = lowPoint()[dim];
+            maxSpaceLimit = lowPoint()[dim];
+        }
+        Point& lowPoint(void)
+        {
+            return connRef->displayRoute().ps[indexLow];
+        }
+        Point& highPoint(void)
+        {
+            return connRef->displayRoute().ps[indexHigh];
+        }
+        const Point& lowPoint(void) const
+        {
+            return connRef->displayRoute().ps[indexLow];
+        }
+        const Point& highPoint(void) const 
+        {
+            return connRef->displayRoute().ps[indexHigh];
+        }
+        const int fixedOrder(bool& isFixed) const
+        {
+            if (fixed)
+            {
+                isFixed = true;
+                return 0;
+            }
+            if (lowC())
+            {
+                return 1;
+            }
+            else if (highC())
+            {
+                return -1;
+            }
+            return 0;
+        }
+        const int order(void) const
+        {
+            if (lowC())
+            {
+                return -1;
+            }
+            else if (highC())
+            {
+                return 1;
+            }
+            return 0;
+        }
+        bool operator<(const ShiftSegment& rhs) const
+        {
+            const Point& lowPt = lowPoint();
+            const Point& rhsLowPt = rhs.lowPoint();
+            
+            if (lowPt[dimension] != rhsLowPt[dimension])
+            {
+                return lowPt[dimension] < rhsLowPt[dimension];
+            }
+            return this < &rhs;
+        }
+        // This counts segments that are colliear and share an endpoint as
+        // overlapping.  This allows them to be nudged apart where possible.
+        bool overlapsWith(const ShiftSegment& rhs, const size_t dim) const
+        {
+            size_t altDim = (dim + 1) % 2;
+            const Point& lowPt = lowPoint();
+            const Point& highPt = highPoint();
+            const Point& rhsLowPt = rhs.lowPoint();
+            const Point& rhsHighPt = rhs.highPoint();
+            if ( (lowPt[altDim] <= rhsHighPt[altDim]) &&
+                    (rhsLowPt[altDim] <= highPt[altDim]))
+            {
+                if ( (minSpaceLimit <= rhs.maxSpaceLimit) &&
+                        (rhs.minSpaceLimit <= maxSpaceLimit))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        ConnRef *connRef;
+        size_t indexLow;
+        size_t indexHigh;
+        bool sBend;
+        bool fixed;
+        size_t dimension;
+        Variable *variable;
+        double minSpaceLimit;
+        double maxSpaceLimit;
+    private:
+        const bool lowC(void) const
+        {
+            // This is true if this is a cBend and its adjoining points
+            // are at lower positions.
+            if (!sBend && !fixed && (minSpaceLimit == lowPoint()[dimension]))
+            {
+                return true;
+            }
+            return false;
+        }
+        const bool highC(void) const
+        {
+            // This is true if this is a cBend and its adjoining points
+            // are at higher positions.
+            if (!sBend && !fixed && (maxSpaceLimit == lowPoint()[dimension]))
+            {
+                return true;
+            }
+            return false;
+        }
+};
+typedef std::list<ShiftSegment> ShiftSegmentList;
+
+bool cmpShiftSegment(const ShiftSegment& u, const ShiftSegment& v)
+{
+    return u < v;
+}
+
+
+struct Node;
+struct CmpNodePos { bool operator()(const Node* u, const Node* v) const; };
+
+typedef std::set<Node*,CmpNodePos> NodeSet;
+struct Node 
+{
+    ShapeRef *v;
+    VertInf *c;
+    ShiftSegment *ss;
+    double pos;
+    double min[2], max[2];
+    Node *firstAbove, *firstBelow;
+    NodeSet::iterator iter;
+
+    Node(ShapeRef *v, const double p)
+        : v(v),
+          c(NULL),
+          ss(NULL),
+          pos(p),
+          firstAbove(NULL),
+          firstBelow(NULL)
+    {   
+        //COLA_ASSERT(r->width()<1e40);
+        v->polygon().getBoundingRect(&min[0], &min[1], &max[0], &max[1]);
+    }   
+    Node(VertInf *c, const double p)
+        : v(NULL),
+          c(c),
+          ss(NULL),
+          pos(p),
+          firstAbove(NULL),
+          firstBelow(NULL)
+    {
+        min[0] = max[0] = c->point.x;
+        min[1] = max[1] = c->point.y;
+    }   
+    Node(ShiftSegment *ss, const double p)
+        : v(NULL),
+          c(NULL),
+          ss(ss),
+          pos(p),
+          firstAbove(NULL),
+          firstBelow(NULL)
+    {
+        // These values shouldn't ever be used, so they don't matter.
+        min[0] = max[0] = min[1] = max[1] = 0;
+    }   
+    ~Node() 
+    {
+    }
+    // Find the first Node above in the scanline that is a shape edge,
+    // and does not have an open or close event at this position (meaning
+    // it is just about to be removed).
+    double firstObstacleAbove(size_t dim)
+    {
+        Node *curr = firstAbove;
+        while (curr && (curr->ss || (curr->max[dim] > pos)))
+        {
+            curr = curr->firstAbove;
+        }
+       
+        if (curr)
+        {
+            return curr->max[dim];
+        }
+        return -DBL_MAX;
+    }
+    // Find the first Node below in the scanline that is a shape edge,
+    // and does not have an open or close event at this position (meaning
+    // it is just about to be removed).
+    double firstObstacleBelow(size_t dim)
+    {
+        Node *curr = firstBelow;
+        while (curr && (curr->ss || (curr->min[dim] < pos)))
+        {
+            curr = curr->firstBelow;
+        }
+        
+        if (curr)
+        {
+            return curr->min[dim];
+        }
+        return DBL_MAX;
+    }
+    // Mark all connector segments above in the scanline as being able 
+    // to see to this shape edge.
+    void markShiftSegmentsAbove(size_t dim)
+    {
+        Node *curr = firstAbove;
+        while (curr && (curr->ss || (curr->pos > min[dim])))
+        {
+            if (curr->ss && (curr->pos <= min[dim]))
+            {
+                curr->ss->maxSpaceLimit = 
+                        std::min(min[dim], curr->ss->maxSpaceLimit);
+            }
+            curr = curr->firstAbove;
+        }
+    }
+    // Mark all connector segments below in the scanline as being able 
+    // to see to this shape edge.
+    void markShiftSegmentsBelow(size_t dim)
+    {
+        Node *curr = firstBelow;
+        while (curr && (curr->ss || (curr->pos < max[dim])))
+        {
+            if (curr->ss && (curr->pos >= max[dim]))
+            {
+                curr->ss->minSpaceLimit = 
+                        std::max(max[dim], curr->ss->minSpaceLimit);
+            }
+            curr = curr->firstBelow;
+        }
+    }
+    bool findFirstPointAboveAndBelow(const size_t dim, double& firstAbovePos,
+            double& firstBelowPos, double& lastAbovePos, double& lastBelowPos)
+    {
+        bool clearVisibility = true;
+        firstAbovePos = -DBL_MAX;
+        firstBelowPos = DBL_MAX;
+        // We start looking left from the right side of the shape, 
+        // and vice versa. 
+        lastAbovePos = max[dim];
+        lastBelowPos = min[dim];
+
+        // Find the first blocking edge above this point.  Don't count the
+        // edges as we are travelling out of shapes we are inside, but then
+        // mark clearVisibility as false.
+        Node *curr = firstAbove;
+        while (curr && (curr->max[dim] > min[dim]))
+        {
+            lastAbovePos = std::min(curr->min[dim], lastAbovePos);
+            if ((curr->max[dim] >= min[dim]) && (curr->max[dim] <= max[dim]))
+            {
+                lastAbovePos = std::min(curr->max[dim], lastAbovePos);
+            }
+            lastBelowPos = std::max(curr->max[dim], lastBelowPos);
+            clearVisibility = false;
+            curr = curr->firstAbove;
+        }
+        if (curr)
+        {
+            firstAbovePos = curr->max[dim];
+        }
+        while (curr)
+        {
+            // There might be a larger shape after this one in the ordering.
+            if (curr->max[dim] < min[dim])
+            {
+                firstAbovePos = std::max(curr->max[dim], firstAbovePos);
+            }
+            curr = curr->firstAbove;
+        }
+        
+        // Find the first blocking edge below this point.  Don't count the
+        // edges as we are travelling out of shapes we are inside, but then
+        // mark clearVisibility as false.
+        curr = firstBelow;
+        while (curr && (curr->min[dim] < max[dim]))
+        {
+            lastBelowPos = std::max(curr->max[dim], lastBelowPos);
+            if ((curr->min[dim] >= min[dim]) && (curr->min[dim] <= max[dim]))
+            {
+                lastBelowPos = std::max(curr->min[dim], lastBelowPos);
+            }
+            lastAbovePos = std::min(curr->min[dim], lastAbovePos);
+            clearVisibility = false;
+            curr = curr->firstBelow;
+        }
+        if (curr)
+        {
+            firstBelowPos = curr->min[dim];
+        }
+        while (curr)
+        {
+            // There might be a larger shape after this one in the ordering.
+            if (curr->min[dim] > max[dim])
+            {
+                firstBelowPos = std::min(curr->min[dim], firstBelowPos);
+            }
+            curr = curr->firstBelow;
+        }
+
+        return clearVisibility;
+    }
+    double firstPointAbove(size_t dim) 
+    { 
+        Node *curr = firstAbove; 
+        while (curr && (curr->max[dim] >= pos)) 
+        { 
+            curr = curr->firstAbove; 
+        } 
+        
+        if (curr) 
+        { 
+            return curr->max[dim]; 
+        } 
+        return -DBL_MAX; 
+    } 
+    double firstPointBelow(size_t dim) 
+    { 
+        Node *curr = firstBelow; 
+        while (curr && (curr->min[dim] <= pos)) 
+        { 
+            curr = curr->firstBelow; 
+        } 
+         
+        if (curr) 
+        { 
+            return curr->min[dim]; 
+        } 
+        return DBL_MAX; 
+    } 
+    // This is a bit inefficient, but we won't need to do it once we have 
+    // connection points.
+    bool isInsideShape(size_t dimension)
+    {
+        for (Node *curr = firstBelow; curr; curr = curr->firstBelow)
+        {
+            if ((curr->min[dimension] < pos) && (pos < curr->max[dimension]))
+            {
+                return true;
+            }
+        }
+        for (Node *curr = firstAbove; curr; curr = curr->firstAbove)
+        {
+            if ((curr->min[dimension] < pos) && (pos < curr->max[dimension]))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+};
+
+
+bool CmpNodePos::operator() (const Node* u, const Node* v) const 
+{
+    if (u->pos != v->pos) 
+    {
+        return u->pos < v->pos;
+    }
+    
+    // Use the pointers to the base objects to differentiate them.
+    void *up = (u->v) ? (void *) u->v : 
+            ((u->c) ? (void *) u->c : (void *) u->ss);
+    void *vp = (v->v) ? (void *) v->v : 
+            ((v->c) ? (void *) v->c : (void *) v->ss);
+    return up < vp;
+}
+
+
+// Note: Open must come first.
+typedef enum {
+    Open = 1,
+    SegOpen = 2,
+    ConnPoint = 3, 
+    SegClose = 4,
+    Close = 5
+} EventType;
+
+
+struct Event
+{
+    Event(EventType t, Node *v, double p) 
+        : type(t),
+          v(v),
+          pos(p)
+    {};
+    EventType type;
+    Node *v;
+    double pos;
+};
+
+Event **events;
+
+
+// Used for quicksort.  Must return <0, 0, or >0.
+int compare_events(const void *a, const void *b)
+{
+       Event *ea = *(Event**) a;
+       Event *eb = *(Event**) b;
+    if (ea->pos != eb->pos)
+    {
+        return (ea->pos < eb->pos) ? -1 : 1;
+    }
+    if (ea->type != eb->type)
+    {
+        return ea->type - eb->type;
+    }
+    COLA_ASSERT(ea->v != eb->v);
+    return ea->v - eb->v;
+}
+
+
+// Returns a bitfield of the direction of visibility (in this dimension)
+// made up of ConnDirDown (for visibility towards lower position values) 
+// and ConnDirUp (for visibility towards higher position values).
+//
+static ConnDirFlags getPosVertInfDirection(VertInf *v, size_t dim)
+{
+    if (dim == XDIM) // X-dimension
+    {
+        unsigned int dirs = v->visDirections & (ConnDirLeft | ConnDirRight);
+        if (dirs == (ConnDirLeft | ConnDirRight))
+        {
+            return (ConnDirDown | ConnDirUp);
+        }
+        else if (dirs == ConnDirLeft)
+        {
+            return ConnDirDown;
+        }
+        else if (dirs == ConnDirRight)
+        {
+            return ConnDirUp;
+        }
+    }
+    else if (dim == YDIM) // Y-dimension
+    {
+        unsigned int dirs = v->visDirections & (ConnDirDown | ConnDirUp);
+        if (dirs == (ConnDirDown | ConnDirUp))
+        {
+            return (ConnDirDown | ConnDirUp);
+        }
+        else if (dirs == ConnDirDown)
+        {
+            // For libavoid the Y-axis points downwards, so in terms of 
+            // smaller or larger position values, Down is Up and vice versa.
+            return ConnDirUp;
+        }
+        else if (dirs == ConnDirUp)
+        {
+            // For libavoid the Y-axis points downwards, so in terms of 
+            // smaller or larger position values, Down is Up and vice versa.
+            return ConnDirDown;
+        }
+    }
+
+    // Can occur for ConnDirNone visibility.
+    return ConnDirNone;
+}
+
+
+struct PosVertInf
+{
+    PosVertInf(double p, VertInf *vI, ConnDirFlags d = ConnDirNone)
+        : pos(p),
+          vert(vI),
+          dir(d)
+    {
+    }
+    
+    bool operator<(const PosVertInf& rhs) const 
+    {
+        if (pos != rhs.pos)
+        {
+            return pos < rhs.pos;
+        }
+        return vert < rhs.vert;
+    }
+
+    double pos;
+    VertInf *vert;
+
+    // A bitfield marking the direction of visibility (in this dimension)
+    // made up of ConnDirDown (for visibility towards lower position values) 
+    // and ConnDirUp (for visibility towards higher position values).
+    //
+    ConnDirFlags dir;
+};
+
+
+struct CmpVertInf
+{ 
+    bool operator()(const VertInf* u, const VertInf* v) const
+    {
+        // Comparator for VertSet, an ordered set of VertInf pointers.
+        // It is assumed vertical sets of points will all have the same
+        // x position and horizontal sets all share a y position, so this
+        // method can be used to sort both these sets.
+        COLA_ASSERT((u->point.x == v->point.x) || (u->point.y == v->point.y));
+        if (u->point.x != v->point.x)
+        {
+            return u->point.x < v->point.x;
+        }
+        else if (u->point.y != v->point.y)
+        {
+            return u->point.y < v->point.y;
+        }
+        return u < v;
+    }
+};
+
+
+typedef std::set<VertInf *, CmpVertInf> VertSet;
+
+// A set of points to break the line segment, 
+// along with vertices for these points.
+typedef std::set<PosVertInf> BreakpointSet;
+
+// Temporary structure used to store the possible horizontal visibility 
+// lines arising from the vertical sweep.
+class LineSegment 
+{
+public:
+    LineSegment(const double& b, const double& f, const double& p, 
+            bool ss = false, VertInf *bvi = NULL, VertInf *fvi = NULL)
+        : begin(b),
+          finish(f),
+          pos(p),
+          shapeSide(false)
+    {
+        COLA_ASSERT(begin < finish);
+
+        if (bvi)
+        {
+            vertInfs.insert(bvi);
+        }
+        if (fvi)
+        {
+            vertInfs.insert(fvi);
+        }
+    }
+    LineSegment(const double& bf, const double& p, VertInf *bfvi = NULL)
+        : begin(bf),
+          finish(bf),
+          pos(p),
+          shapeSide(false)
+    {
+        if (bfvi)
+        {
+            vertInfs.insert(bfvi);
+        }
+    }
+    // Order by begin, pos, finish.
+    bool operator<(const LineSegment& rhs) const 
+    {
+        if (begin != rhs.begin)
+        {
+            return begin < rhs.begin;
+        }
+        if (pos != rhs.pos)
+        {
+            return pos < rhs.pos;
+        }
+        if (finish != rhs.finish)
+        {
+            return finish < rhs.finish;
+        }
+        COLA_ASSERT(shapeSide == rhs.shapeSide);
+        return false;
+    }
+
+    bool overlaps(const LineSegment& rhs) const
+    {
+        if ((begin == rhs.begin) && (pos == rhs.pos) &&
+                (finish == rhs.finish))
+        {
+            // Lines are exactly equal.
+            return true;
+        }
+        
+        if (pos == rhs.pos)
+        {
+            if (((begin >= rhs.begin) && (begin <= rhs.finish)) ||
+                ((rhs.begin >= begin) && (rhs.begin <= finish)) )
+            {
+                // They are colinear and overlap by some amount.
+                return true;
+            }
+        }
+        return false;
+    }
+
+    void mergeVertInfs(const LineSegment& segment)
+    {
+        begin = std::min(begin, segment.begin);
+        finish = std::max(finish, segment.finish);
+        vertInfs.insert(segment.vertInfs.begin(), segment.vertInfs.end());
+    }
+    
+    VertInf *beginVertInf(void) const
+    {
+        if (vertInfs.empty())
+        {
+            return NULL;
+        }
+        return *vertInfs.begin();
+    }
+    VertInf *finishVertInf(void) const
+    {
+        if (vertInfs.empty())
+        {
+            return NULL;
+        }
+        return *vertInfs.rbegin();
+    }
+
+    VertInf *commitPositionX(Router *router, double posX)
+    {
+        VertInf *found = NULL;
+        for (VertSet::iterator v = vertInfs.begin();
+                v != vertInfs.end(); ++v)
+        {
+            if ((*v)->point.x == posX)
+            {
+                found = *v;
+                break;
+            }
+        }
+        if (!found)
+        {
+            found = new VertInf(router, dummyOrthogID, Point(posX, pos));
+            vertInfs.insert(found);
+        }
+        return found;
+    }
+    // Set begin endpoint vertex if none has been assigned.
+    void commitBegin(Router *router, VertInf *vert = NULL)
+    {
+        if (vert)
+        {
+            vertInfs.insert(vert);
+        }
+
+        if (vertInfs.empty() ||
+                ((*vertInfs.begin())->point.x != begin))
+        {
+            vertInfs.insert(new
+                    VertInf(router, dummyOrthogID, Point(begin, pos)));
+        }
+    }
+
+    // Set begin endpoint vertex if none has been assigned.
+    void commitFinish(Router *router, VertInf *vert = NULL)
+    {
+        if (vert)
+        {
+            vertInfs.insert(vert);
+        }
+
+        if (vertInfs.empty() ||
+                ((*vertInfs.rbegin())->point.x != finish))
+        {
+            vertInfs.insert(new
+                    VertInf(router, dummyOrthogID, Point(finish, pos)));
+        }
+    }
+
+    // Converts a section of the points list to a set of breakPoints.  
+    // Returns the first of the intersection points occuring at finishPos.
+    VertSet::iterator addSegmentsUpTo(Router *router, double finishPos)
+    {
+        VertSet::iterator firstIntersectionPt = vertInfs.end();
+        for (VertSet::iterator vert = vertInfs.begin(); 
+                vert != vertInfs.end(); ++vert)
+        {
+            if ((*vert)->point.x > finishPos)
+            {
+                // We're done.
+                break;
+            }
+            
+            breakPoints.insert(PosVertInf((*vert)->point.x, (*vert),
+                        getPosVertInfDirection(*vert, XDIM)));
+
+            if ((firstIntersectionPt == vertInfs.end()) && 
+                    ((*vert)->point.x == finishPos))
+            {
+                firstIntersectionPt = vert;
+            }
+        }
+        // Returns the first of the intersection points at finishPos.
+        return firstIntersectionPt;
+    }
+
+    // Add visibility edge(s) for this segment.  There may be multiple if 
+    // one of the endpoints is shared by multiple connector endpoints.
+    void addEdgeHorizontal(Router *router)
+    {
+        commitBegin(router);
+        commitFinish(router);
+        
+        addSegmentsUpTo(router, finish);
+    }
+
+    // Add visibility edge(s) for this segment up until an intersection.
+    // Then, move the segment beginning to the intersection point, so we
+    // later only consider the remainder of the segment.
+    // There may be multiple segments added to the graph if the beginning 
+    // endpoint of the segment is shared by multiple connector endpoints.
+    VertSet addEdgeHorizontalTillIntersection(Router *router, 
+            LineSegment& vertLine)
+    {
+        VertSet intersectionSet;
+
+        commitBegin(router);
+
+        // Does a vertex already exist for this point.
+        commitPositionX(router, vertLine.pos);
+   
+        // Generate segments and set end iterator to the first point 
+        // at the intersection position.
+        VertSet::iterator restBegin = addSegmentsUpTo(router, vertLine.pos);
+
+        // Add the intersections points to intersectionSet.
+        VertSet::iterator restEnd = restBegin;
+        while ((restEnd != vertInfs.end()) && 
+                (*restEnd)->point.x == vertLine.pos)
+        {
+            ++restEnd;
+        }
+        intersectionSet.insert(restBegin, restEnd);
+
+        // Adjust segment to remove processed portion.
+        begin = vertLine.pos;
+        vertInfs.erase(vertInfs.begin(), restBegin);
+
+        return intersectionSet;
+    }
+                
+    // Insert vertical breakpoints.
+    void insertBreakpointsBegin(Router *router, LineSegment& vertLine)
+    {
+        VertInf *vert = NULL;
+        if (pos == vertLine.begin && vertLine.beginVertInf())
+        {
+            vert = vertLine.beginVertInf();
+        }
+        else if (pos == vertLine.finish && vertLine.finishVertInf())
+        {
+            vert = vertLine.finishVertInf();
+        }
+        commitBegin(router, vert);
+
+        for (VertSet::iterator v = vertInfs.begin();
+                v != vertInfs.end(); ++v)
+        {
+            if ((*v)->point.x == begin)
+            {
+                vertLine.breakPoints.insert(PosVertInf(pos, *v, 
+                        getPosVertInfDirection(*v, YDIM)));
+            }
+        }
+    }
+
+    // Insert vertical breakpoints.
+    void insertBreakpointsFinish(Router *router, LineSegment& vertLine)
+    {
+        VertInf *vert = NULL;
+        if (pos == vertLine.begin && vertLine.beginVertInf())
+        {
+            vert = vertLine.beginVertInf();
+        }
+        else if (pos == vertLine.finish && vertLine.finishVertInf())
+        {
+            vert = vertLine.finishVertInf();
+        }
+        commitFinish(router, vert);
+
+        for (VertSet::iterator v = vertInfs.begin();
+                v != vertInfs.end(); ++v)
+        {
+            if ((*v)->point.x == finish)
+            {
+                vertLine.breakPoints.insert(PosVertInf(pos, *v,
+                        getPosVertInfDirection(*v, YDIM)));
+            }
+        }
+    }
+    void generateVisibilityEdgesFromBreakpointSet(Router *router, size_t dim)
+    {
+        if ((breakPoints.begin())->pos != begin)
+        {
+            if (!beginVertInf())
+            {
+                Point point(pos, pos);
+                point[dim] = begin;
+                // Add begin point if it didn't intersect another line.
+                VertInf *vert = new VertInf(router, dummyOrthogID, point);
+                breakPoints.insert(PosVertInf(begin, vert));
+            }
+        }
+        if ((breakPoints.rbegin())->pos != finish)
+        {
+            if (!finishVertInf())
+            {
+                Point point(pos, pos);
+                point[dim] = finish;
+                // Add finish point if it didn't intersect another line.
+                VertInf *vert = new VertInf(router, dummyOrthogID, point);
+                breakPoints.insert(PosVertInf(finish, vert));
+            }
+        }
+
+        const bool orthogonal = true;
+        BreakpointSet::iterator vert, last;
+        for (vert = last = breakPoints.begin(); vert != breakPoints.end();)
+        {
+            BreakpointSet::iterator firstPrev = last;
+            while (last->vert->point[dim] != vert->vert->point[dim])
+            {
+                COLA_ASSERT(vert != last);
+                // Assert points are not at the same position.
+                COLA_ASSERT(vert->vert->point != last->vert->point);
+
+                if ( !(vert->vert->id.isShape || last->vert->id.isShape))
+                {
+                    // Here we have a pair of two endpoints that are both
+                    // connector endpoints and both are inside a shape.
+                    
+                    // Give vert visibility back to the first non-connector
+                    // endpoint vertex (i.e., the side of the shape).
+                    BreakpointSet::iterator side = last;
+                    while (!side->vert->id.isShape)
+                    {
+                        if (side == breakPoints.begin())
+                        {
+                            break;
+                        }
+                        --side;
+                    }
+                    bool canSeeDown = (vert->dir & ConnDirDown);
+                    if (canSeeDown && side->vert->id.isShape)
+                    {
+                        EdgeInf *edge = new 
+                                EdgeInf(side->vert, vert->vert, orthogonal);
+                        edge->setDist(vert->vert->point[dim] - 
+                                side->vert->point[dim]);
+                    }
+
+                    // Give last visibility back to the first non-connector
+                    // endpoint vertex (i.e., the side of the shape).
+                    side = vert;
+                    while ((side != breakPoints.end()) && 
+                            !side->vert->id.isShape)
+                    {
+                        ++side;
+                    }
+                    bool canSeeUp = (last->dir & ConnDirUp);
+                    if (canSeeUp && (side != breakPoints.end()))
+                    {
+                        EdgeInf *edge = new 
+                                EdgeInf(last->vert, side->vert, orthogonal);
+                        edge->setDist(side->vert->point[dim] - 
+                                last->vert->point[dim]);
+                    }
+                }
+                
+                // The normal case.
+                //
+                // Note: It's okay to give two connector endpoints visbility 
+                // here since we only consider the partner endpoint as a 
+                // candidate while searching if it is the other endpoint of
+                // the connector in question.
+                //
+                bool generateEdge = true;
+                if (!last->vert->id.isShape && !(last->dir & ConnDirUp))
+                {
+                    generateEdge = false;
+                }
+                else if (!vert->vert->id.isShape && !(vert->dir & ConnDirDown))
+                {
+                    generateEdge = false;
+                }
+                if (generateEdge)
+                {
+                    EdgeInf *edge = 
+                            new EdgeInf(last->vert, vert->vert, orthogonal);
+                    edge->setDist(vert->vert->point[dim] - 
+                            last->vert->point[dim]);
+                }
+
+                ++last;
+            }
+
+            ++vert;
+
+            if ((vert != breakPoints.end()) &&
+                    (last->vert->point[dim] == vert->vert->point[dim]))
+            {
+                // Still looking at same pair, just reset prev number pointer.
+                last = firstPrev;
+            }
+            else
+            {
+                // vert has moved to the beginning of a number number group.
+                // Last is now in the right place, so do nothing.
+            }
+        }
+    }
+
+    double begin;
+    double finish;
+    double pos;
+    bool shapeSide;
+    
+    VertSet vertInfs;
+    BreakpointSet breakPoints;
+private:
+       // MSVC wants to generate the assignment operator and the default 
+       // constructor, but fails.  Therefore we declare them private and 
+       // don't implement them.
+    LineSegment & operator=(LineSegment const &);
+    LineSegment();
+};
+
+typedef std::list<LineSegment> SegmentList;
+
+class SegmentListWrapper
+{
+    public:
+        LineSegment *insert(LineSegment segment)
+        {
+            SegmentList::iterator found = _list.end();
+            for (SegmentList::iterator curr = _list.begin();
+                    curr != _list.end(); ++curr)
+            {
+                if (curr->overlaps(segment))
+                {
+                    if (found != _list.end())
+                    {
+                        // This is not the first segment that overlaps,
+                        // so we need to merge and then delete an existing
+                        // segment.
+                        curr->mergeVertInfs(*found);
+                        _list.erase(found);
+                        found = curr;
+                    }
+                    else
+                    {
+                        // This is the first overlapping segment, so just 
+                        // merge the new segment with this one.
+                        curr->mergeVertInfs(segment);
+                        found = curr;
+                    }
+                }
+            }
+
+            if (found == _list.end())
+            {
+                // Add this line.
+                _list.push_back(segment);
+                return &(_list.back());
+            }
+
+            return &(*found);
+        }
+        SegmentList& list(void)
+        {
+            return _list;
+        }
+    private:
+        SegmentList _list;
+};
+
+
+// Given a router instance and a set of possible horizontal segments, and a
+// possible vertical visibility segment, compute and add edges to the
+// orthogonal visibility graph for all the visibility edges.
+static void intersectSegments(Router *router, SegmentList& segments, 
+        LineSegment& vertLine)
+{
+    COLA_ASSERT(vertLine.beginVertInf() == NULL);
+    COLA_ASSERT(vertLine.finishVertInf() == NULL);
+    for (SegmentList::iterator it = segments.begin(); it != segments.end(); )
+    {
+        LineSegment& horiLine = *it;
+
+        bool inVertSegRegion = ((vertLine.begin <= horiLine.pos) &&
+                                (vertLine.finish >= horiLine.pos));
+
+        if (horiLine.finish < vertLine.pos)
+        {
+            // Add horizontal visibility segment.
+            horiLine.addEdgeHorizontal(router);
+
+            size_t dim = XDIM; // x-dimension
+            horiLine.generateVisibilityEdgesFromBreakpointSet(router, dim);
+
+            // We've now swept past this horizontal segment, so delete.
+            it = segments.erase(it);
+            continue;
+        }
+        else if (horiLine.begin > vertLine.pos)
+        {
+            // We've yet to reach this segment in the sweep, so ignore.
+            ++it;
+            continue;
+        }
+        else if (horiLine.begin == vertLine.pos)
+        {
+            if (inVertSegRegion)
+            {
+                horiLine.insertBreakpointsBegin(router, vertLine);
+            }
+        }
+        else if (horiLine.finish == vertLine.pos)
+        {
+            if (inVertSegRegion)
+            {
+                // Add horizontal visibility segment.
+                horiLine.addEdgeHorizontal(router);
+            
+                horiLine.insertBreakpointsFinish(router, vertLine);
+                
+                size_t dim = XDIM; // x-dimension
+                horiLine.generateVisibilityEdgesFromBreakpointSet(router, dim);
+
+                // And we've now finished with the segment, so delete.
+                it = segments.erase(it);
+                continue;
+            }
+        }
+        else
+        {
+            COLA_ASSERT(horiLine.begin < vertLine.pos);
+            COLA_ASSERT(horiLine.finish > vertLine.pos);
+
+            if (inVertSegRegion)
+            {
+                // Add horizontal visibility segment.
+                VertSet intersectionVerts = 
+                        horiLine.addEdgeHorizontalTillIntersection(
+                            router, vertLine);
+
+                for (VertSet::iterator v = intersectionVerts.begin();
+                        v != intersectionVerts.end(); ++v)
+                {
+                    vertLine.breakPoints.insert(PosVertInf(horiLine.pos, *v,
+                            getPosVertInfDirection(*v, YDIM)));
+                }
+            }
+        }
+        ++it;
+    }
+
+    // Split breakPoints set into visibility segments.
+    size_t dimension = YDIM; // y-dimension
+    vertLine.generateVisibilityEdgesFromBreakpointSet(router, dimension);
+}
+
+
+// Processes an event for the vertical sweep used for computing the static 
+// orthogonal visibility graph.  This adds possible visibility sgments to 
+// the segments list.
+// The first pass is adding the event to the scanline, the second is for
+// processing the event and the third for removing it from the scanline.
+static void processEventVert(Router *router, NodeSet& scanline, 
+        SegmentListWrapper& segments, Event *e, unsigned int pass)
+{
+    Node *v = e->v;
+    
+    if ( ((pass == 1) && (e->type == Open)) ||
+         ((pass == 2) && (e->type == ConnPoint)) )
+    {
+        std::pair<NodeSet::iterator, bool> result = scanline.insert(v);
+        v->iter = result.first;
+        COLA_ASSERT(result.second);
+
+        NodeSet::iterator it = v->iter;
+        // Work out neighbours
+        if (it != scanline.begin()) 
+        {
+            Node *u = *(--it);
+            v->firstAbove = u;
+            u->firstBelow = v;
+        }
+        it = v->iter;
+        if (++it != scanline.end()) 
+        {
+            Node *u = *it;
+            v->firstBelow = u;
+            u->firstAbove = v;
+        }
+    }
+    
+    if (pass == 2)
+    {
+        if ((e->type == Open) || (e->type == Close))
+        {
+            // Shape edge positions.
+            double minShape = v->min[0];
+            double maxShape = v->max[0];
+            // As far as we can see.
+            double minLimit, maxLimit;
+            double minLimitMax, maxLimitMin;
+            v->findFirstPointAboveAndBelow(0, minLimit, maxLimit,
+                    minLimitMax, maxLimitMin);
+
+            // Only difference between Open and Close is whether the line
+            // segments are at the top or bottom of the shape.  Decide here.
+            double lineY = (e->type == Open) ? v->min[1] : v->max[1];
+
+            if (minLimitMax >= maxLimitMin)
+            {
+                // Insert possible visibility segments.
+                VertInf *vI1 = new VertInf(router, dummyOrthogID, 
+                            Point(minShape, lineY));
+                VertInf *vI2 = new VertInf(router, dummyOrthogID, 
+                            Point(maxShape, lineY));
+                
+                // There are no overlapping shapes, so give full visibility.
+                if (minLimit < minShape)
+                {
+                    segments.insert(LineSegment(minLimit, minShape, lineY,
+                                true, NULL, vI1));
+                }
+                segments.insert(LineSegment(minShape, maxShape, lineY, 
+                            true, vI1, vI2));
+                if (maxShape < maxLimit)
+                {
+                    segments.insert(LineSegment(maxShape, maxLimit, lineY,
+                                true, vI2, NULL));
+                }
+            }
+            else
+            {
+                if ((minLimitMax > minLimit) && (minLimitMax >= minShape))
+                {
+                    segments.insert(LineSegment(minLimit, minLimitMax, lineY,
+                                true, NULL, NULL));
+                }
+                if ((maxLimitMin < maxLimit) && (maxLimitMin <= maxShape))
+                {
+                    segments.insert(LineSegment(maxLimitMin, maxLimit, lineY,
+                                true, NULL, NULL));
+                }
+            }
+        }
+        else if (e->type == ConnPoint)
+        {
+            // Connection point.
+            VertInf *centreVert = e->v->c;
+            Point& cp = centreVert->point;
+
+            // As far as we can see.
+            double minLimit = v->firstPointAbove(0);
+            double maxLimit = v->firstPointBelow(0);
+            bool inShape = v->isInsideShape(0);
+
+            LineSegment *line1 = NULL, *line2 = NULL;
+            if (!inShape || (centreVert->visDirections & ConnDirLeft))
+            {
+                line1 = segments.insert(LineSegment(minLimit, cp.x, e->pos, 
+                        true, NULL, centreVert));
+            }
+            if (!inShape || (centreVert->visDirections & ConnDirRight))
+            {
+                line2 = segments.insert(LineSegment(cp.x, maxLimit, e->pos, 
+                        true, centreVert, NULL));
+            }
+            if (!line1 && !line2)
+            {
+                // Add a point segment for the centre point.
+                segments.insert(LineSegment(cp.x, e->pos, centreVert));
+            }
+            
+            if (!inShape)
+            {
+                // This is not contained within a shape so add a normal
+                // visibility graph point here too (since paths won't route
+                // *through* connector endpoint vertices).
+                if (line1 || line2)
+                {
+                    VertInf *cent = new VertInf(router, dummyOrthogID, cp);
+                    if (line1)
+                    {
+                        line1->vertInfs.insert(cent);
+                    }
+                    if (line2)
+                    {
+                        line2->vertInfs.insert(cent);
+                    }
+                }
+            }
+        }
+    }
+    
+    if ( ((pass == 3) && (e->type == Close)) ||
+         ((pass == 2) && (e->type == ConnPoint)) )
+    {
+        // Clean up neighbour pointers.
+        Node *l = v->firstAbove, *r = v->firstBelow;
+        if (l != NULL) 
+        {
+            l->firstBelow = v->firstBelow;
+        }
+        if (r != NULL)
+        {
+            r->firstAbove = v->firstAbove;
+        }
+
+        if (e->type == ConnPoint)
+        {
+            scanline.erase(v->iter);
+            delete v;
+        }
+        else  // if (e->type == Close)
+        {
+            size_t result;
+            result = scanline.erase(v);
+            COLA_ASSERT(result == 1);
+            delete v;
+        }
+    }
+}
+
+
+// Processes an event for the vertical sweep used for computing the static 
+// orthogonal visibility graph.  This adds possible visibility sgments to 
+// the segments list.
+// The first pass is adding the event to the scanline, the second is for
+// processing the event and the third for removing it from the scanline.
+static void processEventHori(Router *router, NodeSet& scanline, 
+        SegmentListWrapper& segments, Event *e, unsigned int pass)
+{
+    Node *v = e->v;
+    
+    if ( ((pass == 1) && (e->type == Open)) ||
+         ((pass == 2) && (e->type == ConnPoint)) )
+    {
+        std::pair<NodeSet::iterator, bool> result = scanline.insert(v);
+        v->iter = result.first;
+        COLA_ASSERT(result.second);
+
+        NodeSet::iterator it = v->iter;
+        // Work out neighbours
+        if (it != scanline.begin()) 
+        {
+            Node *u = *(--it);
+            v->firstAbove = u;
+            u->firstBelow = v;
+        }
+        it = v->iter;
+        if (++it != scanline.end()) 
+        {
+            Node *u = *it;
+            v->firstBelow = u;
+            u->firstAbove = v;
+        }
+    }
+    
+    if (pass == 2)
+    {
+        if ((e->type == Open) || (e->type == Close))
+        {
+            // Shape edge positions.
+            double minShape = v->min[1];
+            double maxShape = v->max[1];
+            // As far as we can see.
+            double minLimit, maxLimit;
+            double minLimitMax, maxLimitMin;
+            v->findFirstPointAboveAndBelow(1, minLimit, maxLimit,
+                    minLimitMax, maxLimitMin);
+
+            // Only difference between Open and Close is whether the line
+            // segments are at the left or right of the shape.  Decide here.
+            double lineX = (e->type == Open) ? v->min[0] : v->max[0];
+
+            if (minLimitMax >= maxLimitMin)
+            {
+                LineSegment vertSeg = LineSegment(minLimit, maxLimit, lineX);
+                segments.insert(vertSeg);
+            }
+            else
+            {
+                if ((minLimitMax > minLimit) && (minLimitMax >= minShape))
+                {
+                    LineSegment vertSeg = 
+                            LineSegment(minLimit, minLimitMax, lineX);
+                    segments.insert(vertSeg);
+                }
+                if ((maxLimitMin < maxLimit) && (maxLimitMin <= maxShape))
+                {
+                    LineSegment vertSeg = 
+                            LineSegment(maxLimitMin, maxLimit, lineX);
+                    segments.insert(vertSeg);
+                }
+            }
+        }
+        else if (e->type == ConnPoint)
+        {
+            // Connection point.
+            VertInf *centreVert = e->v->c;
+            Point& cp = centreVert->point;
+
+            // As far as we can see.
+            double minLimit = v->firstPointAbove(1);
+            double maxLimit = v->firstPointBelow(1);
+            bool inShape = v->isInsideShape(1);
+            
+            if (!inShape || (centreVert->visDirections & ConnDirUp))
+            {
+                segments.insert(LineSegment(minLimit, cp.y, e->pos));
+            }
+            if (!inShape || (centreVert->visDirections & ConnDirDown))
+            {
+                segments.insert(LineSegment(cp.y, maxLimit, e->pos));
+            }
+        }
+    }
+    
+    if ( ((pass == 3) && (e->type == Close)) ||
+         ((pass == 2) && (e->type == ConnPoint)) )
+    {
+        // Clean up neighbour pointers.
+        Node *l = v->firstAbove, *r = v->firstBelow;
+        if (l != NULL) 
+        {
+            l->firstBelow = v->firstBelow;
+        }
+        if (r != NULL)
+        {
+            r->firstAbove = v->firstAbove;
+        }
+
+        if (e->type == ConnPoint)
+        {
+            scanline.erase(v->iter);
+            delete v;
+        }
+        else  // if (e->type == Close)
+        {
+            size_t result;
+            result = scanline.erase(v);
+            COLA_ASSERT(result == 1);
+            delete v;
+        }
+    }
+}
+
+
+extern void generateStaticOrthogonalVisGraph(Router *router)
+{
+    const size_t n = router->shapeRefs.size();
+    const unsigned cpn = router->vertices.connsSize();
+    // Set up the events for the vertical sweep.
+    size_t totalEvents = (2 * n) + cpn;
+    events = new Event*[totalEvents];
+    unsigned ctr = 0;
+    ShapeRefList::iterator shRefIt = router->shapeRefs.begin();
+    for (unsigned i = 0; i < n; i++)
+    {
+        ShapeRef *shRef = *shRefIt;
+        double minX, minY, maxX, maxY;
+        shRef->polygon().getBoundingRect(&minX, &minY, &maxX, &maxY);
+        double midX = minX + ((maxX - minX) / 2);
+        Node *v = new Node(shRef, midX);
+        events[ctr++] = new Event(Open, v, minY);
+        events[ctr++] = new Event(Close, v, maxY);
+
+        ++shRefIt;
+    }
+    for (VertInf *curr = router->vertices.connsBegin(); 
+            curr && (curr != router->vertices.shapesBegin()); 
+            curr = curr->lstNext)
+    {
+        Point& point = curr->point;
+
+        Node *v = new Node(curr, point.x);
+        events[ctr++] = new Event(ConnPoint, v, point.y);
+    }
+    qsort((Event*)events, (size_t) totalEvents, sizeof(Event*), compare_events);
+
+    // Process the vertical sweep.
+    // We do multiple passes over sections of the list so we can add relevant
+    // entries to the scanline that might follow, before process them.
+    SegmentListWrapper segments;
+    NodeSet scanline;
+    double thisPos = (totalEvents > 0) ? events[0]->pos : 0;
+    unsigned int posStartIndex = 0;
+    unsigned int posFinishIndex = 0;
+    for (unsigned i = 0; i <= totalEvents; ++i)
+    {
+        // If we have finished the current scanline or all events, then we
+        // process the events on the current scanline in a couple of passes.
+        if ((i == totalEvents) || (events[i]->pos != thisPos))
+        {
+            posFinishIndex = i;
+            for (int pass = 2; pass <= 3; ++pass)
+            {
+                for (unsigned j = posStartIndex; j < posFinishIndex; ++j)
+                {
+                    processEventVert(router, scanline, segments, 
+                            events[j], pass);
+                }
+            }
+
+            if (i == totalEvents)
+            {
+                // We have cleaned up, so we can now break out of loop.
+                break;
+            }
+
+            thisPos = events[i]->pos;
+            posStartIndex = i;
+        }
+
+        // Do the first sweep event handling -- building the correct 
+        // structure of the scanline.
+        const int pass = 1;
+        processEventVert(router, scanline, segments, events[i], pass);
+    }
+    COLA_ASSERT(scanline.size() == 0);
+    for (unsigned i = 0; i < totalEvents; ++i)
+    {
+        delete events[i];
+    }
+
+    segments.list().sort();
+
+    // Set up the events for the horizontal sweep.
+    SegmentListWrapper vertSegments;
+    ctr = 0;
+    shRefIt = router->shapeRefs.begin();
+    for (unsigned i = 0; i < n; i++)
+    {
+        ShapeRef *shRef = *shRefIt;
+        double minX, minY, maxX, maxY;
+        shRef->polygon().getBoundingRect(&minX, &minY, &maxX, &maxY);
+        double midY = minY + ((maxY - minY) / 2);
+        Node *v = new Node(shRef, midY);
+        events[ctr++] = new Event(Open, v, minX);
+        events[ctr++] = new Event(Close, v, maxX);
+
+        ++shRefIt;
+    }
+    for (VertInf *curr = router->vertices.connsBegin(); 
+            curr && (curr != router->vertices.shapesBegin()); 
+            curr = curr->lstNext)
+    {
+        Point& point = curr->point;
+
+        Node *v = new Node(curr, point.y);
+        events[ctr++] = new Event(ConnPoint, v, point.x);
+    }
+    qsort((Event*)events, (size_t) totalEvents, sizeof(Event*), compare_events);
+
+    // Process the horizontal sweep
+    thisPos = (totalEvents > 0) ? events[0]->pos : 0;
+    posStartIndex = 0;
+    posFinishIndex = 0;
+    for (unsigned i = 0; i <= totalEvents; ++i)
+    {
+        // If we have finished the current scanline or all events, then we
+        // process the events on the current scanline in a couple of passes.
+        if ((i == totalEvents) || (events[i]->pos != thisPos))
+        {
+            posFinishIndex = i;
+            for (int pass = 2; pass <= 3; ++pass)
+            {
+                for (unsigned j = posStartIndex; j < posFinishIndex; ++j)
+                {
+                    processEventHori(router, scanline, vertSegments, 
+                            events[j], pass);
+                }
+            }
+            
+            // Process the merged line segments.
+            vertSegments.list().sort();
+            for (SegmentList::iterator curr = vertSegments.list().begin();
+                    curr != vertSegments.list().end(); ++curr)
+            {
+                intersectSegments(router, segments.list(), *curr);
+            }
+            vertSegments.list().clear();
+
+            if (i == totalEvents)
+            {
+                // We have cleaned up, so we can now break out of loop.
+                break;
+            }
+
+            thisPos = events[i]->pos;
+            posStartIndex = i;
+        }
+
+        // Do the first sweep event handling -- building the correct 
+        // structure of the scanline.
+        const int pass = 1;
+        processEventHori(router, scanline, vertSegments, events[i], pass);
+    }
+    COLA_ASSERT(scanline.size() == 0);
+    for (unsigned i = 0; i < totalEvents; ++i)
+    {
+        delete events[i];
+    }
+    delete [] events;
+
+    // Add portions of the horizontal line that are after the final vertical
+    // position we considered.
+    for (SegmentList::iterator it = segments.list().begin(); 
+            it != segments.list().end(); )
+    {
+        LineSegment& horiLine = *it;
+
+        horiLine.addEdgeHorizontal(router);
+        
+        size_t dim = XDIM; // x-dimension
+        horiLine.generateVisibilityEdgesFromBreakpointSet(router, dim);
+
+        it = segments.list().erase(it);
+    }
+}
+
+
+//============================================================================
+//                           Path Adjustment code
+//============================================================================
+
+
+
+
+// Processes sweep events used to determine each horizontal and vertical 
+// line segment in a connector's channel of visibility.  
+// Four calls to this function are made at each position by the scanline:
+//   1) Handle all Close event processing.
+//   2) Remove Close event objects from the scanline.
+//   3) Add Open event objects to the scanline.
+//   4) Handle all Open event processing.
+//
+static void processShiftEvent(Router *router, NodeSet& scanline, 
+        ShiftSegmentList& segments, Event *e, size_t dim,
+        unsigned int pass)
+{
+    Node *v = e->v;
+    
+    if ( ((pass == 3) && (e->type == Open)) ||
+         ((pass == 3) && (e->type == SegOpen)) )
+    {
+        std::pair<NodeSet::iterator, bool> result = scanline.insert(v);
+        v->iter = result.first;
+        COLA_ASSERT(result.second);
+
+        NodeSet::iterator it = v->iter;
+        // Work out neighbours
+        if (it != scanline.begin()) 
+        {
+            Node *u = *(--it);
+            v->firstAbove = u;
+            u->firstBelow = v;
+        }
+        it = v->iter;
+        if (++it != scanline.end()) 
+        {
+            Node *u = *it;
+            v->firstBelow = u;
+            u->firstAbove = v;
+        }
+    }
+    
+    if ( ((pass == 4) && (e->type == Open)) ||
+         ((pass == 4) && (e->type == SegOpen)) ||
+         ((pass == 1) && (e->type == SegClose)) ||
+         ((pass == 1) && (e->type == Close)) )
+    {
+        if (v->ss)
+        {
+            // As far as we can see.
+            double minLimit = v->firstObstacleAbove(dim);
+            double maxLimit = v->firstObstacleBelow(dim);
+
+            v->ss->minSpaceLimit = 
+                    std::max(minLimit, v->ss->minSpaceLimit);
+            v->ss->maxSpaceLimit = 
+                    std::min(maxLimit, v->ss->maxSpaceLimit);
+        }
+        else
+        {
+            v->markShiftSegmentsAbove(dim);
+            v->markShiftSegmentsBelow(dim);
+        }
+    }
+    
+    if ( ((pass == 2) && (e->type == SegClose)) ||
+         ((pass == 2) && (e->type == Close)) )
+    {
+        // Clean up neighbour pointers.
+        Node *l = v->firstAbove, *r = v->firstBelow;
+        if (l != NULL) 
+        {
+            l->firstBelow = v->firstBelow;
+        }
+        if (r != NULL)
+        {
+            r->firstAbove = v->firstAbove;
+        }
+
+        size_t result;
+        result = scanline.erase(v);
+        COLA_ASSERT(result == 1);
+        delete v;
+    }
+}
+
+
+static void buildOrthogonalChannelInfo(Router *router, 
+        const size_t dim, ShiftSegmentList& segmentList)
+{
+    if (router->routingPenalty(segmentPenalty) == 0)
+    {
+        // This code assumes the routes are pretty optimal, so we don't
+        // do this adjustment if the routes have no segment penalty.
+        return;
+    }
+
+    size_t altDim = (dim + 1) % 2;
+    // For each connector.
+    for (ConnRefList::const_iterator curr = router->connRefs.begin(); 
+            curr != router->connRefs.end(); ++curr) 
+    {
+        if ((*curr)->routingType() != ConnType_Orthogonal)
+        {
+            continue;
+        }
+        Polygon& displayRoute = (*curr)->displayRoute();
+        // Determine all line segments that we are interested in shifting. 
+        // We don't consider the first or last segment of a path.
+        for (size_t i = 1; i < displayRoute.size(); ++i)
+        {
+            if (displayRoute.ps[i - 1][dim] == displayRoute.ps[i][dim])
+            {
+                // It's a segment in the dimension we are processing,
+                size_t indexLow = i - 1;
+                size_t indexHigh = i;
+                if (displayRoute.ps[i - 1][altDim] > displayRoute.ps[i][altDim])
+                {
+                    indexLow = i;
+                    indexHigh = i - 1;
+                }
+                COLA_ASSERT(displayRoute.at(indexLow)[altDim] < 
+                        displayRoute.at(indexHigh)[altDim]);
+
+                if ((i == 1) || ((i + 1) == displayRoute.size()))
+                {
+                    // The first and last segment of a connector can't be 
+                    // shifted.  We call them fixed segments.  Note: this
+                    // will change if we later allow connection channels.
+                    segmentList.push_back(
+                            ShiftSegment(*curr, indexLow, indexHigh, dim));
+                    continue;
+                }
+
+                // The segment probably has space to be shifted.
+                double minLim = -CHANNEL_MAX;
+                double maxLim = CHANNEL_MAX;
+                bool isSBend = false;
+
+                double prevPos = displayRoute.ps[i - 2][dim];
+                double nextPos = displayRoute.ps[i + 1][dim];
+                if (((prevPos < displayRoute.ps[i][dim]) &&
+                     (nextPos > displayRoute.ps[i][dim])) 
+                     ||
+                    ((prevPos > displayRoute.ps[i][dim]) &&
+                     (nextPos < displayRoute.ps[i][dim])) )
+                {
+                    isSBend = true;
+
+                    // Determine limits if the s-bend is not due to an 
+                    // obstacle.  In this case we need to limit the channel 
+                    // to the span of the adjoining segments to this one.
+                    if ((prevPos < displayRoute.ps[i][dim]) &&
+                        (nextPos > displayRoute.ps[i][dim]))
+                    {
+                        minLim = std::max(minLim, prevPos);
+                        maxLim = std::min(maxLim, nextPos);
+                    }
+                    else
+                    {
+                        minLim = std::max(minLim, nextPos);
+                        maxLim = std::min(maxLim, prevPos);
+                    }
+                }
+                else
+                {
+                    // isCBend: Both adjoining segments are in the same
+                    // direction.  We indicate this for later by setting 
+                    // the maxLim or minLim to the segment position.
+                    if (prevPos < displayRoute.ps[i][dim])
+                    {
+                        minLim = displayRoute.ps[i][dim];
+                    }
+                    else
+                    {
+                        maxLim = displayRoute.ps[i][dim];
+                    }
+                }
+
+                segmentList.push_back(ShiftSegment(*curr, indexLow, 
+                            indexHigh, isSBend, dim, minLim, maxLim));
+            }
+        }
+    }
+    if (segmentList.empty())
+    {
+        // There are no segments, so we can just return now.
+        return;
+    }
+    
+    // Do a sweep and shift these segments.
+    const size_t n = router->shapeRefs.size();
+    const size_t cpn = segmentList.size();
+    // Set up the events for the sweep.
+    size_t totalEvents = 2 * (n + cpn);
+    events = new Event*[totalEvents];
+    unsigned ctr = 0;
+    ShapeRefList::iterator shRefIt = router->shapeRefs.begin();
+    for (unsigned i = 0; i < n; i++)
+    {
+        ShapeRef *shRef = *shRefIt;
+        Point min, max;
+        shRef->polygon().getBoundingRect(&min.x, &min.y, &max.x, &max.y);
+        double mid = min[dim] + ((max[dim] - min[dim]) / 2);
+        Node *v = new Node(shRef, mid);
+        events[ctr++] = new Event(Open, v, min[altDim]);
+        events[ctr++] = new Event(Close, v, max[altDim]);
+
+        ++shRefIt;
+    }
+    for (ShiftSegmentList::iterator curr = segmentList.begin(); 
+            curr != segmentList.end(); ++curr)
+    {
+        const Point& lowPt = curr->lowPoint();
+        const Point& highPt = curr->highPoint();
+
+        COLA_ASSERT(lowPt[dim] == highPt[dim]);
+        COLA_ASSERT(lowPt[altDim] < highPt[altDim]);
+        Node *v = new Node(&(*curr), lowPt[dim]);
+        events[ctr++] = new Event(SegOpen, v, lowPt[altDim]);
+        events[ctr++] = new Event(SegClose, v, highPt[altDim]);
+    }
+    qsort((Event*)events, (size_t) totalEvents, sizeof(Event*), compare_events);
+
+    // Process the sweep.
+    // We do multiple passes over sections of the list so we can add relevant
+    // entries to the scanline that might follow, before process them.
+    NodeSet scanline;
+    double thisPos = (totalEvents > 0) ? events[0]->pos : 0;
+    unsigned int posStartIndex = 0;
+    unsigned int posFinishIndex = 0;
+    for (unsigned i = 0; i <= totalEvents; ++i)
+    {
+        // If we have finished the current scanline or all events, then we
+        // process the events on the current scanline in a couple of passes.
+        if ((i == totalEvents) || (events[i]->pos != thisPos))
+        {
+            posFinishIndex = i;
+            for (int pass = 2; pass <= 4; ++pass)
+            {
+                for (unsigned j = posStartIndex; j < posFinishIndex; ++j)
+                {
+                    processShiftEvent(router, scanline, segmentList, events[j], 
+                            dim, pass);
+                }
+            }
+
+            if (i == totalEvents)
+            {
+                // We have cleaned up, so we can now break out of loop.
+                break;
+            }
+
+            thisPos = events[i]->pos;
+            posStartIndex = i;
+        }
+
+        // Do the first sweep event handling -- building the correct 
+        // structure of the scanline.
+        const int pass = 1;
+        processShiftEvent(router, scanline, segmentList, events[i],
+                dim, pass);
+    }
+    COLA_ASSERT(scanline.size() == 0);
+    for (unsigned i = 0; i < totalEvents; ++i)
+    {
+        delete events[i];
+    }
+    delete [] events;
+}
+
+
+static void simplifyOrthogonalRoutes(Router *router)
+{
+    // Simplify routes.
+    for (ConnRefList::const_iterator curr = router->connRefs.begin(); 
+            curr != router->connRefs.end(); ++curr) 
+    {
+        if ((*curr)->routingType() != ConnType_Orthogonal)
+        {
+            continue;
+        }
+        (*curr)->set_route((*curr)->displayRoute().simplify());
+    }
+}
+
+
+static void buildOrthogonalNudgingOrderInfo(Router *router, 
+        PtOrderMap& pointOrders)
+{
+    // Simplify routes.
+    simplifyOrthogonalRoutes(router);
+
+    int crossingsN = 0;
+
+    // Do segment splitting.
+    for (ConnRefList::const_iterator curr = router->connRefs.begin(); 
+            curr != router->connRefs.end(); ++curr) 
+    {
+        if ((*curr)->routingType() != ConnType_Orthogonal)
+        {
+            continue;
+        }
+        ConnRef *conn = *curr;
+        
+        for (ConnRefList::const_iterator curr2 = router->connRefs.begin(); 
+                curr2 != router->connRefs.end(); ++curr2) 
+        {
+            if ((*curr2)->routingType() != ConnType_Orthogonal)
+            {
+                continue;
+            }
+            ConnRef *conn2 = *curr2;
+            
+            if (conn == conn2)
+            {
+                continue;
+            }
+            
+            Avoid::Polygon& route = conn->displayRoute();
+            Avoid::Polygon& route2 = conn2->displayRoute();
+            splitBranchingSegments(route2, true, route);
+        }
+    }
+
+    for (ConnRefList::const_iterator curr = router->connRefs.begin(); 
+            curr != router->connRefs.end(); ++curr) 
+    {
+        if ((*curr)->routingType() != ConnType_Orthogonal)
+        {
+            continue;
+        }
+        ConnRef *conn = *curr;
+        
+        for (ConnRefList::const_iterator curr2 = curr; 
+                curr2 != router->connRefs.end(); ++curr2) 
+        {
+            if ((*curr2)->routingType() != ConnType_Orthogonal)
+            {
+                continue;
+            }
+            ConnRef *conn2 = *curr2;
+
+            if (conn == conn2)
+            {
+                continue;
+            }
+            
+            Avoid::Polygon& route = conn->displayRoute();
+            Avoid::Polygon& route2 = conn2->displayRoute();
+            bool checkForBranchingSegments = false;
+            int crossings = 0;
+            for (size_t i = 1; i < route.size(); ++i)
+            {
+                const bool finalSegment = ((i + 1) == route.size());
+                crossings += countRealCrossings(route2, true, route, i, 
+                        checkForBranchingSegments, finalSegment, NULL, 
+                        &pointOrders, conn2, conn).first;
+            }
+            if (crossings > 0)
+            {
+                crossingsN += crossings;
+            }
+        }
+    }
+    
+    // Sort the point orders.
+    PtOrderMap::iterator finish = pointOrders.end();
+    for (PtOrderMap::iterator it = pointOrders.begin(); it != finish; ++it)
+    {
+        //const VertID& ptID = it->first;
+        PtOrder& order = it->second;
+
+        for (size_t dim = XDIM; dim <= YDIM; ++dim)
+        {
+            order.sort(dim);
+        }
+    }
+}
+
+
+class CmpLineOrder 
+{
+    public:
+        CmpLineOrder(PtOrderMap& ord, const size_t dim)
+            : orders(ord),
+              dimension(dim)
+        {
+        }
+        bool operator()(const ShiftSegment& lhs, const ShiftSegment& rhs,
+                bool *comparable = NULL) const
+        {
+            if (comparable)
+            {
+                *comparable = true;
+            }
+            Point lhsLow  = lhs.lowPoint(); 
+            Point rhsLow  = rhs.lowPoint(); 
+#ifndef NDEBUG
+            const Point& lhsHigh = lhs.highPoint(); 
+            const Point& rhsHigh = rhs.highPoint(); 
+#endif
+            size_t altDim = (dimension + 1) % 2;
+
+            COLA_ASSERT(lhsLow[dimension] == lhsHigh[dimension]);
+            COLA_ASSERT(rhsLow[dimension] == rhsHigh[dimension]);
+
+            if (lhsLow[dimension] != rhsLow[dimension])
+            {
+                return lhsLow[dimension] < rhsLow[dimension];
+            }
+            
+            // If one of these is fixed, then determine order based on 
+            // fixed segment, that is, order so the fixed segment doesn't 
+            // block movement.
+            bool oneIsFixed = false;
+            const int lhsFixedOrder = lhs.fixedOrder(oneIsFixed);
+            const int rhsFixedOrder = rhs.fixedOrder(oneIsFixed);
+            if (oneIsFixed && (lhsFixedOrder != rhsFixedOrder))
+            {
+                return lhsFixedOrder < rhsFixedOrder;
+            }
+
+            // C-bends that did not have a clear order with s-bends might 
+            // not have a good ordering here, so compare their order in 
+            // terms of C-bend direction and S-bends and use that if it
+            // differs for the two segments.
+            const int lhsOrder = lhs.order();
+            const int rhsOrder = rhs.order();
+            if (lhsOrder != rhsOrder)
+            {
+                return lhsOrder < rhsOrder;
+            }
+
+            // Need to index using the original point into the map, so find it.
+            Point& unchanged = (lhsLow[altDim] > rhsLow[altDim]) ?
+                    lhsLow : rhsLow;
+
+            PtOrder& lowOrder = orders[unchanged];
+            int lhsPos = lowOrder.positionFor(lhs.connRef, dimension);
+            int rhsPos = lowOrder.positionFor(rhs.connRef, dimension);
+            if ((lhsPos == -1) || (rhsPos == -1))
+            {
+                // A value for rhsPos or lhsPos mean the points are not directly
+                // comparable, meaning they are at the same position but cannot
+                // overlap (they are just collinear.  The relative order for 
+                // these segments is not important since we do not constrain
+                // them against each other.
+                //COLA_ASSERT(lhs.overlapsWith(rhs, dimension) == false);
+                // We do need to be consistent though.
+                if (comparable)
+                {
+                    *comparable = false;
+                }
+                return lhsLow[altDim] < rhsLow[altDim];
+            }
+
+            return lhsPos < rhsPos;
+        }
+
+        PtOrderMap& orders;
+        const size_t dimension;
+};
+
+
+// We can use the normaal sort algorithm for lists since it is not possible 
+// to comapre all elements, but there will be an ordering defined between 
+// most of the elements.  Hence we order these, using insertion sort, and 
+// the case of them not being able to be compared is handled by not setting 
+// up any constraints between such segments when doing the nudging.
+//
+static ShiftSegmentList linesort(ShiftSegmentList origList, 
+        CmpLineOrder& comparison)
+{
+    ShiftSegmentList resultList;
+
+    while (!origList.empty())
+    {
+        // Get and remove the first element from the origList.
+        ShiftSegment segment = origList.front();
+        origList.pop_front();
+
+        // Find the insertion point in the resultList.
+        ShiftSegmentList::iterator curr;
+        for (curr = resultList.begin(); curr != resultList.end(); ++curr)
+        {
+            bool comparable = false;
+            bool lessThan = comparison(segment, *curr, &comparable);
+
+            if (comparable && lessThan)
+            {
+                // If it is comparable and lessThan, then we have found the
+                // insertion point.
+                break;
+            }
+        }
+
+        // Insert the element into the reultList at the required point.
+        resultList.insert(curr, segment);
+    }
+
+    return resultList;
+}
+
+
+typedef std::list<ShiftSegment *> ShiftSegmentPtrList;
+
+
+static void nudgeOrthogonalRoutes(Router *router, size_t dimension, 
+        PtOrderMap& pointOrders, ShiftSegmentList& segmentList)
+{
+    // Do the actual nudging.
+    ShiftSegmentList currentRegion;
+    while (!segmentList.empty())
+    {
+        // Take a reference segment
+        ShiftSegment& currentSegment = segmentList.front();
+        // Then, find the segments that overlap this one.
+        currentRegion.clear();
+        currentRegion.push_back(currentSegment);
+        segmentList.erase(segmentList.begin());
+        for (ShiftSegmentList::iterator curr = segmentList.begin();
+                curr != segmentList.end(); )
+        {
+            bool overlaps = false;
+            for (ShiftSegmentList::iterator curr2 = currentRegion.begin();
+                    curr2 != currentRegion.end(); ++curr2)
+            {
+                if (curr->overlapsWith(*curr2, dimension))
+                {
+                    overlaps = true;
+                    break;
+                }
+            }
+            if (overlaps)
+            {
+                currentRegion.push_back(*curr);
+                segmentList.erase(curr);
+                // Consider segments from the beginning, since we mave have
+                // since passed segments that overlap with the new set.
+                curr = segmentList.begin();
+            }
+            else
+            {
+                ++curr;
+            }
+        }
+        CmpLineOrder lineSortComp(pointOrders, dimension);
+        currentRegion = linesort(currentRegion, lineSortComp);
+        
+        if (currentRegion.size() == 1)
+        {
+            // Save creating the solver instance if there is just one
+            // immovable segment.
+            if (!currentRegion.front().sBend)
+            {
+                continue;
+            }
+        }
+
+        // Process these segments.
+        Variables vs;
+        Constraints cs;
+        ShiftSegmentPtrList prevVars;
+        // IDs:
+        const int freeID    = 0;
+        const int fixedID   = 1;
+        // Weights:
+        double freeWeight   = 0.00001;
+        double strongWeight = 0.001;
+        double fixedWeight  = 100000;
+        //printf("-------------------------------------------------------\n");
+        //printf("Nudge -- size: %d\n", (int) currentRegion.size());
+        for (ShiftSegmentList::iterator currSegment = currentRegion.begin();
+                currSegment != currentRegion.end(); ++currSegment)
+        {
+            Point& lowPt = currSegment->lowPoint();
+            
+            // Create a solver variable for the position of this segment.
+            int varID = freeID;
+            double idealPos = lowPt[dimension];
+            double weight = freeWeight;
+            if (currSegment->sBend)
+            {
+                COLA_ASSERT(currSegment->minSpaceLimit > -CHANNEL_MAX);
+                COLA_ASSERT(currSegment->maxSpaceLimit < CHANNEL_MAX);
+                
+                // For s-bends, take the middle as ideal.
+                idealPos = currSegment->minSpaceLimit +
+                        ((currSegment->maxSpaceLimit -
+                          currSegment->minSpaceLimit) / 2);
+            }
+            else if (currSegment->fixed)
+            {
+                // Fixed segments shouldn't get moved.
+                weight = fixedWeight;
+                varID = fixedID;
+            }
+            else
+            {
+                // Set a higher weight for c-bends to stop them sometimes 
+                // getting pushed out into channels by more-free connectors
+                // to the "inner" side of them.
+                weight = strongWeight;
+            }
+            currSegment->variable = new Variable(varID, idealPos, weight);
+            vs.push_back(currSegment->variable);
+            size_t index = vs.size() - 1;
+            //printf("line  %.15f  pos: %g   min: %g  max: %g\n",
+            //        lowPt[dimension], idealPos, currSegment->minSpaceLimit,
+            //        currSegment->maxSpaceLimit);
+
+            // Constrain position in relation to previously seen segments,
+            // if necessary (i.e. when they could overlap).
+            for (ShiftSegmentPtrList::iterator prevVarIt = prevVars.begin();
+                    prevVarIt != prevVars.end(); )
+            {
+                ShiftSegment *prevSeg = *prevVarIt;
+                Variable *prevVar = prevSeg->variable;
+
+                if (currSegment->overlapsWith(*prevSeg, dimension) &&
+                        (!(currSegment->fixed) || !(prevSeg->fixed)))
+                {
+                    // If there is a previous segment to the left that 
+                    // could overlap this in the shift direction, then 
+                    // constrain the two segments to be separated.
+                    // Though don't add the constraint if both the 
+                    // segments are fixed in place.
+                    cs.push_back(new Constraint(prevVar, vs[index],
+                            router->orthogonalNudgeDistance()));
+                    prevVarIt = prevVars.erase(prevVarIt);
+                }
+                else
+                {
+                    ++prevVarIt;
+                }
+            }
+
+            if (!currSegment->fixed)
+            {
+                // If this segment sees a channel boundary to its left, 
+                // then constrain its placement as such.
+                if (currSegment->minSpaceLimit > -CHANNEL_MAX)
+                {
+                    vs.push_back(new Variable(fixedID, 
+                                currSegment->minSpaceLimit, fixedWeight));
+                    cs.push_back(new Constraint(vs[vs.size() - 1], vs[index], 
+                                0.0));
+                }
+                
+                // If this segment sees a channel boundary to its right, 
+                // then constrain its placement as such.
+                if (currSegment->maxSpaceLimit < CHANNEL_MAX)
+                {
+                    vs.push_back(new Variable(fixedID, 
+                                currSegment->maxSpaceLimit, fixedWeight));
+                    cs.push_back(new Constraint(vs[index], vs[vs.size() - 1],
+                                0.0));
+                }
+            }
+            prevVars.push_back(&(*currSegment));
+        }
+#if 0
+        for(unsigned i=0;i<vs.size();i++) {
+            printf("-vs[%d]=%f\n",i,vs[i]->desiredPosition);
+        }
+#endif
+        IncSolver f(vs,cs);
+        f.solve();
+        bool satisfied = true;
+        for (size_t i = 0; i < vs.size(); ++i) 
+        {
+            if (vs[i]->id == fixedID)
+            {
+                if (fabs(vs[i]->finalPosition - vs[i]->desiredPosition) > 0.01)
+                {
+                    satisfied = false;
+                    break;
+                }
+            }
+        }
+        if (satisfied)
+        {
+            for (ShiftSegmentList::iterator currSegment = currentRegion.begin();
+                    currSegment != currentRegion.end(); ++currSegment)
+            {
+                Point& lowPt = currSegment->lowPoint();
+                Point& highPt = currSegment->highPoint();
+                double newPos = currSegment->variable->finalPosition;
+                //printf("Pos: %X, %g\n", (int) currSegment->connRef, newPos);
+                lowPt[dimension] = newPos;
+                highPt[dimension] = newPos;
+            }
+        }
+#if 0
+        for(unsigned i=0;i<vs.size();i++) {
+            printf("+vs[%d]=%f\n",i,vs[i]->finalPosition);
+        }
+#endif
+        for_each(vs.begin(),vs.end(),delete_object());
+        for_each(cs.begin(),cs.end(),delete_object());
+    }
+}
+
+
+extern void improveOrthogonalRoutes(Router *router)
+{
+    router->timers.Register(tmOrthogNudge, timerStart);
+    for (size_t dimension = 0; dimension < 2; ++dimension)
+    {
+        // Build nudging info.
+        // XXX: We need to build the point orders separately in each
+        //      dimension since things move.  There is probably a more 
+        //      efficient way to do this.
+        PtOrderMap pointOrders;
+        buildOrthogonalNudgingOrderInfo(router, pointOrders);
+
+        // Simplify routes.
+        simplifyOrthogonalRoutes(router);
+
+        // Do the centring and nudging.
+        ShiftSegmentList segLists;
+        buildOrthogonalChannelInfo(router, dimension, segLists);
+        nudgeOrthogonalRoutes(router, dimension, pointOrders, segLists);
+    }
+    router->timers.Stop();
+}
+
+
+}
diff --git a/src/libavoid/orthogonal.h b/src/libavoid/orthogonal.h
new file mode 100644 (file)
index 0000000..4fb9740
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * vim: ts=4 sw=4 et tw=0 wm=0
+ *
+ * libavoid - Fast, Incremental, Object-avoiding Line Router
+ *
+ * Copyright (C) 2009  Monash University
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * See the file LICENSE.LGPL distributed with the library.
+ *
+ * Licensees holding a valid commercial license may use this file in
+ * accordance with the commercial license agreement provided with the 
+ * library.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ *
+ * Author(s):   Michael Wybrow <mjwybrow@users.sourceforge.net>
+*/
+
+
+#ifndef AVOID_ORTHOGONAL_H
+#define AVOID_ORTHOGONAL_H
+
+namespace Avoid {
+
+
+extern void generateStaticOrthogonalVisGraph(Router *router);
+
+extern void improveOrthogonalRoutes(Router *router);
+
+
+}
+
+#endif
diff --git a/src/libavoid/viscluster.cpp b/src/libavoid/viscluster.cpp
new file mode 100644 (file)
index 0000000..a127c5a
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ * vim: ts=4 sw=4 et tw=0 wm=0
+ *
+ * libavoid - Fast, Incremental, Object-avoiding Line Router
+ *
+ * Copyright (C) 2004-2008  Monash University
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * See the file LICENSE.LGPL distributed with the library.
+ *
+ * Licensees holding a valid commercial license may use this file in
+ * accordance with the commercial license agreement provided with the 
+ * library.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ *
+ * Author(s):   Michael Wybrow <mjwybrow@users.sourceforge.net>
+*/
+
+
+#include "libavoid/viscluster.h"
+#include "libavoid/router.h"
+#include "libavoid/assertions.h"
+
+
+namespace Avoid {
+
+
+ClusterRef::ClusterRef(Router *router, unsigned int id, Polygon& ply)
+    : _router(router)
+    , _poly(ply, router)
+    , _active(false)
+{
+    _id = router->assignId(id);
+}
+
+
+ClusterRef::~ClusterRef()
+{
+}
+
+
+void ClusterRef::makeActive(void)
+{
+    COLA_ASSERT(!_active);
+    
+    // Add to connRefs list.
+    _pos = _router->clusterRefs.insert(_router->clusterRefs.begin(), this);
+
+    _active = true;
+}
+
+
+void ClusterRef::makeInactive(void)
+{
+    COLA_ASSERT(_active);
+    
+    // Remove from connRefs list.
+    _router->clusterRefs.erase(_pos);
+
+    _active = false;
+}
+    
+
+void ClusterRef::setNewPoly(Polygon& poly)
+{
+    _poly = ReferencingPolygon(poly, _router);
+}
+
+
+unsigned int ClusterRef::id(void)
+{
+    return _id;
+}
+
+
+ReferencingPolygon& ClusterRef::polygon(void)
+{
+    return _poly;
+}
+
+
+Router *ClusterRef::router(void)
+{
+    return _router;
+}
+
+
+}
+
+
diff --git a/src/libavoid/viscluster.h b/src/libavoid/viscluster.h
new file mode 100644 (file)
index 0000000..5827e50
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * vim: ts=4 sw=4 et tw=0 wm=0
+ *
+ * libavoid - Fast, Incremental, Object-avoiding Line Router
+ *
+ * Copyright (C) 2004-2008  Monash University
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * See the file LICENSE.LGPL distributed with the library.
+ *
+ * Licensees holding a valid commercial license may use this file in
+ * accordance with the commercial license agreement provided with the 
+ * library.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ *
+ * Author(s):   Michael Wybrow <mjwybrow@users.sourceforge.net>
+*/
+
+
+#ifndef AVOID_CLUSTER_H
+#define AVOID_CLUSTER_H
+
+#include <list>
+
+#include "libavoid/geometry.h"
+
+
+namespace Avoid {
+
+class Router;
+class ClusterRef;
+typedef std::list<ClusterRef *> ClusterRefList;
+
+
+class ClusterRef
+{
+    public:
+        ClusterRef(Router *router, unsigned int id, Polygon& poly);
+        ~ClusterRef();
+        void setNewPoly(Polygon& poly);
+        unsigned int id(void);
+        ReferencingPolygon& polygon(void);
+        Router *router(void);
+        void makeActive(void);
+        void makeInactive(void);
+
+    private:
+        Router *_router;
+        unsigned int _id;
+        ReferencingPolygon _poly;
+        bool _active;
+        ClusterRefList::iterator _pos;
+};
+
+
+}
+
+
+#endif
+
+
diff --git a/src/libavoid/vpsc.cpp b/src/libavoid/vpsc.cpp
new file mode 100644 (file)
index 0000000..c9a0723
--- /dev/null
@@ -0,0 +1,1300 @@
+/*
+ * vim: ts=4 sw=4 et tw=0 wm=0
+ *
+ * libavoid - Fast, Incremental, Object-avoiding Line Router
+ *
+ * Copyright (C) 2005-2009  Monash University
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * See the file LICENSE.LGPL distributed with the library.
+ *
+ * Licensees holding a valid commercial license may use this file in
+ * accordance with the commercial license agreement provided with the 
+ * library.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ *
+ * Author(s):   Tim Dwyer  <Tim.Dwyer@csse.monash.edu.au>
+ *
+ * --------------
+ *
+ * This file contains a slightly modified version of Solver() from libvpsc:
+ * A solver for the problem of Variable Placement with Separation Constraints.
+ * It has the following changes from the Adaptagrams VPSC version:
+ *  -  The required VPSC code has been consolidated into a single file.
+ *  -  Unnecessary code (like Solver) has been removed.
+ *  -  The PairingHeap code has been replaced by a STL priority_queue.
+ *
+ * Modifications:  Michael Wybrow  <mjwybrow@users.sourceforge.net>
+ *
+*/
+
+#include <iostream>
+#include <math.h>
+#include <sstream>
+#include <map>
+#include <cfloat>
+#include <cstdio>
+
+#include "libavoid/vpsc.h"
+#include "libavoid/assertions.h"
+
+
+using namespace std;
+
+namespace Avoid {
+
+static const double ZERO_UPPERBOUND=-1e-10;
+static const double LAGRANGIAN_TOLERANCE=-1e-4;
+
+IncSolver::IncSolver(vector<Variable*> const &vs, vector<Constraint *> const &cs) 
+    : m(cs.size()), 
+      cs(cs), 
+      n(vs.size()), 
+      vs(vs) 
+{
+    for(unsigned i=0;i<n;++i) {
+        vs[i]->in.clear();
+        vs[i]->out.clear();
+    }
+    for(unsigned i=0;i<m;++i) {
+        Constraint *c=cs[i];
+        c->left->out.push_back(c);
+        c->right->in.push_back(c);
+    }
+    bs=new Blocks(vs);
+#ifdef LIBVPSC_LOGGING
+    printBlocks();
+    //COLA_ASSERT(!constraintGraphIsCyclic(n,vs));
+#endif
+
+    inactive=cs;
+    for(Constraints::iterator i=inactive.begin();i!=inactive.end();++i) {
+        (*i)->active=false;
+    }
+}
+IncSolver::~IncSolver() {
+    delete bs;
+}
+
+// useful in debugging
+void IncSolver::printBlocks() {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    for(set<Block*>::iterator i=bs->begin();i!=bs->end();++i) {
+        Block *b=*i;
+        f<<"  "<<*b<<endl;
+    }
+    for(unsigned i=0;i<m;i++) {
+        f<<"  "<<*cs[i]<<endl;
+    }
+#endif
+}
+
+/*
+ * Stores the relative positions of the variables in their finalPosition
+ * field.
+ */
+void IncSolver::copyResult() {
+    for(Variables::const_iterator i=vs.begin();i!=vs.end();++i) {
+        Variable* v=*i;
+        v->finalPosition=v->position();
+        COLA_ASSERT(v->finalPosition==v->finalPosition);
+    }
+}
+
+struct node {
+    set<node*> in;
+    set<node*> out;
+};
+// useful in debugging - cycles would be BAD
+bool IncSolver::constraintGraphIsCyclic(const unsigned n, Variable* const vs[]) {
+    map<Variable*, node*> varmap;
+    vector<node*> graph;
+    for(unsigned i=0;i<n;i++) {
+        node *u=new node;
+        graph.push_back(u);
+        varmap[vs[i]]=u;
+    }
+    for(unsigned i=0;i<n;i++) {
+        for(vector<Constraint*>::iterator c=vs[i]->in.begin();c!=vs[i]->in.end();++c) {
+            Variable *l=(*c)->left;
+            varmap[vs[i]]->in.insert(varmap[l]);
+        }
+
+        for(vector<Constraint*>::iterator c=vs[i]->out.begin();c!=vs[i]->out.end();++c) {
+            Variable *r=(*c)->right;
+            varmap[vs[i]]->out.insert(varmap[r]);
+        }
+    }
+    while(graph.size()>0) {
+        node *u=NULL;
+        vector<node*>::iterator i=graph.begin();
+        for(;i!=graph.end();++i) {
+            u=*i;
+            if(u->in.size()==0) {
+                break;
+            }
+        }
+        if(i==graph.end() && graph.size()>0) {
+            //cycle found!
+            return true;
+        } else {
+            graph.erase(i);
+            for(set<node*>::iterator j=u->out.begin();j!=u->out.end();++j) {
+                node *v=*j;
+                v->in.erase(u);
+            }
+            delete u;
+        }
+    }
+    for(unsigned i=0; i<graph.size(); ++i) {
+        delete graph[i];
+    }
+    return false;
+}
+
+// useful in debugging - cycles would be BAD
+bool IncSolver::blockGraphIsCyclic() {
+    map<Block*, node*> bmap;
+    vector<node*> graph;
+    for(set<Block*>::const_iterator i=bs->begin();i!=bs->end();++i) {
+        Block *b=*i;
+        node *u=new node;
+        graph.push_back(u);
+        bmap[b]=u;
+    }
+    for(set<Block*>::const_iterator i=bs->begin();i!=bs->end();++i) {
+        Block *b=*i;
+        b->setUpInConstraints();
+        Constraint *c=b->findMinInConstraint();
+        while(c!=NULL) {
+            Block *l=c->left->block;
+            bmap[b]->in.insert(bmap[l]);
+            b->deleteMinInConstraint();
+            c=b->findMinInConstraint();
+        }
+
+        b->setUpOutConstraints();
+        c=b->findMinOutConstraint();
+        while(c!=NULL) {
+            Block *r=c->right->block;
+            bmap[b]->out.insert(bmap[r]);
+            b->deleteMinOutConstraint();
+            c=b->findMinOutConstraint();
+        }
+    }
+    while(graph.size()>0) {
+        node *u=NULL;
+        vector<node*>::iterator i=graph.begin();
+        for(;i!=graph.end();++i) {
+            u=*i;
+            if(u->in.size()==0) {
+                break;
+            }
+        }
+        if(i==graph.end() && graph.size()>0) {
+            //cycle found!
+            return true;
+        } else {
+            graph.erase(i);
+            for(set<node*>::iterator j=u->out.begin();j!=u->out.end();++j) {
+                node *v=*j;
+                v->in.erase(u);
+            }
+            delete u;
+        }
+    }
+    for(unsigned i=0; i<graph.size(); i++) {
+        delete graph[i];
+    }
+    return false;
+}
+
+bool IncSolver::solve() {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"solve_inc()..."<<endl;
+#endif
+    satisfy();
+    double lastcost = DBL_MAX, cost = bs->cost();
+    while(fabs(lastcost-cost)>0.0001) {
+        satisfy();
+        lastcost=cost;
+        cost = bs->cost();
+#ifdef LIBVPSC_LOGGING
+        f<<"  bs->size="<<bs->size()<<", cost="<<cost<<endl;
+#endif
+    }
+    copyResult();
+    return bs->size()!=n; 
+}
+/*
+ * incremental version of satisfy that allows refinement after blocks are
+ * moved.
+ *
+ *  - move blocks to new positions
+ *  - repeatedly merge across most violated constraint until no more
+ *    violated constraints exist
+ *
+ * Note: there is a special case to handle when the most violated constraint
+ * is between two variables in the same block.  Then, we must split the block
+ * over an active constraint between the two variables.  We choose the 
+ * constraint with the most negative lagrangian multiplier. 
+ */
+bool IncSolver::satisfy() {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"satisfy_inc()..."<<endl;
+#endif
+    splitBlocks();
+    //long splitCtr = 0;
+    Constraint* v = NULL;
+    //CBuffer buffer(inactive);
+    while((v=mostViolated(inactive))
+            &&(v->equality || v->slack() < ZERO_UPPERBOUND && !v->active)) 
+    {
+        COLA_ASSERT(!v->active);
+        Block *lb = v->left->block, *rb = v->right->block;
+        if(lb != rb) {
+            lb->merge(rb,v);
+        } else {
+            if(lb->isActiveDirectedPathBetween(v->right,v->left)) {
+                // cycle found, relax the violated, cyclic constraint
+                v->unsatisfiable=true;
+                continue;
+                //UnsatisfiableException e;
+                //lb->getActiveDirectedPathBetween(e.path,v->right,v->left);
+                //e.path.push_back(v);
+                //throw e;
+            }
+            //if(splitCtr++>10000) {
+                //throw "Cycle Error!";
+            //}
+            // constraint is within block, need to split first
+            try {
+                Constraint* splitConstraint
+                    =lb->splitBetween(v->left,v->right,lb,rb);
+                if(splitConstraint!=NULL) {
+                    COLA_ASSERT(!splitConstraint->active);
+                    inactive.push_back(splitConstraint);
+                } else {
+                    v->unsatisfiable=true;
+                    continue;
+                }
+            } catch(UnsatisfiableException e) {
+                e.path.push_back(v);
+                std::cerr << "Unsatisfiable:" << std::endl;
+                for(std::vector<Constraint*>::iterator r=e.path.begin();
+                        r!=e.path.end();++r)
+                {
+                    std::cerr << **r <<std::endl;
+                }
+                v->unsatisfiable=true;
+                continue;
+            }
+            if(v->slack()>=0) {
+                COLA_ASSERT(!v->active);
+                // v was satisfied by the above split!
+                inactive.push_back(v);
+                bs->insert(lb);
+                bs->insert(rb);
+            } else {
+                bs->insert(lb->merge(rb,v));
+            }
+        }
+        bs->cleanup();
+#ifdef LIBVPSC_LOGGING
+        f<<"...remaining blocks="<<bs->size()<<", cost="<<bs->cost()<<endl;
+#endif
+    }
+#ifdef LIBVPSC_LOGGING
+    f<<"  finished merges."<<endl;
+#endif
+    bs->cleanup();
+    bool activeConstraints=false;
+    for(unsigned i=0;i<m;i++) {
+        v=cs[i];
+        if(v->active) activeConstraints=true;
+        if(v->slack() < ZERO_UPPERBOUND) {
+            ostringstream s;
+            s<<"Unsatisfied constraint: "<<*v;
+#ifdef LIBVPSC_LOGGING
+            ofstream f(LOGFILE,ios::app);
+            f<<s.str()<<endl;
+#endif
+            throw s.str().c_str();
+        }
+    }
+#ifdef LIBVPSC_LOGGING
+    f<<"  finished cleanup."<<endl;
+    printBlocks();
+#endif
+    copyResult();
+    return activeConstraints;
+}
+void IncSolver::moveBlocks() {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"moveBlocks()..."<<endl;
+#endif
+    for(set<Block*>::const_iterator i(bs->begin());i!=bs->end();++i) {
+        Block *b = *i;
+        b->updateWeightedPosition();
+        //b->posn = b->wposn / b->weight;
+    }
+#ifdef LIBVPSC_LOGGING
+    f<<"  moved blocks."<<endl;
+#endif
+}
+void IncSolver::splitBlocks() {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+#endif
+    moveBlocks();
+    splitCnt=0;
+    // Split each block if necessary on min LM
+    for(set<Block*>::const_iterator i(bs->begin());i!=bs->end();++i) {
+        Block* b = *i;
+        Constraint* v=b->findMinLM();
+        if(v!=NULL && v->lm < LAGRANGIAN_TOLERANCE) {
+            COLA_ASSERT(!v->equality);
+#ifdef LIBVPSC_LOGGING
+            f<<"    found split point: "<<*v<<" lm="<<v->lm<<endl;
+#endif
+            splitCnt++;
+            Block *b = v->left->block, *l=NULL, *r=NULL;
+            COLA_ASSERT(v->left->block == v->right->block);
+            //double pos = b->posn;
+            b->split(l,r,v);
+            //l->posn=r->posn=pos;
+            //l->wposn = l->posn * l->weight;
+            //r->wposn = r->posn * r->weight;
+            l->updateWeightedPosition();
+            r->updateWeightedPosition();
+            bs->insert(l);
+            bs->insert(r);
+            b->deleted=true;
+            COLA_ASSERT(!v->active);
+            inactive.push_back(v);
+#ifdef LIBVPSC_LOGGING
+            f<<"  new blocks: "<<*l<<" and "<<*r<<endl;
+#endif
+        }
+    }
+    //if(splitCnt>0) { std::cout<<"  splits: "<<splitCnt<<endl; }
+#ifdef LIBVPSC_LOGGING
+    f<<"  finished splits."<<endl;
+#endif
+    bs->cleanup();
+}
+
+/*
+ * Scan constraint list for the most violated constraint, or the first equality
+ * constraint
+ */
+Constraint* IncSolver::mostViolated(Constraints &l) {
+    double minSlack = DBL_MAX;
+    Constraint* v=NULL;
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"Looking for most violated..."<<endl;
+#endif
+    Constraints::iterator end = l.end();
+    Constraints::iterator deletePoint = end;
+    for(Constraints::iterator i=l.begin();i!=end;++i) {
+        Constraint *c=*i;
+        double slack = c->slack();
+        if(c->equality || slack < minSlack) {
+            minSlack=slack;    
+            v=c;
+            deletePoint=i;
+            if(c->equality) break;
+        }
+    }
+    // Because the constraint list is not order dependent we just
+    // move the last element over the deletePoint and resize
+    // downwards.  There is always at least 1 element in the
+    // vector because of search.
+    if(deletePoint != end && (minSlack < ZERO_UPPERBOUND && !v->active || v->equality)) {
+        *deletePoint = l[l.size()-1];
+        l.resize(l.size()-1);
+    }
+#ifdef LIBVPSC_LOGGING
+    f<<"  most violated is: "<<*v<<endl;
+#endif
+    return v;
+}
+
+
+using std::set;
+using std::vector;
+using std::iterator;
+using std::list;
+using std::copy;
+#define __NOTNAN(p) (p)==(p)
+
+long blockTimeCtr;
+
+Blocks::Blocks(vector<Variable*> const &vs) : vs(vs),nvs(vs.size()) {
+    blockTimeCtr=0;
+    for(int i=0;i<nvs;i++) {
+        insert(new Block(vs[i]));
+    }
+}
+Blocks::~Blocks(void)
+{
+    blockTimeCtr=0;
+    for(set<Block*>::iterator i=begin();i!=end();++i) {
+        delete *i;
+    }
+    clear();
+}
+
+/*
+ * returns a list of variables with total ordering determined by the constraint 
+ * DAG
+ */
+list<Variable*> *Blocks::totalOrder() {
+    list<Variable*> *order = new list<Variable*>;
+    for(int i=0;i<nvs;i++) {
+        vs[i]->visited=false;
+    }
+    for(int i=0;i<nvs;i++) {
+        if(vs[i]->in.size()==0) {
+            dfsVisit(vs[i],order);
+        }
+    }
+    return order;
+}
+// Recursive depth first search giving total order by pushing nodes in the DAG
+// onto the front of the list when we finish searching them
+void Blocks::dfsVisit(Variable *v, list<Variable*> *order) {
+    v->visited=true;
+    vector<Constraint*>::iterator it=v->out.begin();
+    for(;it!=v->out.end();++it) {
+        Constraint *c=*it;
+        if(!c->right->visited) {
+            dfsVisit(c->right, order);
+        }
+    }    
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"  order="<<*v<<endl;
+#endif
+    order->push_front(v);
+}
+/*
+ * Processes incoming constraints, most violated to least, merging with the
+ * neighbouring (left) block until no more violated constraints are found
+ */
+void Blocks::mergeLeft(Block *r) {    
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"mergeLeft called on "<<*r<<endl;
+#endif
+    r->timeStamp=++blockTimeCtr;
+    r->setUpInConstraints();
+    Constraint *c=r->findMinInConstraint();
+    while (c != NULL && c->slack()<0) {
+#ifdef LIBVPSC_LOGGING
+        f<<"mergeLeft on constraint: "<<*c<<endl;
+#endif
+        r->deleteMinInConstraint();
+        Block *l = c->left->block;        
+        if (l->in==NULL) l->setUpInConstraints();
+        double dist = c->right->offset - c->left->offset - c->gap;
+        if (r->vars->size() < l->vars->size()) {
+            dist=-dist;
+            std::swap(l, r);
+        }
+        blockTimeCtr++;
+        r->merge(l, c, dist);
+        r->mergeIn(l);
+        r->timeStamp=blockTimeCtr;
+        removeBlock(l);
+        c=r->findMinInConstraint();
+    }        
+#ifdef LIBVPSC_LOGGING
+    f<<"merged "<<*r<<endl;
+#endif
+}    
+/*
+ * Symmetrical to mergeLeft
+ */
+void Blocks::mergeRight(Block *l) {    
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"mergeRight called on "<<*l<<endl;
+#endif    
+    l->setUpOutConstraints();
+    Constraint *c = l->findMinOutConstraint();
+    while (c != NULL && c->slack()<0) {        
+#ifdef LIBVPSC_LOGGING
+        f<<"mergeRight on constraint: "<<*c<<endl;
+#endif
+        l->deleteMinOutConstraint();
+        Block *r = c->right->block;
+        r->setUpOutConstraints();
+        double dist = c->left->offset + c->gap - c->right->offset;
+        if (l->vars->size() > r->vars->size()) {
+            dist=-dist;
+            std::swap(l, r);
+        }
+        l->merge(r, c, dist);
+        l->mergeOut(r);
+        removeBlock(r);
+        c=l->findMinOutConstraint();
+    }    
+#ifdef LIBVPSC_LOGGING
+    f<<"merged "<<*l<<endl;
+#endif
+}
+void Blocks::removeBlock(Block *doomed) {
+    doomed->deleted=true;
+    //erase(doomed);
+}
+void Blocks::cleanup() {
+    vector<Block*> bcopy(begin(),end());
+    for(vector<Block*>::iterator i=bcopy.begin();i!=bcopy.end();++i) {
+        Block *b=*i;
+        if(b->deleted) {
+            erase(b);
+            delete b;
+        }
+    }
+}
+/*
+ * Splits block b across constraint c into two new blocks, l and r (c's left
+ * and right sides respectively)
+ */
+void Blocks::split(Block *b, Block *&l, Block *&r, Constraint *c) {
+    b->split(l,r,c);
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"Split left: "<<*l<<endl;
+    f<<"Split right: "<<*r<<endl;
+#endif
+    r->posn = b->posn;
+    //COLA_ASSERT(r->weight!=0);
+    //r->wposn = r->posn * r->weight;
+    mergeLeft(l);
+    // r may have been merged!
+    r = c->right->block;
+    r->updateWeightedPosition();
+    //r->posn = r->wposn / r->weight;
+    mergeRight(r);
+    removeBlock(b);
+
+    insert(l);
+    insert(r);
+    COLA_ASSERT(__NOTNAN(l->posn));
+    COLA_ASSERT(__NOTNAN(r->posn));
+}
+/*
+ * returns the cost total squared distance of variables from their desired
+ * positions
+ */
+double Blocks::cost() {
+    double c = 0;
+    for(set<Block*>::iterator i=begin();i!=end();++i) {
+        c += (*i)->cost();
+    }
+    return c;
+}
+
+void PositionStats::addVariable(Variable* v) {
+    double ai=scale/v->scale;
+    double bi=v->offset/v->scale;
+    double wi=v->weight;
+    AB+=wi*ai*bi;
+    AD+=wi*ai*v->desiredPosition;
+    A2+=wi*ai*ai;
+    /*
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f << "adding v[" << v->id << "], blockscale=" << scale << ", despos=" 
+      << v->desiredPosition << ", ai=" << ai << ", bi=" << bi
+      << ", AB=" << AB << ", AD=" << AD << ", A2=" << A2;
+#endif
+*/
+}
+void Block::addVariable(Variable* v) {
+    v->block=this;
+    vars->push_back(v);
+    if(ps.A2==0) ps.scale=v->scale;
+    //weight+= v->weight;
+    //wposn += v->weight * (v->desiredPosition - v->offset);
+    //posn=wposn/weight;
+    ps.addVariable(v);
+    posn=(ps.AD - ps.AB) / ps.A2;
+    COLA_ASSERT(__NOTNAN(posn));
+    /*
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f << ", posn=" << posn << endl;
+#endif
+*/
+}
+Block::Block(Variable* const v)
+    : vars(new vector<Variable*>)
+    , posn(0)
+    //, weight(0)
+    //, wposn(0)
+    , deleted(false)
+    , timeStamp(0)
+    , in(NULL)
+    , out(NULL)
+{
+    if(v!=NULL) {
+        v->offset=0;
+        addVariable(v);
+    }
+}
+
+void Block::updateWeightedPosition() {
+    //wposn=0;
+    ps.AB=ps.AD=ps.A2=0;
+    for (Vit v=vars->begin();v!=vars->end();++v) {
+        //wposn += ((*v)->desiredPosition - (*v)->offset) * (*v)->weight;
+        ps.addVariable(*v);
+    }
+    posn=(ps.AD - ps.AB) / ps.A2;
+    COLA_ASSERT(__NOTNAN(posn));
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f << ", posn=" << posn << endl;
+#endif
+}
+Block::~Block(void)
+{
+    delete vars;
+    delete in;
+    delete out;
+}
+void Block::setUpInConstraints() {
+    setUpConstraintHeap(in,true);
+}
+void Block::setUpOutConstraints() {
+    setUpConstraintHeap(out,false);
+}
+void Block::setUpConstraintHeap(Heap* &h,bool in) {
+    delete h;
+    h = new Heap();
+    for (Vit i=vars->begin();i!=vars->end();++i) {
+        Variable *v=*i;
+        vector<Constraint*> *cs=in?&(v->in):&(v->out);
+        for (Cit j=cs->begin();j!=cs->end();++j) {
+            Constraint *c=*j;
+            c->timeStamp=blockTimeCtr;
+            if (c->left->block != this && in || c->right->block != this && !in) {
+                h->push(c);
+            }
+        }
+    }
+}    
+Block* Block::merge(Block* b, Constraint* c) {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"  merging on: "<<*c<<",c->left->offset="<<c->left->offset<<",c->right->offset="<<c->right->offset<<endl;
+#endif
+    double dist = c->right->offset - c->left->offset - c->gap;
+    Block *l=c->left->block;
+    Block *r=c->right->block;
+    if (l->vars->size() < r->vars->size()) {
+        r->merge(l,c,dist);
+    } else {
+               l->merge(r,c,-dist);
+    }
+    Block* mergeBlock=b->deleted?this:b;
+#ifdef LIBVPSC_LOGGING
+    f<<"  merged block="<<*mergeBlock<<endl;
+#endif
+    return mergeBlock;
+}
+/*
+ * Merges b into this block across c.  Can be either a
+ * right merge or a left merge
+ * @param b block to merge into this
+ * @param c constraint being merged
+ * @param distance separation required to satisfy c
+ */
+void Block::merge(Block *b, Constraint *c, double dist) {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"    merging: "<<*b<<"dist="<<dist<<endl;
+#endif
+    c->active=true;
+    //wposn+=b->wposn-dist*b->weight;
+    //weight+=b->weight;
+    for(Vit i=b->vars->begin();i!=b->vars->end();++i) {
+        Variable *v=*i;
+        //v->block=this;
+        //vars->push_back(v);
+        v->offset+=dist;
+        addVariable(v);
+    }
+#ifdef LIBVPSC_LOGGING
+    for(Vit i=vars->begin();i!=vars->end();++i) {
+        Variable *v=*i;
+        f<<"    v["<<v->id<<"]: d="<<v->desiredPosition
+            <<" a="<<v->scale<<" o="<<v->offset
+            <<endl;
+    }
+    f<<"  AD="<<ps.AD<<" AB="<<ps.AB<<" A2="<<ps.A2<<endl;
+#endif
+    //posn=wposn/weight;
+    //COLA_ASSERT(wposn==ps.AD - ps.AB);
+    posn=(ps.AD - ps.AB) / ps.A2;
+    COLA_ASSERT(__NOTNAN(posn));
+    b->deleted=true;
+}
+
+void Block::mergeIn(Block *b) {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"  merging constraint heaps... "<<endl;
+#endif
+    // We check the top of the heaps to remove possible internal constraints
+    findMinInConstraint();
+    b->findMinInConstraint();
+    while (!b->in->empty())
+    {
+        in->push(b->in->top());
+        b->in->pop();
+    }
+#ifdef LIBVPSC_LOGGING
+    f<<"  merged heap: "<<*in<<endl;
+#endif
+}
+void Block::mergeOut(Block *b) {    
+    findMinOutConstraint();
+    b->findMinOutConstraint();
+    while (!b->out->empty())
+    {
+        out->push(b->out->top());
+        b->out->pop();
+    }
+}
+Constraint *Block::findMinInConstraint() {
+    Constraint *v = NULL;
+    vector<Constraint*> outOfDate;
+    while (!in->empty()) {
+        v = in->top();
+        Block *lb=v->left->block;
+        Block *rb=v->right->block;
+        // rb may not be this if called between merge and mergeIn
+#ifdef LIBVPSC_LOGGING
+        ofstream f(LOGFILE,ios::app);
+        f<<"  checking constraint ... "<<*v;
+        f<<"    timestamps: left="<<lb->timeStamp<<" right="<<rb->timeStamp<<" constraint="<<v->timeStamp<<endl;
+#endif
+        if(lb == rb) {
+            // constraint has been merged into the same block
+#ifdef LIBVPSC_LOGGING
+            if(v->slack()<0) {
+                f<<"  violated internal constraint found! "<<*v<<endl;
+                f<<"     lb="<<*lb<<endl;
+                f<<"     rb="<<*rb<<endl;
+            }
+#endif
+            in->pop();
+#ifdef LIBVPSC_LOGGING
+            f<<" ... skipping internal constraint"<<endl;
+#endif
+        } else if(v->timeStamp < lb->timeStamp) {
+            // block at other end of constraint has been moved since this
+            in->pop();
+            outOfDate.push_back(v);
+#ifdef LIBVPSC_LOGGING
+            f<<"    reinserting out of date (reinsert later)"<<endl;
+#endif
+        } else {
+            break;
+        }
+    }
+    for(Cit i=outOfDate.begin();i!=outOfDate.end();++i) {
+        v=*i;
+        v->timeStamp=blockTimeCtr;
+        in->push(v);
+    }
+    if(in->empty()) {
+        v=NULL;
+    } else {
+        v=in->top();
+    }
+    return v;
+}
+Constraint *Block::findMinOutConstraint() {
+    if(out->empty()) return NULL;
+    Constraint *v = out->top();
+    while (v->left->block == v->right->block) {
+        out->pop();
+        if(out->empty()) return NULL;
+        v = out->top();
+    }
+    return v;
+}
+void Block::deleteMinInConstraint() {
+    in->pop();
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"deleteMinInConstraint... "<<endl;
+    f<<"  result: "<<*in<<endl;
+#endif
+}
+void Block::deleteMinOutConstraint() {
+    out->pop();
+}
+inline bool Block::canFollowLeft(Constraint const* c, Variable const* last) const {
+    return c->left->block==this && c->active && last!=c->left;
+}
+inline bool Block::canFollowRight(Constraint const* c, Variable const* last) const {
+    return c->right->block==this && c->active && last!=c->right;
+}
+
+// computes the derivative of v and the lagrange multipliers
+// of v's out constraints (as the recursive sum of those below.
+// Does not backtrack over u.
+// also records the constraint with minimum lagrange multiplier
+// in min_lm
+double Block::compute_dfdv(Variable* const v, Variable* const u,
+               Constraint *&min_lm) {
+    double dfdv=v->dfdv();
+    for(Cit it=v->out.begin();it!=v->out.end();++it) {
+        Constraint *c=*it;
+        if(canFollowRight(c,u)) {
+            c->lm=compute_dfdv(c->right,v,min_lm);
+            dfdv+=c->lm*c->left->scale;
+            if(!c->equality&&(min_lm==NULL||c->lm<min_lm->lm)) min_lm=c;
+        }
+    }
+    for(Cit it=v->in.begin();it!=v->in.end();++it) {
+        Constraint *c=*it;
+        if(canFollowLeft(c,u)) {
+            c->lm=-compute_dfdv(c->left,v,min_lm);
+            dfdv-=c->lm*c->right->scale;
+            if(!c->equality&&(min_lm==NULL||c->lm<min_lm->lm)) min_lm=c;
+        }
+    }
+    return dfdv/v->scale;
+}
+double Block::compute_dfdv(Variable* const v, Variable* const u) {
+    double dfdv = v->dfdv();
+    for(Cit it = v->out.begin(); it != v->out.end(); ++it) {
+        Constraint *c = *it;
+        if(canFollowRight(c,u)) {
+            c->lm =   compute_dfdv(c->right,v);
+            dfdv += c->lm * c->left->scale;
+        }
+    }
+    for(Cit it=v->in.begin();it!=v->in.end();++it) {
+        Constraint *c = *it;
+        if(canFollowLeft(c,u)) {
+            c->lm = - compute_dfdv(c->left,v);
+            dfdv -= c->lm * c->right->scale;
+        }
+    }
+    return dfdv/v->scale;
+}
+
+// The top level v and r are variables between which we want to find the
+// constraint with the smallest lm.  
+// Similarly, m is initially NULL and is only assigned a value if the next
+// variable to be visited is r or if a possible min constraint is returned from
+// a nested call (rather than NULL).
+// Then, the search for the m with minimum lm occurs as we return from
+// the recursion (checking only constraints traversed left-to-right 
+// in order to avoid creating any new violations).
+// We also do not consider equality constraints as potential split points
+bool Block::split_path(
+    Variable* r, 
+    Variable* const v, 
+    Variable* const u, 
+    Constraint* &m,
+    bool desperation=false
+    ) 
+{
+    for(Cit it(v->in.begin());it!=v->in.end();++it) {
+        Constraint *c=*it;
+        if(canFollowLeft(c,u)) {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"  left split path: "<<*c<<endl;
+#endif
+            if(c->left==r) {
+                if(desperation&&!c->equality) m=c;
+                return true;
+            } else {
+                if(split_path(r,c->left,v,m)) {
+                    if(desperation && !c->equality && (!m||c->lm<m->lm)) {
+                               m=c;
+                    }
+                    return true;
+                }
+            }
+        }
+    }
+    for(Cit it(v->out.begin());it!=v->out.end();++it) {
+        Constraint *c=*it;
+        if(canFollowRight(c,u)) {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"  right split path: "<<*c<<endl;
+#endif
+            if(c->right==r) {
+                if(!c->equality) m=c;
+                return true;
+            } else {
+                if(split_path(r,c->right,v,m)) {
+                    if(!c->equality && (!m||c->lm<m->lm))
+                               m=c;
+                    return true;
+                }
+            }
+        }
+    }
+    return false;
+}
+/*
+Block::Pair Block::compute_dfdv_between(
+        Variable* r, Variable* const v, Variable* const u, 
+        const Direction dir = NONE, bool changedDirection = false) {
+    double dfdv=v->weight*(v->position() - v->desiredPosition);
+    Constraint *m=NULL;
+    for(Cit it(v->in.begin());it!=v->in.end();++it) {
+        Constraint *c=*it;
+        if(canFollowLeft(c,u)) {
+            if(dir==RIGHT) { 
+                changedDirection = true; 
+            }
+            if(c->left==r) {
+                       r=NULL;
+                    if(!c->equality) m=c; 
+            }
+            Pair p=compute_dfdv_between(r,c->left,v,
+                    LEFT,changedDirection);
+            dfdv -= c->lm = -p.first;
+            if(r && p.second) 
+                m = p.second;
+        }
+    }
+    for(Cit it(v->out.begin());it!=v->out.end();++it) {
+        Constraint *c=*it;
+        if(canFollowRight(c,u)) {
+            if(dir==LEFT) { 
+                changedDirection = true; 
+            }
+            if(c->right==r) {
+                       r=NULL; 
+                    if(!c->equality) m=c; 
+            }
+            Pair p=compute_dfdv_between(r,c->right,v,
+                    RIGHT,changedDirection);
+            dfdv += c->lm = p.first;
+            if(r && p.second) 
+                m = changedDirection && !c->equality && c->lm < p.second->lm 
+                    ? c 
+                    : p.second;
+        }
+    }
+    return Pair(dfdv,m);
+}
+*/
+
+// resets LMs for all active constraints to 0 by
+// traversing active constraint tree starting from v,
+// not back tracking over u
+void Block::reset_active_lm(Variable* const v, Variable* const u) {
+    for(Cit it=v->out.begin();it!=v->out.end();++it) {
+        Constraint *c=*it;
+        if(canFollowRight(c,u)) {
+            c->lm=0;
+            reset_active_lm(c->right,v);
+        }
+    }
+    for(Cit it=v->in.begin();it!=v->in.end();++it) {
+        Constraint *c=*it;
+        if(canFollowLeft(c,u)) {
+            c->lm=0;
+            reset_active_lm(c->left,v);
+        }
+    }
+}
+void Block::list_active(Variable* const v, Variable* const u) {
+    for(Cit it=v->out.begin();it!=v->out.end();++it) {
+        Constraint *c=*it;
+        if(canFollowRight(c,u)) {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"  "<<*c<<endl;
+#endif
+            list_active(c->right,v);
+        }
+    }
+    for(Cit it=v->in.begin();it!=v->in.end();++it) {
+        Constraint *c=*it;
+        if(canFollowLeft(c,u)) {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"  "<<*c<<endl;
+#endif
+            list_active(c->left,v);
+        }
+    }
+}
+/*
+ * finds the constraint with the minimum lagrange multiplier, that is, the constraint
+ * that most wants to split
+ */
+Constraint *Block::findMinLM() {
+    Constraint *min_lm=NULL;
+    reset_active_lm(vars->front(),NULL);
+    compute_dfdv(vars->front(),NULL,min_lm);
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"  langrangians: "<<endl;
+    list_active(vars->front(),NULL);
+#endif
+    return min_lm;
+}
+Constraint *Block::findMinLMBetween(Variable* const lv, Variable* const rv) {
+    reset_active_lm(vars->front(),NULL);
+    compute_dfdv(vars->front(),NULL);
+    Constraint *min_lm=NULL;
+    split_path(rv,lv,NULL,min_lm);
+#if 0
+    if(min_lm==NULL) {
+        split_path(rv,lv,NULL,min_lm,true);
+    }
+#else
+    if(min_lm==NULL) {
+        fprintf(stderr,"Couldn't find split point!\n");
+        UnsatisfiableException e;
+        getActivePathBetween(e.path,lv,rv,NULL);
+        throw e;
+    }
+    COLA_ASSERT(min_lm!=NULL);
+#endif
+    return min_lm;
+}
+
+// populates block b by traversing the active constraint tree adding variables as they're 
+// visited.  Starts from variable v and does not backtrack over variable u.
+void Block::populateSplitBlock(Block *b, Variable* v, Variable const* u) {
+    b->addVariable(v);
+    for (Cit c=v->in.begin();c!=v->in.end();++c) {
+        if (canFollowLeft(*c,u))
+            populateSplitBlock(b, (*c)->left, v);
+    }
+    for (Cit c=v->out.begin();c!=v->out.end();++c) {
+        if (canFollowRight(*c,u)) 
+            populateSplitBlock(b, (*c)->right, v);
+    }
+}
+/*
+ * Returns the active path between variables u and v... not back tracking over w
+ */
+bool Block::getActivePathBetween(Constraints& path, Variable const* u,
+               Variable const* v, Variable const *w) const {
+    if(u==v) return true;
+    for (Cit_const c=u->in.begin();c!=u->in.end();++c) {
+        if (canFollowLeft(*c,w)) {
+            if(getActivePathBetween(path, (*c)->left, v, u)) {
+                path.push_back(*c);
+                return true;
+            }
+        }
+    }
+    for (Cit_const c=u->out.begin();c!=u->out.end();++c) {
+        if (canFollowRight(*c,w)) {
+            if(getActivePathBetween(path, (*c)->right, v, u)) {
+                path.push_back(*c);
+                return true;
+            }
+        }
+    }
+    return false;
+}
+// Search active constraint tree from u to see if there is a directed path to v.
+// Returns true if path is found with all constraints in path having their visited flag
+// set true.
+bool Block::isActiveDirectedPathBetween(Variable const* u, Variable const* v) const {
+    if(u==v) return true;
+    for (Cit_const c=u->out.begin();c!=u->out.end();++c) {
+        if(canFollowRight(*c,NULL)) {
+            if(isActiveDirectedPathBetween((*c)->right,v)) {
+                return true;
+            }
+        }
+    }
+    return false;
+}
+bool Block::getActiveDirectedPathBetween(
+        Constraints& path, Variable const* u, Variable const* v) const {
+    if(u==v) return true;
+    for (Cit_const c=u->out.begin();c!=u->out.end();++c) {
+        if(canFollowRight(*c,NULL)) {
+            if(getActiveDirectedPathBetween(path,(*c)->right,v)) {
+                path.push_back(*c);
+                return true;
+            }
+        }
+    }
+    return false;
+}
+/*
+ * Block needs to be split because of a violated constraint between vl and vr.
+ * We need to search the active constraint tree between l and r and find the constraint
+ * with min lagrangrian multiplier and split at that point.
+ * Returns the split constraint
+ */
+Constraint* Block::splitBetween(Variable* const vl, Variable* const vr,
+               Block* &lb, Block* &rb) {
+#ifdef LIBVPSC_LOGGING
+    ofstream f(LOGFILE,ios::app);
+    f<<"  need to split between: "<<*vl<<" and "<<*vr<<endl;
+#endif
+    Constraint *c=findMinLMBetween(vl, vr);
+#ifdef LIBVPSC_LOGGING
+    f<<"  going to split on: "<<*c<<endl;
+#endif
+    if(c!=NULL) {
+        split(lb,rb,c);
+        deleted = true;
+    }
+    return c;
+}
+
+/*
+ * Creates two new blocks, l and r, and splits this block across constraint c,
+ * placing the left subtree of constraints (and associated variables) into l
+ * and the right into r.
+ */
+void Block::split(Block* &l, Block* &r, Constraint* c) {
+    c->active=false;
+    l=new Block();
+    populateSplitBlock(l,c->left,c->right);
+    //COLA_ASSERT(l->weight>0);
+    r=new Block();
+    populateSplitBlock(r,c->right,c->left);
+    //COLA_ASSERT(r->weight>0);
+}
+
+/*
+ * Computes the cost (squared euclidean distance from desired positions) of the
+ * current positions for variables in this block
+ */
+double Block::cost() {
+    double c = 0;
+    for (Vit v=vars->begin();v!=vars->end();++v) {
+        double diff = (*v)->position() - (*v)->desiredPosition;
+        c += (*v)->weight * diff * diff;
+    }
+    return c;
+}
+ostream& operator <<(ostream &os, const Block& b)
+{
+    os<<"Block(posn="<<b.posn<<"):";
+    for(Block::Vit v=b.vars->begin();v!=b.vars->end();++v) {
+        os<<" "<<**v;
+    }
+    if(b.deleted) {
+        os<<" Deleted!";
+    }
+    return os;
+}
+
+Constraint::Constraint(Variable *left, Variable *right, double gap, bool equality)
+: left(left),
+  right(right),
+  gap(gap),
+  timeStamp(0),
+  active(false),
+  equality(equality),
+  unsatisfiable(false)
+{
+    // In hindsight I think it's probably better to build the constraint DAG
+    // (by creating variable in/out lists) when needed, rather than in advance
+    //left->out.push_back(this);
+    //right->in.push_back(this);
+}
+Constraint::~Constraint() {
+    // see constructor: the following is just way too slow.  
+    // Better to create a
+    // new DAG on demand than maintain the lists dynamically.
+    //Constraints::iterator i;
+    //for(i=left->out.begin(); i!=left->out.end(); i++) {
+        //if(*i==this) break;
+    //}
+    //left->out.erase(i);
+    //for(i=right->in.begin(); i!=right->in.end(); i++) {
+        //if(*i==this) break;
+    //}
+    //right->in.erase(i);
+}
+double Constraint::slack() const { 
+    return unsatisfiable ? DBL_MAX
+           : right->scale * right->position() 
+         - gap - left->scale * left->position(); 
+}
+std::ostream& operator <<(std::ostream &os, const Constraint &c)
+{
+    if(&c==NULL) {
+        os<<"NULL";
+    } else {
+        const char *type=c.equality?"=":"<=";
+        std::ostringstream lscale, rscale;
+        if(c.left->scale!=1) {
+            lscale << c.left->scale << "*";
+        }
+        if(c.right->scale!=1) {
+            rscale << c.right->scale << "*";
+        }
+        os<<lscale.str()<<*c.left<<"+"<<c.gap<<type<<rscale.str()<<*c.right;
+        if(c.left->block&&c.right->block)
+            os<<"("<<c.slack()<<")"<<(c.active?"-active":"")
+                <<"(lm="<<c.lm<<")";
+        else
+            os<<"(vars have no position)";
+    }
+    return os;
+}
+
+bool CompareConstraints::operator() (
+    Constraint *const &l, Constraint *const &r
+) const {
+    double const sl = 
+        l->left->block->timeStamp > l->timeStamp
+        ||l->left->block==l->right->block
+        ?-DBL_MAX:l->slack();
+    double const sr = 
+        r->left->block->timeStamp > r->timeStamp
+        ||r->left->block==r->right->block
+        ?-DBL_MAX:r->slack();
+    if(sl==sr) {
+        // arbitrary choice based on id
+        if(l->left->id==r->left->id) {
+            if(l->right->id<r->right->id) return true;
+            return false;
+        }
+        if(l->left->id<r->left->id) return true;
+        return false;
+    }
+    return sl > sr;
+}
+
+std::ostream& operator <<(std::ostream &os, const Variable &v) {
+    if(v.block)
+        os << "(" << v.id << "=" << v.position() << ")";
+    else
+        os << "(" << v.id << "=" << v.desiredPosition << ")";
+    return os;
+}
+
+}
diff --git a/src/libavoid/vpsc.h b/src/libavoid/vpsc.h
new file mode 100644 (file)
index 0000000..4d6d8ce
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+ * vim: ts=4 sw=4 et tw=0 wm=0
+ *
+ * libavoid - Fast, Incremental, Object-avoiding Line Router
+ *
+ * Copyright (C) 2005-2009  Monash University
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ * See the file LICENSE.LGPL distributed with the library.
+ *
+ * Licensees holding a valid commercial license may use this file in
+ * accordance with the commercial license agreement provided with the 
+ * library.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
+ *
+ * Author(s):   Tim Dwyer  <Tim.Dwyer@csse.monash.edu.au>
+ *
+ * --------------
+ *
+ * This file contains a slightly modified version of Solver() from libvpsc:
+ * A solver for the problem of Variable Placement with Separation Constraints.
+ * It has the following changes from the Adaptagrams VPSC version:
+ *  -  The required VPSC code has been consolidated into a single file.
+ *  -  Unnecessary code (like Solver) has been removed.
+ *  -  The PairingHeap code has been replaced by a STL priority_queue.
+ *
+ * Modifications:  Michael Wybrow  <mjwybrow@users.sourceforge.net>
+ *
+*/
+
+#ifndef LIBAVOID_VPSC_H
+#define LIBAVOID_VPSC_H
+
+#include <vector>
+#include <list>
+#include <set>
+#include <queue>
+
+namespace Avoid {
+
+class Variable;
+class Constraint;
+typedef std::vector<Variable*> Variables;
+typedef std::vector<Constraint*> Constraints;
+class CompareConstraints {
+public:
+    bool operator() (Constraint *const &l, Constraint *const &r) const;
+};
+struct PositionStats {
+    PositionStats() : scale(0), AB(0), AD(0), A2(0) {}
+    void addVariable(Variable* const v);
+    double scale;
+    double AB;
+    double AD;
+    double A2;
+};
+
+typedef std::priority_queue<Constraint*,std::vector<Constraint*>,
+        CompareConstraints> Heap;
+
+class Block
+{
+    typedef Variables::iterator Vit;
+    typedef Constraints::iterator Cit;
+    typedef Constraints::const_iterator Cit_const;
+
+    friend std::ostream& operator <<(std::ostream &os,const Block &b);
+public:
+    Variables *vars;
+    double posn;
+    //double weight;
+    //double wposn;
+    PositionStats ps;
+    Block(Variable* const v=NULL);
+    ~Block(void);
+    Constraint* findMinLM();
+    Constraint* findMinLMBetween(Variable* const lv, Variable* const rv);
+    Constraint* findMinInConstraint();
+    Constraint* findMinOutConstraint();
+    void deleteMinInConstraint();
+    void deleteMinOutConstraint();
+    void updateWeightedPosition();
+    void merge(Block *b, Constraint *c, double dist);
+    Block* merge(Block *b, Constraint *c);
+    void mergeIn(Block *b);
+    void mergeOut(Block *b);
+    void split(Block *&l, Block *&r, Constraint *c);
+    Constraint* splitBetween(Variable* vl, Variable* vr, Block* &lb, Block* &rb);
+    void setUpInConstraints();
+    void setUpOutConstraints();
+    double cost();
+    bool deleted;
+    long timeStamp;
+    Heap *in;
+    Heap *out;
+    bool getActivePathBetween(Constraints& path, Variable const* u,
+               Variable const* v, Variable const *w) const;
+    bool isActiveDirectedPathBetween(
+            Variable const* u, Variable const* v) const;
+    bool getActiveDirectedPathBetween(Constraints& path, Variable const * u, Variable const * v) const;
+private:
+    typedef enum {NONE, LEFT, RIGHT} Direction;
+    typedef std::pair<double, Constraint*> Pair;
+    void reset_active_lm(Variable* const v, Variable* const u);
+    void list_active(Variable* const v, Variable* const u);
+    double compute_dfdv(Variable* const v, Variable* const u);
+    double compute_dfdv(Variable* const v, Variable* const u, Constraint *&min_lm);
+    bool split_path(Variable*, Variable* const, Variable* const, 
+            Constraint* &min_lm, bool desperation);
+    bool canFollowLeft(Constraint const* c, Variable const* last) const;
+    bool canFollowRight(Constraint const* c, Variable const* last) const;
+    void populateSplitBlock(Block *b, Variable* v, Variable const* u);
+    void addVariable(Variable* v);
+    void setUpConstraintHeap(Heap* &h,bool in);
+};
+
+
+class Constraint;
+typedef std::vector<Constraint*> Constraints;
+class Variable
+{
+    friend std::ostream& operator <<(std::ostream &os, const Variable &v);
+    friend class Block;
+    friend class Constraint;
+    friend class IncSolver;
+public:
+    int id; // useful in log files
+    double desiredPosition;
+    double finalPosition;
+    double weight; // how much the variable wants to 
+                   // be at it's desired position
+    double scale; // translates variable to another space
+    double offset;
+    Block *block;
+    bool visited;
+    bool fixedDesiredPosition;
+    Constraints in;
+    Constraints out;
+    char *toString();
+    inline Variable(const int id, const double desiredPos=-1.0, 
+            const double weight=1.0, const double scale=1.0)
+        : id(id)
+        , desiredPosition(desiredPos)
+        , weight(weight)
+        , scale(scale)
+        , offset(0)
+        , block(NULL)
+        , visited(false)
+        , fixedDesiredPosition(false)
+    {
+    }
+    double dfdv() const {
+        return 2. * weight * ( position() - desiredPosition );
+    }
+private:
+    double position() const {
+        return (block->ps.scale*block->posn+offset)/scale;
+    }
+};
+
+
+class Constraint
+{
+    friend std::ostream& operator <<(std::ostream &os,const Constraint &c);
+public:
+    Variable *left;
+    Variable *right;
+    double gap;
+    double lm;
+    Constraint(Variable *left, Variable *right, double gap, bool equality=false);
+    ~Constraint();
+    double slack() const;
+    long timeStamp;
+    bool active;
+    const bool equality;
+    bool unsatisfiable;
+};
+/*
+ * A block structure defined over the variables such that each block contains
+ * 1 or more variables, with the invariant that all constraints inside a block
+ * are satisfied by keeping the variables fixed relative to one another
+ */
+class Blocks : public std::set<Block*>
+{
+public:
+    Blocks(Variables const &vs);
+    ~Blocks(void);
+    void mergeLeft(Block *r);
+    void mergeRight(Block *l);
+    void split(Block *b, Block *&l, Block *&r, Constraint *c);
+    std::list<Variable*> *totalOrder();
+    void cleanup();
+    double cost();
+private:
+    void dfsVisit(Variable *v, std::list<Variable*> *order);
+    void removeBlock(Block *doomed);
+    Variables const &vs;
+    int nvs;
+};
+
+extern long blockTimeCtr;
+
+struct UnsatisfiableException {
+    Constraints path;
+};
+struct UnsatisfiedConstraint {
+    UnsatisfiedConstraint(Constraint& c):c(c) {}
+    Constraint& c;
+};
+/*
+ * Variable Placement with Separation Constraints problem instance
+ */
+class IncSolver {
+public:
+    unsigned splitCnt;
+    bool satisfy();
+    bool solve();
+    void moveBlocks();
+    void splitBlocks();
+    IncSolver(Variables const &vs, Constraints const &cs);
+
+    ~IncSolver();
+    Variables const & getVariables() { return vs; }
+protected:
+    Blocks *bs;
+    unsigned m;
+    Constraints const &cs;
+    unsigned n;
+    Variables const &vs;
+    void printBlocks();
+    void copyResult();
+private:
+    bool constraintGraphIsCyclic(const unsigned n, Variable* const vs[]);
+    bool blockGraphIsCyclic();
+    Constraints inactive;
+    Constraints violated;
+    Constraint* mostViolated(Constraints &l);
+};
+
+struct delete_object
+{
+    template <typename T>
+    void operator()(T *ptr){ delete ptr;}
+};
+
+
+}
+
+#endif // AVOID_VPSC_H