<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mfloryan</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mfloryan"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Mfloryan"/>
	<updated>2026-04-28T21:06:41Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=123094</id>
		<title>CompilingMacOsX</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingMacOsX&amp;diff=123094"/>
		<updated>2025-02-12T08:49:54Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Using Homebrew */  + libspelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkred;font-weight:bold&amp;quot;&amp;gt;Section about MacPorts IS OUTDATED AND UNMAINTAINED!&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:darkgreen;font-weight:bold&amp;quot;&amp;gt;Section about HomeBrew IS UP TO DATE as of Oct 30, 2024&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Using MacPorts =&lt;br /&gt;
&lt;br /&gt;
If you can build successfully with MacPorts, please update this file and remove above comment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Download and install [http://www.macports.org/ MacPorts]&lt;br /&gt;
&amp;lt;li&amp;gt;Edit the MacPorts variants config (optional).&lt;br /&gt;
&amp;lt;br&amp;gt;Add this line to &amp;lt;code&amp;gt;/opt/local/etc/macports/variants.conf&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;-x11 +quartz&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In Terminal (Applications&amp;gt;Utilities&amp;gt;Terminal) type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;sudo port install \&lt;br /&gt;
     adwaita-icon-theme \&lt;br /&gt;
     boehmgc \&lt;br /&gt;
     boost \&lt;br /&gt;
     cairo \&lt;br /&gt;
     ccache \&lt;br /&gt;
     cmake \&lt;br /&gt;
     double-conversion \&lt;br /&gt;
     gdl3 \&lt;br /&gt;
     gettext \&lt;br /&gt;
     gsl \&lt;br /&gt;
     gtkmm3 \&lt;br /&gt;
     gtk-osx-application-gtk3 \&lt;br /&gt;
     lcms2 \&lt;br /&gt;
     libsoup \&lt;br /&gt;
     libxslt \&lt;br /&gt;
     ninja \&lt;br /&gt;
     poppler \&lt;br /&gt;
     potrace \&lt;br /&gt;
     py-lxml \&lt;br /&gt;
     py-numpy \&lt;br /&gt;
     -x11 +quartz&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In Terminal, get Inkscape&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;git clone --recurse-submodules https://gitlab.com/inkscape/inkscape.git&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;And build inkscape&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# use a clean MacPorts environment (optional)&lt;br /&gt;
LIBPREFIX=&amp;quot;/opt/local&amp;quot;&lt;br /&gt;
export PATH=&amp;quot;$LIBPREFIX/bin:/usr/bin:/bin:/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# where to install&lt;br /&gt;
PREFIX=&amp;quot;$PWD/install-prefix&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# where to build&lt;br /&gt;
mkdir build&lt;br /&gt;
cd build&lt;br /&gt;
&lt;br /&gt;
cmake \&lt;br /&gt;
    -G Ninja \&lt;br /&gt;
    -DCMAKE_PREFIX_PATH=&amp;quot;$LIBPREFIX&amp;quot; \&lt;br /&gt;
    -DCMAKE_INSTALL_PREFIX=&amp;quot;$PREFIX&amp;quot; \&lt;br /&gt;
    -DCMAKE_C_COMPILER_LAUNCHER=ccache \&lt;br /&gt;
    -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \&lt;br /&gt;
    -DWITH_OPENMP=OFF \&lt;br /&gt;
    ../inkscape&lt;br /&gt;
&lt;br /&gt;
ninja&lt;br /&gt;
ninja install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
''Note: Using [https://en.wikipedia.org/wiki/Ccache ccache] and [https://ninja-build.org/ ninja] is not required, but very common because it speeds up compilation.''&lt;br /&gt;
&amp;lt;li&amp;gt;Run Inkscape&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$PREFIX/bin/inkscape&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Using Homebrew =&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
* Xcode (AppStore)&lt;br /&gt;
* Xcode command line tools (&amp;lt;code&amp;gt;xcode-select --install&amp;lt;/code&amp;gt;)&lt;br /&gt;
* HomeBrew&lt;br /&gt;
&lt;br /&gt;
If you are using [https://brew.sh/ Homebrew] instead, you can still use the above guidelines with small modifications.&lt;br /&gt;
(Make sure you don't have any MacPorts stuff in your PATH.)&lt;br /&gt;
&lt;br /&gt;
List of '''packages''' to install with brew&lt;br /&gt;
(for Inkscape on master branch using GTK4):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
brew install \&lt;br /&gt;
    adwaita-icon-theme \&lt;br /&gt;
    bdw-gc \&lt;br /&gt;
    boost \&lt;br /&gt;
    cairomm \&lt;br /&gt;
    ccache \&lt;br /&gt;
    cmake \&lt;br /&gt;
    double-conversion \&lt;br /&gt;
    gettext \&lt;br /&gt;
    gsl \&lt;br /&gt;
    gspell \&lt;br /&gt;
    gtkmm4 \&lt;br /&gt;
    gtksourceview5 \&lt;br /&gt;
    imagemagick \&lt;br /&gt;
    intltool \&lt;br /&gt;
    lcms2 \&lt;br /&gt;
    libomp \&lt;br /&gt;
    libsoup@2 \&lt;br /&gt;
    libxslt \&lt;br /&gt;
    ninja \&lt;br /&gt;
    pkg-config \&lt;br /&gt;
    poppler \&lt;br /&gt;
    potrace&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may substitute &amp;lt;code&amp;gt;imagemagick&amp;lt;/code&amp;gt; with &amp;lt;code&amp;gt;graphicsmagick&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If you want to include spell cheker also install &amp;lt;code&amp;gt;libspelling&amp;lt;/code&amp;gt; using brew.&lt;br /&gt;
&lt;br /&gt;
To build version &amp;lt;code&amp;gt;1.4-x&amp;lt;/code&amp;gt; you need &amp;lt;code&amp;gt;gtkmm3&amp;lt;/code&amp;gt;, the &amp;lt;code&amp;gt;gtkmm4&amp;lt;/code&amp;gt; is used from version &amp;lt;code&amp;gt;1.5&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some keg-only libraries need to be added to &amp;lt;code&amp;gt;$PKG_CONFIG_PATH&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some libraries can cause trouble if they are picked up from the SDK instead of Homebrew (observed with &amp;lt;code&amp;gt;libxslt&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;libxml2&amp;lt;/code&amp;gt;). Adding them to &amp;lt;code&amp;gt;$PKG_CONFIG_PATH&amp;lt;/code&amp;gt; should fix this.&lt;br /&gt;
&lt;br /&gt;
Check out the source if you haven't already:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;git clone --recurse-submodules https://gitlab.com/inkscape/inkscape.git&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then &amp;lt;code&amp;gt;cd inkscape&amp;lt;/code&amp;gt; and follow the steps below.&lt;br /&gt;
&lt;br /&gt;
Tested with:&lt;br /&gt;
* M4 MacBook Air with macOS 15.1.1 and Inkscape 1.5-dev (takes about 7 minutes)&lt;br /&gt;
* M1 MacBook Air with macOS 11.6 and Inkscape 1.2-dev&lt;br /&gt;
* M2 MacBook Air with macOS 13.0.1 and Inkscape 1.2.1, 1.2.x from git.&lt;br /&gt;
* M2 Mac Mini with macOS 14.2 and Inkscape 1.4-dev. (After adding pkg-config.)&lt;br /&gt;
* VM with macOS 15.1 and Inkscape 1.5-dev (master branch)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# use a clean Homebrew environment (optional)&lt;br /&gt;
LIBPREFIX=&amp;quot;/opt/homebrew&amp;quot;&lt;br /&gt;
export PATH=&amp;quot;$LIBPREFIX/bin:/usr/bin:/bin:/usr/sbin:/sbin&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# keg-only libraries&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$LIBPREFIX/opt/icu4c/lib/pkgconfig&amp;quot;&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$PKG_CONFIG_PATH:$LIBPREFIX/opt/libsoup@2/lib/pkgconfig&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# prevent picking up libxslt and libxml2 from the (wrong) SDK&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$PKG_CONFIG_PATH:$LIBPREFIX/opt/libxslt/lib/pkgconfig&amp;quot;&lt;br /&gt;
export PKG_CONFIG_PATH=&amp;quot;$PKG_CONFIG_PATH:$LIBPREFIX/opt/libxml2/lib/pkgconfig&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# where to install&lt;br /&gt;
PREFIX=&amp;quot;$PWD/install-prefix&amp;quot;&lt;br /&gt;
&lt;br /&gt;
mkdir -p build&lt;br /&gt;
cd build&lt;br /&gt;
&lt;br /&gt;
cmake \&lt;br /&gt;
    -G Ninja \&lt;br /&gt;
    -DCMAKE_SHARED_LINKER_FLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot; \&lt;br /&gt;
    -DCMAKE_EXE_LINKER_FLAGS=&amp;quot;-L$LIBPREFIX/lib&amp;quot; \&lt;br /&gt;
    -DCMAKE_INSTALL_PREFIX=$PREFIX \&lt;br /&gt;
    -DCMAKE_C_COMPILER_LAUNCHER=ccache \&lt;br /&gt;
    -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \&lt;br /&gt;
    -DWITH_DBUS=OFF \&lt;br /&gt;
    ..&lt;br /&gt;
&lt;br /&gt;
ninja&lt;br /&gt;
ninja install&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Running=&lt;br /&gt;
&lt;br /&gt;
If you encounter the following error (when, eg. going to open file dialog):&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
(org.inkscape.Inkscape:91305): GLib-GIO-ERROR **: 11:18:06.449: No GSettings schemas are installed on the system&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you have to modify the following:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
export XDG_DATA_DIRS=$XDG_DATA_DIRS:/opt/homebrew/share&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Packaging=&lt;br /&gt;
&lt;br /&gt;
If &amp;lt;code&amp;gt;$PREFIX/bin/inkscape&amp;lt;/code&amp;gt; works when executed and you want to turn it into an app or a DMG, have a look at the files inside the &amp;lt;code&amp;gt;inkscape/packaging/macos&amp;lt;/code&amp;gt; directory. More info can be found on upstream mibap:&lt;br /&gt;
&lt;br /&gt;
* https://github.com/dehesselle/mibap&lt;br /&gt;
&lt;br /&gt;
Follow the steps to install the toolset, package the app, and create a DMG. In case you use upstream mibap, you will get the app under &amp;lt;code&amp;gt;/Users/Shared/work/mibap-*/&amp;lt;/code&amp;gt; and you will get a DMG file in the same place you ran &amp;lt;code&amp;gt;./build_inkscape.sh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=See also=&lt;br /&gt;
* [[Tracking Dependencies]]&lt;br /&gt;
* [[Extension requirements]]&lt;br /&gt;
*[[Compiling Inkscape]]&lt;br /&gt;
*[[Notes on Packaging for OS X]]&lt;br /&gt;
* https://github.com/valerioa/Inkscape-MacOS-Curated-Build&lt;br /&gt;
* [https://github.com/ipatch/homebrew-us-05/blob/master/inkscape/inkscape-building-for-macOS.md ipatch's collection of notes] about building Inkscape using Homebrew&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingSuse&amp;diff=72997</id>
		<title>CompilingSuse</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingSuse&amp;diff=72997"/>
		<updated>2011-10-06T10:28:41Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== OpenSuSE 12.1 ==&lt;br /&gt;
&lt;br /&gt;
   zypper install autoconf automake intltool&lt;br /&gt;
   zypper install gcc-c++ gtkmm24-devel gsl-devel boost-devel popt-devel&lt;br /&gt;
   zypper install libtool liblcms-devel libxml2-devel libxslt-devel libMagick++-devel libpng14-devel&lt;br /&gt;
&lt;br /&gt;
You may also want:&lt;br /&gt;
&lt;br /&gt;
   zypper install libwpg-devel dbus-1-glib-devel&lt;br /&gt;
&lt;br /&gt;
To import some additional formats install UniConvertor, available in [http://download.opensuse.org/repositories/graphics/ graphics] repository (though not working at the moment 2011/10/05)&lt;br /&gt;
&lt;br /&gt;
== OpenSUSE 11.2 ==&lt;br /&gt;
&lt;br /&gt;
It's easiest to use zypper from the command line to install the required packages. So log in as root and execute this:&lt;br /&gt;
&lt;br /&gt;
   zypper install autoconf automake intltool&lt;br /&gt;
   zypper install gcc-c++ glibmm2 gtkmm24-devel gsl-devel boost-devel popt-devel&lt;br /&gt;
   zypper install libtool liblcms liblcms-devel libxml2-devel libxslt-devel libMagick++-devel libpng-devel &lt;br /&gt;
&lt;br /&gt;
Now you're ready to download the source code, for example by using bazaar. This has been explained elsewhere on this wiki. Please be patient, because bazaar will download around 250 MB. After downloading the source code, change to that directory and run&lt;br /&gt;
&lt;br /&gt;
   ./autogen.sh&lt;br /&gt;
   ./configure&lt;br /&gt;
   make -j4     # Assuming you have a quadcore. -j4 tells make to use 4 cores&lt;br /&gt;
   make install # inkscape need to be installed at least once, to put all icons&lt;br /&gt;
                # in the correct shared directories. After that you can simply &lt;br /&gt;
                # run inkscape from the start menu or execute it directly&lt;br /&gt;
                # in the source directory (src/inkscape)&lt;br /&gt;
Have fun!&lt;br /&gt;
&lt;br /&gt;
== OpenSUSE 10.2 ==&lt;br /&gt;
&lt;br /&gt;
You need to install these packages to pass the compilation of SVN trunk:&lt;br /&gt;
* gtkmm-devel&lt;br /&gt;
* glibmm-devel&lt;br /&gt;
* cairomm-devel &lt;br /&gt;
* libsigc-2.0-devel&lt;br /&gt;
* popt-devel&lt;br /&gt;
* gc-6.6 (Boehm's collector)&lt;br /&gt;
* intltool&lt;br /&gt;
* + their dependencies&lt;br /&gt;
* AND automake-1.8.5 or any other then 1.9.6 that is installed by default. &lt;br /&gt;
* and any other optionally required packages&lt;br /&gt;
&lt;br /&gt;
If you compile automake-1.8.5 by yourself then be sure that you install it to /usr prefix and not to /usr/local. If you still install to /usr/local, then instead of running &amp;quot;autogen.sh&amp;quot; on svn version, run:&lt;br /&gt;
&lt;br /&gt;
   ACLOCAL_FLAGS=&amp;quot;$ACLOCAL_FLAGS -I /usr/share/aclocal&amp;quot; ./autogen.sh&lt;br /&gt;
&lt;br /&gt;
Then run ./configure; make; sudo make install as usually.&lt;br /&gt;
&lt;br /&gt;
Thanks go to Dobey who helped a lot to figure out what was the problem.&lt;br /&gt;
&lt;br /&gt;
== Suse 9.0 ==&lt;br /&gt;
&lt;br /&gt;
One of the challenges with Suse 9.0 is the lack of a distro provided gtkmm2 and libsigc++ packages.&lt;br /&gt;
&lt;br /&gt;
Best place to find them:  ftp://ftp.gwdg.de/pub/linux/misc/apt4rpm/suse/usr-local-bin/9.0/&lt;br /&gt;
[ This URL does not exist anymore :-( ]&lt;br /&gt;
&lt;br /&gt;
Suse 9.1 includes both now in the GNOME supplemental downloads.&lt;br /&gt;
&lt;br /&gt;
Note that for SuSE the gtk+2 packages are called gtk2.  The gtk+2 2.4 package is not provided via Yast but can be found via rpmseek as gtk2 and gtk2-devel&lt;br /&gt;
&lt;br /&gt;
To find the .pc files, I had to set:&lt;br /&gt;
&lt;br /&gt;
setenv PKG_CONFIG_PATH/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/opt/gnome/lib/pkgconfig/&lt;br /&gt;
&lt;br /&gt;
In SuSE 9.1 I ran into this error:&lt;br /&gt;
&lt;br /&gt;
   configure.in:25: required file `./ltmain.sh' not found&lt;br /&gt;
&lt;br /&gt;
Copying /usr/share/libtool/ltmain.sh into the top directory fixed it.&lt;br /&gt;
&lt;br /&gt;
For 0.40cvs the libgc dependency is added.  In [[SuSE]] 9.1 this is package 'boehm-gc', but it doesn't work - you need to compile from source.  Download from:&lt;br /&gt;
&lt;br /&gt;
   http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source/gc6.3.tar.gz&lt;br /&gt;
&lt;br /&gt;
Then configure it with the command:&lt;br /&gt;
&lt;br /&gt;
   $ ./configure --enable-cplus-plus&lt;br /&gt;
&lt;br /&gt;
SuSE 9.1 also does not have libsigc++ 2.0; I couldn't find an rpm for it so ended up having to compile it from source, from http://prdownloads.sourceforge.net/libsigc/libsigc++-2.0.3.tar.gz&lt;br /&gt;
&lt;br /&gt;
I also had to compile gtkmm 2.4 and glib 2.4 from source; download them from ftp://ftp.gnome.org/pub/GNOME/sources/gtkmm/2.4/ and http://ftp.gnome.org/pub/GNOME/sources/glibmm/2.4/&lt;br /&gt;
&lt;br /&gt;
Looks like these packages are also available from here:ftp://ftp.gwdg.de/pub/linux/suse/apt/SuSE/9.1-i386/RPMS.gnome/&lt;br /&gt;
&lt;br /&gt;
Also, stuff got installed to /opt/gnome/bin/, so I had to also&lt;br /&gt;
`export PATH=$PATH:/opt/gnome/bin/`&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;br /&gt;
[[Category:Needs Work]]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=TranslationStatus&amp;diff=62707</id>
		<title>TranslationStatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=TranslationStatus&amp;diff=62707"/>
		<updated>2010-06-07T20:31:44Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Interface translation (po files) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;br /&gt;
&lt;br /&gt;
= Interface translation (po files) =&lt;br /&gt;
&lt;br /&gt;
* There are some graphical statistics for the current UI translation progress at &lt;br /&gt;
     http://mfloryan.statnet.pl/inkscape/&lt;br /&gt;
&lt;br /&gt;
* Preliminary note : the names and e-mail addresses of contributors and last translator can be found in the header of the po file (simply open it with your favorite text editor or in Linux you can use the command '''head de.po''' to view the first 10 lines of the file de.po)&lt;br /&gt;
&lt;br /&gt;
* General information&lt;br /&gt;
&lt;br /&gt;
Status updated on 19 July 2006&lt;br /&gt;
&lt;br /&gt;
Total number of localizable strings: '''2213'''&lt;br /&gt;
&lt;br /&gt;
Total number of PO files: '''44'''&lt;br /&gt;
&lt;br /&gt;
Average translated: 1345 ('''60 %'''), fuzzy:  408 ( 18 %), untranslated:  459 ( 20 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Amharic''': am.po&lt;br /&gt;
&lt;br /&gt;
translated:   78 ('''3 %'''), fuzzy:  660 ( 29 %), untranslated: 1475 ( 66 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Azerbaijani/Turkic''': az.po&lt;br /&gt;
&lt;br /&gt;
translated:   65 ('''2 %'''), fuzzy:  932 ( 42 %), untranslated: 1216 ( 54 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Belarusian''': be.po&lt;br /&gt;
&lt;br /&gt;
translated:  159 ('''7 %'''), fuzzy: 1026 ( 46 %), untranslated: 1028 ( 46 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Catalan''': ca.po&lt;br /&gt;
&lt;br /&gt;
translated: 2075 ('''93 %'''), fuzzy:   97 (  4 %), untranslated:   41 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Czech''': cs.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   30 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Danish''': da.po&lt;br /&gt;
&lt;br /&gt;
translated: 2210 ('''100 %'''), fuzzy:  0 ( 0 %), untranslated:    3 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''German''': de.po&lt;br /&gt;
&lt;br /&gt;
translated: 2107 ('''95 %'''), fuzzy:   84 (  3 %), untranslated:   22 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Greek''': el.po&lt;br /&gt;
&lt;br /&gt;
translated:  328 ('''14 %'''), fuzzy:  965 ( 43 %), untranslated:  920 ( 41 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''English/Great Britain''': en_GB.po&lt;br /&gt;
&lt;br /&gt;
translated: 2087 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   29 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Spanish''': es.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Spanish/Mexico''': es_MX.po&lt;br /&gt;
&lt;br /&gt;
translated:  337 ('''15 %'''), fuzzy: 1014 ( 45 %), untranslated:  862 ( 38 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Estonian''': et.po&lt;br /&gt;
&lt;br /&gt;
translated:    9 ('''0 %'''), fuzzy:  861 ( 38 %), untranslated: 1343 ( 60 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Basque''': eu.po&lt;br /&gt;
&lt;br /&gt;
translated: 2075 ('''93 %'''), fuzzy:   99 (  4 %), untranslated:   39 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Finnish''': fi.po&lt;br /&gt;
&lt;br /&gt;
translated: 2213 ('''100 %'''), fuzzy:   0 (  0 %), untranslated:   0 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''French''': fr.po&lt;br /&gt;
&lt;br /&gt;
translated: 2192 ('''99 %'''), fuzzy:   11 (  0 %), untranslated:   10 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Irish''': ga.po&lt;br /&gt;
&lt;br /&gt;
translated:   14 ('''0 %'''), fuzzy:  794 ( 35 %), untranslated: 1405 ( 63 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Galician''': gl.po&lt;br /&gt;
&lt;br /&gt;
translated:   84 ('''3 %'''), fuzzy: 1046 ( 47 %), untranslated: 1083 ( 48 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Hungarian''': hu.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Italian''': it.po&lt;br /&gt;
&lt;br /&gt;
translated: 2078 ('''93 %'''), fuzzy:   97 (  4 %), untranslated:   38 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Japanese''': ja.po&lt;br /&gt;
&lt;br /&gt;
translated: 1290 ('''58 %'''), fuzzy:  511 ( 23 %), untranslated:  412 ( 18 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Korean''': ko.po&lt;br /&gt;
&lt;br /&gt;
translated:  836 ('''37 %'''), fuzzy:   81 (  3 %), untranslated: 1296 ( 58 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lithuanian''': lt.po&lt;br /&gt;
&lt;br /&gt;
translated: 1892 ('''85 %'''), fuzzy:   98 (  4 %), untranslated:  223 ( 10 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Macedonian''': mk.po&lt;br /&gt;
&lt;br /&gt;
translated:    0 ('''0 %'''), fuzzy:  679 ( 30 %), untranslated: 1534 ( 69 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Nepali''': ne.po&lt;br /&gt;
&lt;br /&gt;
translated: 2088 ('''97 %'''), fuzzy:   1 (  0 %), untranslated:  55 ( 3 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Norwegian/Bokmål dialect''': nb.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  2 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Norwegian/Nynorsk''': nn.po&lt;br /&gt;
&lt;br /&gt;
translated: 1592 ('''71 %'''), fuzzy:  372 ( 16 %), untranslated:  249 ( 11 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Dutch: nl.po'''&lt;br /&gt;
&lt;br /&gt;
translated: 1439 ('''65 %'''), fuzzy:  478 ( 21 %), untranslated:  296 ( 13 %)&lt;br /&gt;
&lt;br /&gt;
* '''Piglatin''': pig.po&lt;br /&gt;
&lt;br /&gt;
translated:  ('''100 %'''), fuzzy:  0 ( 0 %), untranslated:  0 ( 0 %)&lt;br /&gt;
&lt;br /&gt;
* '''Punjabi''': pa.po&lt;br /&gt;
&lt;br /&gt;
translated:  907 ('''40 %'''), fuzzy:  432 ( 19 %), untranslated:  874 ( 39 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Polish''': pl.po&lt;br /&gt;
&lt;br /&gt;
translated: 2073 ('''93 %'''), fuzzy:   98 (  4 %), untranslated:   42 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Portuguese''': pt.po&lt;br /&gt;
&lt;br /&gt;
translated:  185 ( '''8 %'''), fuzzy: 1089 ( 49 %), untranslated:  939 ( 42 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Portuguese/Brazil''': pt_BR.po&lt;br /&gt;
&lt;br /&gt;
translated: 1495 ('''67 %'''), fuzzy:  444 ( 20 %), untranslated:  274 ( 12 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Romanian''': ro.po&lt;br /&gt;
&lt;br /&gt;
translated: 0 ('''0 %'''), fuzzy:  0 ( 0 %), untranslated:  0 ( 0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Russian''': ru.po&lt;br /&gt;
&lt;br /&gt;
translated: 2081 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   34 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Slovak''': sk.po&lt;br /&gt;
&lt;br /&gt;
translated:  844 ('''38 %'''), fuzzy:  748 ( 33 %), untranslated:  621 ( 28 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Slovenian''': sl.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Serbian''': sr.po&lt;br /&gt;
&lt;br /&gt;
translated: 2087 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   29 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Serbian@Latine''': sr@Latn.po&lt;br /&gt;
&lt;br /&gt;
translated: 2087 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   29 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Swedish''': sv.po&lt;br /&gt;
&lt;br /&gt;
translated:  564 ('''25 %'''), fuzzy:  824 ( 37 %), untranslated:  825 ( 37 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Turkish''': tr.po&lt;br /&gt;
&lt;br /&gt;
translated:  893 ('''40 %'''), fuzzy:  656 ( 29 %), untranslated:  664 ( 30 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Ukrainian''': uk.po&lt;br /&gt;
&lt;br /&gt;
translated: 1466 ('''66 %'''),fuzzy:  466 ( 21 %), untranslated:  281 ( 12 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Vietnamese''': vi.po&lt;br /&gt;
&lt;br /&gt;
translated: 2213 ('''100 %'''), fuzzy:   0 (  0 %), untranslated:   0 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Chinese/Simplified''': zh_CN.po&lt;br /&gt;
&lt;br /&gt;
translated: 2083 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   32 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Chinese/Traditional''': zh_TW.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   30 (  1 %)&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Already available in svn (as of Oct 2009):&lt;br /&gt;
* Basic: bg, ca, cs, da, de, eo, es, eu, fr, hu, it, ja, nl, nn, pl, pt_BR, ru, sk, sl, tr, vi, zh_CN, zh_TW&lt;br /&gt;
* Shapes: ca, cs, de, es, eu, fr, hu, it, ja, pl, pt_BR, ru, sk, sl, vi, zh_CN, zh_TW&lt;br /&gt;
* Advanced: ca, cs, de, es, eu, fr, hu, it, ja, pl, pt_BR, ru, sk, sl, vi, zh_CN, zh_TW&lt;br /&gt;
* Tracing: ca, de, es, eu, fr, hu, ja, pl, pt_BR, ru, sk, sl, vi, zh_TW&lt;br /&gt;
* Calligraphy: ca, cs, de, es, eu, fr, hu, ja, pl, pt_BR, ru, sk, sl, vi, zh_TW&lt;br /&gt;
* Elements of design: ca, de, es, eu, fr, hu, ja, pl, pt_BR, ru, sk, sl, zh_TW&lt;br /&gt;
* Tips and tricks: ca, de, es, eu, fr, hu, it, ja, pl, pt_BR, ru, sk, sl, vi, zh_TW&lt;br /&gt;
* Interpolate: de, hu, pl, sl, vi&lt;br /&gt;
&lt;br /&gt;
= Keys (shortcuts) =&lt;br /&gt;
&lt;br /&gt;
Already available in svn :&lt;br /&gt;
* de&lt;br /&gt;
* en&lt;br /&gt;
* fr&lt;br /&gt;
* sl&lt;br /&gt;
&lt;br /&gt;
= Windows installer =&lt;br /&gt;
&lt;br /&gt;
Already available in svn :&lt;br /&gt;
* catalan.nsh&lt;br /&gt;
* czech.nsh&lt;br /&gt;
* english.nsh&lt;br /&gt;
* french.nsh&lt;br /&gt;
* german.nsh&lt;br /&gt;
* italian.nsh&lt;br /&gt;
* polish.nsh&lt;br /&gt;
* slovak.nsh&lt;br /&gt;
* spanish.nsh&lt;br /&gt;
&lt;br /&gt;
= Wiki translation =&lt;br /&gt;
&lt;br /&gt;
= Website =&lt;br /&gt;
&lt;br /&gt;
2006-08 001.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-07 001.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 010.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 009.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 008.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 007.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 006.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 005.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 004.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 003.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 002.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 001.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 007.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 006.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 005.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 004.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 003.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 002.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 001.inc   de  en  es      it&lt;br /&gt;
&lt;br /&gt;
2006-04 005.inc   de  en  es&lt;br /&gt;
&lt;br /&gt;
2006-04 004.inc   de  en  es&lt;br /&gt;
&lt;br /&gt;
2006-04 003.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-04 002.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-04 001.inc   de  en      fr&lt;br /&gt;
&lt;br /&gt;
2006-02 001.inc       en      fr&lt;br /&gt;
&lt;br /&gt;
2006-01 003.inc       en      fr&lt;br /&gt;
&lt;br /&gt;
2006-01 002.inc       en      fr&lt;br /&gt;
&lt;br /&gt;
2006-01 001.inc       en      fr  it&lt;br /&gt;
&lt;br /&gt;
2005-11 007.inc   de  en      fr  it&lt;br /&gt;
&lt;br /&gt;
= News =&lt;br /&gt;
&lt;br /&gt;
GNOME has the following at &amp;gt;50%.&lt;br /&gt;
&lt;br /&gt;
bg, ca, cs, de, en_CA, en_GB, es, fi, fr, nb, ne, nl, pl, pt, pt_BR, ru, sk, sr, sv, uk, vi, zh_CN, and zh_TW&lt;br /&gt;
&lt;br /&gt;
Of these, we have some at &amp;gt;80% already.  The ones not at 80% are:&lt;br /&gt;
&lt;br /&gt;
bg, en_CA, en_GB, fi, nb, ne, nl, pl, pt, pr_BR, ru, sk, sr, sv, uk, vi&lt;br /&gt;
&lt;br /&gt;
pl, pt_BR, ru, sr, and uk are between 60-80%, so these seem like they should not be hard to boost to at least 80%!  en_CA and en_GB ought to also be easy, aye?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Translation information =&lt;br /&gt;
Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=TranslationStatus&amp;diff=62701</id>
		<title>TranslationStatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=TranslationStatus&amp;diff=62701"/>
		<updated>2010-06-07T20:31:08Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Interface translation (po files) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;br /&gt;
&lt;br /&gt;
= Interface translation (po files) =&lt;br /&gt;
&lt;br /&gt;
* There are some graphical statistics for the current UI translation progress at [http://mfloryan.statnet.pl/inkscape/] - (started in May 2009)&lt;br /&gt;
&lt;br /&gt;
* Preliminary note : the names and e-mail addresses of contributors and last translator can be found in the header of the po file (simply open it with your favorite text editor or in Linux you can use the command '''head de.po''' to view the first 10 lines of the file de.po)&lt;br /&gt;
&lt;br /&gt;
* General information&lt;br /&gt;
&lt;br /&gt;
Status updated on 19 July 2006&lt;br /&gt;
&lt;br /&gt;
Total number of localizable strings: '''2213'''&lt;br /&gt;
&lt;br /&gt;
Total number of PO files: '''44'''&lt;br /&gt;
&lt;br /&gt;
Average translated: 1345 ('''60 %'''), fuzzy:  408 ( 18 %), untranslated:  459 ( 20 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Amharic''': am.po&lt;br /&gt;
&lt;br /&gt;
translated:   78 ('''3 %'''), fuzzy:  660 ( 29 %), untranslated: 1475 ( 66 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Azerbaijani/Turkic''': az.po&lt;br /&gt;
&lt;br /&gt;
translated:   65 ('''2 %'''), fuzzy:  932 ( 42 %), untranslated: 1216 ( 54 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Belarusian''': be.po&lt;br /&gt;
&lt;br /&gt;
translated:  159 ('''7 %'''), fuzzy: 1026 ( 46 %), untranslated: 1028 ( 46 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Catalan''': ca.po&lt;br /&gt;
&lt;br /&gt;
translated: 2075 ('''93 %'''), fuzzy:   97 (  4 %), untranslated:   41 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Czech''': cs.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   30 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Danish''': da.po&lt;br /&gt;
&lt;br /&gt;
translated: 2210 ('''100 %'''), fuzzy:  0 ( 0 %), untranslated:    3 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''German''': de.po&lt;br /&gt;
&lt;br /&gt;
translated: 2107 ('''95 %'''), fuzzy:   84 (  3 %), untranslated:   22 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Greek''': el.po&lt;br /&gt;
&lt;br /&gt;
translated:  328 ('''14 %'''), fuzzy:  965 ( 43 %), untranslated:  920 ( 41 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''English/Great Britain''': en_GB.po&lt;br /&gt;
&lt;br /&gt;
translated: 2087 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   29 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Spanish''': es.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Spanish/Mexico''': es_MX.po&lt;br /&gt;
&lt;br /&gt;
translated:  337 ('''15 %'''), fuzzy: 1014 ( 45 %), untranslated:  862 ( 38 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Estonian''': et.po&lt;br /&gt;
&lt;br /&gt;
translated:    9 ('''0 %'''), fuzzy:  861 ( 38 %), untranslated: 1343 ( 60 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Basque''': eu.po&lt;br /&gt;
&lt;br /&gt;
translated: 2075 ('''93 %'''), fuzzy:   99 (  4 %), untranslated:   39 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Finnish''': fi.po&lt;br /&gt;
&lt;br /&gt;
translated: 2213 ('''100 %'''), fuzzy:   0 (  0 %), untranslated:   0 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''French''': fr.po&lt;br /&gt;
&lt;br /&gt;
translated: 2192 ('''99 %'''), fuzzy:   11 (  0 %), untranslated:   10 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Irish''': ga.po&lt;br /&gt;
&lt;br /&gt;
translated:   14 ('''0 %'''), fuzzy:  794 ( 35 %), untranslated: 1405 ( 63 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Galician''': gl.po&lt;br /&gt;
&lt;br /&gt;
translated:   84 ('''3 %'''), fuzzy: 1046 ( 47 %), untranslated: 1083 ( 48 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Hungarian''': hu.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Italian''': it.po&lt;br /&gt;
&lt;br /&gt;
translated: 2078 ('''93 %'''), fuzzy:   97 (  4 %), untranslated:   38 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Japanese''': ja.po&lt;br /&gt;
&lt;br /&gt;
translated: 1290 ('''58 %'''), fuzzy:  511 ( 23 %), untranslated:  412 ( 18 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Korean''': ko.po&lt;br /&gt;
&lt;br /&gt;
translated:  836 ('''37 %'''), fuzzy:   81 (  3 %), untranslated: 1296 ( 58 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lithuanian''': lt.po&lt;br /&gt;
&lt;br /&gt;
translated: 1892 ('''85 %'''), fuzzy:   98 (  4 %), untranslated:  223 ( 10 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Macedonian''': mk.po&lt;br /&gt;
&lt;br /&gt;
translated:    0 ('''0 %'''), fuzzy:  679 ( 30 %), untranslated: 1534 ( 69 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Nepali''': ne.po&lt;br /&gt;
&lt;br /&gt;
translated: 2088 ('''97 %'''), fuzzy:   1 (  0 %), untranslated:  55 ( 3 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Norwegian/Bokmål dialect''': nb.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  2 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Norwegian/Nynorsk''': nn.po&lt;br /&gt;
&lt;br /&gt;
translated: 1592 ('''71 %'''), fuzzy:  372 ( 16 %), untranslated:  249 ( 11 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Dutch: nl.po'''&lt;br /&gt;
&lt;br /&gt;
translated: 1439 ('''65 %'''), fuzzy:  478 ( 21 %), untranslated:  296 ( 13 %)&lt;br /&gt;
&lt;br /&gt;
* '''Piglatin''': pig.po&lt;br /&gt;
&lt;br /&gt;
translated:  ('''100 %'''), fuzzy:  0 ( 0 %), untranslated:  0 ( 0 %)&lt;br /&gt;
&lt;br /&gt;
* '''Punjabi''': pa.po&lt;br /&gt;
&lt;br /&gt;
translated:  907 ('''40 %'''), fuzzy:  432 ( 19 %), untranslated:  874 ( 39 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Polish''': pl.po&lt;br /&gt;
&lt;br /&gt;
translated: 2073 ('''93 %'''), fuzzy:   98 (  4 %), untranslated:   42 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Portuguese''': pt.po&lt;br /&gt;
&lt;br /&gt;
translated:  185 ( '''8 %'''), fuzzy: 1089 ( 49 %), untranslated:  939 ( 42 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Portuguese/Brazil''': pt_BR.po&lt;br /&gt;
&lt;br /&gt;
translated: 1495 ('''67 %'''), fuzzy:  444 ( 20 %), untranslated:  274 ( 12 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Romanian''': ro.po&lt;br /&gt;
&lt;br /&gt;
translated: 0 ('''0 %'''), fuzzy:  0 ( 0 %), untranslated:  0 ( 0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Russian''': ru.po&lt;br /&gt;
&lt;br /&gt;
translated: 2081 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   34 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Slovak''': sk.po&lt;br /&gt;
&lt;br /&gt;
translated:  844 ('''38 %'''), fuzzy:  748 ( 33 %), untranslated:  621 ( 28 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Slovenian''': sl.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Serbian''': sr.po&lt;br /&gt;
&lt;br /&gt;
translated: 2087 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   29 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Serbian@Latine''': sr@Latn.po&lt;br /&gt;
&lt;br /&gt;
translated: 2087 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   29 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Swedish''': sv.po&lt;br /&gt;
&lt;br /&gt;
translated:  564 ('''25 %'''), fuzzy:  824 ( 37 %), untranslated:  825 ( 37 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Turkish''': tr.po&lt;br /&gt;
&lt;br /&gt;
translated:  893 ('''40 %'''), fuzzy:  656 ( 29 %), untranslated:  664 ( 30 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Ukrainian''': uk.po&lt;br /&gt;
&lt;br /&gt;
translated: 1466 ('''66 %'''),fuzzy:  466 ( 21 %), untranslated:  281 ( 12 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Vietnamese''': vi.po&lt;br /&gt;
&lt;br /&gt;
translated: 2213 ('''100 %'''), fuzzy:   0 (  0 %), untranslated:   0 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Chinese/Simplified''': zh_CN.po&lt;br /&gt;
&lt;br /&gt;
translated: 2083 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   32 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Chinese/Traditional''': zh_TW.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   30 (  1 %)&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Already available in svn (as of Oct 2009):&lt;br /&gt;
* Basic: bg, ca, cs, da, de, eo, es, eu, fr, hu, it, ja, nl, nn, pl, pt_BR, ru, sk, sl, tr, vi, zh_CN, zh_TW&lt;br /&gt;
* Shapes: ca, cs, de, es, eu, fr, hu, it, ja, pl, pt_BR, ru, sk, sl, vi, zh_CN, zh_TW&lt;br /&gt;
* Advanced: ca, cs, de, es, eu, fr, hu, it, ja, pl, pt_BR, ru, sk, sl, vi, zh_CN, zh_TW&lt;br /&gt;
* Tracing: ca, de, es, eu, fr, hu, ja, pl, pt_BR, ru, sk, sl, vi, zh_TW&lt;br /&gt;
* Calligraphy: ca, cs, de, es, eu, fr, hu, ja, pl, pt_BR, ru, sk, sl, vi, zh_TW&lt;br /&gt;
* Elements of design: ca, de, es, eu, fr, hu, ja, pl, pt_BR, ru, sk, sl, zh_TW&lt;br /&gt;
* Tips and tricks: ca, de, es, eu, fr, hu, it, ja, pl, pt_BR, ru, sk, sl, vi, zh_TW&lt;br /&gt;
* Interpolate: de, hu, pl, sl, vi&lt;br /&gt;
&lt;br /&gt;
= Keys (shortcuts) =&lt;br /&gt;
&lt;br /&gt;
Already available in svn :&lt;br /&gt;
* de&lt;br /&gt;
* en&lt;br /&gt;
* fr&lt;br /&gt;
* sl&lt;br /&gt;
&lt;br /&gt;
= Windows installer =&lt;br /&gt;
&lt;br /&gt;
Already available in svn :&lt;br /&gt;
* catalan.nsh&lt;br /&gt;
* czech.nsh&lt;br /&gt;
* english.nsh&lt;br /&gt;
* french.nsh&lt;br /&gt;
* german.nsh&lt;br /&gt;
* italian.nsh&lt;br /&gt;
* polish.nsh&lt;br /&gt;
* slovak.nsh&lt;br /&gt;
* spanish.nsh&lt;br /&gt;
&lt;br /&gt;
= Wiki translation =&lt;br /&gt;
&lt;br /&gt;
= Website =&lt;br /&gt;
&lt;br /&gt;
2006-08 001.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-07 001.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 010.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 009.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 008.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 007.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 006.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 005.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 004.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 003.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 002.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 001.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 007.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 006.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 005.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 004.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 003.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 002.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 001.inc   de  en  es      it&lt;br /&gt;
&lt;br /&gt;
2006-04 005.inc   de  en  es&lt;br /&gt;
&lt;br /&gt;
2006-04 004.inc   de  en  es&lt;br /&gt;
&lt;br /&gt;
2006-04 003.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-04 002.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-04 001.inc   de  en      fr&lt;br /&gt;
&lt;br /&gt;
2006-02 001.inc       en      fr&lt;br /&gt;
&lt;br /&gt;
2006-01 003.inc       en      fr&lt;br /&gt;
&lt;br /&gt;
2006-01 002.inc       en      fr&lt;br /&gt;
&lt;br /&gt;
2006-01 001.inc       en      fr  it&lt;br /&gt;
&lt;br /&gt;
2005-11 007.inc   de  en      fr  it&lt;br /&gt;
&lt;br /&gt;
= News =&lt;br /&gt;
&lt;br /&gt;
GNOME has the following at &amp;gt;50%.&lt;br /&gt;
&lt;br /&gt;
bg, ca, cs, de, en_CA, en_GB, es, fi, fr, nb, ne, nl, pl, pt, pt_BR, ru, sk, sr, sv, uk, vi, zh_CN, and zh_TW&lt;br /&gt;
&lt;br /&gt;
Of these, we have some at &amp;gt;80% already.  The ones not at 80% are:&lt;br /&gt;
&lt;br /&gt;
bg, en_CA, en_GB, fi, nb, ne, nl, pl, pt, pr_BR, ru, sk, sr, sv, uk, vi&lt;br /&gt;
&lt;br /&gt;
pl, pt_BR, ru, sr, and uk are between 60-80%, so these seem like they should not be hard to boost to at least 80%!  en_CA and en_GB ought to also be easy, aye?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Translation information =&lt;br /&gt;
Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Interface_translation&amp;diff=62695</id>
		<title>Interface translation</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Interface_translation&amp;diff=62695"/>
		<updated>2010-06-07T20:29:56Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Get the PO file for your language */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;br /&gt;
&lt;br /&gt;
== Introduction to PO file format ==&lt;br /&gt;
&lt;br /&gt;
If you've never translated a PO file before, you will find its syntax very simple. The PO format is a really simple format, which probably at least partly explains its success and widespread use. The format is basically a hash list consisting of msgid and msgstr pairs, with the msgid being the original English string and key, and the msgstr being the translated value of it. Below is an example of a message.&lt;br /&gt;
&lt;br /&gt;
   &amp;amp;#35;: gedit/dialogs/gedit-plugin-program-location-dialog.c:78&lt;br /&gt;
   &amp;amp;#35;: gedit/dialogs/program-location-dialog.glade2.h:2&lt;br /&gt;
   msgid &amp;quot;Set program location...&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;Ställ in programplats...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In addition to the msgid and msgstr parts, a message usually also has lines starting with #: that tells what source files and what lines the string used as msgid was extracted from. These lines have no syntactic value. They are only there as a help for translators and developers to know where a message came from. &lt;br /&gt;
&lt;br /&gt;
A message in a PO file can be in one of essentially three different states. The message can be translated, fuzzy, or untranslated. A message counts as translated as soon as the msgstr part of it is non-empty. In a similar manner, an untranslated message is one where the msgstr is empty. The fuzzy state is special and essentially means that there is a translation in the msgstr part, but that this translation is most likely not entirely correct, and that it thus needs manual attention by a translator. A message can become fuzzy in one of two ways:&lt;br /&gt;
&lt;br /&gt;
* The original string that the msgid represents was changed in the source code.  A typo in the string may have been fixed or the string altered in some other way. The translator needs to check that the msgstr is still valid and make changes if necessary.&lt;br /&gt;
* A new string has been added to the source, and the string is very similar, but not identical, to the msgid of an already existing, translated message. Then the msgstr of that message will be automatically reused for the new message, but the new message will also at the same time be marked fuzzy so that the translator knows there is some difference that he or she needs to adapt the translation to match.&lt;br /&gt;
&lt;br /&gt;
There is always one special message in each valid PO file: the PO file header. It is encoded with the msgid for the empty string (&amp;quot;&amp;quot;) as the key, and the actual header values are in the msgstr part. This unfortunately means that if you mark an empty string for translation, you will get the entire PO file header back as the &amp;quot;translation&amp;quot;. In almost all cases this is probably not what you want. Hence, do not mark empty strings for translation.&lt;br /&gt;
&lt;br /&gt;
== Get the PO file for your language ==&lt;br /&gt;
&lt;br /&gt;
Download the .po file for your language from here:&lt;br /&gt;
&lt;br /&gt;
    http://bazaar.launchpad.net/~inkscape.dev/inkscape/trunk/files/head:/po/&lt;br /&gt;
&lt;br /&gt;
If a .po file for your language does not yet exist, then you will have to get an empty template file to start a new translation.&lt;br /&gt;
You may also need to use the updated template file (mentioned blow) to bring the .po file up to date with new strings introduced in the UI.&lt;br /&gt;
&lt;br /&gt;
The most straightforward way to obtain the inkscape.pot template is to download it from here:&lt;br /&gt;
&lt;br /&gt;
    http://bazaar.launchpad.net/~inkscape.dev/inkscape/trunk/annotate/head:/po/inkscape.pot&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can checkout the full BZR project repository and generate the project template. Information on how to get the source tree can be found [http://inkscape.org/bzr.php?lang=en here]. Then, you have to follow some steps in order to generate the template:&lt;br /&gt;
&lt;br /&gt;
 1. &amp;quot;./autogen.sh&amp;quot;&lt;br /&gt;
 2. &amp;quot;./configure&amp;quot;&lt;br /&gt;
 3. enter the &amp;quot;po&amp;quot; directory: &amp;quot;cd po&amp;quot;&lt;br /&gt;
 4. generate the current PO template: &amp;quot;intltool-update --pot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To make an absolutely up-to-date translation (in case the PO file in BZR is not up-to-date enough), &lt;br /&gt;
&lt;br /&gt;
 1. update your local copy of Inkscape in the usual way: &amp;quot;bzr pull&amp;quot;&lt;br /&gt;
 2. merge your existing translations into the new POT file (inkscape.pot):&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;msgmerge your_latest_PO_file inkscape.pot &amp;gt; new_PO_file&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you want to update ALL .po files in po/, cd there and run:&lt;br /&gt;
&lt;br /&gt;
 make update-po&lt;br /&gt;
&lt;br /&gt;
Now that you have an empty PO template, you can start translating the messages.&lt;br /&gt;
&lt;br /&gt;
You can track progress of all Inkscape translations here (unofficial, maintained by [http://twitter.com/mfloryan mfloryan]):&lt;br /&gt;
     http://mfloryan.statnet.pl/inkscape/&lt;br /&gt;
&lt;br /&gt;
== Tools for translators ==&lt;br /&gt;
&lt;br /&gt;
You can edit PO files from any plain text editor, since they are simple text files. However, many useful tools have been developed to provide a simple experience translating PO files.&lt;br /&gt;
&lt;br /&gt;
* emacs' po-mode (contained in the gettext distribution; the version in po-utils is old)&lt;br /&gt;
* kbabel (http://i18n.kde.org/tools/kbabel/)&lt;br /&gt;
* gtranslator (http://gtranslator.sourceforge.net/)&lt;br /&gt;
* poEdit (http://www.poedit.net/)&lt;br /&gt;
* GEdit (installed on GNOME desktops) has a syntax highlight mode for PO file syntax.&lt;br /&gt;
* [http://translate.sourceforge.net/wiki/virtaal/index Virtaal] - cross-platform PO editor that is clean, simple to use yet powerful.&lt;br /&gt;
&lt;br /&gt;
And last but not least, [http://www.gnu.org/software/gettext/manual/ gettext] utils, which are installed on every linux distribution. You can see a complete reference too from installed info pages by running the command:&lt;br /&gt;
&lt;br /&gt;
  info gettext&lt;br /&gt;
&lt;br /&gt;
== A few important things to remember ==&lt;br /&gt;
&lt;br /&gt;
* Some strings that can be ambiguous or having several meanings according to different contexts may have a context prefix : &amp;quot;Context|Amibiguous string&amp;quot;. In this case, simply translate &amp;quot;Ambiguous string&amp;quot;, the &amp;quot;Context|&amp;quot; string is just a not to translate indication. (Some info on how to disambiguate a string can be found [http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS here].)&lt;br /&gt;
* After translating a fuzzy string (one that is marked with a &amp;quot;, fuzzy&amp;quot; comment), please remove its &amp;quot;fuzzy&amp;quot; tag -- otherwise this translation will be discarded by the build process, meaning that this string will show up untranslated. KBabel can do this automatically (see KBabel settings).&lt;br /&gt;
* Before publishing your work (after you have finished updating the PO file), please update the &amp;quot;PO-Revision-Date&amp;quot; and &amp;quot;Last-Translator&amp;quot; fields in the PO file header. KBabel can do this automatically.&lt;br /&gt;
&lt;br /&gt;
== Review ==&lt;br /&gt;
&lt;br /&gt;
This is the start of a list of places to get translation reviews done.  So far:&lt;br /&gt;
  http://www.linux.it/tp/&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
&lt;br /&gt;
Before submitting your file in the patch tracker, please make sure it is valid:&lt;br /&gt;
* Make sure the file is encoded in UTF-8 &lt;br /&gt;
* Make sure it is a valid po file and obtain some statistics about it: simply run &amp;quot;msgfmt --statistics -cv translationFile.po&amp;quot; from a command window&lt;br /&gt;
* Make sure it is correctly formatted: run &amp;quot;check-markup translationFile.po&amp;quot; from a command window and verify it doesn't output any error message. &amp;quot;check-markup&amp;quot; perl script can be found in the /po directory of Inkscape svn trunk&lt;br /&gt;
&lt;br /&gt;
== Locale Testing ==&lt;br /&gt;
&lt;br /&gt;
Before reporting that a locale doesn't work in Inkscape, you need to make sure that your system has that locale correctly set up.  To do this, you need to generally find a way to run &amp;quot;locale-gen&amp;quot;.  (Under Debian/Ubuntu this is via &amp;quot;dpkg-reconfigure locales&amp;quot;.)  If you set both the LANG and LANGUAGE variables and check a regular tool, you should see the correct language for both the libc error (first line) and the tool error (second line):&lt;br /&gt;
&lt;br /&gt;
 LANG=es_MX LANGUAGE=es_MX ls -z&lt;br /&gt;
 ls: opci&amp;amp;oacute;n inv&amp;amp;aacute;lida -- z&lt;br /&gt;
 Pruebe `ls --help' para m&amp;amp;aacute;s informaci&amp;amp;oacute;n.&lt;br /&gt;
&lt;br /&gt;
If it reports the regular C messages, your locale has not been correctly configured, and you'll need to find the right way to run &amp;quot;locale-gen&amp;quot; for your distribution:&lt;br /&gt;
&lt;br /&gt;
 LANG=es_ES LANGUAGE=es_MX ls -z&lt;br /&gt;
 ls: invalid option -- z&lt;br /&gt;
 Try `ls --help' for more information.&lt;br /&gt;
&lt;br /&gt;
== Submit finished work ==&lt;br /&gt;
&lt;br /&gt;
Upload your work via the [[Launchpad]] bug tracker:&lt;br /&gt;
&lt;br /&gt;
    https://bugs.launchpad.net/inkscape/&lt;br /&gt;
&lt;br /&gt;
Report a new bug and attach your translated file to it. Don't forget to compress your file before uploading it.&lt;br /&gt;
&lt;br /&gt;
Additionally, you may send a message to Inkscape's translators mailing list.&lt;br /&gt;
&lt;br /&gt;
== Programmers ==&lt;br /&gt;
Please make sure you use [http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC150 dgettext] for any pluralized strings.&lt;br /&gt;
&lt;br /&gt;
= Windows installer translation =&lt;br /&gt;
&lt;br /&gt;
Strings for Windows installer are saved in *.nsh files. Each translation has its own file located in ''packaging\win32\'' directory of subversion checkout. Get this file in similar way of getting *.po file.&lt;br /&gt;
=== Translating ===&lt;br /&gt;
# Get the file according to your language. If there is not such a file, copy ''english.nsh'' file and rename it to ''yourlanguage.nsh''.&lt;br /&gt;
# Translate strings in the file&lt;br /&gt;
# Change '''!insertmacro MUI_LANGUAGE &amp;quot;English&amp;quot;''' and each occurence of '''${LANG_ENGLISH}''' to values corresponding with your language. For example '''!insertmacro MUI_LANGUAGE &amp;quot;Czech&amp;quot;''' and '''${LANG_CZECH}'''.&lt;br /&gt;
# Change header information in '''yourlanguage.nsh''' file, like &amp;quot;windows code page&amp;quot; and &amp;quot;Authors&amp;quot; to proper values.&lt;br /&gt;
=== Testing the translation ===&lt;br /&gt;
# This part is optional but recommended. For this part you need [http://nsis.sourceforge.net/Main_Page NSIS installer] and run &amp;lt;pre&amp;gt;make -f Makefile.mingw dist&amp;lt;/pre&amp;gt; command after succesfull compilation of Inkscape. This command prepares binary of Inkscape for installator creation.&lt;br /&gt;
# Add filename of your file to '''inkscape.nsi''' file, &amp;quot;STRING LOCALIZATION&amp;quot; section, &amp;quot;Language files&amp;quot; subsection.&lt;br /&gt;
# Right click on the inkscape.nsi file and choose &amp;quot;Compile NSIS Script&amp;quot;. The installer compilation will start.&lt;br /&gt;
# When the installer is finished, run it to test translations of strings in Installer and Uninstaller parts.&lt;br /&gt;
# If the translation is tested succesfully, submit it to the patch tracker at sourceforge.net and mark as &amp;quot;Translation&amp;quot;. If you haven't tested your translation yet, submit it too but enter this information to the patch information. You will be contacted about its correctness.&lt;br /&gt;
&lt;br /&gt;
= Default template translation =&lt;br /&gt;
&lt;br /&gt;
* To translate default template, modify the default.svg file and save it as default.xx.svg where &amp;quot;xx&amp;quot; is ISO code of your language. The file can be found in ''/usr/share/inkscape/templates/'' directory on Linux, or ''C:\Program Files\Inkscape\share\templates\'' directory on MS Windows(tm). Also you can get it from [http://svn.sourceforge.net/viewcvs.cgi/inkscape/inkscape/trunk/share/templates/ SVN repository]. &lt;br /&gt;
* You need to modify your PO translation as well to use your localized default template. Look up for a msgid &amp;quot;default.svg&amp;quot; on the PO file and translate it accordingly to the file name of the localized template.&lt;br /&gt;
* To test it, save it to the proper location and restart Inkscape. Default document should be now based on your localized template. (This is valid if your system is properly set to your locales).&lt;br /&gt;
* Upload default.xx.svg to the patch tracker.&lt;br /&gt;
&lt;br /&gt;
To translate default template can be used Inkscape as well as any UTF-8 encoding capable text editor.&lt;br /&gt;
&lt;br /&gt;
= Translation information =&lt;br /&gt;
Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=TranslationStatus&amp;diff=52945</id>
		<title>TranslationStatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=TranslationStatus&amp;diff=52945"/>
		<updated>2009-06-05T20:58:37Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Interface translation (po files) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;br /&gt;
&lt;br /&gt;
= Interface translation (po files) =&lt;br /&gt;
&lt;br /&gt;
* There are some graphical statistics for the current UI translation progress at [http://mfloryan.statnet.pl/~mfloryan/inkscape/] - (started in May 2009)&lt;br /&gt;
&lt;br /&gt;
* Preliminary note : the names and e-mail addresses of contributors and last translator can be found in the header of the po file (simply open it with your favorite text editor or in Linux you can use the command '''head de.po''' to view the first 10 lines of the file de.po)&lt;br /&gt;
&lt;br /&gt;
* General information&lt;br /&gt;
&lt;br /&gt;
Status updated on 19 July 2006&lt;br /&gt;
&lt;br /&gt;
Total number of localizable strings: '''2213'''&lt;br /&gt;
&lt;br /&gt;
Total number of PO files: '''44'''&lt;br /&gt;
&lt;br /&gt;
Average translated: 1345 ('''60 %'''), fuzzy:  408 ( 18 %), untranslated:  459 ( 20 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Amharic''': am.po&lt;br /&gt;
&lt;br /&gt;
translated:   78 ('''3 %'''), fuzzy:  660 ( 29 %), untranslated: 1475 ( 66 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Azerbaijani/Turkic''': az.po&lt;br /&gt;
&lt;br /&gt;
translated:   65 ('''2 %'''), fuzzy:  932 ( 42 %), untranslated: 1216 ( 54 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Belarusian''': be.po&lt;br /&gt;
&lt;br /&gt;
translated:  159 ('''7 %'''), fuzzy: 1026 ( 46 %), untranslated: 1028 ( 46 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Catalan''': ca.po&lt;br /&gt;
&lt;br /&gt;
translated: 2075 ('''93 %'''), fuzzy:   97 (  4 %), untranslated:   41 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Czech''': cs.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   30 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Danish''': da.po&lt;br /&gt;
&lt;br /&gt;
translated: 2210 ('''100 %'''), fuzzy:  0 ( 0 %), untranslated:    3 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''German''': de.po&lt;br /&gt;
&lt;br /&gt;
translated: 2107 ('''95 %'''), fuzzy:   84 (  3 %), untranslated:   22 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Greek''': el.po&lt;br /&gt;
&lt;br /&gt;
translated:  328 ('''14 %'''), fuzzy:  965 ( 43 %), untranslated:  920 ( 41 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''English/Great Britain''': en_GB.po&lt;br /&gt;
&lt;br /&gt;
translated: 2087 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   29 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Spanish''': es.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Spanish/Mexico''': es_MX.po&lt;br /&gt;
&lt;br /&gt;
translated:  337 ('''15 %'''), fuzzy: 1014 ( 45 %), untranslated:  862 ( 38 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Estonian''': et.po&lt;br /&gt;
&lt;br /&gt;
translated:    9 ('''0 %'''), fuzzy:  861 ( 38 %), untranslated: 1343 ( 60 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Basque''': eu.po&lt;br /&gt;
&lt;br /&gt;
translated: 2075 ('''93 %'''), fuzzy:   99 (  4 %), untranslated:   39 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Finnish''': fi.po&lt;br /&gt;
&lt;br /&gt;
translated: 2213 ('''100 %'''), fuzzy:   0 (  0 %), untranslated:   0 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''French''': fr.po&lt;br /&gt;
&lt;br /&gt;
translated: 2192 ('''99 %'''), fuzzy:   11 (  0 %), untranslated:   10 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Irish''': ga.po&lt;br /&gt;
&lt;br /&gt;
translated:   14 ('''0 %'''), fuzzy:  794 ( 35 %), untranslated: 1405 ( 63 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Galician''': gl.po&lt;br /&gt;
&lt;br /&gt;
translated:   84 ('''3 %'''), fuzzy: 1046 ( 47 %), untranslated: 1083 ( 48 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Hungarian''': hu.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Italian''': it.po&lt;br /&gt;
&lt;br /&gt;
translated: 2078 ('''93 %'''), fuzzy:   97 (  4 %), untranslated:   38 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Japanese''': ja.po&lt;br /&gt;
&lt;br /&gt;
translated: 1290 ('''58 %'''), fuzzy:  511 ( 23 %), untranslated:  412 ( 18 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Korean''': ko.po&lt;br /&gt;
&lt;br /&gt;
translated:  836 ('''37 %'''), fuzzy:   81 (  3 %), untranslated: 1296 ( 58 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lithuanian''': lt.po&lt;br /&gt;
&lt;br /&gt;
translated: 1892 ('''85 %'''), fuzzy:   98 (  4 %), untranslated:  223 ( 10 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Macedonian''': mk.po&lt;br /&gt;
&lt;br /&gt;
translated:    0 ('''0 %'''), fuzzy:  679 ( 30 %), untranslated: 1534 ( 69 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Nepali''': ne.po&lt;br /&gt;
&lt;br /&gt;
translated: 2088 ('''97 %'''), fuzzy:   1 (  0 %), untranslated:  55 ( 3 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Norwegian/Bokmål dialect''': nb.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  2 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Norwegian/Nynorsk''': nn.po&lt;br /&gt;
&lt;br /&gt;
translated: 1592 ('''71 %'''), fuzzy:  372 ( 16 %), untranslated:  249 ( 11 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Dutch: nl.po'''&lt;br /&gt;
&lt;br /&gt;
translated: 1439 ('''65 %'''), fuzzy:  478 ( 21 %), untranslated:  296 ( 13 %)&lt;br /&gt;
&lt;br /&gt;
* '''Piglatin''': pig.po&lt;br /&gt;
&lt;br /&gt;
translated:  ('''100 %'''), fuzzy:  0 ( 0 %), untranslated:  0 ( 0 %)&lt;br /&gt;
&lt;br /&gt;
* '''Punjabi''': pa.po&lt;br /&gt;
&lt;br /&gt;
translated:  907 ('''40 %'''), fuzzy:  432 ( 19 %), untranslated:  874 ( 39 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Polish''': pl.po&lt;br /&gt;
&lt;br /&gt;
translated: 2073 ('''93 %'''), fuzzy:   98 (  4 %), untranslated:   42 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Portuguese''': pt.po&lt;br /&gt;
&lt;br /&gt;
translated:  185 ( '''8 %'''), fuzzy: 1089 ( 49 %), untranslated:  939 ( 42 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Portuguese/Brazil''': pt_BR.po&lt;br /&gt;
&lt;br /&gt;
translated: 1495 ('''67 %'''), fuzzy:  444 ( 20 %), untranslated:  274 ( 12 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Romanian''': ro.po&lt;br /&gt;
&lt;br /&gt;
translated: 0 ('''0 %'''), fuzzy:  0 ( 0 %), untranslated:  0 ( 0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Russian''': ru.po&lt;br /&gt;
&lt;br /&gt;
translated: 2081 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   34 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Slovak''': sk.po&lt;br /&gt;
&lt;br /&gt;
translated:  844 ('''38 %'''), fuzzy:  748 ( 33 %), untranslated:  621 ( 28 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Slovenian''': sl.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   31 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Serbian''': sr.po&lt;br /&gt;
&lt;br /&gt;
translated: 2087 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   29 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Serbian@Latine''': sr@Latn.po&lt;br /&gt;
&lt;br /&gt;
translated: 2087 ('''94 %'''), fuzzy:   97 (  4 %), untranslated:   29 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Swedish''': sv.po&lt;br /&gt;
&lt;br /&gt;
translated:  564 ('''25 %'''), fuzzy:  824 ( 37 %), untranslated:  825 ( 37 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Turkish''': tr.po&lt;br /&gt;
&lt;br /&gt;
translated:  893 ('''40 %'''), fuzzy:  656 ( 29 %), untranslated:  664 ( 30 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Ukrainian''': uk.po&lt;br /&gt;
&lt;br /&gt;
translated: 1466 ('''66 %'''),fuzzy:  466 ( 21 %), untranslated:  281 ( 12 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Vietnamese''': vi.po&lt;br /&gt;
&lt;br /&gt;
translated: 2213 ('''100 %'''), fuzzy:   0 (  0 %), untranslated:   0 (  0 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Chinese/Simplified''': zh_CN.po&lt;br /&gt;
&lt;br /&gt;
translated: 2083 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   32 (  1 %)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Chinese/Traditional''': zh_TW.po&lt;br /&gt;
&lt;br /&gt;
translated: 2085 ('''94 %'''), fuzzy:   98 (  4 %), untranslated:   30 (  1 %)&lt;br /&gt;
&lt;br /&gt;
= Tutorials =&lt;br /&gt;
&lt;br /&gt;
Already available in svn:&lt;br /&gt;
* Basic: ca, cs, de, en, es, fr, ja, nn, pt_BR, ru, sl&lt;br /&gt;
* Shapes: ca, cs, de, en, es, fr, ja, pt_BR, sl&lt;br /&gt;
* Advanced: ca, cs, de, en, es, fr, ja, pt_BR, sl&lt;br /&gt;
* Tracing: ca, de, en, es, fr, sl&lt;br /&gt;
* Calligraphy: ca, cs, de, en, es, fr, pt_BR, sl&lt;br /&gt;
* Elements of design: de, en, es, fr, pt_BR, sl&lt;br /&gt;
* Tips and tricks: de, en, es, fr, pt_BR, sl&lt;br /&gt;
&lt;br /&gt;
= Keys (shortcuts) =&lt;br /&gt;
&lt;br /&gt;
Already available in svn :&lt;br /&gt;
* de&lt;br /&gt;
* en&lt;br /&gt;
* fr&lt;br /&gt;
* sl&lt;br /&gt;
&lt;br /&gt;
= Windows installer =&lt;br /&gt;
&lt;br /&gt;
Already available in svn :&lt;br /&gt;
* catalan.nsh&lt;br /&gt;
* czech.nsh&lt;br /&gt;
* english.nsh&lt;br /&gt;
* french.nsh&lt;br /&gt;
* german.nsh&lt;br /&gt;
* italian.nsh&lt;br /&gt;
* polish.nsh&lt;br /&gt;
* slovak.nsh&lt;br /&gt;
* spanish.nsh&lt;br /&gt;
&lt;br /&gt;
= Wiki translation =&lt;br /&gt;
&lt;br /&gt;
= Website =&lt;br /&gt;
&lt;br /&gt;
2006-08 001.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-07 001.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 010.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 009.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 008.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 007.inc   de  en          it&lt;br /&gt;
&lt;br /&gt;
2006-06 006.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 005.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 004.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 003.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 002.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-06 001.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 007.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 006.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 005.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 004.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 003.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 002.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-05 001.inc   de  en  es      it&lt;br /&gt;
&lt;br /&gt;
2006-04 005.inc   de  en  es&lt;br /&gt;
&lt;br /&gt;
2006-04 004.inc   de  en  es&lt;br /&gt;
&lt;br /&gt;
2006-04 003.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-04 002.inc   de  en&lt;br /&gt;
&lt;br /&gt;
2006-04 001.inc   de  en      fr&lt;br /&gt;
&lt;br /&gt;
2006-02 001.inc       en      fr&lt;br /&gt;
&lt;br /&gt;
2006-01 003.inc       en      fr&lt;br /&gt;
&lt;br /&gt;
2006-01 002.inc       en      fr&lt;br /&gt;
&lt;br /&gt;
2006-01 001.inc       en      fr  it&lt;br /&gt;
&lt;br /&gt;
2005-11 007.inc   de  en      fr  it&lt;br /&gt;
&lt;br /&gt;
= News =&lt;br /&gt;
&lt;br /&gt;
GNOME has the following at &amp;gt;50%.&lt;br /&gt;
&lt;br /&gt;
bg, ca, cs, de, en_CA, en_GB, es, fi, fr, nb, ne, nl, pl, pt, pt_BR, ru, sk, sr, sv, uk, vi, zh_CN, and zh_TW&lt;br /&gt;
&lt;br /&gt;
Of these, we have some at &amp;gt;80% already.  The ones not at 80% are:&lt;br /&gt;
&lt;br /&gt;
bg, en_CA, en_GB, fi, nb, ne, nl, pl, pt, pr_BR, ru, sk, sr, sv, uk, vi&lt;br /&gt;
&lt;br /&gt;
pl, pt_BR, ru, sr, and uk are between 60-80%, so these seem like they should not be hard to boost to at least 80%!  en_CA and en_GB ought to also be easy, aye?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Translation information =&lt;br /&gt;
Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User:Mfloryan&amp;diff=30724</id>
		<title>User:Mfloryan</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User:Mfloryan&amp;diff=30724"/>
		<updated>2008-06-19T14:12:17Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Marcin Floryan=&lt;br /&gt;
&lt;br /&gt;
aka &amp;lt;tt&amp;gt;mfx&amp;lt;/tt&amp;gt;&lt;br /&gt;
* [http://marcin.floryan.pl/ Marcin Floryan PL]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User:Mfloryan&amp;diff=30714</id>
		<title>User:Mfloryan</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User:Mfloryan&amp;diff=30714"/>
		<updated>2008-06-19T14:11:33Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Marcin Floryan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Marcin Floryan=&lt;br /&gt;
&lt;br /&gt;
* [http://marcin.floryan.pl/ Marcin Floryan PL]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=28394</id>
		<title>Release notes/0.47</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=28394"/>
		<updated>2008-04-30T08:19:37Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* API changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.47=&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
&lt;br /&gt;
=Refactoring effort=&lt;br /&gt;
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
&lt;br /&gt;
==Node tool==&lt;br /&gt;
&lt;br /&gt;
* [helper path display, flashing - johan]&lt;br /&gt;
* The Node tool can now edit '''clipping paths''' and '''masks''' of objects on canvas, without releasing them. If the selected object has a clipping path and mask, the corresponding buttons on the controls bar of the tool will be enabled; pressing these buttons will display the editable paths or handles of the clippath or mask. A clipping path is stroked green, a mask is stroked blue (the same colors as those used for them in Outline mode).&lt;br /&gt;
* Snapping has been improved (more details in Snapping below)&lt;br /&gt;
* When dragging a node '''handle with Ctrl''', it now snaps not only to the 15 degree increments starting from 0 and to the original handle direction, but also to the direction of the '''opposite handle''' (if it exists) or of the '''opposite line segment''' (if it is a straight line).&lt;br /&gt;
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:&lt;br /&gt;
:* If a node is already cusp (diamond shaped), pressing Shift+C again on it will retract both its handles. As this works for any number of selected nodes, you can always retract all handles in all nodes by selecting all nodes and pressing Shift+C twice.&lt;br /&gt;
:* If a non-smooth node is next to a straight line segment, pressing Shift+S once makes it ''half-smooth'': it now has one handle aligned with that line segment. Another press of Shift+S will expand the second handle as well turning it into a full smooth node. If a node is between two curve segments, Shift+S will expand both handles as before.&lt;br /&gt;
&lt;br /&gt;
==Calligraphy tool ==&lt;br /&gt;
Added 4 preset buttons for dip, pen, brush and reed in the toolbox. Clicking one button sets the calligraphic tool with the matching presets.&lt;br /&gt;
&lt;br /&gt;
==Paint Bucket tool==&lt;br /&gt;
* Paint Bucket is now more tightly integrated with potrace.  As a result, memory and CPU usage on each fill operation have been reduced significantly.&lt;br /&gt;
&lt;br /&gt;
==Eraser Tool==&lt;br /&gt;
A new eraser tool has been added. It has two main modes:&lt;br /&gt;
* Delete-mode where any shape touched by the tool is deleted completely. This operation is in line with &amp;quot;vector&amp;quot; editing.&lt;br /&gt;
* Cut mode where erasing acts similar to erasing in a standard bitmap editor.&lt;br /&gt;
Erasing is also limited to the currently selected objects if there are any selected.&lt;br /&gt;
&lt;br /&gt;
=Live path effects=&lt;br /&gt;
== Notable bug fixes and effect changes==&lt;br /&gt;
We try to refrain from changing the behavior of LPE's, because it will change appearance in old files when opened in Inkscape¹.  But when an effect is really broken, we have to fix it.&lt;br /&gt;
&lt;br /&gt;
[¹ fixme: Shouldn't the above say &amp;quot;it will change editing behaviour in old files&amp;quot; ?  If it changes the appearance, then that's a bug: inkscape should always save SVG that represents the appearance, and should display according to the SVG rather than any inkscape:blah annotations.  --pjrm &amp;lt;br&amp;gt;&lt;br /&gt;
What is meant is the following. Files with LPEs opened in a random viewer will always look the same, regardless of Inkscape version. However, when viewed in Inkscape, the LPE is recalculated. When LPE behavior changes, the appearance will change. --johan]&lt;br /&gt;
&lt;br /&gt;
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.&lt;br /&gt;
&lt;br /&gt;
==New effects==&lt;br /&gt;
[new: sketch, von koch, knot]&lt;br /&gt;
&lt;br /&gt;
* Perspective paths: Draw an arbitrary path as if viewed in perspective. This is work in progress. Known limitations (among others): It can only use the first perspective that exists in the document defs, and the perspective cannot be adapted interactively yet (the effect must be removed and reapplied after modifying the perspective).&lt;br /&gt;
&lt;br /&gt;
* '''Spiro splines''' are a novel way of defining curvilinear paths [http://www.levien.com/spiro/ developed by Raph Levien]. It takes some getting used to, but for certain tasks (such as lettershape design) Spiros have a clear advantage over Bezier curves. Recently, Spiro support was added to the FontForge font editor; now it is available in Inkscape too, which means you can use all the convenient Inkscape path tools (moving and transforming groups of nodes, node sculpting, etc.) on Spiro paths.&lt;br /&gt;
&lt;br /&gt;
:A Spiro path is defined by a sequence of points, but unlike a regular path with Bezier curves, all Spiro points lie on the path and there are no off-path handles. The curvature of the path is defined entirely by the positions of the points and their types. The path behaves very similar to a springy rod which is forced to pass through the given points and which uses the minimum possible curvature to satisfy the requirement. As such, it feels quite natural and the resulting path is very smooth - not just superficially smooth (i.e. having no cusps), but smooth at a deeper level, which you can achieve with Beziers only after a lot of laborious tweaking. &lt;br /&gt;
&lt;br /&gt;
:To create a Spiro path, select any path and assign the &amp;quot;Spiro spline&amp;quot; path effect to it. There are no parameters. Each node of your path becomes a point of a Spiro path, depending on the type of node:&lt;br /&gt;
&lt;br /&gt;
:* Smooth nodes (those with two collinear Bezier handles; use Shift+S to make a node smooth) become smooth curve points of the Spiro path. Note that the length or direction of the Bezier handles of the source path is ignored; the only thing that matters is their collinearity.&lt;br /&gt;
&lt;br /&gt;
:* Cusp nodes of the source path become corner points of the Spiro path, like free hinges on the springy rod. Between two corner points, the path is always a straight line. To make a node cusp, retract its Bezier handles by Ctrl+click, or press Shift+C and move one of the handles so they are no longer collinear.&lt;br /&gt;
&lt;br /&gt;
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become &amp;quot;left&amp;quot; or &amp;quot;right&amp;quot; points on the Spiro path which behave exactly the same: they sit between a straight line and a curve and enforce that these two segments join smoothly without a cusp. To create such a node, make sure one of the segments is a line (select its ends and press Shift+L), then Ctrl+drag the remaining handle to make it snap to the direction of the straight line segment on the other side, or press Shift+S to lock it to that direction.&lt;br /&gt;
&lt;br /&gt;
:Note that what matters is the actual collinearity of a node's handles, regardless of the node type that the node has in the Node tool; for example, if a node designated as cusp (diamond-shaped) has collinear handles, it will become a smooth curve point of the Spiro path. &lt;br /&gt;
&lt;br /&gt;
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, &amp;quot;The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, &amp;quot;sensible&amp;quot; plates based on real fonts usually converge.&amp;quot; Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.&lt;br /&gt;
&lt;br /&gt;
:For now, to edit Spiro paths viewing the result in real time, you have to use the Node tool; it is recommended to turn off the red highlight of the source path as it is a distraction. The Pen tool does not yet allow you to preview a Spiro as you draw, although you can paste the Spiro effect on the path and see the result as soon as the path is finalized. &lt;br /&gt;
&lt;br /&gt;
:You can always use the Node tool to continue a Spiro path by duplicating and dragging away its end nodes. Also, when you have a Spiro path selected, you can add a new subpath to it with Pen or Pencil if you start drawing with Shift.&lt;br /&gt;
&lt;br /&gt;
==New features==&lt;br /&gt;
* The '''Paste Path Effect''' command is enabled to assign the path effect of the clipboard to any number of paths, going recursively into groups if necessary.&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. &lt;br /&gt;
&lt;br /&gt;
* Along with the commands to open the path effects dialog and to paste path effects, the three commands were collected in a submenu under Path menu.&lt;br /&gt;
&lt;br /&gt;
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).&lt;br /&gt;
&lt;br /&gt;
* The Pen and Pencil tools now correctly work with paths with LPEs: you can continue such a path or add a new subpath to it by drawing with Shift, all preserving the effect applied to it.&lt;br /&gt;
&lt;br /&gt;
* Path type parameters can now link to existing shapes &amp;lt;b&amp;gt;and text&amp;lt;/b&amp;gt;, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!&lt;br /&gt;
&lt;br /&gt;
* Lib2geom now has an implementation for SVGEllipticalArc. For Inkscape, this means that it is now possible to directly copy-paste ellipse shapes on path parameters (e.g. 'pattern' in Pattern along Path), without the need to convert the ellipse object to path first. [needs coding and checking]&lt;br /&gt;
&lt;br /&gt;
==Live Path Effect for groups==&lt;br /&gt;
&lt;br /&gt;
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path the result is more powerful : the distortion applies on the whole group. &lt;br /&gt;
&lt;br /&gt;
*Original path of the group can as usual be edited by double-clicking. &lt;br /&gt;
*It applies recursively, this means that a LPE can be assigned to groups of groups &lt;br /&gt;
*The Effect can be applied definitively with &amp;quot;Convert Object to path&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
==Corel DRAW files import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape can import more Corel DRAW files of following types:&lt;br /&gt;
&lt;br /&gt;
* Corel DRAW Compressed Exchange files (CCX)&lt;br /&gt;
* Corel DRAW 7-X4 Template files (CDT)&lt;br /&gt;
* Corel DRAW Presentation Exchange files (CMX)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==sK1 files import==&lt;br /&gt;
&lt;br /&gt;
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==CGM import==&lt;br /&gt;
&lt;br /&gt;
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the &amp;quot;Export drawing, not page&amp;quot; checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the &amp;quot;Limit export to the object with ID&amp;quot; field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).&lt;br /&gt;
&lt;br /&gt;
The same capabilities are available from the command line by using &amp;lt;code&amp;gt;--export-area-drawing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--export-id=ID&amp;lt;/code&amp;gt; parameters with &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; (previously, they only worked for PNG export).&lt;br /&gt;
&lt;br /&gt;
=Extension effects=&lt;br /&gt;
==New and improved effects==&lt;br /&gt;
&lt;br /&gt;
* The new '''Text &amp;gt; Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.&lt;br /&gt;
* The new '''Render &amp;gt; Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.&lt;br /&gt;
* The new '''Arrange &amp;gt; Restack''' extension restacks selected objects Z-order, from left to right, top to bottom (or vice versa), with radial outward or inward or by an arbitrary angle, specifying the base point for comparison (top, left, middle, etc.).&lt;br /&gt;
&lt;br /&gt;
==API changes==&lt;br /&gt;
&lt;br /&gt;
While the &amp;quot;Live preview&amp;quot; checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute &amp;lt;code&amp;gt;needs-live-preview=&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; element in the .inx file of the effect to suppress this checkbox for your effect.&lt;br /&gt;
&lt;br /&gt;
Parameters passed to extensions (via the &amp;lt;param&amp;gt; element) now have a new boolean attribute - &amp;lt;code&amp;gt;gui-hidden&amp;lt;/code&amp;gt; to indicate that the parameter should not be represented in the GUI. If all parameters are marked as hidden no GUI is presented for such extension.&lt;br /&gt;
&lt;br /&gt;
All '''.inx''' files are now properly formatted XML files with its own namespace of: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.inkscape.org/namespace/inkscape/extension&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.&lt;br /&gt;
&lt;br /&gt;
=SVG output=&lt;br /&gt;
&lt;br /&gt;
==Optimized CSS properties==&lt;br /&gt;
&lt;br /&gt;
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. &lt;br /&gt;
&lt;br /&gt;
Also, in manually-edited SVG where a parent group has no stroke but sets some stroke properties to be inherited by its descendants, you will need to set stroke property to other than none on the group, and suppress inheritance with stroke:none on those children that don't need it.&lt;br /&gt;
&lt;br /&gt;
Specifically, if stroke:none, the following properties do not get written to SVG:&lt;br /&gt;
&lt;br /&gt;
 stroke-width&lt;br /&gt;
 stroke-linecap&lt;br /&gt;
 stroke-linejoin&lt;br /&gt;
 stroke-miterlimit&lt;br /&gt;
 stroke-opacity&lt;br /&gt;
 stroke-dasharray&lt;br /&gt;
 stroke-dashoffset&lt;br /&gt;
&lt;br /&gt;
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.&lt;br /&gt;
&lt;br /&gt;
If fill:none, the following properties do not get written to SVG:&lt;br /&gt;
&lt;br /&gt;
 fill-opacity&lt;br /&gt;
 fill-rule&lt;br /&gt;
&lt;br /&gt;
==Optimized path data==&lt;br /&gt;
&lt;br /&gt;
In this version, the size of the path data written in the &amp;lt;code&amp;gt;d=&amp;lt;/code&amp;gt; attribute of &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt; elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).&lt;br /&gt;
&lt;br /&gt;
This is controlled by the following attributes in &amp;lt;code&amp;gt;group id=&amp;quot;svgoutput&amp;quot;&amp;lt;/code&amp;gt; in your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)&lt;br /&gt;
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
==Filters can be disabled==&lt;br /&gt;
In order to facilitate editing documents that use lots of SVG filter effects, filter effects can now be disabled for a particular document window by selecting '''View|Display mode|No Filters''' from its menu.  This provides an intermediate step between &amp;quot;normal&amp;quot; and &amp;quot;outline&amp;quot; view modes.&lt;br /&gt;
&lt;br /&gt;
The Toggle view command in the Display mode submenu (Ctrl+keypad 5) toggles between the outline view and either regular or no-filters view, depending on which was used most recent.&lt;br /&gt;
&lt;br /&gt;
==Native file dialogs for Windows==&lt;br /&gt;
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.&lt;br /&gt;
&lt;br /&gt;
==Clipboard enhancements==&lt;br /&gt;
&lt;br /&gt;
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.&lt;br /&gt;
&lt;br /&gt;
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.&lt;br /&gt;
&lt;br /&gt;
==Masks and clipping paths==&lt;br /&gt;
&lt;br /&gt;
[editable in node tool - johan]&lt;br /&gt;
&lt;br /&gt;
==Stroke width changeable by dragging==&lt;br /&gt;
&lt;br /&gt;
[bbyak]&lt;br /&gt;
&lt;br /&gt;
==Enhanced Tablet Support==&lt;br /&gt;
&lt;br /&gt;
===Input device tool switching===&lt;br /&gt;
&lt;br /&gt;
Tablets and other input devices that report separate hardware are now recognized and current tool and/or settings can be set to switch in response to the physical tool being used.&lt;br /&gt;
&lt;br /&gt;
===Extended input device configuration===&lt;br /&gt;
&lt;br /&gt;
The stock Input Devices dialog has been replaced with a completely redone version that provides a more useful representation of settings. It also contains a simple area for testing different inputs of different devices.&lt;br /&gt;
&lt;br /&gt;
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.&lt;br /&gt;
&lt;br /&gt;
==Dropper tool==&lt;br /&gt;
&lt;br /&gt;
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.&lt;br /&gt;
&lt;br /&gt;
==Swatches==&lt;br /&gt;
&lt;br /&gt;
Hovering over a swatch now shows the name of the swatch in the status bar. This makes it easier for tablet users to identify a swatch by name, as holding a stylus still enough to show a tool tip is difficult.&lt;br /&gt;
&lt;br /&gt;
==Toolbars==&lt;br /&gt;
&lt;br /&gt;
The toolbar icon sizes for the three main toolbars are now separately configurable and to a few different sizes. This allows users to get a smaller UI on certain systems, including Ubuntu.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Guides==&lt;br /&gt;
&lt;br /&gt;
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
Snapping has been implemented or improved in these areas:&lt;br /&gt;
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes.&lt;br /&gt;
* The object snapper now also allows to snap to the '''page border'''&lt;br /&gt;
&lt;br /&gt;
==Snap indicator==&lt;br /&gt;
[mention that it exist, and the different snaps that are indicated]&lt;br /&gt;
&lt;br /&gt;
=Notable bug fixes=&lt;br /&gt;
&lt;br /&gt;
* The '''visual bounding box''' (which is the default bounding box type used by Inkscape) of an object with a filter applied, now includes the expanded area of the filter. For '''single blur filter''' (such as the blur you apply with a slider in the Fill and Stroke dialog), this expands the bounding box by 2.4*radius; although theoretically, blur is infinite, this is the distance at which the opacity of the object drops below the perceptibility threshold of our renderer. For all other filters, the area is expanded by the relative amounts you specify on the &amp;quot;Filter general settings&amp;quot; tab of the Filter Effects dialog.&lt;br /&gt;
&lt;br /&gt;
:Only visual bounding box is affected; if you use geometric bounding box, you will notice no change in most cases. However, the Export bitmap dialog always uses the visual bbox for selection of the export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.&lt;br /&gt;
&lt;br /&gt;
* Several fixes allows Inkscape to correctly render and edit SVG files that use &amp;lt;code&amp;gt;currentColor&amp;lt;/code&amp;gt; in objects' style (this includes files created by gnuplot).&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes046]]&lt;br /&gt;
* [[ReleaseNotes045]]&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=28224</id>
		<title>Release notes/0.47</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=28224"/>
		<updated>2008-04-23T15:17:16Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* API changes */ + Extensions schema&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.47=&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
&lt;br /&gt;
=Refactoring effort=&lt;br /&gt;
[mention the 'main' goal of 0.47 and list which things have been refactored and the benefits/new features/different workflow? --johan]&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
&lt;br /&gt;
==Node tool==&lt;br /&gt;
&lt;br /&gt;
* [helper path display, flashing - johan]&lt;br /&gt;
* The Node tool can now edit '''clipping paths''' and '''masks''' of objects on canvas, without releasing them. If the selected object has a clipping path and mask, the corresponding buttons on the controls bar of the tool will be enabled; pressing these buttons will display the editable paths or handles of the clippath or mask. A clipping path is stroked green, a mask is stroked blue (the same colors as those used for them in Outline mode).&lt;br /&gt;
* Snapping has been improved (more details in Snapping below)&lt;br /&gt;
* When dragging a node '''handle with Ctrl''', it now snaps not only to the 15 degree increments starting from 0 and to the original handle direction, but also to the direction of the '''opposite handle''' (if it exists) or of the '''opposite line segment''' (if it is a straight line).&lt;br /&gt;
* The behavior of the buttons/shortucts that make a node smooth or cusp has been improved:&lt;br /&gt;
:* If a node is already cusp (diamond shaped), pressing Shift+C again on it will retract both its handles. As this works for any number of selected nodes, you can always retract all handles in all nodes by selecting all nodes and pressing Shift+C twice.&lt;br /&gt;
:* If a non-smooth node is next to a straight line segment, pressing Shift+S once makes it ''half-smooth'': it now has one handle aligned with that line segment. Another press of Shift+S will expand the second handle as well turning it into a full smooth node. If a node is between two curve segments, Shift+S will expand both handles as before.&lt;br /&gt;
&lt;br /&gt;
==Calligraphy tool ==&lt;br /&gt;
Added 4 preset buttons for dip, pen, brush and reed in the toolbox. Clicking one button sets the calligraphic tool with the matching presets.&lt;br /&gt;
&lt;br /&gt;
==Paint Bucket tool==&lt;br /&gt;
* Paint Bucket is now more tightly integrated with potrace.  As a result, memory and CPU usage on each fill operation have been reduced significantly.&lt;br /&gt;
&lt;br /&gt;
=Live path effects=&lt;br /&gt;
== Notable bug fixes and effect changes==&lt;br /&gt;
We try to refrain from changing the behavior of LPE's, because it will change appearance in old files when opened in Inkscape¹.  But when an effect is really broken, we have to fix it.&lt;br /&gt;
&lt;br /&gt;
[¹ fixme: Shouldn't the above say &amp;quot;it will change editing behaviour in old files&amp;quot; ?  If it changes the appearance, then that's a bug: inkscape should always save SVG that represents the appearance, and should display according to the SVG rather than any inkscape:blah annotations.  --pjrm &amp;lt;br&amp;gt;&lt;br /&gt;
What is meant is the following. Files with LPEs opened in a random viewer will always look the same, regardless of Inkscape version. However, when viewed in Inkscape, the LPE is recalculated. When LPE behavior changes, the appearance will change. --johan]&lt;br /&gt;
&lt;br /&gt;
* The Pattern Along Path effect used to stretch the pattern across discontinuities. This has been fixed; now it treats a discontinuous path as a group of continuous paths and applied the effect separately to each.&lt;br /&gt;
&lt;br /&gt;
==New effects==&lt;br /&gt;
[new: sketch, von koch, knot]&lt;br /&gt;
&lt;br /&gt;
* Perspective paths: Draw an arbitrary path as if viewed in perspective. This is work in progress. Known limitations (among others): It can only use the first perspective that exists in the document defs, and the perspective cannot be adapted interactively yet (the effect must be removed and reapplied after modifying the perspective).&lt;br /&gt;
&lt;br /&gt;
* '''Spiro splines''' are a novel way of defining curvilinear paths [http://www.levien.com/spiro/ developed by Raph Levien]. It takes some getting used to, but for certain tasks (such as lettershape design) Spiros have a clear advantage over Bezier curves. Recently, Spiro support was added to the FontForge font editor; now it is available in Inkscape too, which means you can use all the convenient Inkscape path tools (moving and transforming groups of nodes, node sculpting, etc.) on Spiro paths.&lt;br /&gt;
&lt;br /&gt;
:A Spiro path is defined by a sequence of points, but unlike a regular path with Bezier curves, all Spiro points lie on the path and there are no off-path handles. The curvature of the path is defined entirely by the positions of the points and their types. The path behaves very similar to a springy rod which is forced to pass through the given points and which uses the minimum possible curvature to satisfy the requirement. As such, it feels quite natural and the resulting path is very smooth - not just superficially smooth (i.e. having no cusps), but smooth at a deeper level, which you can achieve with Beziers only after a lot of laborious tweaking. &lt;br /&gt;
&lt;br /&gt;
:To create a Spiro path, select any path and assign the &amp;quot;Spiro spline&amp;quot; path effect to it. There are no parameters. Each node of your path becomes a point of a Spiro path, depending on the type of node:&lt;br /&gt;
&lt;br /&gt;
:* Smooth nodes (those with two collinear Bezier handles; use Shift+S to make a node smooth) become smooth curve points of the Spiro path. Note that the length or direction of the Bezier handles of the source path is ignored; the only thing that matters is their collinearity.&lt;br /&gt;
&lt;br /&gt;
:* Cusp nodes of the source path become corner points of the Spiro path, like free hinges on the springy rod. Between two corner points, the path is always a straight line. To make a node cusp, retract its Bezier handles by Ctrl+click, or press Shift+C and move one of the handles so they are no longer collinear.&lt;br /&gt;
&lt;br /&gt;
:* Half-smooth nodes - those with one Bezier handle collinear with a straight line segment on the other hand - become &amp;quot;left&amp;quot; or &amp;quot;right&amp;quot; points on the Spiro path which behave exactly the same: they sit between a straight line and a curve and enforce that these two segments join smoothly without a cusp. To create such a node, make sure one of the segments is a line (select its ends and press Shift+L), then Ctrl+drag the remaining handle to make it snap to the direction of the straight line segment on the other side, or press Shift+S to lock it to that direction.&lt;br /&gt;
&lt;br /&gt;
:Note that what matters is the actual collinearity of a node's handles, regardless of the node type that the node has in the Node tool; for example, if a node designated as cusp (diamond-shaped) has collinear handles, it will become a smooth curve point of the Spiro path. &lt;br /&gt;
&lt;br /&gt;
:Some configurations of points do not converge and produce wild loops and spirals instead of a smooth curve. According to Raph, &amp;quot;The spline solver in this release is _not_ numerically robust. When you start drawing random points, you'll quickly run into divergence. However, &amp;quot;sensible&amp;quot; plates based on real fonts usually converge.&amp;quot; Avoid too sharp changes in direction between points to prevent divergence. Hopefully, the robustness of the algorithm will be improved in future releases.&lt;br /&gt;
&lt;br /&gt;
:For now, to edit Spiro paths viewing the result in real time, you have to use the Node tool; it is recommended to turn off the red highlight of the source path as it is a distraction. The Pen tool does not yet allow you to preview a Spiro as you draw, although you can paste the Spiro effect on the path and see the result as soon as the path is finalized. &lt;br /&gt;
&lt;br /&gt;
:You can always use the Node tool to continue a Spiro path by duplicating and dragging away its end nodes. Also, when you have a Spiro path selected, you can add a new subpath to it with Pen or Pencil if you start drawing with Shift.&lt;br /&gt;
&lt;br /&gt;
==New features==&lt;br /&gt;
* The '''Paste Path Effect''' command is enabled to assign the path effect of the clipboard to any number of paths, going recursively into groups if necessary.&lt;br /&gt;
&lt;br /&gt;
* A new command, '''Remove path effect''' removes any path effects from all selected objects, going recursively into groups if necessary. &lt;br /&gt;
&lt;br /&gt;
* Along with the commands to open the path effects dialog and to paste path effects, the three commands were collected in a submenu under Path menu.&lt;br /&gt;
&lt;br /&gt;
* Live path effects can now be assigned to the sides of a 3D box (use Ctrl+click to select individual sides).&lt;br /&gt;
&lt;br /&gt;
* The Pen and Pencil tools now correctly work with paths with LPEs: you can continue such a path or add a new subpath to it by drawing with Shift, all preserving the effect applied to it.&lt;br /&gt;
&lt;br /&gt;
* Path type parameters can now link to existing shapes &amp;lt;b&amp;gt;and text&amp;lt;/b&amp;gt;, like clones do. Now it is possible to use text as input for the Pattern Along Path effect for example!&lt;br /&gt;
&lt;br /&gt;
* Lib2geom now has an implementation for SVGEllipticalArc. For Inkscape, this means that it is now possible to directly copy-paste ellipse shapes on path parameters (e.g. 'pattern' in Pattern along Path), without the need to convert the ellipse object to path first. [needs coding and checking]&lt;br /&gt;
&lt;br /&gt;
==Live Path Effect for groups==&lt;br /&gt;
&lt;br /&gt;
LPE can now be assigned to a group. For most LPE, the effect is applied recursively but for Bend Path the result is more powerful : the distortion applies on the whole group. &lt;br /&gt;
&lt;br /&gt;
*Original path of the group can as usual be edited by double-clicking. &lt;br /&gt;
*It applies recursively, this means that a LPE can be assigned to groups of groups &lt;br /&gt;
*The Effect can be applied definitively with &amp;quot;Convert Object to path&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
==Corel DRAW files import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape can import more Corel DRAW files of following types:&lt;br /&gt;
&lt;br /&gt;
* Corel DRAW Compressed Exchange files (CCX)&lt;br /&gt;
* Corel DRAW 7-X4 Template files (CDT)&lt;br /&gt;
* Corel DRAW Presentation Exchange files (CMX)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==sK1 files import==&lt;br /&gt;
&lt;br /&gt;
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==CGM import==&lt;br /&gt;
&lt;br /&gt;
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==PDF export==&lt;br /&gt;
&lt;br /&gt;
With PDF export, it is now possible to make the PDF page the size of the entire drawing, instead of the same as SVG page as before by the &amp;quot;Export drawing, not page&amp;quot; checkbox in PDF export options. Also, you can export a single object from a complex document to PDF if you specify the ID of that object in the &amp;quot;Limit export to the object with ID&amp;quot; field; the page of such PDF will be the same size as the bounding box of that object and will show only that object (all others will be hidden).&lt;br /&gt;
&lt;br /&gt;
The same capabilities are available from the command line by using &amp;lt;code&amp;gt;--export-area-drawing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--export-id=ID&amp;lt;/code&amp;gt; parameters with &amp;lt;code&amp;gt;--export-pdf&amp;lt;/code&amp;gt; (previously, they only worked for PNG export).&lt;br /&gt;
&lt;br /&gt;
=Extension effects=&lt;br /&gt;
==New and improved effects==&lt;br /&gt;
&lt;br /&gt;
* The new '''Text &amp;gt; Convert to Braille''' extension recodes English (or just Latin letters) text to [http://en.wikipedia.org/wiki/Braille Braille] code created for visually impaired people.&lt;br /&gt;
* The new '''Render &amp;gt; Alphabet Soup''' extension is a vector rework of Matt Chrisholm's GPLed script [http://www.theory.org/artprojects/alphabetsoup/main.html]. Alphabet Soup randomly mashes glyph-elements together to make exotic looking text.&lt;br /&gt;
* The new '''Arrange &amp;gt; Restack''' extension restacks selected objects Z-order, from left to right, top to bottom (or vice versa), with radial outward or inward or by an arbitrary angle, specifying the base point for comparison (top, left, middle, etc.).&lt;br /&gt;
&lt;br /&gt;
==API changes==&lt;br /&gt;
&lt;br /&gt;
While the &amp;quot;Live preview&amp;quot; checkbox is useful for most effects, for some it just does not make sense. Now, you can add the attribute &amp;lt;code&amp;gt;needs-live-preview=&amp;quot;false&amp;quot;&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; element in the .inx file of the effect to suppress this checkbox for your effect.&lt;br /&gt;
&lt;br /&gt;
All '''.inx''' files are now properly formatted XML files with its own namespace of: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://www.inkscape.org/namespace/inkscape/extension&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; and a Relax NG schema to define it. More information can be found in the [[Extensions]] Article.&lt;br /&gt;
&lt;br /&gt;
=SVG output=&lt;br /&gt;
&lt;br /&gt;
==Optimized CSS properties==&lt;br /&gt;
&lt;br /&gt;
As a file size optimization, Inkscape does not write into SVG some of the stroke properties if the object has stroke:none and some of the fill properties when it has fill:none. The only situation where this might affect you is if you remove stroke from an object and then turn it back on - the object will get the default stroke instead of the same it had before. &lt;br /&gt;
&lt;br /&gt;
Also, in manually-edited SVG where a parent group has no stroke but sets some stroke properties to be inherited by its descendants, you will need to set stroke property to other than none on the group, and suppress inheritance with stroke:none on those children that don't need it.&lt;br /&gt;
&lt;br /&gt;
Specifically, if stroke:none, the following properties do not get written to SVG:&lt;br /&gt;
&lt;br /&gt;
 stroke-width&lt;br /&gt;
 stroke-linecap&lt;br /&gt;
 stroke-linejoin&lt;br /&gt;
 stroke-miterlimit&lt;br /&gt;
 stroke-opacity&lt;br /&gt;
 stroke-dasharray&lt;br /&gt;
 stroke-dashoffset&lt;br /&gt;
&lt;br /&gt;
Note that this does not include marker properties, which means you can still have markers on a path without visible stroke.&lt;br /&gt;
&lt;br /&gt;
If fill:none, the following properties do not get written to SVG:&lt;br /&gt;
&lt;br /&gt;
 fill-opacity&lt;br /&gt;
 fill-rule&lt;br /&gt;
&lt;br /&gt;
==Optimized path data==&lt;br /&gt;
&lt;br /&gt;
In this version, the size of the path data written in the &amp;lt;code&amp;gt;d=&amp;lt;/code&amp;gt; attribute of &amp;lt;code&amp;gt;path&amp;lt;/code&amp;gt; elements is reduced by about 10%. Inkscape generates the shortest possible path strings by avoiding repeated operators and using relative coordinates (when it helps).&lt;br /&gt;
&lt;br /&gt;
This is controlled by the following attributes in &amp;lt;code&amp;gt;group id=&amp;quot;svgoutput&amp;quot;&amp;lt;/code&amp;gt; in your preferences.xml file:&lt;br /&gt;
&lt;br /&gt;
* allowrelativecoordinates (default 1) to switch relative coordinates on (1) or off (0)&lt;br /&gt;
* forcerepeatcommands (default 0) to force repeating operators (1) or allow use of the more compact representation without repeated operators (0)&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
==Filters can be disabled==&lt;br /&gt;
In order to facilitate editing documents that use lots of SVG filter effects, filter effects can now be disabled for a particular document window by selecting '''View|Display mode|No Filters''' from its menu.  This provides an intermediate step between &amp;quot;normal&amp;quot; and &amp;quot;outline&amp;quot; view modes.&lt;br /&gt;
&lt;br /&gt;
The Toggle view command in the Display mode submenu (Ctrl+keypad 5) toggles between the outline view and either regular or no-filters view, depending on which was used most recent.&lt;br /&gt;
&lt;br /&gt;
==Native file dialogs for Windows==&lt;br /&gt;
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.&lt;br /&gt;
&lt;br /&gt;
==Clipboard enhancements==&lt;br /&gt;
&lt;br /&gt;
The clipboard used by Inkscape is now system-wide instead of being confined to a single instance of the application. Copied elements are exported to the clipboard using all the available output formats. SVG data can be pasted into other applications supporting one of Inkscape's output formats, and SVG data provided by other applications can be pasted into Inkscape.&lt;br /&gt;
&lt;br /&gt;
If you copy a string that can be interpreted as a hexadecimal color specification, i.e. 2f7ab4 or #014522b0, and then paste it into Inkscape, the fill of the selected objects will change to the given color. This is especially useful when working with HTML pages.&lt;br /&gt;
&lt;br /&gt;
==Masks and clipping paths==&lt;br /&gt;
&lt;br /&gt;
[editable in node tool - johan]&lt;br /&gt;
&lt;br /&gt;
==Stroke width changeable by dragging==&lt;br /&gt;
&lt;br /&gt;
[bbyak]&lt;br /&gt;
&lt;br /&gt;
==Enhanced Tablet Support==&lt;br /&gt;
&lt;br /&gt;
===Input device tool switching===&lt;br /&gt;
&lt;br /&gt;
Tablets and other input devices that report separate hardware are now recognized and current tool and/or settings can be set to switch in response to the physical tool being used.&lt;br /&gt;
&lt;br /&gt;
===Extended input device configuration===&lt;br /&gt;
&lt;br /&gt;
The stock Input Devices dialog has been replaced with a completely redone version that provides a more useful representation of settings. It also contains a simple area for testing different inputs of different devices.&lt;br /&gt;
&lt;br /&gt;
Additionally hardware setup itself has been separated from general settings to allow for easier dynamic switching of settings appropriate to the task at hand.&lt;br /&gt;
&lt;br /&gt;
==Dropper tool==&lt;br /&gt;
&lt;br /&gt;
The confusing icons on buttons in the controls bar of the Dropper tool (pick/assign opacity) are replaced by text labels.&lt;br /&gt;
&lt;br /&gt;
==Swatches==&lt;br /&gt;
&lt;br /&gt;
Hovering over a swatch now shows the name of the swatch in the status bar. This makes it easier for tablet users to identify a swatch by name, as holding a stylus still enough to show a tool tip is difficult.&lt;br /&gt;
&lt;br /&gt;
=Grids, guides, snapping=&lt;br /&gt;
&lt;br /&gt;
==Guides==&lt;br /&gt;
&lt;br /&gt;
There is now an option to treat groups as single objects during conversion to guides (as opposed to converting each object inside the group separately).&lt;br /&gt;
&lt;br /&gt;
==Snapping==&lt;br /&gt;
Snapping has been implemented or improved in these areas:&lt;br /&gt;
* The '''node tool''' now snaps to any unselected node (cusp or smooth) within the path that's being edited, and to cusp nodes of other paths. It also snaps to the path itself, but only to the stationary segments in between two unselected nodes.&lt;br /&gt;
* The object snapper now also allows to snap to the '''page border'''&lt;br /&gt;
&lt;br /&gt;
==Snap indicator==&lt;br /&gt;
[mention that it exist, and the different snaps that are indicated]&lt;br /&gt;
&lt;br /&gt;
=Notable bug fixes=&lt;br /&gt;
&lt;br /&gt;
* The '''visual bounding box''' (which is the default bounding box type used by Inkscape) of an object with a filter applied now includes the expanded area of the filter. For '''single blur filter''' (such as the blur you apply with a slider in the Fill and Stroke dialog), this expands the bounding box by 2.4*radius; although theoretically, blur is infinite, this is the distance at which the opacity of the object drops below the perceptibility threshold of our renderer. For all other filters, the area is expanded by the relative amounts you specify on the &amp;quot;Filter general settings&amp;quot; tab of the Filter Effects dialog.&lt;br /&gt;
&lt;br /&gt;
:Only visual bounding box is affected; if you use geometric bounding box, you will notice no change in most cases. However, the Export bitmap dialog always uses the visual bbox for selection export area; this means that you can now export a blurred object to bitmap without any clipping of the blur.&lt;br /&gt;
&lt;br /&gt;
* Several fixes allowed Inkscape to correctly render and edit SVG files that use &amp;lt;code&amp;gt;currentColor&amp;lt;/code&amp;gt; in objects' style (this includes files created by gnulpot).&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes046]]&lt;br /&gt;
* [[ReleaseNotes045]]&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Extensions&amp;diff=28034</id>
		<title>Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Extensions&amp;diff=28034"/>
		<updated>2008-04-18T15:10:18Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* RadioButton example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended as a guide for providing new extensions for Inkscape. Currently the majority of extensions are provided as python scripts.&lt;br /&gt;
&lt;br /&gt;
==Extension types==&lt;br /&gt;
The following extension types exist for Inkscape:&lt;br /&gt;
* '''input'''&lt;br /&gt;
* '''output'''&lt;br /&gt;
* '''effect'''&lt;br /&gt;
* '''print'''&lt;br /&gt;
* '''''path-effect''''' - path effects are '''not''' currently implemented as extension but there is intention to migrate those over as entensions&lt;br /&gt;
&lt;br /&gt;
==Extension implementation==&lt;br /&gt;
* Internal&lt;br /&gt;
** C++ implementation (directly in code)&lt;br /&gt;
* External&lt;br /&gt;
** '''scripts''' - written in '''python''', '''perl''' or as system (console) scripts&lt;br /&gt;
** '''xslt transformations'''&lt;br /&gt;
** '''plugins''' - ''not fully implemented yet''&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Extensions can be supplied with values obtained through easily definable parameters. Inkscape provides the basic GUI for user input. The following parameters are supported:&lt;br /&gt;
* '''integer'''&lt;br /&gt;
* '''string'''&lt;br /&gt;
* '''float'''&lt;br /&gt;
* '''boolean'''&lt;br /&gt;
* '''enum'''&lt;br /&gt;
* '''optiongroup'''&lt;br /&gt;
* '''colour'''&lt;br /&gt;
&lt;br /&gt;
For the sake of the UI there are also the following two parameters that do not provide data to the extension but alter the user input GUI.&lt;br /&gt;
* '''description'''&lt;br /&gt;
* '''notebook'''&lt;br /&gt;
&lt;br /&gt;
==Extension Definition File (INX)==&lt;br /&gt;
All extensions are defined through Inkscape Extension Definition Files (.inx) which are XML files in the &amp;lt;pre&amp;gt;http://www.inkscape.org/namespace/inkscape/extension&amp;lt;/pre&amp;gt; namespace and described by the [http://relaxng.org/ Relax NG] available [here]&lt;br /&gt;
===Structure===&lt;br /&gt;
===Examples===&lt;br /&gt;
====RadioButton example====&lt;br /&gt;
The following mark-up:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;inkscape-extension xmlns=&amp;quot;http://www.inkscape.org/namespace/inkscape/extension&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;_name&amp;gt;RadioButton example&amp;lt;/_name&amp;gt;&lt;br /&gt;
  &amp;lt;id&amp;gt;org.inkscape.effect.radiobuttontest&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;radio1&amp;quot; type=&amp;quot;optiongroup&amp;quot; _gui-text=&amp;quot;Select option: &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string1&amp;quot;&amp;gt;translatable string 1&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string2&amp;quot;&amp;gt;string 2&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string3&amp;quot;&amp;gt;test 3!&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;/param&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;radio2&amp;quot; type=&amp;quot;optiongroup&amp;quot; _gui-text=&amp;quot;Select second option: &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string11&amp;quot;&amp;gt;string1&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string22&amp;quot;&amp;gt;string2&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option&amp;gt;test3!&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;/param&amp;gt;&lt;br /&gt;
  &amp;lt;effect&amp;gt;&lt;br /&gt;
    &amp;lt;object-type&amp;gt;all&amp;lt;/object-type&amp;gt;&lt;br /&gt;
    &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
      &amp;lt;submenu _name=&amp;quot;Developer Examples&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
  &amp;lt;/effect&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Will result in the following GUI being created:&lt;br /&gt;
&lt;br /&gt;
[[Image:Extensions-radiobutton_gui_example.png]]&lt;br /&gt;
&lt;br /&gt;
===i18n===&lt;br /&gt;
To allow the .inx files to fit snugly into Inkscape's i18n infrastructure some XML elements and attributes are prefixed with an underscore (_) character to indicate that the containing text should be marked for translation.&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=File:Extensions-radiobutton_gui_example.png&amp;diff=28024</id>
		<title>File:Extensions-radiobutton gui example.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=File:Extensions-radiobutton_gui_example.png&amp;diff=28024"/>
		<updated>2008-04-18T15:09:57Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Extensions&amp;diff=28014</id>
		<title>Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Extensions&amp;diff=28014"/>
		<updated>2008-04-18T15:09:36Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* RadioButton example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended as a guide for providing new extensions for Inkscape. Currently the majority of extensions are provided as python scripts.&lt;br /&gt;
&lt;br /&gt;
==Extension types==&lt;br /&gt;
The following extension types exist for Inkscape:&lt;br /&gt;
* '''input'''&lt;br /&gt;
* '''output'''&lt;br /&gt;
* '''effect'''&lt;br /&gt;
* '''print'''&lt;br /&gt;
* '''''path-effect''''' - path effects are '''not''' currently implemented as extension but there is intention to migrate those over as entensions&lt;br /&gt;
&lt;br /&gt;
==Extension implementation==&lt;br /&gt;
* Internal&lt;br /&gt;
** C++ implementation (directly in code)&lt;br /&gt;
* External&lt;br /&gt;
** '''scripts''' - written in '''python''', '''perl''' or as system (console) scripts&lt;br /&gt;
** '''xslt transformations'''&lt;br /&gt;
** '''plugins''' - ''not fully implemented yet''&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Extensions can be supplied with values obtained through easily definable parameters. Inkscape provides the basic GUI for user input. The following parameters are supported:&lt;br /&gt;
* '''integer'''&lt;br /&gt;
* '''string'''&lt;br /&gt;
* '''float'''&lt;br /&gt;
* '''boolean'''&lt;br /&gt;
* '''enum'''&lt;br /&gt;
* '''optiongroup'''&lt;br /&gt;
* '''colour'''&lt;br /&gt;
&lt;br /&gt;
For the sake of the UI there are also the following two parameters that do not provide data to the extension but alter the user input GUI.&lt;br /&gt;
* '''description'''&lt;br /&gt;
* '''notebook'''&lt;br /&gt;
&lt;br /&gt;
==Extension Definition File (INX)==&lt;br /&gt;
All extensions are defined through Inkscape Extension Definition Files (.inx) which are XML files in the &amp;lt;pre&amp;gt;http://www.inkscape.org/namespace/inkscape/extension&amp;lt;/pre&amp;gt; namespace and described by the [http://relaxng.org/ Relax NG] available [here]&lt;br /&gt;
===Structure===&lt;br /&gt;
===Examples===&lt;br /&gt;
====RadioButton example====&lt;br /&gt;
The following mark-up:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;inkscape-extension xmlns=&amp;quot;http://www.inkscape.org/namespace/inkscape/extension&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;_name&amp;gt;RadioButton example&amp;lt;/_name&amp;gt;&lt;br /&gt;
  &amp;lt;id&amp;gt;org.inkscape.effect.radiobuttontest&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;radio1&amp;quot; type=&amp;quot;optiongroup&amp;quot; _gui-text=&amp;quot;Select option: &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string1&amp;quot;&amp;gt;translatable string 1&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string2&amp;quot;&amp;gt;string 2&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string3&amp;quot;&amp;gt;test 3!&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;/param&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;radio2&amp;quot; type=&amp;quot;optiongroup&amp;quot; _gui-text=&amp;quot;Select second option: &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string11&amp;quot;&amp;gt;string1&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string22&amp;quot;&amp;gt;string2&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option&amp;gt;test3!&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;/param&amp;gt;&lt;br /&gt;
  &amp;lt;effect&amp;gt;&lt;br /&gt;
    &amp;lt;object-type&amp;gt;all&amp;lt;/object-type&amp;gt;&lt;br /&gt;
    &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
      &amp;lt;submenu _name=&amp;quot;Developer Examples&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
  &amp;lt;/effect&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Will result in the following GUI being created:&lt;br /&gt;
[[Image:Extensions-radiobutton_gui_example.png]]&lt;br /&gt;
&lt;br /&gt;
===i18n===&lt;br /&gt;
To allow the .inx files to fit snugly into Inkscape's i18n infrastructure some XML elements and attributes are prefixed with an underscore (_) character to indicate that the containing text should be marked for translation.&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Extensions&amp;diff=28004</id>
		<title>Extensions</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Extensions&amp;diff=28004"/>
		<updated>2008-04-18T15:04:43Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: initiated new page. Hopefuly more will come here&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended as a guide for providing new extensions for Inkscape. Currently the majority of extensions are provided as python scripts.&lt;br /&gt;
&lt;br /&gt;
==Extension types==&lt;br /&gt;
The following extension types exist for Inkscape:&lt;br /&gt;
* '''input'''&lt;br /&gt;
* '''output'''&lt;br /&gt;
* '''effect'''&lt;br /&gt;
* '''print'''&lt;br /&gt;
* '''''path-effect''''' - path effects are '''not''' currently implemented as extension but there is intention to migrate those over as entensions&lt;br /&gt;
&lt;br /&gt;
==Extension implementation==&lt;br /&gt;
* Internal&lt;br /&gt;
** C++ implementation (directly in code)&lt;br /&gt;
* External&lt;br /&gt;
** '''scripts''' - written in '''python''', '''perl''' or as system (console) scripts&lt;br /&gt;
** '''xslt transformations'''&lt;br /&gt;
** '''plugins''' - ''not fully implemented yet''&lt;br /&gt;
&lt;br /&gt;
==Parameters==&lt;br /&gt;
Extensions can be supplied with values obtained through easily definable parameters. Inkscape provides the basic GUI for user input. The following parameters are supported:&lt;br /&gt;
* '''integer'''&lt;br /&gt;
* '''string'''&lt;br /&gt;
* '''float'''&lt;br /&gt;
* '''boolean'''&lt;br /&gt;
* '''enum'''&lt;br /&gt;
* '''optiongroup'''&lt;br /&gt;
* '''colour'''&lt;br /&gt;
&lt;br /&gt;
For the sake of the UI there are also the following two parameters that do not provide data to the extension but alter the user input GUI.&lt;br /&gt;
* '''description'''&lt;br /&gt;
* '''notebook'''&lt;br /&gt;
&lt;br /&gt;
==Extension Definition File (INX)==&lt;br /&gt;
All extensions are defined through Inkscape Extension Definition Files (.inx) which are XML files in the &amp;lt;pre&amp;gt;http://www.inkscape.org/namespace/inkscape/extension&amp;lt;/pre&amp;gt; namespace and described by the [http://relaxng.org/ Relax NG] available [here]&lt;br /&gt;
===Structure===&lt;br /&gt;
===Examples===&lt;br /&gt;
====RadioButton example====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;inkscape-extension xmlns=&amp;quot;http://www.inkscape.org/namespace/inkscape/extension&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;_name&amp;gt;RadioButton example&amp;lt;/_name&amp;gt;&lt;br /&gt;
  &amp;lt;id&amp;gt;org.inkscape.effect.radiobuttontest&amp;lt;/id&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;radio1&amp;quot; type=&amp;quot;optiongroup&amp;quot; _gui-text=&amp;quot;Select option: &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string1&amp;quot;&amp;gt;translatable string 1&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string2&amp;quot;&amp;gt;string 2&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string3&amp;quot;&amp;gt;test 3!&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;/param&amp;gt;&lt;br /&gt;
  &amp;lt;param name=&amp;quot;radio2&amp;quot; type=&amp;quot;optiongroup&amp;quot; _gui-text=&amp;quot;Select second option: &amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string11&amp;quot;&amp;gt;string1&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option value=&amp;quot;string22&amp;quot;&amp;gt;string2&amp;lt;/option&amp;gt;&lt;br /&gt;
    &amp;lt;option&amp;gt;test3!&amp;lt;/option&amp;gt;&lt;br /&gt;
  &amp;lt;/param&amp;gt;&lt;br /&gt;
  &amp;lt;effect&amp;gt;&lt;br /&gt;
    &amp;lt;object-type&amp;gt;all&amp;lt;/object-type&amp;gt;&lt;br /&gt;
    &amp;lt;effects-menu&amp;gt;&lt;br /&gt;
      &amp;lt;submenu _name=&amp;quot;Developer Examples&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/effects-menu&amp;gt;&lt;br /&gt;
  &amp;lt;/effect&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/inkscape-extension&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
===i18n===&lt;br /&gt;
To allow the .inx files to fit snugly into Inkscape's i18n infrastructure some XML elements and attributes are prefixed with an underscore (_) character to indicate that the containing text should be marked for translation.&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=ExtensionsSystem&amp;diff=27994</id>
		<title>ExtensionsSystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=ExtensionsSystem&amp;diff=27994"/>
		<updated>2008-04-18T14:44:18Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Key Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a copy of the original spec for the extensions system.  Part of this was accepted into the Sodipodi codebase.&lt;br /&gt;
This might be replaced by a more full-fledged plugin system in Inkscape at some point.  The original patch is at&lt;br /&gt;
http://developer.osdl.org/bryce/patches/sodipodi/extension_02/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sodipodi Simple Extension System ==&lt;br /&gt;
 &lt;br /&gt;
This specification describes a design for implementing extension&lt;br /&gt;
capabilities in Sodipodi, a 2D vector-based drawing application that&lt;br /&gt;
uses the Scalable Vector Graphics (SVG) file format and the GNOME&lt;br /&gt;
graphical user interface system.&lt;br /&gt;
 &lt;br /&gt;
The concept for this extension system is simple:  The user selects&lt;br /&gt;
some drawing elements within Sodipodi, and then chooses an extension&lt;br /&gt;
program to run on them.  Sodipodi renders the textual SVG code for the&lt;br /&gt;
elements and then pipes this data to the stdin of the extension&lt;br /&gt;
program.  The extension performs its operations and prints the&lt;br /&gt;
resulting SVG text to its stdout, which Sodipodi captures, parses, and&lt;br /&gt;
displays.  This can either be added to a new document or the same&lt;br /&gt;
document, and if the latter, it can either replace the original&lt;br /&gt;
selections or be added atop it.&lt;br /&gt;
 &lt;br /&gt;
The idea of &amp;quot;pipes&amp;quot; should resonate well with experienced UNIX users,&lt;br /&gt;
because of the value they provide in general day-to-day use at the&lt;br /&gt;
commandline.  This approach allows small general purpose tools to be&lt;br /&gt;
quickly combined to perform some specific purpose.&lt;br /&gt;
 &lt;br /&gt;
This is not a sophisticated, ultra-powerful, or high-performance&lt;br /&gt;
system, but it is not intended to be so.  The primary objectives this&lt;br /&gt;
design seeks to achieve are simplicity of interface, language&lt;br /&gt;
independence, and maximum flexibility.  We aim to permit even neophyte&lt;br /&gt;
programmers to be able to quickly throw together a little script to&lt;br /&gt;
conduct some necessary transformation, without needing to first learn&lt;br /&gt;
some new programming technologies.  We also aim to enable more&lt;br /&gt;
experienced software engineers to augment Sodipodi's functionality&lt;br /&gt;
in a modular fashion that is independent of core development.  And&lt;br /&gt;
further, we hope that by allowing extension-writing to be done in a&lt;br /&gt;
multiplicity of languages that we can take advantage of powerful&lt;br /&gt;
functionalities already available via other languages (such as Perl's&lt;br /&gt;
wealth of CPAN modules, or Java's XML manipulation technologies, or&lt;br /&gt;
C++-based graphic manipulation libraries).  This system may not be&lt;br /&gt;
able to intrinsically meet 100% of the desires one would wish for in a&lt;br /&gt;
powerful C-based plug-in system, but it hopefully will meet a sizable&lt;br /&gt;
chunk of the needs, and should be able to do so with minimal impact on&lt;br /&gt;
Sodipodi's internal development.&lt;br /&gt;
 &lt;br /&gt;
                                                                                &lt;br /&gt;
=== Key Requirements ===&lt;br /&gt;
* Extensions can be added to sodipodi without compiling it&lt;br /&gt;
* Extensions can be invoked from the GUI Sodipodi&lt;br /&gt;
* Extensions can be invoked from the commandline Sodipodi&lt;br /&gt;
* Extensions can be organized into one or more menus and toolboxes&lt;br /&gt;
* Quantity of extensions shall not delay program initialization&lt;br /&gt;
* Extensions (incl init) shall not run in background&lt;br /&gt;
* Authoring of an extension should be straightforward &amp;amp; easy to grok&lt;br /&gt;
* Extensions shall operate on entire SVG documents&lt;br /&gt;
* Extensions shall operate on fragments of SVG documents&lt;br /&gt;
* Extensions shall operate on individual SVG entities&lt;br /&gt;
* It shall be possible to write extensions in most any programming language&lt;br /&gt;
&lt;br /&gt;
=== Architecture of a Compliant Extension ===&lt;br /&gt;
&lt;br /&gt;
The extension is implemented as a commandline filter that takes some&lt;br /&gt;
arbitrary SVG through stdin, conducts some operations, and returns&lt;br /&gt;
processed SVG through stdout.&lt;br /&gt;
                                                                                &lt;br /&gt;
The benefit of the stdin/stdout approach is that it allows them to be&lt;br /&gt;
pipe chained.  For example, if one wished to modify a stock diagram&lt;br /&gt;
of a data center lab by indicating status of particular machines with&lt;br /&gt;
color, one might approach it via a complex commandline such as:&lt;br /&gt;
                                                                                &lt;br /&gt;
 $ cat lab_diagram.svg \&lt;br /&gt;
      | svg_highlight --stroke-color=yellow --id=rack_24 --id=rack_42 \&lt;br /&gt;
      | svg_highlight --stroke-color=red --stroke-width=2px --id=rack_13 \&lt;br /&gt;
      | svg_delete  --id=main_border --id=&amp;quot;legend_*&amp;quot; \&lt;br /&gt;
      | svg_change_text --id=title_text --sed=&amp;quot;s[[/Lab]] Diagram[[/Rack]] Status/&amp;quot; \&lt;br /&gt;
      | sodipodi -z --export-png lab_diagram__rack_status.png&lt;br /&gt;
                                                                                &lt;br /&gt;
Extensions can also be run at the commandline as stand-alone filter&lt;br /&gt;
programs.  They are able to take a saved Sodipodi SVG file as input&lt;br /&gt;
and emit a changed files with exactly the same effects as if it were&lt;br /&gt;
invoked on the entire document within the Sodipodi GUI.&lt;br /&gt;
                                                                                &lt;br /&gt;
By being runnable from the commandline, these filters have a much larger&lt;br /&gt;
applicability because they can be useful tools in their own right.  For&lt;br /&gt;
instance, the above example could be tied to output from a status&lt;br /&gt;
sampler program such as Nagios to provide a dynamic graphic of the data&lt;br /&gt;
center's machine status.&lt;br /&gt;
                                                                                &lt;br /&gt;
Each extension has a set of extension-specificit 'parameters'&lt;br /&gt;
associated with it.  These parameters are used to control the&lt;br /&gt;
extension's behavior.  Each parameter is indicated via gnu-style,&lt;br /&gt;
double-dash option syntax (i.e., --blah --foo=bar).&lt;br /&gt;
                                                                                &lt;br /&gt;
If Sodipodi is running in GUI mode and some parameters for an invoked&lt;br /&gt;
extension require or permit user specification at runtime, then a GUI&lt;br /&gt;
dialog box will be displayed with the appropriate widgets shown to&lt;br /&gt;
allow data specification by the user.&lt;br /&gt;
                                                                                &lt;br /&gt;
The extension also accepts one or more filenames on the commandline.&lt;br /&gt;
If any filenames are provided, the extension will open and process those&lt;br /&gt;
files the same as if they'd been cat'ed to STDIN.  (This is the standard&lt;br /&gt;
behavior for Perl scripts when using the common `while (&amp;lt;&amp;gt;) {` syntax.)&lt;br /&gt;
                                                                                &lt;br /&gt;
The extension is required to provide an exit status value when it&lt;br /&gt;
completes.  These are as follows:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;0 - Extension-specific error&lt;br /&gt;
 0  - Success&lt;br /&gt;
 1  - General failure&lt;br /&gt;
 2  - Memory error&lt;br /&gt;
 3  - File I[[/O]] error&lt;br /&gt;
 4  - Math error&lt;br /&gt;
 5  - Input not understood (not valid SVG?)&lt;br /&gt;
 6  - Could not operate on any objects in this data stream&lt;br /&gt;
 7-127 - Reserved&lt;br /&gt;
                                                                                &lt;br /&gt;
If an extension returns any error value other than 0, it can also&lt;br /&gt;
print a textual error description (or stream) to STDERR.  This could&lt;br /&gt;
be used by Sodipodi to display error information to the user through a&lt;br /&gt;
GUI or stderr, and/or recorded into an error log.&lt;br /&gt;
                                                                                &lt;br /&gt;
In any case where the return value is non-zero, anything emitted to&lt;br /&gt;
STDOUT is discarded and ignored.&lt;br /&gt;
&lt;br /&gt;
=== Parseable Error Language ===&lt;br /&gt;
&lt;br /&gt;
If the first three characters of the STDERR stream match the characters&lt;br /&gt;
'#%%', then the stream is considered to be 'parseable error language'&lt;br /&gt;
text.  The remainder of the line following the '#%%' signifier is used&lt;br /&gt;
to specify the format and/or parsing options for the stream.  For&lt;br /&gt;
instance, if the first line matches '#%% INI', then the stream will be&lt;br /&gt;
interpreted as a line-oriented list of key=value pairs separated by&lt;br /&gt;
[sections].  The range of options supported by Sodipodi will be limited&lt;br /&gt;
(assuming any are available at all), so extension developers should take&lt;br /&gt;
care to select syntaxes that are well supported.&lt;br /&gt;
 &lt;br /&gt;
This 'parseable error language' system is completely optional for&lt;br /&gt;
extensions, and is not recommended for typical extensions.  It is&lt;br /&gt;
provided as a mechanism for allowing better interaction between an&lt;br /&gt;
extension and its caller than is available simply through error codes.&lt;br /&gt;
For instance, this could allow returning a list of per-entity error&lt;br /&gt;
messages, that Sodipodi could pop-up&lt;br /&gt;
 &lt;br /&gt;
For example, it could allow returning a long list of&lt;br /&gt;
error messages, with one message declared the &amp;quot;main error&amp;quot; and the&lt;br /&gt;
others provided for reference; or it could allow returning per-entity&lt;br /&gt;
error messages, that the calling application could display in&lt;br /&gt;
association with those objects; or it could permit returning error&lt;br /&gt;
information for input dialogs (e.g., if the user has provided invalid&lt;br /&gt;
input data), allowing them to re-edit and re-run the extension.&lt;br /&gt;
 &lt;br /&gt;
=== Extension Registration ===&lt;br /&gt;
&lt;br /&gt;
Extension registration is controlled and cached by Sodipodi and occurs&lt;br /&gt;
automatically when Sodipodi is started up.&lt;br /&gt;
 &lt;br /&gt;
Each extension is housed in its own subdirectory and is composed of&lt;br /&gt;
the following files:&lt;br /&gt;
 &lt;br /&gt;
* Toolbutton image&lt;br /&gt;
* Config file (XML)&lt;br /&gt;
* Main executable&lt;br /&gt;
* Additional code files (optional)&lt;br /&gt;
* README, COPYING, AUTHORS, Changes, etc.&lt;br /&gt;
 &lt;br /&gt;
The process of installation of these files is left to the&lt;br /&gt;
responsibility of the extension in question.  For instance, they could&lt;br /&gt;
be installed via RPM, make, or even generated by the script itself&lt;br /&gt;
(e.g., like 'shar').  If the extension does not provide a toolbar&lt;br /&gt;
image or config file, generic defaults will be used.&lt;br /&gt;
 &lt;br /&gt;
Sodipodi maintains a global XML config file with information about&lt;br /&gt;
each extension, taken from the extension's config file.  During&lt;br /&gt;
program initialization, it will look in the various places where&lt;br /&gt;
Sodipodi extensions can be installed, for any config files with&lt;br /&gt;
timestamps newer than the last time it loaded them.  If it finds such&lt;br /&gt;
a file, it will re-parse that file and load it in place of the old&lt;br /&gt;
data.  The reason for using this procedure is because it is believed&lt;br /&gt;
that loading and parsing a single config file, coupled with simple&lt;br /&gt;
directory checking operations will be significantly faster than&lt;br /&gt;
parsing individual extension config files during each activation.&lt;br /&gt;
                                                                                &lt;br /&gt;
In the master config file, each extension is registered with the&lt;br /&gt;
following information:&lt;br /&gt;
                                                                                &lt;br /&gt;
* Extension title&lt;br /&gt;
* State (active / inactive / etc.)&lt;br /&gt;
* Description&lt;br /&gt;
* Path (e.g., /usr/share/sodipodi/extensions/foobar/)&lt;br /&gt;
* Toolbutton image filename&lt;br /&gt;
* Executable filename&lt;br /&gt;
* Help document filename&lt;br /&gt;
* List of parameters with type and default value&lt;br /&gt;
* Class(es) of data it acts on (text, nodes, etc.)&lt;br /&gt;
* Whether data is replaced, added, or added to new doc&lt;br /&gt;
* Toolbox menu location&lt;br /&gt;
* Toolbox menu state (closed, etc.)&lt;br /&gt;
* Timestamp of last loading&lt;br /&gt;
                                                                                &lt;br /&gt;
Sodipodi includes some information about extensions that are not&lt;br /&gt;
necessarily present in the extension config file.  In addition, the&lt;br /&gt;
extension may incorporate other information into its config file that&lt;br /&gt;
Sodipodi may ignore and not load into the master config.&lt;br /&gt;
                                                                                &lt;br /&gt;
Overriding of some of this information is optionally permitted via the&lt;br /&gt;
user's preferences file.  These overrides are always preserved (on a&lt;br /&gt;
per-user basis) even if the global config file is regenerated.  This&lt;br /&gt;
capability is included to permit, for instance, per-user&lt;br /&gt;
reorganization of the toolbox menu structure.  The management of this&lt;br /&gt;
preference information is outside the scope of this document.&lt;br /&gt;
                                                                                &lt;br /&gt;
The benefit of loading from a global config file is that generally one&lt;br /&gt;
need only perform a single file-parse step during program&lt;br /&gt;
initialization, which should help avoid excessive paging, etc.  It is&lt;br /&gt;
particularly advantageous if one is loading a large number (hundreds)&lt;br /&gt;
of plugins, or are running in a very tight-memory situation.&lt;br /&gt;
                                                                                &lt;br /&gt;
Extensions are not allowed to modify this global config file directly.&lt;br /&gt;
They instead can update their personal config file (during&lt;br /&gt;
installation or upgrades), and Sodipodi will re-parse these as&lt;br /&gt;
appropriate.  Sodipodi will not make any changes to the individual&lt;br /&gt;
extension's config file directly.  In any case where config&lt;br /&gt;
information needs to be stored in the extension's config file,&lt;br /&gt;
Sodipodi will supply this information through the normal&lt;br /&gt;
commandline-option-based interface, and the extension will be&lt;br /&gt;
responsible for making the appropriate alterations to its config file.&lt;br /&gt;
                                                                                &lt;br /&gt;
A command will also be provided within Sodipodi's menubar to permit&lt;br /&gt;
regeneration of the master config file from all of the extension&lt;br /&gt;
configs.  This command will also be available as a commandline option&lt;br /&gt;
for the sodipodi executable.&lt;br /&gt;
                                                                                &lt;br /&gt;
 # Remaining Questions&lt;br /&gt;
 #&lt;br /&gt;
 # What format/schema is the master config file?&lt;br /&gt;
 #&lt;br /&gt;
 # What API (i.e., std cmdline option) should be used to specify&lt;br /&gt;
 # config values to add to the extension's config file?&lt;br /&gt;
                                                                                &lt;br /&gt;
                                                                                &lt;br /&gt;
=== Extension Operation ===&lt;br /&gt;
&lt;br /&gt;
When an extension is invoked from Sodipodi, the currently selected SVG&lt;br /&gt;
elements are serialized into textual SVG document fragments and piped&lt;br /&gt;
to the extension executable's stdin.  Sodipodi receives the resulting&lt;br /&gt;
stdout from the pipe in textual SVG form.  This is reparsed into&lt;br /&gt;
internal data elements by a method in repr-io.c in Sodipodi.  If this&lt;br /&gt;
parsing is successful and results in valid objects, the original&lt;br /&gt;
elements are deleted and replaced with the ones generated by the&lt;br /&gt;
script.&lt;br /&gt;
                                                                                &lt;br /&gt;
The operations performed by the extension are treated as a single&lt;br /&gt;
conceptual &amp;quot;change&amp;quot; for purposes of bookkeeping undo/redo, cache, etc.&lt;br /&gt;
                                                                                &lt;br /&gt;
Each extension specifies the classes and quantities of SVG elements it&lt;br /&gt;
can operate on in its config file.  Sodipodi could use this&lt;br /&gt;
information, for example, to determine when to &amp;quot;grey out&amp;quot; and&lt;br /&gt;
invalidate buttons of extensions that cannot be used on the current&lt;br /&gt;
selection.  Note that the extension mustn't assume that the data it is&lt;br /&gt;
passed is validated to meet these criteria before being called, and&lt;br /&gt;
should always perform data filtering and validation itself, on the&lt;br /&gt;
data it is given; consider for instance a case where the extension is&lt;br /&gt;
used on the commandline on a SVG file directly.&lt;br /&gt;
                                                                                &lt;br /&gt;
Any valid SVG element (line, circle, rectangle, text, etc.) recognized&lt;br /&gt;
by Sodipodi may be used for the class specification.  In addition,&lt;br /&gt;
individual nodes and the document itself (with no contents) are valid&lt;br /&gt;
types for extensions to operate on.  A method in sp-obect-repr.c will&lt;br /&gt;
be used to get a dynamic list of element classes.&lt;br /&gt;
                                                                                &lt;br /&gt;
Extensions may specify classes higher in the inheritance chain, so&lt;br /&gt;
that for example one can specify that it operates on 'shapes' in&lt;br /&gt;
general, including rects, lines, spirals and whatever new types there&lt;br /&gt;
may be added in future.&lt;br /&gt;
Quantities can be specified as ranges and/or comma separated lists,&lt;br /&gt;
for instance, &amp;quot;1+&amp;quot;, &amp;quot;2&amp;quot;, &amp;quot;2,4,6,8,10&amp;quot;, or &amp;quot;2,4-42&amp;quot;.&lt;br /&gt;
                                                                                &lt;br /&gt;
SVG DOM syntax is used to specify the naming/inheritance.  Sodipodi&lt;br /&gt;
will implement some DOM name queries to support this.&lt;br /&gt;
                                                                                &lt;br /&gt;
Note that as of this writing, Sodipodi does not implement&lt;br /&gt;
button-invalidation, but something like Qt 'actions' may be&lt;br /&gt;
implemented to support this in the future.&lt;br /&gt;
                                                                                &lt;br /&gt;
 # Remaining Questions&lt;br /&gt;
 #&lt;br /&gt;
 # Is it possible to pass a nodal entity and specify a subset of its&lt;br /&gt;
 # nodes to operate upon?  How?&lt;br /&gt;
                                                                                &lt;br /&gt;
                                                                                &lt;br /&gt;
=== Extension Interface Specification ====&lt;br /&gt;
&lt;br /&gt;
Some extensions can act directly on the elements selected, but many&lt;br /&gt;
will require further information to quantify &amp;amp; specify the parameters&lt;br /&gt;
that control their operation.  For example, an extension that&lt;br /&gt;
stretches elements would need to know what percentage to stretch the&lt;br /&gt;
object.  Another might need to know a color to use, or replacement&lt;br /&gt;
text for search and replace, etc.&lt;br /&gt;
                                                                                &lt;br /&gt;
Rather than require each extension to implement GUI behaviors&lt;br /&gt;
independently (using Gtk bindings, Tk, etc.) this design includes&lt;br /&gt;
provision for extensions to provide interface &amp;quot;descriptions&amp;quot;, which&lt;br /&gt;
Sodipodi can parse and use to dynamically generate dialogs for the&lt;br /&gt;
extension.  In addition to simplifying the work facing extension&lt;br /&gt;
authors, this will provide more consistency of interface to end users,&lt;br /&gt;
and avoid a class of portability issues, should one wish, for example,&lt;br /&gt;
to use the scripts on a non-UNIX O[[/S]].&lt;br /&gt;
                                                                                &lt;br /&gt;
This interface description language must provide easy specification of&lt;br /&gt;
the widgets and text for the dialog, such as buttons, input boxes,&lt;br /&gt;
color/alpha selectors, dropdown boxes, radio buttons, checkboxes,&lt;br /&gt;
selection lists, gradient boxes, preview thumbnails, tree displays&lt;br /&gt;
(e.g., for XML editing, etc.).  It must allow precise positioning and&lt;br /&gt;
sizing of the widgets, but also allow auto-layout (so that one can&lt;br /&gt;
simply provide a list of text+widget_type pairs and the widgets placed&lt;br /&gt;
onto the dialog in a running list.  This way, extension authors can&lt;br /&gt;
specify the dialogs with a minimum of fuss, but can also have more&lt;br /&gt;
exact control over the layout of the form if they wish.&lt;br /&gt;
                                                                                &lt;br /&gt;
Parameter settings are not expected to be kept from one invocation of&lt;br /&gt;
the extension to the next.  If it is found to be necessary, it should&lt;br /&gt;
be provided via Sodipodi, rather than by the extension.&lt;br /&gt;
                                                                                &lt;br /&gt;
 # Remaining Questions:&lt;br /&gt;
 #&lt;br /&gt;
 # Should the interface definition be taken from config file&lt;br /&gt;
 # or queried from the script?&lt;br /&gt;
 #&lt;br /&gt;
 # What already-existing interface abstraction languages exist?&lt;br /&gt;
 #&lt;br /&gt;
 # How would multi-dialog interfaces be implemented?&lt;br /&gt;
                                                                                &lt;br /&gt;
                                                                                &lt;br /&gt;
=== Extension Examples ===&lt;br /&gt;
&lt;br /&gt;
The following cases are provided as &amp;quot;use cases&amp;quot; to help conceive the&lt;br /&gt;
way the extension system should/could work.  It should be clear that&lt;br /&gt;
some of these functions, while of obvious utility to certain&lt;br /&gt;
userbases, are too application specific to be worth incorporating into&lt;br /&gt;
Sodipodi's core.&lt;br /&gt;
                                                                                &lt;br /&gt;
                                                                                &lt;br /&gt;
Spellcheck: Checks spelling of text in document and changes color of&lt;br /&gt;
misspelled words to red.  This would be invaluable if one is producing&lt;br /&gt;
                                                                                &lt;br /&gt;
Translate:  Converts selected text into alternative language using&lt;br /&gt;
separate translation application.&lt;br /&gt;
                                                                                &lt;br /&gt;
Align_to_grid:  Adjusts all selected elements to line up to the&lt;br /&gt;
document grid.  Resizes objects so that all corners touch on grid&lt;br /&gt;
corner points.&lt;br /&gt;
                                                                                &lt;br /&gt;
Data_center_status:  Queries database of computer hardware and&lt;br /&gt;
generates a map of the machine room using color to indicate state of&lt;br /&gt;
computer racks.&lt;br /&gt;
                                                                                &lt;br /&gt;
Fractalize:  Changes a nodal line or shape's border to be&lt;br /&gt;
roughened using fractals.  This could be useful for creation of&lt;br /&gt;
realistic-looking coastlines in a map.&lt;br /&gt;
&lt;br /&gt;
Weave: Takes two overlapping curved lines and &amp;quot;weaves&amp;quot; them to&lt;br /&gt;
resemble a scroll-work rope such as is common in Celtic art.&lt;br /&gt;
&lt;br /&gt;
-- Bryce W. Harrington&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Attic]]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Free_Desktop_Graphic_Suite&amp;diff=27394</id>
		<title>Free Desktop Graphic Suite</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Free_Desktop_Graphic_Suite&amp;diff=27394"/>
		<updated>2008-04-07T14:22:15Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Common interface for graphic programs on the free desktop.&lt;br /&gt;
&lt;br /&gt;
Many artists use several applications in their workflow.&lt;br /&gt;
This includes using one program for photo editing, one for illustration and one for page layout.&lt;br /&gt;
To ease the user experience for someone using these apps, consistency in wording, looks and similar working tools needs to be adressed.&lt;br /&gt;
&lt;br /&gt;
The three programs that will be adressed are:&lt;br /&gt;
* GNU Image Manipulator Program aka GIMP (bitmap image editing)&lt;br /&gt;
* Inkscape (scalable graphics illustration) &lt;br /&gt;
* Scribus (page layout)&lt;br /&gt;
&lt;br /&gt;
[[Common dialogs]]&lt;br /&gt;
&lt;br /&gt;
[[Tool consistency]]&lt;br /&gt;
&lt;br /&gt;
'''Resources that can be shared:'''&lt;br /&gt;
* Patterns (PNGs)&lt;br /&gt;
* Gradients (SVGs)&lt;br /&gt;
* Palettes (We need a standard here.) (suggestion: .xml format, based on .ai format (each text line with each colour name and its rgb, cmyk or whatever))&lt;br /&gt;
* Clipart (SVG[[/PNG]])&lt;br /&gt;
* Icons&lt;br /&gt;
* Cursors &lt;br /&gt;
* Color Management&lt;br /&gt;
* Fonts&lt;br /&gt;
* Symbols&lt;br /&gt;
* Filters&lt;br /&gt;
&lt;br /&gt;
To help manage these resources it would probably be wise to try and incorporate some kind of Thumbnail Browser into any such suite.  Unfortunately there is no obvious choice of cross platform and open source Thumbnail browser.  &lt;br /&gt;
&lt;br /&gt;
[[Feature Requests]]&lt;br /&gt;
&lt;br /&gt;
There are many features in the GIMP that Inkscape will want to copy such as the Dock Widgets for managing Palettes.  &lt;br /&gt;
&lt;br /&gt;
There are also some enhancements to the GIMP like this [http://bugzilla.gnome.org/show_bug.cgi?id=133030 request for a standard toolbar] that would be helpful for Inkscape users.  &lt;br /&gt;
&lt;br /&gt;
'''Links'''&lt;br /&gt;
* [http://www.nabble.com/Desktop-f822.html Open Source Desktop Forum] - a large forum hosted by [http://www.nabble.com Nabble] on big open source desktop projects such as [http://www.nabble.com/Gnome-f1226.html Gnome], [http://www.nabble.com/Xfce-f830.html Xfce], [http://www.nabble.com/Rox-f827.html Rox], [http://www.nabble.com/Etoile-f823.html Etoile].&lt;br /&gt;
&lt;br /&gt;
* [http://software.newsforge.com/software/05/02/02/215259.shtml?tid=75&amp;amp;tid=131&amp;amp;tid=132 Article on free graphics software integration]&lt;br /&gt;
&lt;br /&gt;
* [http://www.osnews.com/story.php?news_id=9658 '''Achieving higher consistency between OSS graphics applications''' - Bryce Harringtons article on the issue]&lt;br /&gt;
&lt;br /&gt;
* [http://developer.gnome.org/projects/gup/hig/2.0/ Gnome Human Interface Guidelines]&lt;br /&gt;
&lt;br /&gt;
* [http://usability.kde.org/ KDE Usability project]&lt;br /&gt;
&lt;br /&gt;
* http://www.openusability.org/&lt;br /&gt;
&lt;br /&gt;
* http://www.freedesktop.org/&lt;br /&gt;
&lt;br /&gt;
* http://developer.gimp.org/standards.html&lt;br /&gt;
&lt;br /&gt;
* [http://www.freedesktop.org/wiki/Standards_2ficon_2dtheme_2dspec Unified icon spec on freedesktop.org]&lt;br /&gt;
&lt;br /&gt;
* http://openclipart.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Discussion]]&lt;br /&gt;
[[Category:Needs Work]]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=27224</id>
		<title>Compiling Inkscape on Windows 32-bit</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=27224"/>
		<updated>2008-04-03T19:53:47Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Getting The Compiler &amp;amp; Libraries */ updated libs version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See the [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=847856&amp;amp;group_id=93438&amp;amp;atid=604308 Win32 Build ticket] for some info.&lt;br /&gt;
&lt;br /&gt;
=== Inkscape under Windows ===&lt;br /&gt;
&lt;br /&gt;
Inkscape was originally written for Linux, but has been ported to other platforms, including Windows, through the work of a number of dedicated developers.&lt;br /&gt;
&lt;br /&gt;
You can get pre-built binaries of the Windows releases (both stable and development) from the [http://www.inkscape.org/download/?lang=en Inkscape download page]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Building Your Own Binary ===&lt;br /&gt;
As well as getting a pre-built binary, you can also build your own. You may do this for fun, to learn about programming, or to help test or improve Inkscape.&lt;br /&gt;
&lt;br /&gt;
Several steps are required to build your own binary, as follows;&lt;br /&gt;
* You will need to download and install the MinGW compiler&lt;br /&gt;
* You will also need the supporting libraries used by Inkscape&lt;br /&gt;
* A recommended step is to download and install the TortoiseSVN program to help manage source files and patching&lt;br /&gt;
* You need to download the source code and possibly apply patches if bug testing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Getting The Compiler &amp;amp; Libraries ====&lt;br /&gt;
&lt;br /&gt;
Ishmal provides a complete set of compiler and library files on his website. You can get all packages from http://inkscape.modevia.com/win32libs/.&lt;br /&gt;
&lt;br /&gt;
Before you download, check for the last versions. As of '''April 3 2008''' those are:&lt;br /&gt;
* the mingw compiler version 4.2 http://inkscape.modevia.com/win32libs/mingw-4.2.1-071022-dw2.7z&lt;br /&gt;
* other libraries http://inkscape.modevia.com/win32libs/devlibs-2.12-080403.7z&lt;br /&gt;
&lt;br /&gt;
The configuration files expect the packages in specific directories:&lt;br /&gt;
* the compiler C:\MINGW (referenced by mingwenv.bat)&lt;br /&gt;
* other libraries C:\DEVLIBS (referenced in build.xml used by buildtool)&lt;br /&gt;
&lt;br /&gt;
==== Getting The Inkscape Source ====&lt;br /&gt;
The best way to get the source is straight from the SVN repository using the TortoiseSVN program. Follow these steps;&lt;br /&gt;
&lt;br /&gt;
'''''Setting up a local source repository:'''''&lt;br /&gt;
* Get TortoiseSVN from http://tortoisesvn.net/downloads&lt;br /&gt;
* Install Tortoise SVN.&lt;br /&gt;
* Once Tortoise is installed, make a working folder wherever you want.&lt;br /&gt;
* Inside the working folder, right click and select ''TortoiseSVN'' -&amp;gt; ''Create repository here''. This will make a bunch of folders inside your working folder.&lt;br /&gt;
* Now make another folder in the working folder called 0.46branch or whatever else you'd like to call it. This will hold the source files.&lt;br /&gt;
&lt;br /&gt;
'''''Getting the source:'''''&lt;br /&gt;
* Enter the folder you created for the source files. Right click and select ''SVN Checkout''.&lt;br /&gt;
* Enter the URL for the source code you want;&lt;br /&gt;
** For the 0.46 release branch, use https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/branches/RELEASE_0_46_BRANCH/ (This branch of the source is frozen for the 0.46 release. New features are not allowed in order to focus on bug fixing. This is what you need to test for bugs in the 0.46 release.)&lt;br /&gt;
** For the 0.47 development branch (trunk), use https://inkscape.svn.sourceforge.net/svnroot/inkscape/inkscape/trunk/ (This branch of the source is for ongoing development and includes new and experimental features not in the 0.46 release branch. It is slowly diverging from the 0.46 release branch, thus becoming progressively less useful for testing bugs in the 0.46 release.)&lt;br /&gt;
* TortoiseSVN will now download the source files, which are just over 30Mb.&lt;br /&gt;
&lt;br /&gt;
'''''Notes:'''''&lt;br /&gt;
* You can also get a zipped up version of the trunk (0.47 dev) from Ishmal's site - http://inkscape.modevia.com/svn-snap/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Patching The Source Code ====&lt;br /&gt;
&lt;br /&gt;
'''''Using TortoiseSVN:'''''&lt;br /&gt;
&lt;br /&gt;
Tortoise makes patching quite easy. Follow these steps;&lt;br /&gt;
&lt;br /&gt;
1. Find your patch. Windows Patches to the main SVN are now being kept in a folder under your main working directory called ''packaging\win32\patches''. If you download or make a subsequent patch, put it in this directory to keep things orderly. It should be called {patchname}.patch or {patchname}.diff&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Right click on the patch, and select ''TortoiseSVN'' -&amp;gt; ''Apply Patch...''. Because the Windows patches are kept a little tucked away, Tortoise will probably give a message; '''The path {working directory}\packaging\win32\patches seems not to match the paths in the patchfile. But Tortoise found the path {working directory} matches it better. Do you want to use the suggested path instead?''' Click ''Yes'' to proceed.&lt;br /&gt;
&lt;br /&gt;
3. Now comes the actual patching process. See the Tortoise website for an explanation of how to use the merge tool - http://tortoisesvn.net/docs/release/TortoiseMerge_en/tmerge-dug.html#tmerge-dug-open-view (see also the following pages)&lt;br /&gt;
&lt;br /&gt;
4. Once patched, you will now notice that the patched file has a red exclamation rather than a green tick, as do its parent folders. This signifies that it has been altered from the SVN version, and helps you find altered files really quickly.&lt;br /&gt;
&lt;br /&gt;
5. If you want to go back to the SVN version you originally ''checked out'', simply right click on an individual file or a whole folder and select ''TortoiseSVN'' -&amp;gt; ''Revert''. This will bring up a list of files that can be reverted. If you only selected one file, only that will be available to revert. If you selected a folder, all the modified files in that folder will be available to revert. Tick only those you wish to revert to the SVN version last checked out.&lt;br /&gt;
&lt;br /&gt;
'''''Notes:'''''&lt;br /&gt;
* When applying several patches at once, you will possibly find that some patches update the same code modules. This is normal, and Tortoise can help you compare files and resolve conflicts. See the [http://tortoisesvn.net/docs/release/TortoiseMerge_en/tmerge-dug.html#tmerge-dug-open-view link mentioned above] to learn more.&lt;br /&gt;
* Sometimes conflicts are not able to be resolved using Tortoise, and you will need to edit the files by hand. Don't worry, you can always ''revert'' the files if you make a mistake. A good text editor to help is Notepad 2 - http://www.flos-freeware.ch/&lt;br /&gt;
* If you edit the source files yourself, Tortoise will register that the files are changed with an exclamation mark. To create your own patch from a changed file, right click on the ''src'' directory folder that contains your changed file, then select ''Tortoise SVN -&amp;gt; Create Patch''. Now tick only the file/s you edited and save the patch file. This can be posted to a bug report as a test, and possibly committed to SVN if your patch works.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Using the GNU patch program:'''''&lt;br /&gt;
&lt;br /&gt;
For those who love the command line, you can patch the hard way using the GNU patch program.&lt;br /&gt;
&lt;br /&gt;
* Download the program from here  - http://gnuwin32.sourceforge.net/packages/patch.htm&lt;br /&gt;
* Put the patch program wherever you like, as it works independently from the compiler.&lt;br /&gt;
* If the patch file refers to the location in its header, put it in the /src directory and then patch, otherwise put it in the same directory as the file to be patched&lt;br /&gt;
* In a command window, type something like the following;&lt;br /&gt;
     ...&amp;gt;patch --binary {''modulename''}.cpp {''modulename''}.cpp.patch&lt;br /&gt;
* You should now have a patched code module to copy back to the same spot in the source tree.&lt;br /&gt;
* The ''--binary'' switch is only necessary if the files contain the wrong sort of line endings. The [http://gnuwin32.sourceforge.net/packages/patch.htm GnuWin32 Patch page] notes the following; ''&amp;quot;On MS-Windows, the patch file must be a text file, i.e. CR-LF must be used as line endings. A file with LF may give the error: &amp;quot;Assertion failed, hunk, file patch.c, line 343,&amp;quot; unless the option '--binary' is given.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
==== Building The Binary ====&lt;br /&gt;
&lt;br /&gt;
Before you begin, it might be an idea to temporarily lower the level of any over zealous security software, screen savers or other background programs that chew a lot of processor power when the computer is not attended. These programs can interfere with the build process, and cause you to have to start again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Doing A New Build'''''&lt;br /&gt;
&lt;br /&gt;
You will need to open a command window (DOS prompt) to build the binary. Go to the Start Menu, select Run, and then type command (or cmd). Now you need to step into the Inkscape source directory:&lt;br /&gt;
    ...\&amp;gt; cd ...\inkscape&lt;br /&gt;
&lt;br /&gt;
Firstly run the batch file that sets up the MinGW environment variables&lt;br /&gt;
    ...\&amp;gt; mingwenv.bat&lt;br /&gt;
You can usually just type mingwenv (enter) and Windows will execute the batch file.&lt;br /&gt;
&lt;br /&gt;
Now, build the build tool:&lt;br /&gt;
    ...\&amp;gt; g++ buildtool.cpp -o btool&lt;br /&gt;
or, if you get errors about gettimeofday:&lt;br /&gt;
    ...\&amp;gt; g++ -DNEED_GETTIMEOFDAY buildtool.cpp -o btool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now you can start the build process by simply running btool.&lt;br /&gt;
    ...\&amp;gt; btool&lt;br /&gt;
&lt;br /&gt;
Grab a coffee and find something else to do. On an AMD-64 3000+ 1Gb it takes about 70 minutes, but your mileage may vary. The build process can normally continue in the background while you're doing other stuff on your PC.&lt;br /&gt;
&lt;br /&gt;
If everything went well, you should now have you fresh Inkscape in the ...\Inkscape directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Re-building after modifying source modules'''''&lt;br /&gt;
&lt;br /&gt;
If you've already built the source once and done a few changes to source code files, you can do a quick rebuild using many of the files already compiled in the ''build'' directory. Only those that need to be rebuilt will be, and the ''btool'' program automatically figures that out. It will then 'link' the relevant files together and copy them into the ''inkscape'' directory.&lt;br /&gt;
&lt;br /&gt;
To do a quick rebuild, simply go to the directory that contains the source and do the following;&lt;br /&gt;
&lt;br /&gt;
* Delete or rename the ''inkscape'' directory, which contains the previous fully built and linked version of Inkscape&lt;br /&gt;
* Now open a command window and run the following;&lt;br /&gt;
     ...&amp;gt; mingwenv&lt;br /&gt;
     ...&amp;gt; btool&lt;br /&gt;
* Ishmal's build tool should now rebuild the individual files that have changed, along with any extra 'dependencies' these might require. If you've only applied one new patch, it can be done in less than 5 minutes!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' It is best not to do a quick rebuild if you have changed the version of libraries in C:\DEVLIBS. This can cause problems, as the files in the ''build'' directory incorporate functions from these libraries, which can change significantly between library versions. You will need to rebuild from scratch (see below).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''''Rebuilding From Scratch'''''&lt;br /&gt;
&lt;br /&gt;
To rebuild from scratch, you need to clean out any build files. First of all, if you want to keep the previously built version, rename the ''inkscape'' directory. Now open a command window and run the following;&lt;br /&gt;
     ...&amp;gt; mingwenv&lt;br /&gt;
     ...&amp;gt; btool clean&lt;br /&gt;
     ...&amp;gt; btool&lt;br /&gt;
&lt;br /&gt;
==== Dealing With Build Errors ====&lt;br /&gt;
Feel free to add any questions or answers you have in here;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q''' - My firewall software (Comodo's Defense+ component or similar) stopped the process continuing to the next step in the build, because I wasn't there to permit an action and it timed out. What can I do?&lt;br /&gt;
&lt;br /&gt;
'''A1''' - The best thing is to disable stuff like Defense+ (put it in learning mode works) because it will stop any process that is not approved, and building makes new files which can't be approved before they're built. Disabling Comodo's Defense+ does not disable your firewall, either inbound or outbound, but just the part that scans every application for suspicious operations. Other firewalls etc may vary.&lt;br /&gt;
&lt;br /&gt;
'''A2''' - If that doesn't suit, often you can simply run btool again and wait for Defense+ (or similar) to ask for approval for the process, and it will then continue as normal with the build. But remember that approving all the processes involved in the build process once doesn't mean they will all slip through next time.&lt;br /&gt;
&lt;br /&gt;
'''A3''' - This is the more complex way to continue, but may help if you have problems with A2. If you know the stage the process was meant to be up to (look at the output in the command windows and compare to the stages in the ''build.xml'' file), you can start again from there.&lt;br /&gt;
&lt;br /&gt;
You may see something like this in the command window;&lt;br /&gt;
     =============================&lt;br /&gt;
     ## Target : link : link objects and library to create executable&lt;br /&gt;
     ---- task : rc&lt;br /&gt;
     ============ cmd ============&lt;br /&gt;
     windres -o build/inkres.o --include-dir=src src/inkscape.rc&lt;br /&gt;
     =============================&lt;br /&gt;
     ---- task : link&lt;br /&gt;
This will likely be followed by an error message. This means you were at the ''link'' stage&lt;br /&gt;
&lt;br /&gt;
Now simply type;&lt;br /&gt;
     ...&amp;gt;btool ''stage''&lt;br /&gt;
Or in this case&lt;br /&gt;
     ...&amp;gt;btool link&lt;br /&gt;
And the build will continue from there.&lt;br /&gt;
&lt;br /&gt;
After this, you will probably have to step through the remaining stages manually, one by one. The stages can include (see build.xml, where each stage is labelled 'target name=&amp;quot;''target''&amp;quot;') ''init'', ''touchabout'', ''compile'', ''java'', ''lib'', ''i18n'', ''link'', ''linkinkview'', ''dist'', ''dist-all'', ''clean''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q''' - How do I rebuild just one ''file.o'' file? For instance if one particular file has gone wrong, or I want to try patching just one part of the code.&lt;br /&gt;
&lt;br /&gt;
'''A''' - To find the right command for building any particular file in Inkscape, just look in the compile.lst after you have used btool once. Search for the name of the particular file (eg: print.cpp) and you will find the command used to compile it. You'll need to paste this into a text file, remove any carriage reurns and then paste that onto the command line.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q''' - After I patched a file, I left a backup of the old file in the same directory called Copy of{filename}.cpp. The compiler complains about this file when building and stops.&lt;br /&gt;
&lt;br /&gt;
'''A''' - Do not leave anything with a suffix .cpp in the source directories, apart from the original (or patched) source files. The build tool will try to compile everything ending in .cpp and will complain. If you backup an old file in the same directory before patching, call it {filename}.cpp.old or similar.&lt;br /&gt;
&lt;br /&gt;
==== For more information ====&lt;br /&gt;
There is some old information on building Inkscape with either Mingw on Windows, or a cross-compiler on Linux, at http://inkscape.modevia.com/win32_inkscape_org/win32buildnotes.html&lt;br /&gt;
&lt;br /&gt;
=== Create the Setup package for Win32 ===&lt;br /&gt;
&lt;br /&gt;
To create the setup package you need the NSIS installer on your PC. Get that from http://nsis.sf.net .&lt;br /&gt;
You have successfully built Inkscape and everything is in the ...\Inkscape\Inkscape\ directory.&lt;br /&gt;
Open the ...\Inkscape\packaging\win32\inkscape.nsi using the NSIS program and compile the package. Sooo easy :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Note from Jon about UNICODE on Win32 ====&lt;br /&gt;
&lt;br /&gt;
Actually, Microsoft themselves never use _UNICODE, nor it's 'evil' friends TCHAR and _T.&lt;br /&gt;
If it is used, it results in a binary that can not be run on Windows 95/98[[/ME]]. It is more of a &amp;quot;Windows NT only&amp;quot; define.&lt;br /&gt;
&lt;br /&gt;
Microsoft applications like MS Office have been pure 16-bit Unicode internally for years now. Also remember that BSTRs in Win32 are required to have 16-bit Unicode data. So for any COM access on a Win32 box running Win9x[[/ME]] 'multibyte' or '8-bit' COM calls convert all ANSI data to Unicode once you pass things in. To avoid this, Microsoft just keeps data 16-bit Unicode and then translates to local ANSI codepage only when data needs to be passed directly to a Win32 call.&lt;br /&gt;
&lt;br /&gt;
To help developers, Microsoft finally made public their API they had been using. It's [http://www.microsoft.com/globaldev/handson/dev/mslu_announce.mspx &amp;quot;The Microsoft Layer for Unicode&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Although that simplifies things, it's not required. I've done Win32 programs that are 16-bit Unicode and run on Windows 95/98[[/ME]] with no problems years before they released that.&lt;br /&gt;
&lt;br /&gt;
Soo.... _UNICODE can't be used as it makes your binary unusable on Win9x[[/ME]]. Then it turns out that TCHAR and _T can't be used either. (Oh, and MS can't really use them, since Office does run on Win9x[[/ME]]). So just explicitly use some 16-bit datatype for chars. Microsoft is misleading in their documentation when they state that wchar_t is 16-bit. Most other platforms (including Mac OS, Linux, Solaris, BSD, etc) follow the language standard's recommendation and make it 32-bit. So it is best to avoid wchar_t for any real cross-platform code.&lt;br /&gt;
&lt;br /&gt;
So, some general guidelines are:&lt;br /&gt;
* Never define _UNICODE&lt;br /&gt;
* Don't use _T&lt;br /&gt;
* Don't use TCHAR&lt;br /&gt;
* Don't use wchar_t&lt;br /&gt;
* Use some explicit 16-bit type for characters/strings&lt;br /&gt;
** [http://icu.sourceforge.net/ IBM's ICU] does this&lt;br /&gt;
&lt;br /&gt;
So then it's a simple matter of converting data from the standard UTF-8 GTK+ data to UTF-16 data before passing to Win32-land. &lt;br /&gt;
&lt;br /&gt;
The result? A single binary that executes properly on both [[Win9X/ME]] and [[WinNT/2K/XP]], including full and proper font and filename support.&lt;br /&gt;
&lt;br /&gt;
And, as I've mentioned before, I've actually achieved this for a few different shipping products and projects.&lt;br /&gt;
&lt;br /&gt;
-- [[JonCruz|Jon C]]&lt;br /&gt;
&lt;br /&gt;
=== SVN and Windows ===&lt;br /&gt;
&lt;br /&gt;
If you want to access Inkscapes' subversion repository on SourceForge from Windows, I'd heartily recommend [[TortoiseSVN]].&lt;br /&gt;
It has the SSH stuff built into it so you don't have to mess about with putty, and&lt;br /&gt;
it integrates right into Explorer, so SVN becomes just an extension of the right-click file commands.&lt;br /&gt;
get it from http://tortoisesvn.net/&lt;br /&gt;
&lt;br /&gt;
John&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Change_VCS&amp;diff=27174</id>
		<title>Change VCS</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Change_VCS&amp;diff=27174"/>
		<updated>2008-04-02T13:16:50Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With [[0.47_Refactoring_Plan]] coming along, the idea was brought up to change for a new version control system which would ease refactoring in particular. This page  summarizes  [http://thread.gmane.org/gmane.comp.graphics.inkscape.devel/25255/focus=25274 various email threads]. The project is to use a Distributed Version Control System instead of subversion.&lt;br /&gt;
&lt;br /&gt;
As a general source of information, see http://en.wikipedia.org/wiki/Comparison_of_revision_control_software&lt;br /&gt;
&lt;br /&gt;
== Why change? ==&lt;br /&gt;
&lt;br /&gt;
Several things make a DVCS preferable to subversion for Inkscape:&lt;br /&gt;
* speed&lt;br /&gt;
* local commits allow to commit often&lt;br /&gt;
* easier branching and merging, which is likely to be useful for feature work or Summer of Code work while the core is refactored&lt;br /&gt;
* ... add your favorite feature from the wikipedia page above&lt;br /&gt;
&lt;br /&gt;
This does not come without cost either:&lt;br /&gt;
* someone must move the code to the new system&lt;br /&gt;
* each dev must potentially learn a new system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comparison of DVCS ==&lt;br /&gt;
&lt;br /&gt;
Since past discussions seemed to lead to the concensus that the benefits outweigh the cost, the question remaining is which DCVS to use. The three main contenders are [http://git.or.cz/ git], [http://www.selenic.com/mercurial/ mercurial] and [http://bazaar-vcs.org/ bazaar]. Here is a list of the their cost and benefits in the context of Inkscape development&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
Good&lt;br /&gt;
* faster: local commits: &amp;lt;1s vs 4s, push a new branch: instantaneous vs 35 min&lt;br /&gt;
* ability to follow chunk of codes around, without relying on file names. Probably useful from a refactoring point of view&lt;br /&gt;
* probably the fastest growing user base =&amp;gt; many tools&lt;br /&gt;
* TextMate bundle&lt;br /&gt;
&lt;br /&gt;
Bad&lt;br /&gt;
* git is designed with the Linux kernel's hierarchical workflow in mind (few 'push'ers to the central repos), so may require alteration in how Inkscape's workflow works (any dev can commit)&lt;br /&gt;
* we would need to set up and administer this ourselves&lt;br /&gt;
* revisions are indicated with SHA's rather than numbers&lt;br /&gt;
* commands dissimilar to what we're used to with svn (e.g., no 'git update')&lt;br /&gt;
* no decent GUI (for windows?)&lt;br /&gt;
&lt;br /&gt;
Not sure&lt;br /&gt;
* have to git add all modified files before committing them or resort to `git commit -a`. This is shift from the SVN way of doing things. However with single files, `git commit filename` is equivalent to `svn commit filename`. Plus, with multiple files git basic workflow is probably more powerful: it allows to add a set of files to a commit and only then to actually do the commit. The same thing with svn (or other similarly behaving systems) requires to write a long list of files in a single command line.&lt;br /&gt;
&lt;br /&gt;
=== Mercurial (Hg) ===&lt;br /&gt;
Good&lt;br /&gt;
* tortoiseHG (remains to be evaluated)&lt;br /&gt;
* TextMate bundle&lt;br /&gt;
&lt;br /&gt;
Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bazaar===&lt;br /&gt;
Good&lt;br /&gt;
* already integrated in [[http://doc.bazaar-vcs.org/bzr.dev/en/tutorials/using_bazaar_with_launchpad.html launchpad]]&lt;br /&gt;
** Associating branches to bugs&lt;br /&gt;
** Associating branches to blueprints&lt;br /&gt;
** Changes state of bugs in LP when committing in Bazaar&lt;br /&gt;
** Web interface for creating branches quickly and easily&lt;br /&gt;
* supports bundling changesets&lt;br /&gt;
* tortoiseBZR&lt;br /&gt;
* Fewer commands - makes it easier to learn&lt;br /&gt;
* Supports multiple workflows, including what we use for Inkscape (See http://bazaar-vcs.org/Workflows)&lt;br /&gt;
* Easy administration.  Mostly done through Launchpad, plus Bzr folks are available to help.&lt;br /&gt;
&lt;br /&gt;
Bad&lt;br /&gt;
* no support for line-endings conversion/convention enforcing (but such systems may create the risk of wrongly recognizing binary files)&lt;br /&gt;
&lt;br /&gt;
Not sure&lt;br /&gt;
* A good point is that bazaar supports renames but it could actually be considered a &amp;quot;Bad&amp;quot; by git users&lt;br /&gt;
&lt;br /&gt;
== (D)VCS Clients ==&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://bazaar-vcs.org/BzrWhy Bazaar Why]&lt;br /&gt;
* [http://doc.bazaar-vcs.org/bzr.dev/en/tutorials/using_bazaar_with_launchpad.html Bazaar in Lanunchpad]&lt;br /&gt;
* [http://bazaar-vcs.org/Workflows Bazaar workflows]&lt;br /&gt;
* Google talk videos on '''GIT''' [http://video.google.com/videoplay?docid=-2199332044603874737] [http://www.youtube.com/watch?v=8dhZ9BXQgc4]&lt;br /&gt;
* [http://git.or.cz/course/svn.html SVN Course]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Change_VCS&amp;diff=27164</id>
		<title>Change VCS</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Change_VCS&amp;diff=27164"/>
		<updated>2008-04-02T13:16:32Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: small changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With [[0.47_Refactoring_Plan]] coming along, the idea was brought up to change for a new version control system which would ease refactoring in particular. This page  summarizes  [http://thread.gmane.org/gmane.comp.graphics.inkscape.devel/25255/focus=25274 various email threads]. The project is to use a Distributed Version Control System instead of subversion.&lt;br /&gt;
&lt;br /&gt;
As a general source of information, see http://en.wikipedia.org/wiki/Comparison_of_revision_control_software&lt;br /&gt;
&lt;br /&gt;
== Why change? ==&lt;br /&gt;
&lt;br /&gt;
Several things make a DVCS preferable to subversion for Inkscape:&lt;br /&gt;
* speed&lt;br /&gt;
* local commits allow to commit often&lt;br /&gt;
* easier branching and merging, which is likely to be useful for feature work or Summer of Code work while the core is refactored&lt;br /&gt;
* ... add your favorite feature from the wikipedia page above&lt;br /&gt;
&lt;br /&gt;
This does not come without cost either:&lt;br /&gt;
* someone must move the code to the new system&lt;br /&gt;
* each dev must potentially learn a new system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comparison of DVCS ==&lt;br /&gt;
&lt;br /&gt;
Since past discussions seemed to lead to the concensus that the benefits outweigh the cost, the question remaining is which DCVS to use. The three main contenders are [http://git.or.cz/ git], [http://www.selenic.com/mercurial/ mercurial] and [http://bazaar-vcs.org/ bazaar]. Here is a list of the their cost and benefits in the context of Inkscape development&lt;br /&gt;
&lt;br /&gt;
=== Git ===&lt;br /&gt;
Good&lt;br /&gt;
* faster: local commits: &amp;lt;1s vs 4s, push a new branch: instantaneous vs 35 min&lt;br /&gt;
* ability to follow chunk of codes around, without relying on file names. Probably useful from a refactoring point of view&lt;br /&gt;
* probably the fastest growing user base =&amp;gt; many tools&lt;br /&gt;
* TextMate bundle&lt;br /&gt;
&lt;br /&gt;
Bad&lt;br /&gt;
* git is designed with the Linux kernel's hierarchical workflow in mind (few 'push'ers to the central repos), so may require alteration in how Inkscape's workflow works (any dev can commit)&lt;br /&gt;
* we would need to set up and administer this ourselves&lt;br /&gt;
* revisions are indicated with SHA's rather than numbers&lt;br /&gt;
* commands dissimilar to what we're used to with svn (e.g., no 'git update')&lt;br /&gt;
* no decent GUI (for windows?)&lt;br /&gt;
&lt;br /&gt;
Not sure&lt;br /&gt;
* have to git add all modified files before committing them or resort to `git commit -a`. This is shift from the SVN way of doing things. However with single files, `git commit filename` is equivalent to `svn commit filename`. Plus, with multiple files git basic workflow is probably more powerful: it allows to add a set of files to a commit and only then to actually do the commit. The same thing with svn (or other similarly behaving systems) requires to write a long list of files in a single command line.&lt;br /&gt;
&lt;br /&gt;
=== Mercurial (Hg) ===&lt;br /&gt;
Good&lt;br /&gt;
* tortoiseHG (remains to be evaluated)&lt;br /&gt;
* TextMate bundle&lt;br /&gt;
&lt;br /&gt;
Bad&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bazaar===&lt;br /&gt;
Good&lt;br /&gt;
* already integrated in [[http://doc.bazaar-vcs.org/bzr.dev/en/tutorials/using_bazaar_with_launchpad.html launchpad]]&lt;br /&gt;
** Associating branches to bugs&lt;br /&gt;
** Associating branches to blueprints&lt;br /&gt;
** Changes state of bugs in LP when committing in Bazaar&lt;br /&gt;
** Web interface for creating branches quickly and easily&lt;br /&gt;
* supports bundling changesets&lt;br /&gt;
* tortoiseBZR&lt;br /&gt;
* Fewer commands - makes it easier to learn&lt;br /&gt;
* Supports multiple workflows, including what we use for Inkscape (See http://bazaar-vcs.org/Workflows)&lt;br /&gt;
* Easy administration.  Mostly done through Launchpad, plus Bzr folks are available to help.&lt;br /&gt;
&lt;br /&gt;
Bad&lt;br /&gt;
* no support for line-endings conversion/convention enforcing (but such systems may create the risk of wrongly recognizing binary files)&lt;br /&gt;
&lt;br /&gt;
Not sure&lt;br /&gt;
* A good point is that bazaar supports renames but it could actually be considered a &amp;quot;Bad&amp;quot; by git users&lt;br /&gt;
&lt;br /&gt;
== (D)VCS Clients ==&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
* [http://bazaar-vcs.org/BzrWhy Bazaar Why]&lt;br /&gt;
* [http://doc.bazaar-vcs.org/bzr.dev/en/tutorials/using_bazaar_with_launchpad.html Bazaar in Lanunchpad]&lt;br /&gt;
* [http://bazaar-vcs.org/Workflows Bazaar workflows]&lt;br /&gt;
&lt;br /&gt;
* Google talk videos on '''GIT''' [http://video.google.com/videoplay?docid=-2199332044603874737] [http://www.youtube.com/watch?v=8dhZ9BXQgc4]&lt;br /&gt;
* [http://git.or.cz/course/svn.html SVN Course]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Roadmap&amp;diff=22194</id>
		<title>Roadmap</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Roadmap&amp;diff=22194"/>
		<updated>2008-02-29T10:08:24Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Milestone 12 - Inkscape 0.46 */ added Quarks info if still relevant&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Inkscape Development Roadmap == &lt;br /&gt;
&lt;br /&gt;
NOTE: This is a working document showing specific near-term tasks needed for achieving the numbered milestones.&lt;br /&gt;
&lt;br /&gt;
''Milestones 0-11 have been completed since the start of the Inkscape Project. See [[OldRoadmap]]''&lt;br /&gt;
&lt;br /&gt;
=== Milestone 12 - Inkscape 0.46 ===&lt;br /&gt;
&lt;br /&gt;
New/Changed Dependencies:&lt;br /&gt;
* (DONE) Gtk 2.8 (required)&lt;br /&gt;
* 2geom (optional)&lt;br /&gt;
**&amp;lt;i&amp;gt;2geom is a hard dependency now due to LPE. 2geom source has been copied to the inkscape tree, so that inkscape can make full profit from the latest and greatest 2geom (instead of depending on an earlier official 2geom release) [johan]&amp;lt;/i&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
Architectural Refactoring Effort:&lt;br /&gt;
* Eliminate all use of sp_repr_new in favor of XML::Document::* classes (see [http://article.gmane.org/gmane.comp.graphics.inkscape.devel/19068])&lt;br /&gt;
* Migrate SPObject to native C++ classes&lt;br /&gt;
* Implement [http://grin-optics.org gradient] UI &amp;quot;release&amp;quot; handler to deal with gradient garbage collection (see bug 984854)&lt;br /&gt;
* Create an SPObject API for tracking references and avoiding id clashes on import and interdocument copy/paste. What we need are a void SPDocument::importCopies([set of SPObjects]), and an [set of SPObjects] SPObject::dependencies() method.&lt;br /&gt;
* Prepatory work to integrate lib2geom next release&lt;br /&gt;
** what exactly is meant by this? is this already done with LPE?&lt;br /&gt;
&lt;br /&gt;
Codebase Cleanup Effort:&lt;br /&gt;
* Change to use of GQuarks instead of #defines where feasible&lt;br /&gt;
** Where can information be found on this? (I have no clue what GQuarks are for example)&lt;br /&gt;
::Try here: [http://library.gnome.org/devel/glib/stable/glib-Quarks.html Quarks]&lt;br /&gt;
* Learn and use autoscan and autoreconf to find out which configure tests are still needed.&lt;br /&gt;
* Clean up configure.in&lt;br /&gt;
* (PARTIALLY DONE) [[DirectoryReorgProposal]]&lt;br /&gt;
* Convert all tabs into spaces (convert tabs to 4 spaces)&lt;br /&gt;
** Also see http://sourceforge.net/mailarchive/message.php?msg_id=7164324&lt;br /&gt;
* Remove trailing whitespace&lt;br /&gt;
** See http://wiki.inkscape.org/wiki/index.php/InkscapeJanitors#Cleanup:_Whitespace&lt;br /&gt;
* Rename all '[[SPFooBar]]' routines to '[[FooBar]]' and put into namespaces&lt;br /&gt;
** (DONE) dialogs folder&lt;br /&gt;
* (DONE) Convert use of gboolean to bool where feasible&lt;br /&gt;
**(Bulia: &amp;quot;This was attempted and (partially?) rolled back, because it broke GTK calls which require gbooleans.&amp;quot;)&lt;br /&gt;
* (DONE) Switch from use of TRUE/FALSE to true/false&lt;br /&gt;
**(Bulia: &amp;quot;This was attempted and (partially?) rolled back, because it broke GTK calls which require gbooleans.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
File Format Support Effort:&lt;br /&gt;
* PDF Import/Export&lt;br /&gt;
** (HELP NEEDED) Identify remaining problems with the cairo-based PDF tool check [[FileTypes]]&lt;br /&gt;
** Ensure clippaths, transparency, bitmaps, etc. all work&lt;br /&gt;
&lt;br /&gt;
Inkboard Effort&lt;br /&gt;
* Stabilize the code by closing crash bugs in the bug tracker&lt;br /&gt;
&lt;br /&gt;
SVG Feature Compliance Effort:&lt;br /&gt;
* Animation&lt;br /&gt;
** Sketch out UI mockup ideas for animation rendering/animation&lt;br /&gt;
** Make an ultra-preliminary proof of concept of at least one animation feature&lt;br /&gt;
&lt;br /&gt;
Extension Effort:&lt;br /&gt;
* Unification of the way to display help on extensions&lt;br /&gt;
* Localizable help of bundled extensions&lt;br /&gt;
* Effect extensions browser&lt;br /&gt;
&lt;br /&gt;
User Documentation Effort:&lt;br /&gt;
* Re-arrange tutorial categories [ScislaC]&lt;br /&gt;
* (PARTIALLY DONE) Switch to use of xml2po for tutorial files ([[User:Colin Marquardt|Colin Marquardt]])&lt;br /&gt;
* Document filters&lt;br /&gt;
&lt;br /&gt;
=== Milestone 13 - Inkscape 0.47 ===&lt;br /&gt;
&lt;br /&gt;
New/Changed Dependencies:&lt;br /&gt;
* Gtk 2.10 (required)&lt;br /&gt;
* 2geom (required)&lt;br /&gt;
&lt;br /&gt;
File Format Support Effort:&lt;br /&gt;
* PDF Import/Export&lt;br /&gt;
** Choice of PDF spec. (PDF/X-1a, PDF/X-3)&lt;br /&gt;
** Add file info/comments&lt;br /&gt;
** Add color bars&lt;br /&gt;
* [[MicrosoftVisio|Visio]] support&lt;br /&gt;
** Add extension for use of [[VDX2SVG]] (http://vdxtosvg.sourceforge.net/)&lt;br /&gt;
** (OBSOLETE) Add extension for use of [[PDF2SVG]] (http://www.solidcode.net/pdf2svg/ - this doesn't actually link to a useful page)&lt;br /&gt;
&lt;br /&gt;
Tools:&lt;br /&gt;
* [https://bugs.launchpad.net/inkscape/+bug/sf904962 correct handling of multiple font faces] by Text tool&lt;br /&gt;
* [http://article.gmane.org/gmane.comp.graphics.inkscape.devel/16938/ Filters tool]&lt;br /&gt;
&lt;br /&gt;
Architectural Refactoring Effort:&lt;br /&gt;
* 2geom Integration&lt;br /&gt;
** Eliminate code in favor of 2geom where feasible&lt;br /&gt;
* Convert remaining GTK dialog code to Gtkmm&lt;br /&gt;
&lt;br /&gt;
Inkscape SVG Effort&lt;br /&gt;
* Revisit coordination system (move away from Cartesian)&lt;br /&gt;
&lt;br /&gt;
DOM Binding Effort:&lt;br /&gt;
* Evaluate Adobe Activescript to use instead of Spidermonkey for our JS engine&lt;br /&gt;
* Create sample prototype app to explore ActiveScript&lt;br /&gt;
* Decide whether to go with Spidermonkey or Adobe ActiveScript&lt;br /&gt;
&lt;br /&gt;
User Interface Effort:&lt;br /&gt;
* improvement of svg patterns UI - make it similar to gradient-drag, instead of piggybacking knotholder&lt;br /&gt;
* Palettes&lt;br /&gt;
** Custom palettes like from Gnome&lt;br /&gt;
** Ability to load 3rd-party palettes (e.g. Pantone, Trumatch, Focoltone, Toyo, etc.)&lt;br /&gt;
* Reenable fuzzy font matching [bb]&lt;br /&gt;
* Improve freehand curve smoothness [pjrm, paraprax]&lt;br /&gt;
&lt;br /&gt;
Desktop Integration Effort:&lt;br /&gt;
* (DONE) Replace existing printer dialog with one from gtk 2.10&lt;br /&gt;
* Inter-application cut-and-paste&lt;br /&gt;
* Inter-application drag-and-drop&lt;br /&gt;
&lt;br /&gt;
Testing Effort:&lt;br /&gt;
* Include some rendering tests in `make check'.&lt;br /&gt;
* Get 'make check' to pass on Win32 and OSX (with the current btool, does this mean a 'btool check' should pass?)&lt;br /&gt;
* Investigate performance measurement testing for Inkscape&lt;br /&gt;
&lt;br /&gt;
Animation Effort&lt;br /&gt;
* Create a written conceptualization of how it should work&lt;br /&gt;
** Currently, part of the concept discussion is at [[Animation-(Timeline)|here]]&lt;br /&gt;
&lt;br /&gt;
Inkboard Effort&lt;br /&gt;
* Ensure multi-user conferences work across most JEP-compliant Jabber servers&lt;br /&gt;
* Conduct an informal security analysis of Inkboard for security flaws&lt;br /&gt;
&lt;br /&gt;
User Documentation Effort:&lt;br /&gt;
* Solicit more tutorial contributions from userbase&lt;br /&gt;
** Node editing&lt;br /&gt;
** Advanced text effects&lt;br /&gt;
** Grid snapping&lt;br /&gt;
** Connectors&lt;br /&gt;
** Creating photo-realistic art&lt;br /&gt;
&lt;br /&gt;
=== Milestone 14 - Inkscape 0.48 - Animation ===&lt;br /&gt;
&lt;br /&gt;
* Get basic rendering and authoring of simple animations working adequately&lt;br /&gt;
&lt;br /&gt;
Architectural Refactoring Effort:&lt;br /&gt;
* Complete lib2geom integration&lt;br /&gt;
* Streamline style.*&lt;br /&gt;
** Eliminate use of the style.h types in as much of codebase as possible, particularly display/*.&lt;br /&gt;
** Externally, it should present a simple sset of accessor methods for getting/setting properties by name, and propagating to/from repr.&lt;br /&gt;
** Inside, it should have:&lt;br /&gt;
*** a concise list of property names with the expected domain of values in CSS and the associated Inkscape data type&lt;br /&gt;
*** a concise list of property aliases which represent one or more properties combined, each with the rule used to combine&lt;br /&gt;
*** definitions of the aforementioned rules and value domains&lt;br /&gt;
*** some generic code (not tied to any one property) implementing the needed behavior&lt;br /&gt;
&lt;br /&gt;
DOM Binding Effort:&lt;br /&gt;
* Create tool that reads the w3c idl files and generates binding code&lt;br /&gt;
* Bind xpath parsing/execution&lt;br /&gt;
* Finish the CSS-DOM classes&lt;br /&gt;
* Add a 'run' mode in a separate window that runs and displays the scripted SVG&lt;br /&gt;
&lt;br /&gt;
Desktop Integration Effort:&lt;br /&gt;
* [[WebDAV/FTP]] support via GNOME-VFS, Neon, or the like&lt;br /&gt;
* Finish making printing work more efficiently and reliably&lt;br /&gt;
* Clipart manager GUI&lt;br /&gt;
&lt;br /&gt;
File Format Support Effort:&lt;br /&gt;
* PDF Import/Export&lt;br /&gt;
** Generate multipage PDF documents&lt;br /&gt;
** Define bleed and slug areas for offset printing&lt;br /&gt;
** Add crop, bleed and registration marks&lt;br /&gt;
&lt;br /&gt;
=== Milestone 15 - Inkscape 0.49 - Prototype all SVG Mobile features ===&lt;br /&gt;
&lt;br /&gt;
SVG Feature Compliance Effort:&lt;br /&gt;
* Ability to select which SVG spec version to save as&lt;br /&gt;
* Multi-page&lt;br /&gt;
* Animation&lt;br /&gt;
* Implement perspective transformations via [[PerspectiveObject]]&lt;br /&gt;
* Path editing&lt;br /&gt;
* Shaped strokes&lt;br /&gt;
* Masking/clippaths&lt;br /&gt;
** on-canvas editing (patch for 0.47 is ready)&lt;br /&gt;
** Should work like gradient tool to apply transparency&lt;br /&gt;
* [https://bugs.launchpad.net/inkscape/+bug/sf893812 hyperlinking]&lt;br /&gt;
* Ensure Inkscape does not throw away the internal DTD subsets of documents it reads&lt;br /&gt;
&lt;br /&gt;
=== Milestone 16 - Inkscape 0.50 - SVG Mobile Support ===&lt;br /&gt;
&lt;br /&gt;
SVG Feature Compliance Effort:&lt;br /&gt;
* Multi-page&lt;br /&gt;
* Scripting&lt;br /&gt;
* Markers&lt;br /&gt;
** Inherit stroke properties like color&lt;br /&gt;
** On-canvas editing&lt;br /&gt;
** Fix snapping issue&lt;br /&gt;
* Real CMYK / LAB / HSB support&lt;br /&gt;
&lt;br /&gt;
=== Milestone 17 - Inkscape 0.51 ===&lt;br /&gt;
&lt;br /&gt;
Architectural Refactoring Effort:&lt;br /&gt;
* cairo Adoption Effort:&lt;br /&gt;
** Prereq: Is renderer immune to the same kinds of numerical problems we see with our new renderer, libnr, or libart?&lt;br /&gt;
** Will the new renderer improve performance for most users?&lt;br /&gt;
** Integrate a cairo-based SVG Canvas library&lt;br /&gt;
* follow the [http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html Freedesktop Icon Naming Spec] for easier themeing&lt;br /&gt;
&lt;br /&gt;
File Format Support Effort:&lt;br /&gt;
* Native [[Adobe Illustrator]] file Import (DONE)/Export&lt;br /&gt;
** Requires good PDF Import/Export&lt;br /&gt;
* Native [[CorelDraw]] file Import/Export (DONE as extension)&lt;br /&gt;
* DXF import/export&lt;br /&gt;
* gdkpixbuf(?) - would give JPEG support&lt;br /&gt;
&lt;br /&gt;
=== Milestone 18 - Inkscape 0.52 - Tech drawing abilities ===&lt;br /&gt;
&lt;br /&gt;
User Interface Effort:&lt;br /&gt;
* (DONE) Object-to-object snapping&lt;br /&gt;
* (DONE) Implement [[LittleCMS]] as color management system&lt;br /&gt;
* Implement iso (DONE) &amp;amp; hex grid&lt;br /&gt;
* Editable toolbars (libegg)&lt;br /&gt;
* Geometrical constraints&lt;br /&gt;
** &amp;quot;Perpendicular-to&amp;quot;, &amp;quot;Parallel-to&amp;quot;, etc.&lt;br /&gt;
* Path trimming/extending/offset&lt;br /&gt;
* Filleting tool&lt;br /&gt;
&lt;br /&gt;
Extensions Effort:&lt;br /&gt;
* Implement extension registry for users to upload/download extensions via Inkscape&lt;br /&gt;
* Dia-like smart shapes support&lt;br /&gt;
&lt;br /&gt;
=== Milestone 19 - Inkscape 0.53 - Inkcore ===&lt;br /&gt;
&lt;br /&gt;
* Separate sections of code into various libraries for use by other programs&lt;br /&gt;
** inkcanvas&lt;br /&gt;
** inkview&lt;br /&gt;
** inkscape&lt;br /&gt;
&lt;br /&gt;
=== Milestone 20 - Inkscape 0.54 ===&lt;br /&gt;
=== Milestone 21 - Inkscape 0.55 ===&lt;br /&gt;
&lt;br /&gt;
=== ??? - Inkscape 1.00 - Full SVG 1.1 support === &lt;br /&gt;
&lt;br /&gt;
=== Milestone [Future] ===&lt;br /&gt;
&lt;br /&gt;
[[Category:Developer Documentation]]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=22134</id>
		<title>Compiling Inkscape on Windows 32-bit</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=22134"/>
		<updated>2008-02-28T12:22:14Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* A Note from Jon about UNICODE on Win32 */ fixed signature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See the [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=847856&amp;amp;group_id=93438&amp;amp;atid=604308 Win32 Build ticket] for some info.&lt;br /&gt;
&lt;br /&gt;
=== Inkscape under Windows ===&lt;br /&gt;
&lt;br /&gt;
Ishmal provides a complete set of compiler and libraries on his website. You can get all packages from http://inkscape.modevia.com/win32libs/. You better check there the last version, but as of February 28th 2008 those are:&lt;br /&gt;
* the mingw compiler version 4.2 http://inkscape.modevia.com/win32libs/mingw-4.2.1-071022-dw2.7z&lt;br /&gt;
* the gtk libraries version 2.10 http://inkscape.modevia.com/win32libs/gtk210-071023-dw2.7z&lt;br /&gt;
* other libraries http://inkscape.modevia.com/win32libs/devlibs-2.12-080226.7z&lt;br /&gt;
&lt;br /&gt;
The configuration files expect the packages in specific directories:&lt;br /&gt;
* the compiler C:\MinGW&lt;br /&gt;
* the libraries C:\gtk210&lt;br /&gt;
* other libraries C:\devlibs&lt;br /&gt;
&lt;br /&gt;
Now you step into the Inkscape source directory:&lt;br /&gt;
    ...\&amp;gt; cd ...\inkscape&lt;br /&gt;
set up the environment variables&lt;br /&gt;
    ...\&amp;gt; mingwenv.bat&lt;br /&gt;
build the magic make replacement:&lt;br /&gt;
    ...\&amp;gt; g++ buildtool.cpp -o btool&lt;br /&gt;
or, if you get errors about gettimeofday:&lt;br /&gt;
    ...\&amp;gt; g++ -DNEED_GETTIMEOFDAY buildtool.cpp -o btool&lt;br /&gt;
start the build proccess:&lt;br /&gt;
    ...\&amp;gt; btool&lt;br /&gt;
Now you should have you fresh Inkscape in the ...\Inkscape\Inkscape directory.&lt;br /&gt;
&lt;br /&gt;
We will update this page soon with information on how to build Inkscape on the Win32 platform.  In the meantime,&lt;br /&gt;
there are some fairly complete notes on how to build the current package with either Mingw on Windows, or a&lt;br /&gt;
cross-compiler on Linux, at &lt;br /&gt;
&lt;br /&gt;
http://inkscape.modevia.com/win32_inkscape_org/win32buildnotes.html&lt;br /&gt;
&lt;br /&gt;
(note: http://inkscape.modevia.com/win32libs/ may have more complete and up-to-date library packages).&lt;br /&gt;
&lt;br /&gt;
There is also a [[Win32 installer]]&lt;br /&gt;
&lt;br /&gt;
=== Create the Setup package for Win32 ===&lt;br /&gt;
&lt;br /&gt;
To create the setup package you need the NSIS installer on your PC. Get that from http://nsis.sf.net .&lt;br /&gt;
You have successfully built Inkscape and everything is in the ...\Inkscape\Inkscape\ directory.&lt;br /&gt;
Open the ...\Inkscape\packaging\win32\inkscape.nsi using the NSIS program and compile the package. Sooo easy :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Note from Jon about UNICODE on Win32 ====&lt;br /&gt;
&lt;br /&gt;
Actually, Microsoft themselves never use _UNICODE, nor it's 'evil' friends TCHAR and _T.&lt;br /&gt;
If it is used, it results in a binary that can not be run on Windows 95/98[[/ME]]. It is more of a &amp;quot;Windows NT only&amp;quot; define.&lt;br /&gt;
&lt;br /&gt;
Microsoft applications like MS Office have been pure 16-bit Unicode internally for years now. Also remember that BSTRs in Win32 are required to have 16-bit Unicode data. So for any COM access on a Win32 box running Win9x[[/ME]] 'multibyte' or '8-bit' COM calls convert all ANSI data to Unicode once you pass things in. To avoid this, Microsoft just keeps data 16-bit Unicode and then translates to local ANSI codepage only when data needs to be passed directly to a Win32 call.&lt;br /&gt;
&lt;br /&gt;
To help developers, Microsoft finally made public their API they had been using. It's [http://www.microsoft.com/globaldev/handson/dev/mslu_announce.mspx &amp;quot;The Microsoft Layer for Unicode&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Although that simplifies things, it's not required. I've done Win32 programs that are 16-bit Unicode and run on Windows 95/98[[/ME]] with no problems years before they released that.&lt;br /&gt;
&lt;br /&gt;
Soo.... _UNICODE can't be used as it makes your binary unusable on Win9x[[/ME]]. Then it turns out that TCHAR and _T can't be used either. (Oh, and MS can't really use them, since Office does run on Win9x[[/ME]]). So just explicitly use some 16-bit datatype for chars. Microsoft is misleading in their documentation when they state that wchar_t is 16-bit. Most other platforms (including Mac OS, Linux, Solaris, BSD, etc) follow the language standard's recommendation and make it 32-bit. So it is best to avoid wchar_t for any real cross-platform code.&lt;br /&gt;
&lt;br /&gt;
So, some general guidelines are:&lt;br /&gt;
* Never define _UNICODE&lt;br /&gt;
* Don't use _T&lt;br /&gt;
* Don't use TCHAR&lt;br /&gt;
* Don't use wchar_t&lt;br /&gt;
* Use some explicit 16-bit type for characters/strings&lt;br /&gt;
** [http://icu.sourceforge.net/ IBM's ICU] does this&lt;br /&gt;
&lt;br /&gt;
So then it's a simple matter of converting data from the standard UTF-8 GTK+ data to UTF-16 data before passing to Win32-land. &lt;br /&gt;
&lt;br /&gt;
The result? A single binary that executes properly on both [[Win9X/ME]] and [[WinNT/2K/XP]], including full and proper font and filename support.&lt;br /&gt;
&lt;br /&gt;
And, as I've mentioned before, I've actually achieved this for a few different shipping products and projects.&lt;br /&gt;
&lt;br /&gt;
-- [[JonCruz|Jon C]]&lt;br /&gt;
&lt;br /&gt;
=== SVN and Windows ===&lt;br /&gt;
&lt;br /&gt;
If you want to access Inkscapes' subversion repository on SourceForge from Windows, I'd heartily recommend [[TortoiseSVN]].&lt;br /&gt;
It has the SSH stuff built into it so you don't have to mess about with putty, and&lt;br /&gt;
it integrates right into Explorer, so SVN becomes just an extension of the right-click file commands.&lt;br /&gt;
get it from http://tortoisesvn.net/&lt;br /&gt;
&lt;br /&gt;
John&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=22124</id>
		<title>Compiling Inkscape on Windows 32-bit</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=22124"/>
		<updated>2008-02-28T12:21:25Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Inkscape under Windows */ the year!!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See the [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=847856&amp;amp;group_id=93438&amp;amp;atid=604308 Win32 Build ticket] for some info.&lt;br /&gt;
&lt;br /&gt;
=== Inkscape under Windows ===&lt;br /&gt;
&lt;br /&gt;
Ishmal provides a complete set of compiler and libraries on his website. You can get all packages from http://inkscape.modevia.com/win32libs/. You better check there the last version, but as of February 28th 2008 those are:&lt;br /&gt;
* the mingw compiler version 4.2 http://inkscape.modevia.com/win32libs/mingw-4.2.1-071022-dw2.7z&lt;br /&gt;
* the gtk libraries version 2.10 http://inkscape.modevia.com/win32libs/gtk210-071023-dw2.7z&lt;br /&gt;
* other libraries http://inkscape.modevia.com/win32libs/devlibs-2.12-080226.7z&lt;br /&gt;
&lt;br /&gt;
The configuration files expect the packages in specific directories:&lt;br /&gt;
* the compiler C:\MinGW&lt;br /&gt;
* the libraries C:\gtk210&lt;br /&gt;
* other libraries C:\devlibs&lt;br /&gt;
&lt;br /&gt;
Now you step into the Inkscape source directory:&lt;br /&gt;
    ...\&amp;gt; cd ...\inkscape&lt;br /&gt;
set up the environment variables&lt;br /&gt;
    ...\&amp;gt; mingwenv.bat&lt;br /&gt;
build the magic make replacement:&lt;br /&gt;
    ...\&amp;gt; g++ buildtool.cpp -o btool&lt;br /&gt;
or, if you get errors about gettimeofday:&lt;br /&gt;
    ...\&amp;gt; g++ -DNEED_GETTIMEOFDAY buildtool.cpp -o btool&lt;br /&gt;
start the build proccess:&lt;br /&gt;
    ...\&amp;gt; btool&lt;br /&gt;
Now you should have you fresh Inkscape in the ...\Inkscape\Inkscape directory.&lt;br /&gt;
&lt;br /&gt;
We will update this page soon with information on how to build Inkscape on the Win32 platform.  In the meantime,&lt;br /&gt;
there are some fairly complete notes on how to build the current package with either Mingw on Windows, or a&lt;br /&gt;
cross-compiler on Linux, at &lt;br /&gt;
&lt;br /&gt;
http://inkscape.modevia.com/win32_inkscape_org/win32buildnotes.html&lt;br /&gt;
&lt;br /&gt;
(note: http://inkscape.modevia.com/win32libs/ may have more complete and up-to-date library packages).&lt;br /&gt;
&lt;br /&gt;
There is also a [[Win32 installer]]&lt;br /&gt;
&lt;br /&gt;
=== Create the Setup package for Win32 ===&lt;br /&gt;
&lt;br /&gt;
To create the setup package you need the NSIS installer on your PC. Get that from http://nsis.sf.net .&lt;br /&gt;
You have successfully built Inkscape and everything is in the ...\Inkscape\Inkscape\ directory.&lt;br /&gt;
Open the ...\Inkscape\packaging\win32\inkscape.nsi using the NSIS program and compile the package. Sooo easy :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Note from Jon about UNICODE on Win32 ====&lt;br /&gt;
&lt;br /&gt;
Actually, Microsoft themselves never use _UNICODE, nor it's 'evil' friends TCHAR and _T.&lt;br /&gt;
If it is used, it results in a binary that can not be run on Windows 95/98[[/ME]]. It is more of a &amp;quot;Windows NT only&amp;quot; define.&lt;br /&gt;
&lt;br /&gt;
Microsoft applications like MS Office have been pure 16-bit Unicode internally for years now. Also remember that BSTRs in Win32 are required to have 16-bit Unicode data. So for any COM access on a Win32 box running Win9x[[/ME]] 'multibyte' or '8-bit' COM calls convert all ANSI data to Unicode once you pass things in. To avoid this, Microsoft just keeps data 16-bit Unicode and then translates to local ANSI codepage only when data needs to be passed directly to a Win32 call.&lt;br /&gt;
&lt;br /&gt;
To help developers, Microsoft finally made public their API they had been using. It's [http://www.microsoft.com/globaldev/handson/dev/mslu_announce.mspx &amp;quot;The Microsoft Layer for Unicode&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Although that simplifies things, it's not required. I've done Win32 programs that are 16-bit Unicode and run on Windows 95/98[[/ME]] with no problems years before they released that.&lt;br /&gt;
&lt;br /&gt;
Soo.... _UNICODE can't be used as it makes your binary unusable on Win9x[[/ME]]. Then it turns out that TCHAR and _T can't be used either. (Oh, and MS can't really use them, since Office does run on Win9x[[/ME]]). So just explicitly use some 16-bit datatype for chars. Microsoft is misleading in their documentation when they state that wchar_t is 16-bit. Most other platforms (including Mac OS, Linux, Solaris, BSD, etc) follow the language standard's recommendation and make it 32-bit. So it is best to avoid wchar_t for any real cross-platform code.&lt;br /&gt;
&lt;br /&gt;
So, some general guidelines are:&lt;br /&gt;
* Never define _UNICODE&lt;br /&gt;
* Don't use _T&lt;br /&gt;
* Don't use TCHAR&lt;br /&gt;
* Don't use wchar_t&lt;br /&gt;
* Use some explicit 16-bit type for characters/strings&lt;br /&gt;
** [http://icu.sourceforge.net/ IBM's ICU] does this&lt;br /&gt;
&lt;br /&gt;
So then it's a simple matter of converting data from the standard UTF-8 GTK+ data to UTF-16 data before passing to Win32-land. &lt;br /&gt;
&lt;br /&gt;
The result? A single binary that executes properly on both [[Win9X/ME]] and [[WinNT/2K/XP]], including full and proper font and filename support.&lt;br /&gt;
&lt;br /&gt;
And, as I've mentioned before, I've actually achieved this for a few different shipping products and projects.&lt;br /&gt;
&lt;br /&gt;
-- [[[JonCruz]] Jon C]&lt;br /&gt;
&lt;br /&gt;
=== SVN and Windows ===&lt;br /&gt;
&lt;br /&gt;
If you want to access Inkscapes' subversion repository on SourceForge from Windows, I'd heartily recommend [[TortoiseSVN]].&lt;br /&gt;
It has the SSH stuff built into it so you don't have to mess about with putty, and&lt;br /&gt;
it integrates right into Explorer, so SVN becomes just an extension of the right-click file commands.&lt;br /&gt;
get it from http://tortoisesvn.net/&lt;br /&gt;
&lt;br /&gt;
John&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=22114</id>
		<title>Compiling Inkscape on Windows 32-bit</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=22114"/>
		<updated>2008-02-28T12:20:35Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Inkscape under Windows */ updated links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See the [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=847856&amp;amp;group_id=93438&amp;amp;atid=604308 Win32 Build ticket] for some info.&lt;br /&gt;
&lt;br /&gt;
=== Inkscape under Windows ===&lt;br /&gt;
&lt;br /&gt;
Ishmal provides a complete set of compiler and libraries on his website. You can get all packages from http://inkscape.modevia.com/win32libs/. You better check there the last version, but as of February 28th 2007 those are:&lt;br /&gt;
* the mingw compiler version 4.2 http://inkscape.modevia.com/win32libs/mingw-4.2.1-071022-dw2.7z&lt;br /&gt;
* the gtk libraries version 2.10 http://inkscape.modevia.com/win32libs/gtk210-071023-dw2.7z&lt;br /&gt;
* other libraries http://inkscape.modevia.com/win32libs/devlibs-2.12-080226.7z&lt;br /&gt;
&lt;br /&gt;
The configuration files expect the packages in specific directories:&lt;br /&gt;
* the compiler C:\MinGW&lt;br /&gt;
* the libraries C:\gtk210&lt;br /&gt;
* other libraries C:\devlibs&lt;br /&gt;
&lt;br /&gt;
Now you step into the Inkscape source directory:&lt;br /&gt;
    ...\&amp;gt; cd ...\inkscape&lt;br /&gt;
set up the environment variables&lt;br /&gt;
    ...\&amp;gt; mingwenv.bat&lt;br /&gt;
build the magic make replacement:&lt;br /&gt;
    ...\&amp;gt; g++ buildtool.cpp -o btool&lt;br /&gt;
or, if you get errors about gettimeofday:&lt;br /&gt;
    ...\&amp;gt; g++ -DNEED_GETTIMEOFDAY buildtool.cpp -o btool&lt;br /&gt;
start the build proccess:&lt;br /&gt;
    ...\&amp;gt; btool&lt;br /&gt;
Now you should have you fresh Inkscape in the ...\Inkscape\Inkscape directory.&lt;br /&gt;
&lt;br /&gt;
We will update this page soon with information on how to build Inkscape on the Win32 platform.  In the meantime,&lt;br /&gt;
there are some fairly complete notes on how to build the current package with either Mingw on Windows, or a&lt;br /&gt;
cross-compiler on Linux, at &lt;br /&gt;
&lt;br /&gt;
http://inkscape.modevia.com/win32_inkscape_org/win32buildnotes.html&lt;br /&gt;
&lt;br /&gt;
(note: http://inkscape.modevia.com/win32libs/ may have more complete and up-to-date library packages).&lt;br /&gt;
&lt;br /&gt;
There is also a [[Win32 installer]]&lt;br /&gt;
&lt;br /&gt;
=== Create the Setup package for Win32 ===&lt;br /&gt;
&lt;br /&gt;
To create the setup package you need the NSIS installer on your PC. Get that from http://nsis.sf.net .&lt;br /&gt;
You have successfully built Inkscape and everything is in the ...\Inkscape\Inkscape\ directory.&lt;br /&gt;
Open the ...\Inkscape\packaging\win32\inkscape.nsi using the NSIS program and compile the package. Sooo easy :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Note from Jon about UNICODE on Win32 ====&lt;br /&gt;
&lt;br /&gt;
Actually, Microsoft themselves never use _UNICODE, nor it's 'evil' friends TCHAR and _T.&lt;br /&gt;
If it is used, it results in a binary that can not be run on Windows 95/98[[/ME]]. It is more of a &amp;quot;Windows NT only&amp;quot; define.&lt;br /&gt;
&lt;br /&gt;
Microsoft applications like MS Office have been pure 16-bit Unicode internally for years now. Also remember that BSTRs in Win32 are required to have 16-bit Unicode data. So for any COM access on a Win32 box running Win9x[[/ME]] 'multibyte' or '8-bit' COM calls convert all ANSI data to Unicode once you pass things in. To avoid this, Microsoft just keeps data 16-bit Unicode and then translates to local ANSI codepage only when data needs to be passed directly to a Win32 call.&lt;br /&gt;
&lt;br /&gt;
To help developers, Microsoft finally made public their API they had been using. It's [http://www.microsoft.com/globaldev/handson/dev/mslu_announce.mspx &amp;quot;The Microsoft Layer for Unicode&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Although that simplifies things, it's not required. I've done Win32 programs that are 16-bit Unicode and run on Windows 95/98[[/ME]] with no problems years before they released that.&lt;br /&gt;
&lt;br /&gt;
Soo.... _UNICODE can't be used as it makes your binary unusable on Win9x[[/ME]]. Then it turns out that TCHAR and _T can't be used either. (Oh, and MS can't really use them, since Office does run on Win9x[[/ME]]). So just explicitly use some 16-bit datatype for chars. Microsoft is misleading in their documentation when they state that wchar_t is 16-bit. Most other platforms (including Mac OS, Linux, Solaris, BSD, etc) follow the language standard's recommendation and make it 32-bit. So it is best to avoid wchar_t for any real cross-platform code.&lt;br /&gt;
&lt;br /&gt;
So, some general guidelines are:&lt;br /&gt;
* Never define _UNICODE&lt;br /&gt;
* Don't use _T&lt;br /&gt;
* Don't use TCHAR&lt;br /&gt;
* Don't use wchar_t&lt;br /&gt;
* Use some explicit 16-bit type for characters/strings&lt;br /&gt;
** [http://icu.sourceforge.net/ IBM's ICU] does this&lt;br /&gt;
&lt;br /&gt;
So then it's a simple matter of converting data from the standard UTF-8 GTK+ data to UTF-16 data before passing to Win32-land. &lt;br /&gt;
&lt;br /&gt;
The result? A single binary that executes properly on both [[Win9X/ME]] and [[WinNT/2K/XP]], including full and proper font and filename support.&lt;br /&gt;
&lt;br /&gt;
And, as I've mentioned before, I've actually achieved this for a few different shipping products and projects.&lt;br /&gt;
&lt;br /&gt;
-- [[[JonCruz]] Jon C]&lt;br /&gt;
&lt;br /&gt;
=== SVN and Windows ===&lt;br /&gt;
&lt;br /&gt;
If you want to access Inkscapes' subversion repository on SourceForge from Windows, I'd heartily recommend [[TortoiseSVN]].&lt;br /&gt;
It has the SSH stuff built into it so you don't have to mess about with putty, and&lt;br /&gt;
it integrates right into Explorer, so SVN becomes just an extension of the right-click file commands.&lt;br /&gt;
get it from http://tortoisesvn.net/&lt;br /&gt;
&lt;br /&gt;
John&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=22104</id>
		<title>Release notes/0.47</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Release_notes/0.47&amp;diff=22104"/>
		<updated>2008-02-28T11:48:45Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Corel DRAW files import */ UC1.1.1 supports Corel X4 files as well&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Inkscape 0.47=&lt;br /&gt;
'''(not released yet)'''&lt;br /&gt;
=User Interface=&lt;br /&gt;
==Native File Dialogs for Windows==&lt;br /&gt;
The windows builds of inkscape now have Windows-native file dialogs to keep consistency with other windows applications.&lt;br /&gt;
&lt;br /&gt;
=Import/Export=&lt;br /&gt;
==Corel DRAW files import==&lt;br /&gt;
&lt;br /&gt;
Now Inkscape can import more Corel DRAW files of following types:&lt;br /&gt;
&lt;br /&gt;
* Corel DRAW Compressed Exchange files (CCX)&lt;br /&gt;
* Corel DRAW 7-X4 Template files (CDT)&lt;br /&gt;
* Corel DRAW Presentation Exchange files (CMX)&lt;br /&gt;
&lt;br /&gt;
Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==sK1 files import==&lt;br /&gt;
&lt;br /&gt;
Inkscape uses UniConvertor to import sK1 files. Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
==CGM import==&lt;br /&gt;
&lt;br /&gt;
Inkscape uses UniConvertor to import Computer Graphics Metafile (CGM) files. Text objects are not supported as of UniConvertor 1.1.1.&lt;br /&gt;
&lt;br /&gt;
=User interface=&lt;br /&gt;
==Masks and clipping paths==&lt;br /&gt;
&lt;br /&gt;
[johan]&lt;br /&gt;
&lt;br /&gt;
= Previous releases =&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseNotes046]]&lt;br /&gt;
* [[ReleaseNotes045]]&lt;br /&gt;
* [[ReleaseNotes044]]&lt;br /&gt;
* [[ReleaseNotes043]]&lt;br /&gt;
* [[ReleaseNotes042]]&lt;br /&gt;
* [[ReleaseNotes041]]&lt;br /&gt;
* [[ReleaseNotes040]]&lt;br /&gt;
* [[ReleaseNotes039]]&lt;br /&gt;
* [[ReleaseNotes038]]&lt;br /&gt;
* [[ReleaseNotes037]]&lt;br /&gt;
* [[ReleaseNotes036]]&lt;br /&gt;
* [[ReleaseNotes035]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Marketing]]&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User:Mfloryan&amp;diff=20194</id>
		<title>User:Mfloryan</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User:Mfloryan&amp;diff=20194"/>
		<updated>2008-02-13T12:49:02Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: New page: =Marcin Floryan=&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Marcin Floryan=&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=19994</id>
		<title>Compiling Inkscape on Windows 32-bit</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Compiling_Inkscape_on_Windows_32-bit&amp;diff=19994"/>
		<updated>2008-02-11T15:54:24Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Inkscape under Windows */ updated devlibs link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See the [http://sourceforge.net/tracker/index.php?func=detail&amp;amp;aid=847856&amp;amp;group_id=93438&amp;amp;atid=604308 Win32 Build ticket] for some info.&lt;br /&gt;
&lt;br /&gt;
=== Inkscape under Windows ===&lt;br /&gt;
&lt;br /&gt;
Ishmal provides a complete set of compiler and libraries on his website. You can get all packages from http://inkscape.modevia.com/win32libs/. You better check there the last version, but as of November 30th 2007 those are:&lt;br /&gt;
* the mingw compiler version 4.2 http://inkscape.modevia.com/win32libs/mingw-4.2.1-071022-dw2.7z&lt;br /&gt;
* the gtk libraries version 2.10 http://inkscape.modevia.com/win32libs/gtk210-071023-dw2.7z&lt;br /&gt;
* other libraries http://inkscape.modevia.com/win32libs/devlibs-2.12-080204.7z&lt;br /&gt;
&lt;br /&gt;
The configuration files expect the packages in specific directories:&lt;br /&gt;
* the compiler C:\MinGW&lt;br /&gt;
* the libraries C:\gtk210&lt;br /&gt;
* other libraries C:\devlibs&lt;br /&gt;
&lt;br /&gt;
Now you step into the Inkscape source directory:&lt;br /&gt;
    ...\&amp;gt; cd ...\inkscape&lt;br /&gt;
set up the environment variables&lt;br /&gt;
    ...\&amp;gt; mingwenv.bat&lt;br /&gt;
build the magic make replacement:&lt;br /&gt;
    ...\&amp;gt; g++ buildtool.cpp -o btool&lt;br /&gt;
or, if you get errors about gettimeofday:&lt;br /&gt;
    ...\&amp;gt; g++ -DNEED_GETTIMEOFDAY buildtool.cpp -o btool&lt;br /&gt;
start the build proccess:&lt;br /&gt;
    ...\&amp;gt; btool&lt;br /&gt;
Now you should have you fresh Inkscape in the ...\Inkscape\Inkscape directory.&lt;br /&gt;
&lt;br /&gt;
We will update this page soon with information on how to build Inkscape on the Win32 platform.  In the meantime,&lt;br /&gt;
there are some fairly complete notes on how to build the current package with either Mingw on Windows, or a&lt;br /&gt;
cross-compiler on Linux, at &lt;br /&gt;
&lt;br /&gt;
http://inkscape.modevia.com/win32_inkscape_org/win32buildnotes.html&lt;br /&gt;
&lt;br /&gt;
(note: http://inkscape.modevia.com/win32libs/ may have more complete and up-to-date library packages).&lt;br /&gt;
&lt;br /&gt;
There is also a [[Win32 installer]]&lt;br /&gt;
&lt;br /&gt;
=== Create the Setup package for Win32 ===&lt;br /&gt;
&lt;br /&gt;
To create the setup package you need the NSIS installer on your PC. Get that from http://nsis.sf.net .&lt;br /&gt;
You have successfully built Inkscape and everything is in the ...\Inkscape\Inkscape\ directory.&lt;br /&gt;
Open the ...\Inkscape\packaging\win32\inkscape.nsi using the NSIS program and compile the package. Sooo easy :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Note from Jon about UNICODE on Win32 ====&lt;br /&gt;
&lt;br /&gt;
Actually, Microsoft themselves never use _UNICODE, nor it's 'evil' friends TCHAR and _T.&lt;br /&gt;
If it is used, it results in a binary that can not be run on Windows 95/98[[/ME]]. It is more of a &amp;quot;Windows NT only&amp;quot; define.&lt;br /&gt;
&lt;br /&gt;
Microsoft applications like MS Office have been pure 16-bit Unicode internally for years now. Also remember that BSTRs in Win32 are required to have 16-bit Unicode data. So for any COM access on a Win32 box running Win9x[[/ME]] 'multibyte' or '8-bit' COM calls convert all ANSI data to Unicode once you pass things in. To avoid this, Microsoft just keeps data 16-bit Unicode and then translates to local ANSI codepage only when data needs to be passed directly to a Win32 call.&lt;br /&gt;
&lt;br /&gt;
To help developers, Microsoft finally made public their API they had been using. It's [http://www.microsoft.com/globaldev/handson/dev/mslu_announce.mspx &amp;quot;The Microsoft Layer for Unicode&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Although that simplifies things, it's not required. I've done Win32 programs that are 16-bit Unicode and run on Windows 95/98[[/ME]] with no problems years before they released that.&lt;br /&gt;
&lt;br /&gt;
Soo.... _UNICODE can't be used as it makes your binary unusable on Win9x[[/ME]]. Then it turns out that TCHAR and _T can't be used either. (Oh, and MS can't really use them, since Office does run on Win9x[[/ME]]). So just explicitly use some 16-bit datatype for chars. Microsoft is misleading in their documentation when they state that wchar_t is 16-bit. Most other platforms (including Mac OS, Linux, Solaris, BSD, etc) follow the language standard's recommendation and make it 32-bit. So it is best to avoid wchar_t for any real cross-platform code.&lt;br /&gt;
&lt;br /&gt;
So, some general guidelines are:&lt;br /&gt;
* Never define _UNICODE&lt;br /&gt;
* Don't use _T&lt;br /&gt;
* Don't use TCHAR&lt;br /&gt;
* Don't use wchar_t&lt;br /&gt;
* Use some explicit 16-bit type for characters/strings&lt;br /&gt;
** [http://icu.sourceforge.net/ IBM's ICU] does this&lt;br /&gt;
&lt;br /&gt;
So then it's a simple matter of converting data from the standard UTF-8 GTK+ data to UTF-16 data before passing to Win32-land. &lt;br /&gt;
&lt;br /&gt;
The result? A single binary that executes properly on both [[Win9X/ME]] and [[WinNT/2K/XP]], including full and proper font and filename support.&lt;br /&gt;
&lt;br /&gt;
And, as I've mentioned before, I've actually achieved this for a few different shipping products and projects.&lt;br /&gt;
&lt;br /&gt;
-- [[[JonCruz]] Jon C]&lt;br /&gt;
&lt;br /&gt;
=== SVN and Windows ===&lt;br /&gt;
&lt;br /&gt;
If you want to access Inkscapes' subversion repository on SourceForge from Windows, I'd heartily recommend [[TortoiseSVN]].&lt;br /&gt;
It has the SSH stuff built into it so you don't have to mess about with putty, and&lt;br /&gt;
it integrates right into Explorer, so SVN becomes just an extension of the right-click file commands.&lt;br /&gt;
get it from http://tortoisesvn.net/&lt;br /&gt;
&lt;br /&gt;
John&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=Interface_translation&amp;diff=19854</id>
		<title>Interface translation</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=Interface_translation&amp;diff=19854"/>
		<updated>2008-02-08T09:33:59Z</updated>

		<summary type="html">&lt;p&gt;Mfloryan: /* Get the PO file for your language */ change following https://bugs.launchpad.net/inkscape/+bug/179209&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;br /&gt;
&lt;br /&gt;
== Introduction to PO file format ==&lt;br /&gt;
&lt;br /&gt;
If you've never translated a PO file before, you will find its syntax very simple. The PO format is a really simple format, which probably at least partly explains its success and widespread use. The format is basically a hash list consisting of msgid and msgstr pairs, with the msgid being the original English string and key, and the msgstr being the translated value of it. Below is an example of a message.&lt;br /&gt;
&lt;br /&gt;
   &amp;amp;#35;: gedit/dialogs/gedit-plugin-program-location-dialog.c:78&lt;br /&gt;
   &amp;amp;#35;: gedit/dialogs/program-location-dialog.glade2.h:2&lt;br /&gt;
   msgid &amp;quot;Set program location...&amp;quot;&lt;br /&gt;
   msgstr &amp;quot;Ställ in programplats...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
In addition to the msgid and msgstr parts, a message usually also has lines starting with #: that tells what source files and what lines the string used as msgid was extracted from. These lines have no syntactic value. They are only there as a help for translators and developers to know where a message came from. &lt;br /&gt;
&lt;br /&gt;
A message in a PO file can be in one of essentially three different states. The message can be translated, fuzzy, or untranslated. A message counts as translated as soon as the msgstr part of it is non-empty. In a similar manner, an untranslated message is one where the msgstr is empty. The fuzzy state is special and essentially means that there is a translation in the msgstr part, but that this translation is most likely not entirely correct, and that it thus needs manual attention by a translator. A message can become fuzzy in one of two ways:&lt;br /&gt;
&lt;br /&gt;
* The original string that the msgid represents was changed in the source code.  A typo in the string may have been fixed or the string altered in some other way. The translator needs to check that the msgstr is still valid and make changes if necessary.&lt;br /&gt;
* A new string has been added to the source, and the string is very similar, but not identical, to the msgid of an already existing, translated message. Then the msgstr of that message will be automatically reused for the new message, but the new message will also at the same time be marked fuzzy so that the translator knows there is some difference that he or she needs to adapt the translation to match.&lt;br /&gt;
&lt;br /&gt;
There is always one special message in each valid PO file: the PO file header. It is encoded with the msgid for the empty string (&amp;quot;&amp;quot;) as the key, and the actual header values are in the msgstr part. This unfortunately means that if you mark an empty string for translation, you will get the entire PO file header back as the &amp;quot;translation&amp;quot;. In almost all cases this is probably not what you want. Hence, do not mark empty strings for translation.&lt;br /&gt;
&lt;br /&gt;
== Get the PO file for your language ==&lt;br /&gt;
&lt;br /&gt;
Download the .po file for your language from here:&lt;br /&gt;
&lt;br /&gt;
    http://inkscape.svn.sourceforge.net/viewcvs.py/inkscape/inkscape/trunk/po/&lt;br /&gt;
&lt;br /&gt;
If a .po file for your language does not yet exist, then you will have to get an empty template file to start a new translation.&lt;br /&gt;
You may also need to use the updated template file (mentioned blow) to bring the .po file up to date with new strings introduced in the UI.&lt;br /&gt;
&lt;br /&gt;
The most straightforward way to obtain the inkscape.pot template is to download it from here:&lt;br /&gt;
&lt;br /&gt;
    http://inkscape.modevia.com/potfile/inkscape.pot&lt;br /&gt;
&lt;br /&gt;
More recent version of this file may also be available here (please check which is more up to date):&lt;br /&gt;
&lt;br /&gt;
    http://www.unstable.it/luca/inkscape.pot&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can checkout the full SVN project repository and generate the project template. Information on how to get the source tree can be found [http://inkscape.org/svn.php here]. Then, you have to follow some steps in order to generate the template:&lt;br /&gt;
&lt;br /&gt;
 1. &amp;quot;./autogen.sh&amp;quot;&lt;br /&gt;
 2. &amp;quot;./configure&amp;quot;&lt;br /&gt;
 3. enter the &amp;quot;po&amp;quot; directory: &amp;quot;cd po&amp;quot;&lt;br /&gt;
 4. generate the current PO template: &amp;quot;intltool-update --pot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
To make an absolutely up-to-date translation (in case the PO file in SVN is not up-to-date enough), &lt;br /&gt;
&lt;br /&gt;
 1. update your local copy of Inkscape in the usual way: &amp;quot;svn update&amp;quot;&lt;br /&gt;
 2. merge your existing translations into the new POT file (inkscape.pot):&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;msgmerge your_latest_PO_file inkscape.pot &amp;gt; new_PO_file&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If you want to update ALL .po files in po/, cd there and run:&lt;br /&gt;
&lt;br /&gt;
 make update-po&lt;br /&gt;
&lt;br /&gt;
Now that you have an empty PO template, you can start translating the messages.&lt;br /&gt;
&lt;br /&gt;
== Tools for translators ==&lt;br /&gt;
&lt;br /&gt;
You can edit PO files from any plain text editor, since they are simple text files. However, many useful tools have been developed to provide a simple experience translating PO files.&lt;br /&gt;
&lt;br /&gt;
* emacs' po-mode (contained in the gettext distribution; the version in po-utils is old)&lt;br /&gt;
* kbabel (http://i18n.kde.org/tools/kbabel/)&lt;br /&gt;
* gtranslator (http://gtranslator.sourceforge.net/)&lt;br /&gt;
* poEdit (http://www.poedit.net/)&lt;br /&gt;
* GEdit (installed on GNOME desktops) has a syntax highlight mode for PO file syntax.&lt;br /&gt;
&lt;br /&gt;
And last but not least, [http://www.gnu.org/software/gettext/manual/ gettext] utils, which are installed on every linux distribution. You can see a complete reference too from installed info pages by running the command:&lt;br /&gt;
&lt;br /&gt;
  info gettext&lt;br /&gt;
&lt;br /&gt;
== A few important things to remember ==&lt;br /&gt;
&lt;br /&gt;
* Some strings that can be ambiguous or having several meanings according to different contexts may have a context prefix : &amp;quot;Context|Amibiguous string&amp;quot;. In this case, simply translate &amp;quot;Ambiguous string&amp;quot;, the &amp;quot;Context|&amp;quot; string is just a not to translate indication. (Some info on how to disambiguate a string can be found [http://developer.gnome.org/doc/API/2.0/glib/glib-I18N.html#Q-:CAPS here].)&lt;br /&gt;
* After translating a fuzzy string (one that is marked with a &amp;quot;, fuzzy&amp;quot; comment), please remove its &amp;quot;fuzzy&amp;quot; tag -- otherwise this translation will be discarded by the build process, meaning that this string will show up untranslated. KBabel can do this automatically (see KBabel settings).&lt;br /&gt;
* Before publishing your work (after you have finished updating the PO file), please update the &amp;quot;PO-Revision-Date&amp;quot; and &amp;quot;Last-Translator&amp;quot; fields in the PO file header. KBabel can do this automatically.&lt;br /&gt;
&lt;br /&gt;
== Review ==&lt;br /&gt;
&lt;br /&gt;
This is the start of a list of places to get translation reviews done.  So far:&lt;br /&gt;
  http://www.linux.it/tp/&lt;br /&gt;
&lt;br /&gt;
== Verification ==&lt;br /&gt;
&lt;br /&gt;
Before submitting your file in the patch tracker, please make sure it is valid:&lt;br /&gt;
* Make sure the file is encoded in UTF-8 &lt;br /&gt;
* Make sure it is a valid po file and obtain some statistics about it: simply run &amp;quot;msgfmt --statistics -cv translationFile.po&amp;quot; from a command window&lt;br /&gt;
* Make sure it is correctly formatted: run &amp;quot;check-markup translationFile.po&amp;quot; from a command window and verify it doesn't output any error message. &amp;quot;check-markup&amp;quot; perl script can be found in the /po directory of Inkscape svn trunk&lt;br /&gt;
&lt;br /&gt;
== Locale Testing ==&lt;br /&gt;
&lt;br /&gt;
Before reporting that a locale doesn't work in Inkscape, you need to make sure that your system has that locale correctly set up.  To do this, you need to generally find a way to run &amp;quot;locale-gen&amp;quot;.  (Under Debian/Ubuntu this is via &amp;quot;dpkg-reconfigure locales&amp;quot;.)  If you set both the LANG and LANGUAGE variables and check a regular tool, you should see the correct language for both the libc error (first line) and the tool error (second line):&lt;br /&gt;
&lt;br /&gt;
 LANG=es_MX LANGUAGE=es_MX ls -z&lt;br /&gt;
 ls: opci&amp;amp;oacute;n inv&amp;amp;aacute;lida -- z&lt;br /&gt;
 Pruebe `ls --help' para m&amp;amp;aacute;s informaci&amp;amp;oacute;n.&lt;br /&gt;
&lt;br /&gt;
If it reports the regular C messages, your locale has not been correctly configured, and you'll need to find the right way to run &amp;quot;locale-gen&amp;quot; for your distribution:&lt;br /&gt;
&lt;br /&gt;
 LANG=es_ES LANGUAGE=es_MX ls -z&lt;br /&gt;
 ls: invalid option -- z&lt;br /&gt;
 Try `ls --help' for more information.&lt;br /&gt;
&lt;br /&gt;
== Submit finished work ==&lt;br /&gt;
&lt;br /&gt;
Upload your work via the [[Launchpad]] bug tracker:&lt;br /&gt;
&lt;br /&gt;
    https://bugs.launchpad.net/inkscape/&lt;br /&gt;
&lt;br /&gt;
Report a new bug and attach your translated file to it. Don't forget to compress your file before uploading it.&lt;br /&gt;
&lt;br /&gt;
Additionally, you may send a message to Inkscape's translators mailing list.&lt;br /&gt;
&lt;br /&gt;
== Programmers ==&lt;br /&gt;
Please make sure you use [http://www.gnu.org/software/gettext/manual/html_mono/gettext.html#SEC150 dgettext] for any pluralized strings.&lt;br /&gt;
&lt;br /&gt;
= Windows installer translation =&lt;br /&gt;
&lt;br /&gt;
Strings for Windows installer are saved in *.nsh files. Each translation has its own file located in ''packaging\win32\'' directory of subversion checkout. Get this file in similar way of getting *.po file.&lt;br /&gt;
=== Translating ===&lt;br /&gt;
# Get the file according to your language. If there is not such a file, copy ''english.nsh'' file and rename it to ''yourlanguage.nsh''.&lt;br /&gt;
# Translate strings in the file&lt;br /&gt;
# Change '''!insertmacro MUI_LANGUAGE &amp;quot;English&amp;quot;''' and each occurence of '''${LANG_ENGLISH}''' to values corresponding with your language. For example '''!insertmacro MUI_LANGUAGE &amp;quot;Czech&amp;quot;''' and '''${LANG_CZECH}'''.&lt;br /&gt;
# Change header information in '''yourlanguage.nsh''' file, like &amp;quot;windows code page&amp;quot; and &amp;quot;Authors&amp;quot; to proper values.&lt;br /&gt;
=== Testing the translation ===&lt;br /&gt;
# This part is optional but recommended. For this part you need [http://nsis.sourceforge.net/Main_Page NSIS installer] and run &amp;lt;pre&amp;gt;make -f Makefile.mingw dist&amp;lt;/pre&amp;gt; command after succesfull compilation of Inkscape. This command prepares binary of Inkscape for installator creation.&lt;br /&gt;
# Add filename of your file to '''inkscape.nsi''' file, &amp;quot;STRING LOCALIZATION&amp;quot; section, &amp;quot;Language files&amp;quot; subsection.&lt;br /&gt;
# Right click on the inkscape.nsi file and choose &amp;quot;Compile NSIS Script&amp;quot;. The installer compilation will start.&lt;br /&gt;
# When the installer is finished, run it to test translations of strings in Installer and Uninstaller parts.&lt;br /&gt;
# If the translation is tested succesfully, submit it to the patch tracker at sourceforge.net and mark as &amp;quot;Translation&amp;quot;. If you haven't tested your translation yet, submit it too but enter this information to the patch information. You will be contacted about its correctness.&lt;br /&gt;
&lt;br /&gt;
= Default template translation =&lt;br /&gt;
&lt;br /&gt;
* To translate default template, modify the default.svg file and save it as default.xx.svg where &amp;quot;xx&amp;quot; is ISO code of your language. The file can be found in ''/usr/share/inkscape/templates/'' directory on Linux, or ''C:\Program Files\Inkscape\share\templates\'' directory on MS Windows(tm). Also you can get it from [http://svn.sourceforge.net/viewcvs.cgi/inkscape/inkscape/trunk/share/templates/ SVN repository]. &lt;br /&gt;
* You need to modify your PO translation as well to use your localized default template. Look up for a msgid &amp;quot;default.svg&amp;quot; on the PO file and translate it accordingly to the file name of the localized template.&lt;br /&gt;
* To test it, save it to the proper location and restart Inkscape. Default document should be now based on your localized template. (This is valid if your system is properly set to your locales).&lt;br /&gt;
* Upload default.xx.svg to the patch tracker.&lt;br /&gt;
&lt;br /&gt;
To translate default template can be used Inkscape as well as any UTF-8 encoding capable text editor.&lt;br /&gt;
&lt;br /&gt;
= Translation information =&lt;br /&gt;
Go Back to the main [http://wiki.inkscape.org/wiki/index.php/Translation_information Translation information] page.&lt;/div&gt;</summary>
		<author><name>Mfloryan</name></author>
	</entry>
</feed>