Merge branch 'master' into history
authorAndy Allan <andy@gravitystorm.co.uk>
Sat, 24 Mar 2012 11:42:44 +0000 (11:42 +0000)
committerAndy Allan <andy@gravitystorm.co.uk>
Sat, 24 Mar 2012 11:42:44 +0000 (11:42 +0000)
Conflicts:
net/systemeD/halcyon/connection/Entity.as
net/systemeD/halcyon/connection/XMLBaseConnection.as
net/systemeD/halcyon/connection/XMLConnection.as
net/systemeD/potlatch2/TagViewer.mxml
net/systemeD/potlatch2/controller/ControllerState.as

185 files changed:
README.txt
build.properties.template
build.xml
embedded/delete.svg
embedded/multipolygon.svg [new file with mode: 0644]
embedded/tab_transport.png
halcyon_viewer-config.xml
halcyon_viewer.as
l10n/locale/ast/help_dialog.properties [new file with mode: 0644]
l10n/locale/ast/p2_main.properties [new file with mode: 0644]
l10n/locale/br/help_dialog.properties [new file with mode: 0644]
l10n/locale/br/p2_main.properties [new file with mode: 0644]
l10n/locale/ca/p2_main.properties [new file with mode: 0644]
l10n/locale/de_DE/help_dialog.properties
l10n/locale/de_DE/p2_main.properties
l10n/locale/en_GB/help_dialog.properties
l10n/locale/en_GB/p2_main.properties
l10n/locale/en_US/help_dialog.properties
l10n/locale/en_US/p2_main.properties
l10n/locale/es_ES/help_dialog.properties [new file with mode: 0644]
l10n/locale/es_ES/p2_main.properties [new file with mode: 0644]
l10n/locale/fa/p2_main.properties [new file with mode: 0644]
l10n/locale/fi/p2_main.properties [new file with mode: 0644]
l10n/locale/fr_FR/help_dialog.properties
l10n/locale/fr_FR/p2_main.properties
l10n/locale/ga/p2_main.properties [new file with mode: 0644]
l10n/locale/gl/help_dialog.properties [new file with mode: 0644]
l10n/locale/gl/p2_main.properties [new file with mode: 0644]
l10n/locale/he/help_dialog.properties [new file with mode: 0644]
l10n/locale/he/p2_main.properties [new file with mode: 0644]
l10n/locale/hsb/help_dialog.properties [new file with mode: 0644]
l10n/locale/hsb/p2_main.properties [new file with mode: 0644]
l10n/locale/hu/help_dialog.properties [new file with mode: 0644]
l10n/locale/hu/p2_main.properties [new file with mode: 0644]
l10n/locale/ia/help_dialog.properties [new file with mode: 0644]
l10n/locale/ia/p2_main.properties [new file with mode: 0644]
l10n/locale/ja_JP/help_dialog.properties [new file with mode: 0644]
l10n/locale/ja_JP/p2_main.properties [new file with mode: 0644]
l10n/locale/ka/p2_main.properties [new file with mode: 0644]
l10n/locale/lb/p2_main.properties [new file with mode: 0644]
l10n/locale/mk/help_dialog.properties [new file with mode: 0644]
l10n/locale/mk/p2_main.properties [new file with mode: 0644]
l10n/locale/ms/help_dialog.properties [new file with mode: 0644]
l10n/locale/ms/p2_main.properties [new file with mode: 0644]
l10n/locale/nb_NO/help_dialog.properties [new file with mode: 0644]
l10n/locale/nb_NO/p2_main.properties [new file with mode: 0644]
l10n/locale/nl_NL/help_dialog.properties [new file with mode: 0644]
l10n/locale/nl_NL/p2_main.properties [new file with mode: 0644]
l10n/locale/nn_NO/help_dialog.properties [new file with mode: 0644]
l10n/locale/nn_NO/p2_main.properties [new file with mode: 0644]
l10n/locale/no_NO [new symlink]
l10n/locale/pl_PL/help_dialog.properties
l10n/locale/pl_PL/p2_main.properties
l10n/locale/ru/help_dialog.properties [new file with mode: 0644]
l10n/locale/ru/p2_main.properties [new file with mode: 0644]
l10n/locale/sq/help_dialog.properties [new file with mode: 0644]
l10n/locale/ta/p2_main.properties [new file with mode: 0644]
l10n/locale/tr/p2_main.properties [new file with mode: 0644]
l10n/locale/uk/help_dialog.properties [new file with mode: 0644]
l10n/locale/uk/p2_main.properties [new file with mode: 0644]
l10n/locale/vi_VN/help_dialog.properties [new file with mode: 0644]
l10n/locale/vi_VN/p2_main.properties [new file with mode: 0644]
l10n/locale/zh_CN/help_dialog.properties [new file with mode: 0644]
l10n/locale/zh_CN/p2_main.properties [new file with mode: 0644]
l10n/map/LocalizationMap.mxml
lib/Framework_BabelFx-2.0.4.swc [new file with mode: 0644]
lib/Framework_BabelFx-g400a96.swc [deleted file]
lib/ant-contrib-1.0b3.jar [new file with mode: 0644]
lib/flexTasks.jar
lib/vector-collection-1.1.0-Final.swc [new file with mode: 0644]
net/systemeD/controls/AutoComplete.as
net/systemeD/controls/DataGridWarningField.as
net/systemeD/controls/FloatingAlert.as
net/systemeD/controls/PromptingTextInputWarning.as
net/systemeD/controls/Spinner.as [new file with mode: 0644]
net/systemeD/halcyon/DebugURLRequest.as
net/systemeD/halcyon/JSController.as
net/systemeD/halcyon/Map.as
net/systemeD/halcyon/MapEvent.as
net/systemeD/halcyon/MapPaint.as
net/systemeD/halcyon/NodeUI.as
net/systemeD/halcyon/TileSet.as
net/systemeD/halcyon/WayUI.as
net/systemeD/halcyon/connection/Connection.as
net/systemeD/halcyon/connection/Entity.as
net/systemeD/halcyon/connection/EntityCollection.as
net/systemeD/halcyon/connection/Node.as
net/systemeD/halcyon/connection/Relation.as
net/systemeD/halcyon/connection/StatusFetcher.as
net/systemeD/halcyon/connection/Tag.as
net/systemeD/halcyon/connection/TagEvent.as
net/systemeD/halcyon/connection/Trace.as
net/systemeD/halcyon/connection/Way.as
net/systemeD/halcyon/connection/XMLBaseConnection.as
net/systemeD/halcyon/connection/XMLConnection.as
net/systemeD/halcyon/connection/actions/AddNodeToWayAction.as
net/systemeD/halcyon/connection/actions/DeleteWayAction.as
net/systemeD/halcyon/connection/actions/ReplaceNodeAction.as
net/systemeD/halcyon/connection/actions/ReplaceNodeWithNewAction.as [new file with mode: 0644]
net/systemeD/halcyon/connection/bboxes/Box.as [new file with mode: 0755]
net/systemeD/halcyon/connection/bboxes/FetchSet.as [new file with mode: 0644]
net/systemeD/halcyon/connection/bboxes/Interval.as [new file with mode: 0755]
net/systemeD/halcyon/styleparser/CSSTransform.as [new file with mode: 0644]
net/systemeD/halcyon/styleparser/InstructionStyle.as
net/systemeD/halcyon/styleparser/RuleSet.as
net/systemeD/halcyon/styleparser/ShapeStyle.as
net/systemeD/halcyon/styleparser/Style.as
net/systemeD/halcyon/styleparser/StyleChooser.as
net/systemeD/halcyon/styleparser/TagValue.as [new file with mode: 0644]
net/systemeD/potlatch2/BackgroundSelector.mxml
net/systemeD/potlatch2/EditController.as
net/systemeD/potlatch2/StyleSelector.mxml
net/systemeD/potlatch2/TagGrid.mxml
net/systemeD/potlatch2/TagViewer.mxml
net/systemeD/potlatch2/Toolbox.mxml
net/systemeD/potlatch2/VectorSourceDialog.mxml
net/systemeD/potlatch2/collections/VectorBackgrounds.as
net/systemeD/potlatch2/controller/ControllerState.as
net/systemeD/potlatch2/controller/DragSelection.as
net/systemeD/potlatch2/controller/DrawWay.as
net/systemeD/potlatch2/controller/NoSelection.as
net/systemeD/potlatch2/controller/SelectedMultiple.as
net/systemeD/potlatch2/controller/SelectedPOINode.as
net/systemeD/potlatch2/controller/SelectedParallelWay.as
net/systemeD/potlatch2/controller/SelectedWay.as
net/systemeD/potlatch2/controller/SelectedWayNode.as
net/systemeD/potlatch2/help/HelpDialog.mxml
net/systemeD/potlatch2/help/VideoPlayer.mxml
net/systemeD/potlatch2/mapfeatures/Feature.as
net/systemeD/potlatch2/mapfeatures/MapFeatures.as
net/systemeD/potlatch2/mapfeatures/editors/CheckboxEditor.mxml
net/systemeD/potlatch2/mapfeatures/editors/ChoiceEditor.mxml
net/systemeD/potlatch2/mapfeatures/editors/FreeTextEditor.mxml
net/systemeD/potlatch2/mapfeatures/editors/NumberEditor.mxml
net/systemeD/potlatch2/mapfeatures/editors/RelationMemberEditorFactory.as
net/systemeD/potlatch2/mapfeatures/editors/RestrictionRenderer.mxml
net/systemeD/potlatch2/mapfeatures/editors/RouteEditor.mxml
net/systemeD/potlatch2/mapfeatures/editors/RouteIcon.mxml
net/systemeD/potlatch2/mapfeatures/editors/SingleTagEditor.as
net/systemeD/potlatch2/mapfeatures/editors/SingleTagEditorFactory.as
net/systemeD/potlatch2/mapfeatures/editors/SliderEditor.mxml
net/systemeD/potlatch2/mapfeatures/editors/SpeedEditor.mxml
net/systemeD/potlatch2/mapfeatures/editors/TurnRestrictionEditor.mxml
net/systemeD/potlatch2/mygpx/MyGpxDialog.mxml
net/systemeD/potlatch2/options/OptionsDialog.mxml
net/systemeD/potlatch2/panels/BackgroundMergeFieldComponent.as [new file with mode: 0644]
net/systemeD/potlatch2/panels/BackgroundMergePanel.mxml [new file with mode: 0644]
net/systemeD/potlatch2/panels/BackgroundPanel.mxml
net/systemeD/potlatch2/save/OAuthPanel.mxml
net/systemeD/potlatch2/save/SaveDialog.mxml
net/systemeD/potlatch2/skins/CustomFormItemSkin.mxml [new file with mode: 0644]
net/systemeD/potlatch2/skins/CustomFormSkin.mxml [new file with mode: 0644]
net/systemeD/potlatch2/tools/Simplify.as
net/systemeD/potlatch2/utils/BikeShopLoader.as
net/systemeD/potlatch2/utils/BugLoader.as
net/systemeD/potlatch2/utils/GpxImporter.as
net/systemeD/potlatch2/utils/Importer.as
net/systemeD/potlatch2/utils/KmlImporter.as
net/systemeD/potlatch2/utils/OsmImporter.as
net/systemeD/potlatch2/utils/SnapshotConnection.as
net/systemeD/potlatch2/utils/SnapshotLoader.as
net/systemeD/potlatch2/utils/TrackLoader.as
potlatch2.mxml
resources/expressInstall.swf [new file with mode: 0755]
resources/halcyon.html
resources/icons/logo_nls70-nq8.png [new file with mode: 0644]
resources/imagery.xml
resources/map_features.xml
resources/map_features/amenities.xml
resources/map_features/buildings.xml
resources/map_features/landuse.xml
resources/map_features/transport.xml [changed mode: 0644->0755]
resources/potlatch2.html
resources/stylesheets/core_interactive.css
resources/stylesheets/core_landuse.css
resources/stylesheets/core_ways.css
resources/stylesheets/potlatch.css
resources/stylesheets/snapshot.css [new file with mode: 0644]
resources/vectors.xml
styles/Application.css
tests/fakeroot/embedded [new symlink]
tests/src/net/systemeD/halcyon/connection/NodeTest.as
tests/src/net/systemeD/halcyon/connection/actions/AddMemberToRelationActionTest.as
tests/src/net/systemeD/halcyon/connection/actions/JoinNodeActionTest.as
tests/src/net/systemeD/halcyon/connection/actions/SetTagActionTest.as

index dabfc42..563c982 100644 (file)
@@ -12,7 +12,7 @@ Many icons used in halcyon/potlatch2 are based on the awesome CC0-licensed SJJB
 
 * Flex SDK 4.5
 ** Product page: http://www.adobe.com/products/flex/ 
-** Flex 4 Download page: http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4 (free, OS X/Windows/Linux)
+** Flex 4.5 Download page: http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4.5 (free, OS X/Windows/Linux)
 * AS3 docs - http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/
 * Flash debug player - http://www.adobe.com/support/flashplayer/downloads.html
 * Basically you might as well just sell your soul to Adobe
@@ -60,7 +60,8 @@ You can create and run the unit tests (not that there are that many) using flexu
 * ant test
 
 If you're using Mac OS X, you may need to tell ant to use more memory, by
-typing export ANT_OPTS=-Xmx500M beforehand (you can put this in your .profile).
+typing export ANT_OPTS="-Xms768m -Xmx1024m -XX:MaxPermSize=512m" 
+beforehand (you can put this in your .profile).
 
 
 Compiling during development:
index 55fcec5..d24b972 100644 (file)
@@ -19,4 +19,4 @@ test.src.dir = ${basedir}/tests/src
 test.fakeroot.dir = ${basedir}/tests/fakeroot
 test.bin.dir = ${basedir}/tests/bin
 report.dir = ${basedir}/tests/report
-report.html.dir = ${basedir}/tests/report/html
\ No newline at end of file
+report.html.dir = ${basedir}/tests/report/html
index 8e7b87f..7b9ec07 100644 (file)
--- a/build.xml
+++ b/build.xml
@@ -1,4 +1,4 @@
-<project name="Potlatch 2" default="debug">
+<project name="Potlatch 2" default="debug" xmlns:ac="antlib:net.sf.antcontrib">
 
   <!-- load properties from the environment -->
   <property environment="env" />
@@ -9,6 +9,9 @@
   <!-- flexTasks comes with flex, but apparently it's good practice to put in the libs folder -->
   <taskdef resource="flexTasks.tasks" classpath="${basedir}/lib/flexTasks.jar"/>
 
+  <!-- ant-contrib to build multiple locales -->
+  <taskdef uri="antlib:net.sf.antcontrib" resource="net/sf/antcontrib/antlib.xml" classpath="${basedir}/lib/ant-contrib-1.0b3.jar"/>
+
   <!-- if you are running git-svn, you need to run "git tag -a 0.4 0ac0de" where 0ac0de corresponds to the commitid of
       potlatch2 v0.4 . You need to do this for each point release while we're still in SVN.
       If you don't, then expect "git describe" to fail miserably.
   </target>
 
   <!-- note that there's an asdoc target in Flex 4, if/when we move to that -->
-  <target name="docs" depends="manifests">
+  <target name="docs" depends="manifests,makeLocalesList">
     <exec executable="${ASDOC}" failonerror="true">
-      <arg line="-source-path ."/>
-      <arg line="-doc-sources net/systemeD/"/>
+      <arg line="-source-path=."/>
+      <arg line="-doc-sources=net/systemeD/"/>
       <arg line="-external-library-path=lib/"/>
-      <arg line="-target-player 10.0.0"/>
-      <arg line="-exclude-classes ${org_classes} ${it_classes} ${hxasm_classes} ${com_classes}"/>
-      <arg line="-output resources/docs/"/>
-      <arg line="-window-title 'Halcyon and Potlatch2 Developer documentation'" />
-      <arg line="-main-title 'Halcyon and Potlatch2 Developer documentation'" />
-      <arg line="-footer 'Found an error? Help us fix it. http://wiki.openstreetmap.org/wiki/Potlatch2'"/>
-      <arg line="-package net.systemeD.controls 'Custom-built controls used in Poltatch2'" />
+      <arg line="-external-library-path=${FLEX_HOME}/frameworks/libs/"/>
+      <arg line="-external-library-path=${FLEX_HOME}/frameworks/libs/player/10.2/"/>
+      <arg line="-lenient"/>
+      <arg line="-target-player=10.2.0"/>
+      <arg line="-exclude-classes=${org_classes},${it_classes},${hxasm_classes},${com_classes}"/>
+      <arg line="-output=resources/docs/"/>
+      <arg line="-window-title='Halcyon and Potlatch2 Developer documentation'" />
+      <arg line="-main-title='Halcyon and Potlatch2 Developer documentation'" />
+      <arg line="-footer='Found an error? Help us fix it. http://wiki.openstreetmap.org/wiki/Potlatch2'"/>
+      <arg line="-package net.systemeD.controls 'Custom-built controls used in Potlatch2'" />
       <arg line="-package net.systemeD.halcyon 'The AS3 rendering library'" />
       <arg line="-package net.systemeD.halcyon.connection 'The connection to the main OSM server, and the entities'" />
       <arg line="-package net.systemeD.halcyon.connection.actions 'The undoable actions that apply to OSM data'" />
@@ -77,6 +83,7 @@
       <arg line="-package net.systemeD.potlatch2 'The OpenStreetMap editor'" />
       <arg line="-package net.systemeD.potlatch2.collections 'Singletons for handling collections loaded from config files'" />
       <arg line="-package net.systemeD.potlatch2.controller 'The various controller states that p2 can be in'" />
+      <arg line="-package net.systemeD.potlatch2.find 'The search dialog for jumping to another place'" />
       <arg line="-package net.systemeD.potlatch2.help 'The Help dialog'" />
       <arg line="-package net.systemeD.potlatch2.mapfeatures 'The engine behind the mapfeatures parsing'" />
       <arg line="-package net.systemeD.potlatch2.mapfeatures.editors 'The various widgets used in the Simple panel'" />
@@ -87,7 +94,8 @@
       <arg line="-package net.systemeD.potlatch2.tools 'Data manipulation tools'" />
       <arg line="-package net.systemeD.potlatch2.utils 'Data loading utilities'" />
       
-      <arg line="-left-frameset-width 300" />
+      <arg line="-left-frameset-width=300" />
+      <arg line="-allow-source-path-overlap=true" />
     </exec>
   </target>
 
 
         <fileset id="com_sources" dir="${basedir}/com/" />
         <!-- convert the names of excluded classes to packages with class names -->
-        <pathconvert property="com_classes" pathsep=" " refid="com_sources">
+        <pathconvert property="com_classes" pathsep="," refid="com_sources">
                 <chainedmapper>
                         <globmapper from="${basedir}/*" to="*"/>
                         <mapper type="package" from="*.as" to="*"/>
         <!-- Get the list of all files in the org directory -->
         <fileset id="org_sources" dir="${basedir}/org/" />
         <!-- convert the names of excluded classes to packages with class names -->
-        <pathconvert property="org_classes" pathsep=" " refid="org_sources">
+        <pathconvert property="org_classes" pathsep="," refid="org_sources">
                 <chainedmapper>
                         <globmapper from="${basedir}/*" to="*"/>
                         <mapper type="package" from="*.as" to="*"/>
 
         <fileset id="it_sources" dir="${basedir}/it/" />
         <!-- convert the names of excluded classes to packages with class names -->
-        <pathconvert property="it_classes" pathsep=" " refid="it_sources">
+        <pathconvert property="it_classes" pathsep="," refid="it_sources">
                 <chainedmapper>
                         <globmapper from="${basedir}/*" to="*"/>
                         <mapper type="package" from="*.as" to="*"/>
 
         <fileset id="hxasm_sources" dir="${basedir}/hxasm/" />
         <!-- convert the names of excluded classes to packages with class names -->
-        <pathconvert property="hxasm_classes" pathsep=" " refid="hxasm_sources">
+        <pathconvert property="hxasm_classes" pathsep="," refid="hxasm_sources">
                 <chainedmapper>
                         <globmapper from="${basedir}/*" to="*"/>
                         <mapper type="package" from="*.as" to="*"/>
        
       <!-- Sets java.awt.headless=true so font compilation works in headless environments -->
       <compiler.headless-server>true</compiler.headless-server>
-      <target-player>10.0.0</target-player>
+      <target-player>10.2.0</target-player>
      </mxmlc>
      
      <echo message="The ${test.application.name}.swf test runner has been created in ${test.bin.dir}" />
 
 
         <source-path path-element="${basedir}/l10n/locale/@{locale}"/>
+        <source-path path-element="${basedir}/l10n/locale/en_US"/>
         <include-resource-bundles>help_dialog</include-resource-bundles>
         <include-resource-bundles>p2_main</include-resource-bundles>
 
     </sequential>
   </macrodef>
 
-  <target name="buildLocales">
-    <echo>Building Localization .swf's</echo>
-    <compileLocale locale="en_US" />
-    <compileLocale locale="en_GB" />
-    <compileLocale locale="fr_FR" />
-    <compileLocale locale="de_DE" />
-    <compileLocale locale="pl_PL" />
+  <target name="makeLocalesList">
+    <ac:for param="dirname">
+      <path>
+        <dirset dir="${basedir}/l10n/locale/">
+          <include name="*"/>
+          <exclude name="bundles"/>
+        </dirset>
+      </path>
+      <sequential>
+        <ac:var name="localename" unset="true"/>
+        <basename property="localename" file="@{dirname}" />
+        <script language="javascript"><![CDATA[
+            if ((l = project.getProperty("locales.list")) != null) {
+               project.setUserProperty("locales.list", l+ "," +project.getProperty("localename"));
+            } else {
+               project.setUserProperty("locales.list", project.getProperty("localename"));
+            }
+        ]]></script>
+      </sequential>
+    </ac:for>
   </target>
 
+  <target name="buildLocales" depends="makeLocalesList">
+    <echo>Building Localization .swf's</echo>
+    <ac:for list="${locales.list}" keepgoing="true" param="localename">
+      <sequential>
+        <compileLocale locale="@{localename}" />
+      </sequential>
+    </ac:for>
+  </target>
 
   <target name="deployLocales" depends="buildLocales">
     <echo>Deploying the compiled swf and assets package for the given locales</echo>
-    <deployLocale locale="en_US" />
-    <deployLocale locale="en_GB" />
-    <deployLocale locale="fr_FR" />
-    <deployLocale locale="de_DE" />
-    <deployLocale locale="pl_PL" />
+    <ac:for list="${locales.list}" keepgoing="true" param="localename">
+      <sequential>
+        <deployLocale locale="@{localename}" />
+      </sequential>
+    </ac:for>
   </target>
 
 
index b15b1db..13e7dbf 100644 (file)
@@ -2,73 +2,19 @@
 <!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78)  -->
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
        <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
-       <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
-       <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
-       <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
-       <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
-       <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
-       <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
-       <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
-       <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
        <!ENTITY ns_svg "http://www.w3.org/2000/svg">
        <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
 ]>
-<svg 
-        xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" i:viewOrigin="414.5 304.7754" i:rulerOrigin="0 0" i:pageBounds="0 595.2754 841.8896 0"
-        xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" width="16" height="16"
-        viewBox="0 0 16 16" overflow="visible" enable-background="new 0 0 16 16" xml:space="preserve">
-       <metadata>
-               <variableSets  xmlns="&ns_vars;">
-                       <variableSet  varSetName="binding1" locked="none">
-                               <variables></variables>
-                               <v:sampleDataSets  xmlns="&ns_custom;" xmlns:v="&ns_vars;"></v:sampleDataSets>
-                       </variableSet>
-               </variableSets>
-               <sfw  xmlns="&ns_sfw;">
-                       <slices></slices>
-                       <sliceSourceBounds  y="288.775" x="414.5" width="16" height="16" bottomLeftOrigin="true"></sliceSourceBounds>
-               </sfw>
-<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?><x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 3.0-29, framework 1.6'>
-<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
-
- <rdf:Description rdf:about=''
-  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
- </rdf:Description>
-
- <rdf:Description rdf:about=''
-  xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
- </rdf:Description>
-
- <rdf:Description rdf:about=''
-  xmlns:xap='http://ns.adobe.com/xap/1.0/'
-  xmlns:xapGImg='http://ns.adobe.com/xap/1.0/g/img/'>
-  <xap:CreateDate>2010-03-26T13:10:19Z</xap:CreateDate>
-  <xap:ModifyDate>2010-03-26T13:10:19Z</xap:ModifyDate>
-  <xap:CreatorTool>Illustrator</xap:CreatorTool>
-  <xap:Thumbnails>
-   <rdf:Alt>
-    <rdf:li rdf:parseType='Resource'>
-     <xapGImg:format>JPEG</xapGImg:format>
-     <xapGImg:width>256</xapGImg:width>
-     <xapGImg:height>256</xapGImg:height>
-     <xapGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FUt1rzJoGhwevq+oQWMZFV9ZwrNT+RftN/sRlWTNCH1GnL0mhz6iXDihKZ8h9/c8317/nI/&#xA;yhZFk0m1uNVkHR6fV4T/ALJw0n/JPMDJ2pAfSCfses0fsLqsm+WUcY/0x+zb/ZMC1f8A5yO87XRK&#xA;6fb2mnR/ssqGaQfNpDwP/AZhT7TynlQ/Hm9LpvYXRw/vDOZ99D7N/tYlqH5qfmJfkmfX7ta9RA/1&#xA;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&#xA;dirsVdirsVdirsVf/9k=</xapGImg:image>
-    </rdf:li>
-   </rdf:Alt>
-  </xap:Thumbnails>
- </rdf:Description>
-
- <rdf:Description rdf:about=''
-  xmlns:dc='http://purl.org/dc/elements/1.1/'>
-  <dc:format>image/svg+xml</dc:format>
- </rdf:Description>
-
-</rdf:RDF>
-</x:xmpmeta>
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <?xpacket end='w'?>
-                       </metadata>
-               <g id="Layer_1" i:layer="yes" i:dimmedPercent="50" i:rgbTrio="#4F008000FFFF">
-                       <circle i:knockout="Off" fill="#FF0000" cx="8" cy="8" r="8"/> 
-                       <line i:knockout="Off" fill="none" stroke="#FFFFFF" stroke-width="2" x1="4.062" y1="11.938" x2="11.938" y2="4.062"/>
-                       <line i:knockout="Off" fill="none" stroke="#FFFFFF" stroke-width="2" x1="4.062" y1="4.062" x2="11.938" y2="11.938"/>
-               </g>
-       </svg>
+<svg  xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+        width="12.503" height="17.527" viewBox="0 0 12.503 17.527" overflow="visible" enable-background="new 0 0 12.503 17.527"
+        xml:space="preserve">
+       <g id="Layer_1">
+               <path fill="#404040" d="M12.503,3.764c0-1.338-1.084-2.421-2.42-2.421H2.42C1.084,1.343,0,2.426,0,3.764H12.503z"/>
+               <path fill="#404040" d="M1.21,4.419v10.688c0,1.336,1.083,2.42,2.42,2.42h5.243c1.336,0,2.42-1.084,2.42-2.42V4.419H1.21z"/>
+               <path fill="none" stroke="#404040" stroke-width="0.55" d="M4.375,1.473V1c0-0.4,0.326-0.726,0.727-0.726H7.4
+                       c0.4,0,0.726,0.325,0.726,0.726v0.451"/>
+               <line fill="none" stroke="#FFFFFF" stroke-width="1.21" stroke-linecap="round" x1="6.251" y1="6.208" x2="6.251" y2="15.057"/>
+               <line fill="none" stroke="#FFFFFF" stroke-width="1.21" stroke-linecap="round" x1="9.033" y1="6.208" x2="9.033" y2="15.057"/>
+               <line fill="none" stroke="#FFFFFF" stroke-width="1.21" stroke-linecap="round" x1="3.468" y1="6.208" x2="3.468" y2="15.057"/>
+       </g>
+</svg>
diff --git a/embedded/multipolygon.svg b/embedded/multipolygon.svg
new file mode 100644 (file)
index 0000000..330298c
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
+       <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+       <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+       <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg  xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+        width="14.999" height="15" viewBox="0 0 14.999 15" overflow="visible" enable-background="new 0 0 14.999 15"
+        xml:space="preserve">
+       <g id="Layer_1">
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="0.774" y1="14.271" x2="14.012" y2="1.034"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="3.174" y1="14.271" x2="14.386" y2="3.061"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="0.774" y1="11.872" x2="12.069" y2="0.577"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="0.774" y1="9.472" x2="9.681" y2="0.565"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="0.774" y1="7.071" x2="7.272" y2="0.573"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="0.774" y1="4.671" x2="4.845" y2="0.601"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="0.774" y1="2.271" x2="2.476" y2="0.569"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="5.574" y1="14.271" x2="14.418" y2="5.428"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="7.975" y1="14.271" x2="14.388" y2="7.858"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="10.374" y1="14.271" x2="14.42" y2="10.225"/>
+               <line fill="none" stroke="#7F7F7F" stroke-width="0.5" x1="12.774" y1="14.271" x2="14.373" y2="12.673"/>
+               <rect x="4.499" y="4.971" fill="#FFFFFF" stroke="#000000" width="7.2" height="6.401"/> 
+               <rect x="0.6" y="0.6" fill="none" stroke="#000000" stroke-width="1.2" width="13.8" height="13.799"/> 
+       </g>
+</svg>
index 5cb7d91..8c09690 100644 (file)
Binary files a/embedded/tab_transport.png and b/embedded/tab_transport.png differ
index 4b4c2ed..a4cd4d8 100644 (file)
       <library-path append="true">
           <path-element>lib</path-element>
       </library-path>
+
+       
    </compiler>
+       <static-link-runtime-shared-libraries>true</static-link-runtime-shared-libraries>
 
    <metadata>
       <title>Halcyon</title>
index cbf3c91..3e8598c 100644 (file)
@@ -7,6 +7,7 @@ package {
        import flash.events.*;
        import flash.events.MouseEvent;
        import flash.display.*;
+       import flash.text.Font;
        import flash.text.TextField;
        import flash.external.*;
 //     import bustin.dev.Inspector;
@@ -18,30 +19,45 @@ package {
                function halcyon_viewer():void {
                        stage.align = StageAlign.TOP_LEFT;
                        stage.scaleMode = StageScaleMode.NO_SCALE;
-                       this.loaderInfo.addEventListener(Event.COMPLETE, init);
+                       this.loaderInfo.addEventListener(Event.COMPLETE, startInit);
                }
        
-               private function init(e:Event):void {
+               private function startInit(e:Event):void {
+                       var loader:Loader = new Loader();
+                       loader.contentLoaderInfo.addEventListener(Event.COMPLETE, startApp);
+                       loader.load(new URLRequest("FontLibrary.swf"));
+               }
+
+               private function startApp(event:Event):void {
+                       // Initialise font
+                       var FontLibrary:Class = event.target.applicationDomain.getDefinition("FontLibrary") as Class;
+                       Font.registerFont(FontLibrary.DejaVu);
+
+                       // Get parameters
+                       var params:Object={}; var k:String;
+                       for (k in this.loaderInfo.parameters) params[k]=this.loaderInfo.parameters[k];
+                       Globals.vars.flashvars = loaderInfo.parameters; // ** FIXME - not sure we should use flashvars anywhere in Halcyon/P2
 
-                       theMap = new Map(this.loaderInfo.parameters);
+                       // Initialise map
+                       theMap = new Map();
             theMap.updateSize(stage.stageWidth, stage.stageHeight);
                        addChild(theMap);
-                       Globals.vars.root=theMap;
-                       Globals.vars.nocache = loaderInfo.parameters['nocache'] == 'true';
 
-                       // add debug field
-                       var t:TextField=new TextField();
-                       t.width=400; t.height=100; t.x=400; t.border=true;
-                       t.multiline=true;
-                       addChild(t);
-                       Globals.vars.debug=t;
-            t.visible = loaderInfo.parameters["show_debug"] == 'true';
+                       // Add connection
+                       // ** FIXME - should get the stylesheet from parameters
+                       var conn:Connection = new XMLConnection("Main", params['api'], params['policy'], params);
+                       theMap.addLayer(conn, params['style'], false, true);
+                       theMap.init(params['lat'], params['lon'], params['zoom']);
+
+                       Globals.vars.root=theMap;       // ** FIXME - should no longer be necessary
+                       Globals.vars.nocache = loaderInfo.parameters['nocache'] == 'true';
 
                        stage.addEventListener(MouseEvent.MOUSE_UP, theMap.mouseUpHandler);
                        stage.addEventListener(MouseEvent.MOUSE_MOVE, theMap.mouseMoveHandler);
                        stage.addEventListener(MouseEvent.MOUSE_DOWN, theMap.mouseDownHandler);
 //                     Inspector.getInstance().init(stage);
 
+                       // Zoom buttons
                        var z1:Sprite=new Sprite();
                        z1.graphics.beginFill(0x0000FF); z1.graphics.drawRoundRect(0,0,20,20,5); z1.graphics.endFill();
                        z1.graphics.lineStyle(2,0xFFFFFF);
diff --git a/l10n/locale/ast/help_dialog.properties b/l10n/locale/ast/help_dialog.properties
new file mode 100644 (file)
index 0000000..6b2fe3e
--- /dev/null
@@ -0,0 +1,31 @@
+# Messages for Asturian (Asturianu)
+# Exported from translatewiki.net
+# Author: Xuacu
+
+help.gettingStarted=Primeros pasos
+help.welcome=Bienveníos
+help.whyOpenstreetmap=<p><b>¿Por qué OpenStreetMap?</b> OSM ye un serviciu de mapes nel que tolos datos s'anueven constantemente y los edita xente como tu. La ventaya obvia ye que se pue usar llibremente, pero tamién ye un recursu importante na cartografía de crisis (por exemplu, la utilización de datos d'OSM pa coordinar los esfuerzos de salvamentu nel terremotu d'Haití). La precisión de los datos ye crítica, y ¡esperamos que puedas ufrir voluntariamente parte del to tiempu!</p>
+help.activeMembers=<p><b>+ Pa los miembros activos d'OpenStreetMap</b>, anicia sesión en OSM enantes d'editar</p>
+help.newMembers=<p><b>+ Pa miembros nuevos</b>, por favor visita <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> pa crear una cuenta, anicia sesión, y llueu vuelvi equí pa permitir l'accesu a Potlatch 2 y empezar a editar.</p>
+help.introText=<p><b>Potlatch2</b> ye un editor d'OpenStreetMap (OSM) que te permite editar direutamente per aciu del sitiu Web {0}.</p>
+help.introduction=Introducción
+help.controls=Controles
+help.interfaceControls=Controles de la interfaz
+help.mapBackground=<p>Escueyi'l fondu del mapa d'unu de los elementos de la llista o amiesta'l to propiu ficheru vectorial.</p>
+help.colourStyle=<p>Escueyi l'estilu col que quies ver el mapa. Los colores y l'estilu xeneral cambien y tamién incluyen otres opciones como cadarma d'alambre (wireframe).</p>
+help.gps=GPS
+help.createOsmMap=<p>Crear los datos del mapa OSM usando les traces GPS d'otra xente como fondu</p>
+help.myGps=MyGPS
+help.displayGps=<p>Amuesa les traces GPS que xubisti anteriormente a OpenStreetMap.</p>
+help.undoRedo=Desfacer / Volver a facer
+help.madeMistake=<p>¿T'enquivocasti? Val con calcar desfacer y/o volver a facer pa correxir les ediciones.</p>
+help.help=Ayuda
+help.guideInfomation=<p>Trai esta guía en casu de necesitar dalguna información cuando principies a editar.</p>
+help.save=Guardar
+help.addingFeatures=Amestar carauterístiques
+help.addingFeaturesText=<p><i>Enantes de que principies, la primera regla que tienes que saber ye no que cinca al usu de datos privativos. ¡Los datos de mapes con drechos d'autor o cualesquier otru datu privativu tan estrictamente torgaos! ¡Nun se permite copiar, calcar o cualesquier otra reproducción de trabayos con drechos d'autor! (Fonte: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - Wiki d'OpenStreetMap</a>)</i></p>\n  <p></p>\n  <p>Les carauterístiques lliniales como les cais, caminos, ferrocarriles y siluetes d'edificios vamos llamales equí <b>víes</b>.</p>\n  <p>Si de sópitu notes que te falta la barra llateral con tolos iconos, ye porque seleicionasti una carauterística nel mapa. Simplemente deseleicionala calcando nun área balera del mapa pa que vuelvan a apaecer los iconos.</p>\n            <p><b>Pa crear un puntu (o noyu)</b>, arrastra y suelta l'iconu apropiáu de la barra llateral al mapa. Mira Amestar PDIs pa saber más tocante a crear un PDI (Puntu d'interés)</p>\n            <p><b>Pa crear una vía</b>, principia calcando nel mapa nel puntu de comienzu, y llueu calca en cada puntu socesivu. Fai doble-click p'acabar la llinia o calca Intro.</p>\n            <p><b>Pa crear un polígonu</b>, principia calcando nel mapa nel puntu de comienzu, y llueu calca en cada puntu socesivu (asemeyáu a crear una vía), y acaba calcando nel primer puntu pa zarrar el polígonu.</p>\n            <p>Recuerda, si t'enquivoques puedes siempres calcar nel botón Desfacer. Calcando la tecla Esc se desfairán toles ediciones de la carauterística actual.</p>
+help.editBeg=Editar (Princ.)
+help.editingFeatures=Editar carauterístiques (Principiantes)
+help.editingFeaturesText=<p><b>P'amestar un puntu a una vía esistente</b>, seleiciona la vía y mayús+click nel llugar deseáu.</p>\n    <p><b>Pa desaniciar un puntu</b>, seleiciona'l puntu y calca nel botón Desaniciar elementu nel requexu d'abaxo a mandrecha o calca Desaniciar (o Desaniciar atrás) nel tecláu.</p>\n  <p><b>Pa desaniciar una vía</b>, seleiciona esa vía y calca nel botón Desaniciar elementu nel requexu d'abaxo a mandrecha o calca Mayús+Desaniciar (o Mayús+Desaniciar atrás) nel tecláu.</p>\n    <p><b>Pa mover un puntu</b>, calca y arrastra'l puntu.</p>\n   <p><b>Pa mover una vía</b>, calca y arrastra l'elementu completu. Gabitu: Garra un segmentu cuando nun quieras mover un noyu de mou accidental.</p>\n  <p><b>Pa estender una vía</b>, calca nun puntu final de la vía. Darréu, sigui dibuxando como de vezu.</p>\n    <p><b>P'amestar una vía nueva que s'estiende dende una vía esistente</b>, mayús+click nun puntu del final de la vía. Darréu, sigui dibuxando como de vezu.</p>
+help.shortcuts=Atayos
+help.keyboardShortcuts=Atayos de tecláu
diff --git a/l10n/locale/ast/p2_main.properties b/l10n/locale/ast/p2_main.properties
new file mode 100644 (file)
index 0000000..76e3c04
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Asturian (Asturianu)
+# Exported from translatewiki.net
+# Author: Xuacu
+
+main.undo=Desfacer
+main.redo=Volver a facer
+main.background=Fondu
+main.map_style=Estilu de mapa
+main.gpsButton=Data GPS
+main.gps_data=Data GPS
+main.my_tracks=Les mios traces
+main.clear_gps=Llimpiar
+main.help=Ayuda
+main.options=Opciones
+main.save=Guardar
+tag_viewer.dndprompt=Amestar puntos nuevos arrastrandolos al mapa
+toolbox.delete_node=Desaniciar noyu (Desaniciar)
+toolbox.delete_area=Desaniciar área (May.+Desaniciar)
+toolbox.delete_way=Desaniciar vía (May.+Desaniciar)
+toolbox.delete_item=Desaniciar elementu
+toolbox.reverse_direction=Invertir direición (V)
+toolbox.split_way=Partir vía (X)
+toolbox.merge_ways=Amestar víes
+toolbox.straighten_way=Enderechar vía
+toolbox.make_circular=Facer circular
+toolbox.make_right_angled=Poner n'ángulu rectu (Q)
+toolbox.create_parrallel_way=Crear vía paralela (P)
+oauth.gotLinkBox=Calca nel enllaz d'abaxo p'abrir una páxina web que te pidirá qu'autorices l'accesu d'esta aplicación.
+oauth.authorized=Cuando autorices l'accesu, calca nel botón «Probar accesu» d'abaxo
+oauth.deniedLabel=<b>Se negó l'accesu, compruebalo ya intentalo otra vuelta</b>
+oauth.rememberMe=Recordame
+oauth.permFail=<p>El sirvidor refugó les credenciales d'esta aplicación -- nun se pudo alcontrar un enllaz d'autorización.        </p>\n<p>       <b>L'accesu OAuth nun va ser posible.</b>       </p>\n<p>       Ponte'n contautu col vendedor d'esa aplicación pa saber qué ye lo que pasa.</p>
+oauth.tempFail=Hebo un problema al comunicar col sirvidor pa pidir autorización.    Pue ser por un error temporal, intentalo más sero.
+oauth.tryAccessButton=Probar accesu
+oauth.cancelButton=Encaboxar
+save.editDescription=Escribi una descripción de les tos ediciones. Esto s'utilizará pa dar a otros mapeadores una idea de los cambios que tas faciendo.
+styleSelector.editButton=Editar...
+backgroundSelector.dim=dilir
+backgroundSelector.sharpen=rescamplar
+backgroundSelector.editButton=Editar...
+backgroundSelector.vectorButton=Ficheru vectorial...
+options.tbcheck=Amosar ferramientes
+options.cursorcheck=Usar cursores personalizaos
+options.ok=Aceutar
diff --git a/l10n/locale/br/help_dialog.properties b/l10n/locale/br/help_dialog.properties
new file mode 100644 (file)
index 0000000..ebf062f
--- /dev/null
@@ -0,0 +1,25 @@
+# Messages for Breton (Brezhoneg)
+# Exported from translatewiki.net
+# Author: Fulup
+
+help.gettingStarted=Kregiñ ganti
+help.welcome=Degemer mat
+help.whyOpenstreetmap=<p><b>Da betra OpenStreetMap ?</b> OSM zo ur servij kartennaouiñ ma vez klokaet ha difaziet dibaouez an holl roadennoù anezhañ gant tud vunut eveldoc'h. Emsav eo rak dieub da implijout ha frank a wirioù eo OSM. Deuet eo OSM da vezañ un oberour eus ar c'hentañ troc'h pa vez da verañ enkadennoù zo (da sk. pa oa bet ret kenurzhiañ strivoù savete mab-den  da-heul krenn-douar Haiti). Pouezus-bras eo resister ar roadennoù ha spi hon eus e vo mat deoc'h gouestlañ un tamm eus hoc'h amzer deomp !</p>
+help.activeMembers=<p><b>+ Evit izili oberiant OpenStreetMap</b>, kevreit da OSM a-raok kemmañ tra pe dra.</p>
+help.newMembers=<p><b>+ Evit an izili nevez</b>, kit da welet <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> evit krouiñ ur gont, kevreañ, ha goude-se distreiñ amañ evit aotren ar moned da Potlatch 2 ha stagañ ganti.</p>
+help.introText=<p><b>Potlatch 2</b> a reer eus aozer OpenStreetMap (OSM). Aotren a ra ac'hanoc'h da gemmañ traoù war-eeun dre lec'hienn {0}.</p>
+help.introduction=Digoradur
+help.controls=Kontrolloù
+help.interfaceControls=Kontrolloù an etrefas
+help.mapBackground=<p>Dibabit foñs ar gartenn e-mesk an elfennoù zo war ar roll pe ouzhpennit ho restr vektor deoc'h-c'hwi.</p>
+help.colourStyle=<p>Dibabit ar stil a fell deoc'h gwelet ar gartenn drezañ. Cheñch a ra al livioù hag ar stil hollek ha dibarzhioù all zo ivez evel ar gweled dre neud-orjal (wireframe).</p>
+help.gps=GPS
+help.createOsmMap=<p>Savit roadennoù kartenn OSM en ur ober gant ar roadennoù GPS pourchaset gant tud all evel treuztres foñs kartenn</p>
+help.myGps=MyGPS
+help.displayGps=<p>Diskwel ar roadennoù GPS bet enporzhiet ganeoc'h a-raok war OpenStreetMap.</p>
+help.undoRedo=Dizober / Adober
+help.help=Skoazell
+help.save=Enrollañ
+help.tag=Tikedenn
+help.shortcuts=Berradennoù
+help.keyboardShortcuts=Berradennoù klavier
diff --git a/l10n/locale/br/p2_main.properties b/l10n/locale/br/p2_main.properties
new file mode 100644 (file)
index 0000000..4383b1a
--- /dev/null
@@ -0,0 +1,34 @@
+# Messages for Breton (Brezhoneg)
+# Exported from translatewiki.net
+# Author: Fulup
+
+main.undo=Dizober
+main.redo=Adober
+main.background=Drekleur
+main.map_style=Stil ar gartenn
+main.gpsButton=Roadennoù GPS
+main.gps_data=Roadennoù GPS
+main.clear_gps=Riñsañ
+main.help=Skoazell
+main.options=Dibarzhioù
+main.save=Enrollañ
+tag_viewer.dndprompt=Ouzhpennañ poentoù nevez en ur lakaat anezho da riklañ war ar gartenn
+toolbox.delete_node=Diverkañ ar skoulm (diverkañ)
+toolbox.delete_area=Takad diverkañ (Pennlizh. + Diverkañ)
+toolbox.delete_way=Hent diverkañ (Pennlizh. + Diverkañ)
+toolbox.delete_item=Diverkañ an elfenn
+toolbox.reverse_direction=Eilpennañ an durc'hadur (v)
+toolbox.split_way=Rannañ an hent (X)
+toolbox.merge_ways=Kendeuziñ an hentoù
+toolbox.straighten_way=Eeunaat an hent
+toolbox.make_circular=Lakaat da vezañ kelc'hiek
+toolbox.make_right_angled=Ober ur c'horn skouer (Q)
+toolbox.create_parrallel_way=Krouiñ un hent kenstur (P)
+oauth.deniedLabel=<b>Nac'het eo bet ar moned, gwiriit mat ha klaskit en-dro goude-se</b>
+oauth.rememberMe=Derc'hel soñj ac'hanon
+oauth.cancelButton=Nullañ
+styleSelector.editButton=Kemmañ...
+backgroundSelector.editButton=Kemmañ...
+backgroundSelector.vectorButton=Restr vektor...
+options.tbcheck=Diskouez ar voestad ostilhoù
+options.ok=Mat eo
diff --git a/l10n/locale/ca/p2_main.properties b/l10n/locale/ca/p2_main.properties
new file mode 100644 (file)
index 0000000..aacf566
--- /dev/null
@@ -0,0 +1,37 @@
+# Messages for Catalan (Català)
+# Exported from translatewiki.net
+# Author: Jconstanti
+# Author: Toniher
+
+main.undo=Desfés
+main.redo=Refés
+main.background=Fons
+main.map_style=Estil del mapa
+main.gpsButton=Dades de GPS
+main.gps_data=Dades de GPS
+main.my_tracks=Les meves traces
+main.clear_gps=Neteja
+main.help=Ajuda
+main.options=Opcions
+main.save=Desa
+toolbox.delete_node=Suprimeix el node
+toolbox.delete_area=Suprimeix l'àrea (Maj + Supr)
+toolbox.delete_way=Suprimeix l'àrea (Maj + Supr)
+toolbox.delete_item=Suprimeix l'element
+toolbox.reverse_direction=Canvia la direcció (V)
+toolbox.split_way=Divideix la via
+toolbox.merge_ways=Uneix vies
+toolbox.make_circular=Fer rotonda
+toolbox.create_parrallel_way=Crear via paral·lela (P)
+oauth.gotLinkBox=Feu clic a l'enllaç de sota per obrir una pàgina web on se li demanarà per autoritzar l'accés per a aquesta aplicació.
+oauth.authorized=Una vegada que ha autoritzat l'accés faci clic al botó inferior de 'Provar accés'
+oauth.deniedLabel=<b>S'ha denegat l'accés, si us plau verifiqui i torni a provar</b>
+oauth.rememberMe=Recorda'm
+oauth.permFail=<p>El servidor ha refusat les credencials d'aquesta aplicació - no s'ha pogut obtenir un enllaç d'autorització.</p>\n<p>           <b>OAuth accés impossible.</b>         </p>\n<p>Si us plau, consulteu el proveïdor de l'aplicació per esbrinar el que està passant.</p>
+oauth.tempFail=Hi ha hagut un problema en contactar amb el servidor que dona l'autorització.  Pot ser un error transitori, proveu un altre cop més tard.
+oauth.tryAccessButton=Proveu d'accés
+oauth.cancelButton=Cancel·la
+save.editDescription=Si us plau, introduïu una descripció de les vostres modificacions. Això s'utilitzarà per donar una idea de quins canvis esteu fent a altres dibuixants de mapes.
+styleSelector.editButton=Edita...
+backgroundSelector.editButton=Modifica...
+options.ok=D'acord
index 369a9e4..c95c39e 100644 (file)
@@ -1,4 +1,38 @@
-# de resources file
+# Messages for German (Deutsch)
+# Exported from translatewiki.net
+# Author: Apmon
+# Author: Kghbln
 
-help.gettingStarted = So geht's los
-help.welcome = Willkommen
+help.gettingStarted=So geht's los
+help.welcome=Willkommen
+help.whyOpenstreetmap=<p><b>Warum OpenStreetMap?</b> OSM ist ein Katografierdienst, bei dem alle Daten ständig von Menschen wie du aktualisiert und bearbeitet werden. Der offensichtliche Vorteil ist, dass er kostenfrei genutzt werden kann. OSM ist aber auch ein wichtiger Akteur der Krisenkartografie geworden, wie es beispielsweise die Nutzung von OSM-Daten, zur Koordinierung von Hilfsmaßnahmen, nach dem schweren Erdbeben in Haiti gezeigt hat. Die Genauigkeit dieser Daten ist unerlässlich, und wir hoffen daher, dass du hierzu etwas deiner Zeit beisteuern kannst!</p>
+help.activeMembers=<p><b>+ Für aktive OpenStreetMap-Mitglieder</b>. Bitte vor der Bearbeitung anmelden</p>
+help.newMembers=<p><b>+ Für neue Mitglieder</b>. Bitte <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> aufrufen, um sich zu registrieren sowie anzumelden. Danach hierher zurückkehren, um Zugang zu Potlatch 2 zu erhalten und mit dem Bearbeiten zu beginnen.</p>
+help.introText=<p><b>Potlatch2</b> ist ein OpenStreetMap-Editor, der es ermöglicht Bearbeitungen direkt über die Website {0} zu machen.</p>
+help.introduction=Einführung
+help.controls=Bedienelemente
+help.interfaceControls=Bedienelemente der Benutzeroberfläche
+help.mapBackground=<p>Wähle deinen Kartenhintergrund aus einem der in der Liste vorhandenen Elemente oder füge deine eigene Vektordatei hinzu.</p>
+help.colourStyle=<p>Wähle die Anmutung, in der du die Karte angezeigt bekommen möchtest. Farben sowie Stil variieren und beinhalten auch andere Optionen, wie die Drahtgitterdarstellung.</p>
+help.gps=GPS
+help.createOsmMap=<p>Erstellen von OSM-Kartendaten auf Basis im Hintergrund angezeigter GPS-Tracks anderer Menschen</p>
+help.myGps=Mein GPS
+help.displayGps=<p>Anzeigen von GPS-Spuren, die du zuvor nach OpenStreetMap hochgeladen hast</p>
+help.undoRedo=Rückgängig machen / Wiederherstellen
+help.madeMistake=<p>Ein Fehler ist passiert? Klicke einfach auf „Rückgängig machen“ und/oder „Wiederherstellen“, um deine Bearbeitungen zu berichtigen.</p>
+help.help=Hilfe
+help.guideInfomation=<p>Öffnet diese Anleitung für den Fall, dass du am Anfang deiner Bearbeitungen Informationen benötigst.</p>
+help.save=Speichern
+help.addingFeatures=Hinzufügen von Funktionen
+help.addingFeaturesText=<p><i>Bevor du anfängst, musst du den Umgang mit geschützten Daten kennen. Daten aus urheberrechtlich geschützten Karten und andere geschützte Daten sind streng verboten! Das Kopieren, Nachvollziehen und Wiedergeben urheberrechtlich geschützter Werke ist nicht erlaubt! (Quelle: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Urheberrechtshinweise - OpenStreetMap-Wiki</a>)</i></p>\n  <p></p>\n  <p>Zu linearen Funktionen wie bswp. Straßen, Fußwegen, Bahnlinien und Gebäudeumrissen wird im Folgenden als <b>Wege</b> Bezug genommen.</p>\n  <p>Sofern du plötzlich bemerkst, dass die Seitenleiste mitsamt den Symbolen nicht mehr angezeigt wird, liegt das daran, dass du eine Funktion direkt auf der Karte ausgewählt hast. Nimm die Auswahl zurück, indem du einfach einen leeren Bereich der Karte anklickst, um wieder die Symbole angezeigt zu bekommen.</p>\n            <p><b>Um einen Punkt (oder Knotenpunkt) zu erstellen</b>, zieht man das passende, in der Seitenleiste vorhandene, Symbol auf die Karte und legt es dort ab. Siehe auch „Sehenswürdigkeiten hinzufügen“, um mehr zum Erstellen einer Sehenswürdigkeit <i>(POI - Point of Interest)</i> zu erfahren.</p>\n            <p><b>Um einen Weg anzulegen</b>, klickt man zunächst dessen Anfangspunkt auf der Karte an. Danach klickt man die Folgepunkte zur Darstellung des Weges an. Am Endpunkt des Weges macht man einen Doppelklick oder drückt die Entertaste.</p>\n            <p><b>Um ein Polygon zu erstellen</b>, klickt man zunächst den Ausgangspunkt auf der Karte an. Danach klickt man, ähnlich dem Erstellen eines Weges, auf der Karte die Folgepunkt an und beendet die Aktion, indem man am Ende wieder den Ausgangspunkt anklickt, um das Polygon abzuschließen.</p>\n            <p>Sofern du einen Fehler machst, kannst du stets die Schaltfläche „Rückgängig“ anklicken. Das Drücken der Escapetaste macht alle deine Bearbeitungen zur aktuellen Funktion rückgängig.</p>
+help.editBeg=Bearbeiten (Anfänger)
+help.editingFeatures=Funktionen zum Bearbeiten (Anfänger)
+help.editingFeaturesText=<p><b>Um einen Punkt zu einem vorhandenen Weg hinzuzufügen</b>, wählt man den Weg aus, drückt die Umschalttaste und klickt den gewünschten Punkt an.</p>\n    <p><b>Um einen Punkt zu löschen</b>, wählt man den Punkt aus und klickt auf die Schaltfläche „Objekt löschen“ in der unteren rechten Ecke, oder man drückt auf der Tastatur die Taste Entfernen (bzw. die Rücktaste).</p>\n  <p><b>Um einen Weg zu löschen</b>, wählt man den Weg aus  und klickt auf die Schaltfläche „Objekt löschen“ in der unteren rechten Ecke, oder man drückt auf der Tastatur die Umschalttaste und die Taste Entfernen (bzw. die Umschalttaste und die Rücktaste).</p>\n    <p><b>Um einen Punkt zu verschieben</b>, klickt man ihn an und zieht ihn.</p>\n   <p><b>Um einen Weg zu verschieben</b>, klickt man ihn an und zieht ihn. Tipp: Wähle ein Segment an einer Stelle an der man nicht versehentlich auch einen Knotenpunkt verschieben kann.</p>\n  <p><b>Um einen Weg zu verlängern</b>, klickt man auf einen seiner Endpunkte. Danach fährt man mit wie gewohnt mit dem Zeichnen fort.</p>\n    <p><b>Um einen neuen Weg als Anschluss an einen bestehenden Weg hinzuzufügen</b>, drückt man die Umschalttaste und klickt auf einen der Endpunkte des bestehenden Wegs. Danach fährt man mit wie gewohnt mit dem Zeichnen fort.</p>
+help.editAdv=Bearbeiten (Fortgeschrittene)
+help.editingFeaturesAdv=Funktionen zum Bearbeiten (Fortgeschrittene)
+help.editingFeaturesAdvText=<p><b>Um einen Weg zu teilen</b>, wählt man den Punkt aus, an dem man ihn teilen möchte und klickt auf das Scherensymbol oder drückt die Taste X auf der Tastatur. Hinweis: Füge zunächst einen Knotenpunkt hinzu, um den Weg zwischen zwei Knotenpunkten teilen zu können.</p>\n            <p><b>Um eine Kreuzung zweier Wege zu erstellen</b>, zeichnet man wie gewohnt bis zu der Stelle an der die Kreuzung benötigt wird. Sobald man den Weg über einen anderen Weg führt, werden die Punkte eine blaue Farbe annehmen. Nun klickt man auf einen der jetzt blauen Punkte oder auf eine andere Stelle auf dem Weg, um die Kreuzung zu erstellen.</p>\n            <p><b>Um eine Kreuzung zweier Wege zu entfernen</b>, wählt man einen Punkt auf dem Weg, den man ändern möchte, aus. Danach drückt man die Taste „-“ auf der Tastatur, um den Punkt zu entfernen.</p>\n            <p><b>Um die Richtung eines Wegs umzukehren</b>, klickt man auf die Schaltfläche „Richtung umkehren“, die sich in der rechten unteren Ecke befindet. Die Richtung eines Wegs ist nur bei Funktionen bedeutsam, die über eine Richtungskomponente verfügen, wie bspw. Einbahnstraße, Küstenlinie, Insel, usw.</p>\n            <p><b>Um einen parallel zu einem vorhandenen Weg verlaufenden Weg zu erzeugen</b>, wählt man den vorhandenen Weg aus und klickt auf die Schaltfläche „Parallelen Weg erstellen“ in der rechten unteren Ecke oder drückt die Taste P auf der Tastatur.</p>\n     <p><b>Um einen Weg zu erstellen, der Knotenpunkte mit einem vorhandenen Weg gemeinsam haben soll</b>, fängt man zunächst mit dem Zeichnen an, klickt die ersten zwei gemeinsamen Knotenpunkte an und drückt dann die Taste F, um nun automatisch dem bestehenden Weg zu folgen.</p>\n            <p><i>Besuche <a href="http://wiki.openstreetmap.org/wiki/Potlatch_2/Primer" target="_blank">Potlatch 2 Primer</a> auf dem OpenStreetMap-Wiki, um mehr zu komplexeren Bearbeitungsmöglichkeiten sowie zu Bearbeitungskonventionen zu erfahren.</i></p>
+help.tag=Markieren
+help.taggingFeatures=Funktionen zum Markieren
+help.taggingFeaturesText=<p>Dank Potlatch 2 ist das Tagging von Objekten, unter Verwendung graphischer Menüs sowie vordefinierter Felder/Symbole, recht einfach geworden.</p>\n        <p><b>Tagging von Objekten</b></p>\n        <p>Selektiere den Weg oder Punkt den du bearbeiten möchtest, und wähle das passende Tag aus dem Menü in der linken Seitenleiste aus. Danach erscheinen einige Textfelder in die man, abhängig vom zuvor gewählten Tag, die grundlegenden Eigenschaften, wie bspw. Name, Geschwindigkeitsbegrenzung oder Breite eintragen kann. Fülle diese so gut wie möglich aus.</p>\n        <p>Fortgeschrittene Benutzer werden das Fehlen von ein paar Tags und deren zugehöriger Werte feststellen, die sie gelegentlich nutzen. Sofern eines dieser Tags benötigt wird, klicke auf die Registerkarte „Fortgeschritten“, die sich am unteren Ende der Seitenleiste befindet und füge nach Bedarf die dort vorhandenen Tags hinzu, bzw. bearbeite sie.</p>\n        <p> Das OpenStreetMap-Wiki enthält eine <a href="http://wiki.openstreetmap.org/wiki/Map_features" target="_blank">ausführliche Liste von Tags und deren zugehöriger Werte</a>. Sofern Unklarheiten bezüglich des Taggings bestehen, sollte die in diesem Wiki hinterlegte OSM-Dokumentation zu Rate gezogen werden.</p>
+help.shortcuts=Abkürzungen
+help.keyboardShortcuts=Tastaturabkürzungen
index 2a43a64..dd343ce 100644 (file)
@@ -1,26 +1,43 @@
-# de resources file
+# Messages for German (Deutsch)
+# Exported from translatewiki.net
 
-main.undo = Rückgängig
-main.redo = Wiederholen
-main.background = Hintergrund
-main.map_style = Map-Stil
-main.gps_data = GPS-Daten
-main.my_tracks = Meine Tracks
-main.clear_gps = Clear
-main.help = Hilfe
-main.options = Optionen
-main.save = Speichern
-
-tag_viewer.dndprompt = Neue Punkte durch Ziehen auf die Karte hinzufügen
-
-toolbox.delete_node = Knoten löschen (Entf)
-toolbox.delete_area = Fläche löschen (Umsch+Entf)
-toolbox.delete_way = Weg löschen (Umsch+Entf)
-toolbox.delete_item = Objekt löschen
-toolbox.reverse_direction = Richtung umkehren (V)
-toolbox.split_way = Weg teilen (X)
-toolbox.merge_ways = Wege verbinden
-toolbox.straighten_way = Weg begradigen
-toolbox.make_circular = Kreisförmig anordnen
-toolbox.make_right_angled = Rechtwinklig anordnen (Q)
-toolbox.create_parrallel_way = Parallelen Weg erstellen (P)
\ No newline at end of file
+main.undo=Rückgängig
+main.redo=Wiederholen
+main.background=Hintergrund
+main.map_style=Map-Stil
+main.gpsButton=GPS Daten
+main.gps_data=GPS-Daten
+main.my_tracks=Meine Tracks
+main.clear_gps=Clear
+main.help=Hilfe
+main.options=Optionen
+main.save=Speichern
+tag_viewer.dndprompt=Neue Punkte durch Ziehen auf die Karte hinzufügen
+toolbox.delete_node=Knoten löschen (Entf)
+toolbox.delete_area=Fläche löschen (Umsch+Entf)
+toolbox.delete_way=Weg löschen (Umsch+Entf)
+toolbox.delete_item=Objekt löschen
+toolbox.reverse_direction=Richtung umkehren (V)
+toolbox.split_way=Weg teilen (X)
+toolbox.merge_ways=Wege verbinden
+toolbox.straighten_way=Weg begradigen
+toolbox.make_circular=Kreisförmig anordnen
+toolbox.make_right_angled=Rechtwinklig anordnen (Q)
+toolbox.create_parrallel_way=Parallelen Weg erstellen (P)
+oauth.gotLinkBox=Klicken Sie auf den untenstehenden Link zu einer Webseite, wo Sie aufgefordert, den Zugriff auf diese App genehmigen wird geöffnet sein.
+oauth.authorized=Sobald Sie autorisiert den Zugriff auf das 'versuchen Sie Zugang' Button unten
+oauth.deniedLabel=<b> Zugang verweigert wurde, überprüfen Sie bitte, und versuchen Sie es erneut </b>
+oauth.rememberMe=Erinnere dich an mich
+oauth.permFail=<p>Der Server verweigert diese Anwendung die Anmeldeinformationen -- eine Genehmigung Link konnte nicht abgerufen werden. </p><p> <b>OAuth Zugriff nicht möglich sein wird.</b></p><p>Bitte kontaktieren Sie Hersteller, um herauszufinden, was los ist.</p>
+oauth.tempFail=Es gab ein Problem mit dem Server Kontakt auf Genehmigung zu bekommen. Dies kann ein temporärer Fehler sein, versuchen Sie es später erneut.
+oauth.tryAccessButton=versuchen Sie Zugang
+oauth.cancelButton=Stornieren
+save.editDescription=Bitte geben Sie eine Beschreibung Ihres Bearbeitungen. Dies wird verwendet, um andere Mapper eine Idee, welche Änderungen Sie machen werden.
+styleSelector.editButton=Bearbeiten...
+backgroundSelector.dim=dim
+backgroundSelector.sharpen=sharpen
+backgroundSelector.editButton=Bearbeiten...
+backgroundSelector.vectorButton=Vector file...
+options.tbcheck=Zeige Toolbox
+options.cursorcheck=Verwenden Sie benutzerdefinierte Cursor
+options.ok=Ok
index 7083728..01fb105 100644 (file)
@@ -1,6 +1,5 @@
-# en_GB resources file
-
-help.gettingStarted = Getting Started
-help.welcome = Welcome
-
+# Messages for British English (British English)
+# Exported from translatewiki.net
 
+help.gettingStarted=Getting Started
+help.welcome=Welcome
index 3a70d5d..f4c958d 100644 (file)
@@ -1,26 +1,43 @@
-# en_GB resources file
+# Messages for British English (British English)
+# Exported from translatewiki.net
 
-main.undo = Undo
-main.redo = Redo
-main.background = Background
-main.map_style = Map Style
-main.gps_data = GPS Data
-main.my_tracks = My Tracks
-main.clear_gps = Clear
-main.help = Help
-main.options = Options
-main.save = Save
-
-tag_viewer.dndprompt = Add new points by dragging them onto the map
-
-toolbox.delete_node = Delete Node (Delete)
-toolbox.delete_area = Delete Area (Shift+Delete)
-toolbox.delete_way = Delete Way (Shift+Delete)
-toolbox.delete_item = Delete Item
-toolbox.reverse_direction = Reverse direction (V)
-toolbox.split_way = Split way (X)
-toolbox.merge_ways = Merge ways
-toolbox.straighten_way = Straighten Way
-toolbox.make_circular = Make circular
-toolbox.make_right_angled = Make right-angled (Q)
-toolbox.create_parrallel_way = Create parallel way (P)
\ No newline at end of file
+main.undo=Undo
+main.redo=Redo
+main.background=Background
+main.map_style=Map Style
+main.gpsButton=GPS Data
+main.gps_data=GPS Data
+main.my_tracks=My Tracks
+main.clear_gps=Clear
+main.help=Help
+main.options=Options
+main.save=Save
+tag_viewer.dndprompt=Add new points by dragging them onto the map
+toolbox.delete_node=Delete node (Delete)
+toolbox.delete_area=Delete area (Shift+Delete)
+toolbox.delete_way=Delete way (Shift+Delete)
+toolbox.delete_item=Delete item
+toolbox.reverse_direction=Reverse direction (V)
+toolbox.split_way=Split way (X)
+toolbox.merge_ways=Merge ways
+toolbox.straighten_way=Straighten way
+toolbox.make_circular=Make circular
+toolbox.make_right_angled=Make right-angled (Q)
+toolbox.create_parrallel_way=Create parallel way (P)
+oauth.gotLinkBox=Click the link below to open a web page where you will be asked to authorise access for this application.
+oauth.authorized=Once you've authorised the access click the 'Try access' button below
+oauth.deniedLabel=<b>Access was denied, please check, and try again</b>
+oauth.rememberMe=Remember me
+oauth.permFail=<p>The server refused this application's credentials -- an authorisation link could not be obtained.          </p>\n<p>       <b>OAuth access will not be possible.</b>       </p>\n<p>       Please contact application vendor to find out what's going on.</p>
+oauth.tempFail=There was a problem contacting the server to get authorisation.    This may be a temporary error, try again later.
+oauth.tryAccessButton=Try access
+oauth.cancelButton=Cancel
+save.editDescription=Please enter a description of your edits. This will be used to give other mappers an idea of what changes you are making.
+styleSelector.editButton=Edit...
+backgroundSelector.dim=dim
+backgroundSelector.sharpen=sharpen
+backgroundSelector.editButton=Edit...
+backgroundSelector.vectorButton=Vector file...
+options.tbcheck=Show toolbox
+options.cursorcheck=Use custom cursors
+options.ok=OK
index 32d1870..b9efe24 100644 (file)
@@ -1,6 +1,35 @@
 # en_US resources file
 
-help.gettingStarted = Getting Started
-help.welcome = Welcome
-
-
+help.gettingStarted=Getting Started
+help.welcome=Welcome
+help.whyOpenstreetmap=<p><b>Why OpenStreetMap?</b> OSM is a mapping service in which all data is constantly updated and edited by everyday people like you. The obvious benefit is that it's free to use, but it has also become a major player in crisis mapping (e.g. use of OSM data to coordinate earthquake relief efforts in Haiti). Accuracy of this data is critical, and we hope you are able to volunteer some of your time!</p>
+help.activeMembers=<p><b>+ For active OpenStreetMap members</b>, please sign in to OSM before editing.</p>
+help.newMembers=<p><b>+ For new members</b>, please visit <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> to create an account, log in, then return here to allow access to Potlatch 2 and begin editing.</p>
+help.introText=<p><b>Potlatch 2</b> is an OpenStreetMap (OSM) editor that allows you to make edits directly through {0} website.</p>
+help.introduction=Introduction
+help.controls=Controls
+help.interfaceControls=Interface Controls
+help.mapBackground=<p>Choose your map background from one of the items in the list or add your own vector file.</p>
+help.colourStyle=<p>Choose the style in which you wish to view the map. Colours and overall style vary and also includes other options like wireframe.</p>
+help.gps=GPS
+help.createOsmMap=<p>Create OSM map data using other people's GPS tracks as a background</p>
+help.myGps=MyGPS
+help.displayGps=<p>Display GPS traces that you've previously uploaded to OpenStreetMap.</p>
+help.undoRedo=Undo / Redo
+help.madeMistake=<p>Made a mistake? Just hit undo and/or redo to correct your edits.</p>
+help.help=Help
+help.guideInfomation=<p>Brings up this guide in case you need any information as you begin editing.</p>
+help.save=Save
+help.addingFeatures=Adding Features
+help.addingFeaturesText=<p><i>Before you begin, the first rule you need to know is the use of proprietary data. Data from copyrighted maps or any other proprietary data is strictly prohibited! Copying, tracing or any reproduction of copyrighted work is not allowed! (Source: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - OpenStreetMap Wiki</a>)</i></p>\n  <p></p>\n  <p>Linear features such as streets, footpaths, railways and building outlines will hereby be referred to as <b>ways</b>.</p>\n  <p>If you suddenly realize your sidebar with all the icons have gone missing, it's because you have a feature selected on the map. Simply deselect by clicking on a blank area of the map to bring up the icons again.</p>\n            <p><b>To create a point (or node)</b>, just drag and drop the appropriate icon from the sidebar onto the map. See Add POIs to learn more about creating a POI (Point of Interest)</p>\n            <p><b>To create a way</b>, begin by clicking on the map at its start point, then click at each successive point. Double-click to finish the line or press Enter.</p>\n            <p><b>To create a polygon</b>, begin by clicking on the map at its start point, then click at each successive point (similar to creating a way), and finish by clicking on the very first point to close the polygon.</p>\n            <p>Remember, if you make a mistake, you can always hit the Undo button. Pressing the Esc key will undo all your edits for the current feature.</p>
+help.editBeg=Edit (Beg.)
+help.editingFeatures=Editing Features (Beginner)
+help.editingFeaturesText=<p><b>To add a point to an existing way</b>, select the way and shift+click at the desired location.</p>\n    <p><b>To delete a point</b>, select the point and click the Delete Item button in the bottom right corner or press Delete (or Backspace) on your keyboard.</p>\n  <p><b>To delete a way</b>, select the way and click the Delete Item button in the bottom right corner or press shift+Delete (or shift+Backspace) on your keyboard.</p>\n    <p><b>To move a point</b>, click and drag the point.</p>\n   <p><b>To move a way</b>, click and drag the entire feature. Hint: Grab a segment where you won't accidentally move a node.</p>\n  <p><b>To extend a way</b>, click on one of the end points of the way. Then continue drawing as usual.</p>\n    <p><b>To add a new way extending from an existing way</b>, shift+click on one of the end points of the way. Then continue drawing as usual.</p>
+help.editAdv=Edit (Adv.)
+help.editingFeaturesAdv=Editing Features (Advanced)
+help.editingFeaturesAdvText=<p><b>To split a way</b>, select the point at which you want to cut, and click the Scissor tool or press X on your keyboard. Hint: Add a node first in order to cut between nodes.</p>\n            <p><b>To make a junction between two ways</b>, draw as usual until you need to make a junction. Then as you move your mouse over another way, the points will light up blue. Click on one of the blue points or any other desired location on the way to make a junction.</p>\n            <p><b>To disconnect a junction</b>, select the point on the way you wish to alter. Then press - on your keyboard to remove the point.</p>\n            <p><b>To reverse the direction of a way</b>, click the Reverse Direction button in the bottom right corner. The direction of a way is only a concern for those features with a "oneway" tag - oneway streets, coastlines, islands, and so on.</p>\n            <p><b>To create a way running parallel</b>, select the way and click the Create Parallel Way button in the bottom right corner or press P on your keyboard.</p>\n     <p><b>To create a way that shares nodes with an existing way</b>, start drawing, click the first two shared nodes, then press F to automatically follow the existing way.</p>\n            <p><i>Visit the <a href="http://wiki.openstreetmap.org/wiki/Potlatch_2/Primer" target="_blank">Potlatch 2 Primer</a> on the OpenStreetMap wiki for even more advanced editing methods and conventions.</i></p>
+help.tag=Tag
+help.taggingFeatures=Tagging Features
+help.taggingFeaturesText=<p>With Potlatch 2, tagging features has become relatively easy with its use of graphical menus and dedicated fields/icons.</p>\n          <p><b>Tagging a feature</b></p>\n          <p>Select the point or way that you wish to edit, and choose the appropriate tag from the left sidebar. After tagging the feature, some basic fields should appear such as Name, Speed Limit, and Width, depending on the tag you gave. Fill these out as best you can.</p><p>Advanced users may notice the absence of a few tags and tag values they occasionally use. If this is the case, click on the Advanced tab at the bottom of the sidebar and edit/add as necessary.</p>\n          <p>The OpenStreetMap wiki also provides an <a href="http://wiki.openstreetmap.org/wiki/Map_features" target="_blank">extensive list of tags and tag values</a>. Please refer back to the OSM documentation if you are unsure of which tag to use.</p>
+help.shortcuts=Shortcuts
+help.keyboardShortcuts=Keyboard Shortcuts
index a97e062..c1eb227 100644 (file)
@@ -4,9 +4,45 @@ main.undo = Undo
 main.redo = Redo
 main.background = Background
 main.map_style = Map Style
+main.gpsButton = GPS Data
 main.gps_data = GPS Data
 main.my_tracks = My Tracks
 main.clear_gps = Clear
 main.help = Help
 main.options = Options
 main.save = Save
+
+tag_viewer.dndprompt = Add new points by dragging them onto the map
+
+toolbox.delete_node = Delete node (Delete)
+toolbox.delete_area = Delete area (Shift+Delete)
+toolbox.delete_way = Delete way (Shift+Delete)
+toolbox.delete_item = Delete item
+toolbox.reverse_direction = Reverse direction (V)
+toolbox.split_way = Split way (X)
+toolbox.merge_ways = Merge ways
+toolbox.straighten_way = Straighten way
+toolbox.make_circular = Make circular
+toolbox.make_right_angled = Make right-angled (Q)
+toolbox.create_parrallel_way = Create parallel way (P)
+
+oauth.gotLinkBox=Click the link below to open a web page where you will be asked to authorise access for this application.
+oauth.authorized=Once you've authorised the access click the 'Try access' button below
+oauth.deniedLabel=<b>Access was denied, please check, and try again</b>
+oauth.rememberMe=Remember me
+oauth.permFail=<p>The server refused this application's credentials -- an authorisation link could not be obtained.          </p>\n<p>       <b>OAuth access will not be possible.</b>       </p>\n<p>       Please contact application vendor to find out what's going on.</p>
+oauth.tempFail=There was a problem contacting the server to get authorisation.    This may be a temporary error, try again later.
+oauth.tryAccessButton=Try access
+oauth.cancelButton=Cancel
+
+save.editDescription=Please enter a description of your edits. This will be used to give other mappers an idea of what changes you are making.
+
+styleSelector.editButton=Edit...
+backgroundSelector.dim=dim
+backgroundSelector.sharpen=sharpen
+backgroundSelector.editButton=Edit...
+backgroundSelector.vectorButton=Vector file...
+
+options.tbcheck=Show toolbox
+options.cursorcheck=Use custom cursors
+options.ok=OK
diff --git a/l10n/locale/es_ES/help_dialog.properties b/l10n/locale/es_ES/help_dialog.properties
new file mode 100644 (file)
index 0000000..5058308
--- /dev/null
@@ -0,0 +1,38 @@
+# Messages for Spanish (Español)
+# Exported from translatewiki.net
+# Author: Armando-Martin
+# Author: McDutchie
+
+help.gettingStarted=Primeros pasos
+help.welcome=Bienvenido
+help.whyOpenstreetmap=<p><b>¿Por qué OpenStreetMap?</b> OSM es un servicio de mapas en el que todos los datos se actualizan constantemente y son editados por gente como tú. La ventaja obvia es que es de uso libre, pero también se ha convertido en un jugador importante en el mapeo de crisis (por ejemplo, la utilización de datos de OSM para coordinar los esfuerzos de salvamento en el terremoto de Haití). La precisión de los datos es crítica, y ¡esperamos que puedas dedicar voluntariamente una parte de tu tiempo!</p>
+help.activeMembers=<p><b>+ Para miembros activos de OpenStreetMap</b>, identifícate en OSM antes de editar</p>
+help.newMembers=<p><b>+ Para los nuevos miembros</b>, por favor visite <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> para crear una cuenta, inicie la sesión y luego vuelva aquí para permitir el acceso a Potlatch 2 y empezar a editar.</p>
+help.introText=<p><b>Potlatch2</b> es un editor de OpenStreetMap (OSM) que le permite realizar cambios directamente a través del sitio Web de {0}.</p>
+help.introduction=Introducción
+help.controls=Controles
+help.interfaceControls=Controles de la interfaz
+help.mapBackground=<p>Elija su fondo de mapa de uno de los elementos de la lista o agregue su propio archivo vectorial.</p>
+help.colourStyle=<p>Elija el estilo con el que desea ver el mapa. Los colores y el estilo general varían y también incluyen otras opciones como modelo de alambres (wireframe).</p>
+help.gps=GPS
+help.createOsmMap=<p>Crear datos de mapa OSM utilizando como fondo las pistas GPS de otras personas.</p>
+help.myGps=MiGPS
+help.displayGps=<p>Mostrar las trazas GPS que ha cargado previamente en OpenStreetMap.</p>
+help.undoRedo=Deshacer / Rehacer
+help.madeMistake=<p>¿Ha cometido un error ? Haga clic simplemente en Deshacer o Rehacer para corregir sus modificaciones.</p>
+help.help=Ayuda
+help.guideInfomation=<p>Suministra esta guía en caso de que necesite informaciones cuando empiece a editar.</p>
+help.save=Guardar
+help.addingFeatures=Añadir objetos al mapa
+help.addingFeaturesText=<p><i>Antes de empezar, la primera regla que usted necesita saber es sobre el uso de datos con derechos de autor. ¡Los datos procedentes de mapas con copyright o cualquier otro dato con derechos de autor está estrictamente prohibido! La copia, seguimiento o cualquier reproducción de obras con derechos de autor no está permitido (Fuente: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - OpenStreetMap Wiki</a>)</i></p>\n  <p></p>\n  <p>Las características lineales, tales como calles, caminos, vías férreas y perímetros de construcciones se conocen como <b>caminos</b>.</p>\n   <p>Si de repente se da cuenta de que ha desaparecido su barra lateral con todos los iconos, es porque usted ha seleccionado una característica en el mapa. Simplemente desactive la opción haciendo clic en un área en blanco del mapa para mostrar de nuevo los iconos.</p>\n            <b><p>Para crear un punto (o nodo) </b>, sólo tienes que arrastrar y soltar en el mapa el icono correspondiente de la barra lateral. Véase "Añadir PDI" (Add POIs) para aprender más acerca de la creación de un PDI (Punto de Interés)</p>\n            <p><b>Para crear un camino</b>, comience haciendo clic en el mapa en su punto de partida, a continuación, haga clic en cada punto sucesivo. Haga doble clic para terminar la línea o presione Intro.</p>\n            <p><b>Para crear un polígono</b>, comience haciendo clic en el mapa en su punto de partida, a continuación, haga clic en cada punto sucesivo (similar a la creación de un camino), y termine haciendo clic muy próximo al primer punto para cerrar el polígono.</p>\n            <p>Recuerde, si usted comete un error, siempre puede pulsar el botón Deshacer (Undo). Al pulsar la tecla Esc puede deshacer todas las modificaciones para el objeto actualmente seleccionado.</p>
+help.editBeg=Editar (Princip.)
+help.editingFeatures=Editando elementos (Principiante)
+help.editingFeaturesText=<b><p>Para añadir un punto a una forma ya existente</b>, seleccione la forma y presione shift + clic en la ubicación deseada.</p>\n    <b><p>Para eliminar un punto</b>, seleccione el punto y haga clic en el botón Eliminar elemento en la esquina inferior derecha o pulse la tecla Suprimir (o Retroceso) en el teclado.</p>\n   <p><b>Para eliminar un camino</b>, seleccione la forma y haga clic en el botón Eliminar elemento en la esquina inferior derecha, o presione MAYÚS + Supr (o Shift + Supr) en su teclado.</p>\n    <b><p>Para mover un punto</b>, haga clic y arrastre el punto.</p>\n    <b><p>Para mover un camino</b>, haga clic y arrastre el elemento entero. Sugerencia:  Agarre un segmento en el que no se mueva un nodo accidentalmente</p>\n   <b><p>Para extender un camino</b>, haga clic en uno de los puntos extremos del camino. A continuación, siga dibujando como siempre.</p>\n    <b><p> Para añadir un nuevo camino que se extienda desde un camino ya existente</b>, presione shift + clic en uno de los puntos extremos del camino. A continuación, siga dibujando como siempre.</p>
+help.editAdv=Editar (Avanz.)
+help.editingFeaturesAdv=Editando elementos (Avanzado)
+help.editingFeaturesAdvText=<b><p>Para dividir un camino</b>, seleccione el punto en el que desea cortar, y haga clic en la herramienta Tijera o pulse X en el teclado. Sugerencia: Agregue un nodo antes con el fin de cortar entre dos nodos.</p>\n            <b><p>Para realizar una unión entre dos caminos</b>, dibujar, como de costumbre hasta que usted necesite hacer una unión. Luego, a medida que mueva el ratón sobre la otra forma, los puntos se iluminarán de color azul. Haga clic en uno de los puntos azules o en cualquier otra ubicación del camino para hacer la unión.</p>\n            <b><p>Para desconectar una unión</b>, seleccione el punto del camino que desee alterar. Luego presione "-" en el teclado para eliminar el punto.</p>\n            <p><b>Para invertir la dirección de un camino</b>, haga clic en el botón Invertir dirección en la esquina inferior derecha. La dirección de un camino sólo afecta a los elementos con una etiqueta de "sentido único" ("oneway"): calles de sentido único, líneas de costa, islas, etc.</p>\n            <p><b>Para crear un camino paralelo </b>, seleccione el camino y haga clic en el botón Crear camino paralelo en la esquina inferior derecha o pulse P en el teclado.</p>\n      <p><b>Para crear un camino que comparte nodos con una forma ya existente</b>, empiece a dibujar, haga clic en los dos primeros nodos compartidos, a continuación, pulse F para seguir automáticamente el camino existente.</p>\n            <i><p> Visite el <a href="http://wiki.openstreetmap.org/wiki/Potlatch2/Primer" target="_blank">Potlatch 2 Primer</a> en el wiki de OpenStreetMap, para métodos y convenciones de edición incluso más avanzados.</i> </p>
+help.tag=Etiqueta
+help.taggingFeatures=Etiquetando elementos
+help.taggingFeaturesText=<p>Con Potlatch 2, el etiquetado de elementos se ha vuelto relativamente fácil con el uso de menús gráficos y campos dedicados o iconos.</p>\n          <p><b>Etiquetando un elemento</b></p>\n          <p>Seleccione el punto o el camino que desee editar, y seleccione la etiqueta correspondiente de la barra lateral izquierda. Después de etiquetar elelemento, deben aparecer algunos campos básicos, como el nombre, el límite de velocidad, y la anchura, dependiendo de la etiqueta que se le haya puesto. Complételos lo mejor que pueda.</p><p>Los usuarios avanzados pueden notar la ausencia de algunas etiquetas y valores de variables que se utilizan de vez en cuando. Si este es el caso, haga clic en la ficha Opciones avanzadas en la parte inferior de la barra lateral y Editar/Añadir según sea necesario.</p>\n          <p>El wiki de OpenStreetMap también proporciona una <a href="http://wiki.openstreetmap.org/wiki/Map_features" target="_blank">lista extensa de etiquetas y valores de etiquetas</a>. Por favor, consulte la documentación de OSM si no está seguro de qué etiqueta usar.</p>
+help.shortcuts=Atajos
+help.keyboardShortcuts=Atajos clave
diff --git a/l10n/locale/es_ES/p2_main.properties b/l10n/locale/es_ES/p2_main.properties
new file mode 100644 (file)
index 0000000..f2b58d0
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Spanish (Español)
+# Exported from translatewiki.net
+# Author: Armando-Martin
+
+main.undo=Deshacer
+main.redo=Rehacer
+main.background=Fondo
+main.map_style=Estilo de mapa
+main.gpsButton=Datos GPS
+main.gps_data=Datos GPS
+main.my_tracks=Mis pistas
+main.clear_gps=Borrar
+main.help=Ayuda
+main.options=Opciones
+main.save=Guardar
+tag_viewer.dndprompt=Añadir puntos nuevos arrastrándolos sobre el mapa
+toolbox.delete_node=Borrar nodo (Borrar)
+toolbox.delete_area=Borrar la zona (Mayús+Supr)
+toolbox.delete_way=Borrar laruta (Mayús+Supr)
+toolbox.delete_item=Borrar elemento
+toolbox.reverse_direction=Invertir la ruta (V)
+toolbox.split_way=Dividir camino (X)
+toolbox.merge_ways=Fusionar caminos
+toolbox.straighten_way=Enderezar el camino
+toolbox.make_circular=Hacer circular
+toolbox.make_right_angled=Hacer un ángulo recto (Q)
+toolbox.create_parrallel_way=Crear camino paralelo (P)
+oauth.gotLinkBox=Haga clic en el enlace de abajo para abrir una página web donde se le pedirá acceso autorizado a esta aplicación.
+oauth.authorized=Una vez que haya autorizado el acceso haga clic en el botón inferior 'Probar acceso' ('Try access')
+oauth.deniedLabel=El acceso le ha sido denegado, compruébelo e inténtelo de nuevo.
+oauth.rememberMe=Recordarme
+oauth.permFail=<p>El servidor rechazó las credenciales de esta aplicación -- no se pudo obtener un enlace de autorización.</p>\n<b><p>El acceso OAuth no será posible.</b></p>\n<p>Póngase en contacto con el proveedor de la aplicación para averiguar lo que está pasando.</p>
+oauth.tempFail=Hubo un problema al contactar con el servidor para obtener la autorización. Esto puede ser un error temporal, inténtelo de nuevo más tarde.
+oauth.tryAccessButton=Prueba de acceso
+oauth.cancelButton=Cancelar
+save.editDescription=Introduzca una descripción de sus ediciones. Se utilizará para dar a otros mapeadores una idea de los cambios que está haciendo.
+styleSelector.editButton=Editar...
+backgroundSelector.dim=Atenuar
+backgroundSelector.sharpen=Acentuar contraste
+backgroundSelector.editButton=Editar...
+backgroundSelector.vectorButton=Archivo vectorial...
+options.tbcheck=Mostrar el cuadro de herramientas
+options.cursorcheck=Usar los cursores personalizados
+options.ok=Aceptar
diff --git a/l10n/locale/fa/p2_main.properties b/l10n/locale/fa/p2_main.properties
new file mode 100644 (file)
index 0000000..cd473aa
--- /dev/null
@@ -0,0 +1,32 @@
+# Messages for Persian (فارسی)
+# Exported from translatewiki.net
+# Author: ZxxZxxZ
+
+main.undo=خنثی‌سازی
+main.background=پیش‌زمینه
+main.map_style=سبک نقشه
+main.gpsButton=داده‌های جی‌پی‌اس
+main.gps_data=داده‌های جی‌پی‌اس
+main.my_tracks=مسیرهای من
+main.clear_gps=پاک‌کردن
+main.help=راهنما
+main.options=گزینه‌ها
+main.save=ذخیره
+toolbox.delete_node=حذف گره (حذف)
+toolbox.delete_area=حذف منطقه (Shift+Delete)
+toolbox.delete_way=حذف راه (Shift+Delete)
+toolbox.delete_item=حذف مورد
+toolbox.reverse_direction=معکوس‌کردن جهت (V)
+toolbox.split_way=تقسیم راه (X)
+toolbox.merge_ways=ادغام راه‌ها
+toolbox.straighten_way=مستقیم‌سازی راه
+toolbox.make_circular=دایره‌وار کن
+toolbox.create_parrallel_way=ایجاد راه موازی (P)
+oauth.rememberMe=مرا به خاطر بسپار
+oauth.cancelButton=لغو
+styleSelector.editButton=ویرایش...
+backgroundSelector.editButton=ویرایش...
+backgroundSelector.vectorButton=پروندهٔ برداری...
+options.tbcheck=نمایش جعبه‌ابزار
+options.cursorcheck=استفاده از مکان‌نماهای سفارشی
+options.ok=تأیید
diff --git a/l10n/locale/fi/p2_main.properties b/l10n/locale/fi/p2_main.properties
new file mode 100644 (file)
index 0000000..6cbf274
--- /dev/null
@@ -0,0 +1,41 @@
+# Messages for Finnish (Suomi)
+# Exported from translatewiki.net
+# Author: Nike
+
+main.undo=Kumoa
+main.redo=Tee uudelleen
+main.background=Tausta
+main.map_style=Karttatyyli
+main.gpsButton=GPS-tiedot
+main.gps_data=GPS-tiedot
+main.my_tracks=Omat jäljet
+main.clear_gps=Tyhjennä
+main.help=Ohje
+main.options=Asetukset
+main.save=Tallenna
+tag_viewer.dndprompt=Lisää uusi piste vetämällä se kartalle
+toolbox.delete_node=Poista piste (Delete)
+toolbox.delete_area=Poista alue (Shift+Delete)
+toolbox.delete_way=Poista polku (Shift+Delete)
+toolbox.delete_item=Poista kohde
+toolbox.reverse_direction=Käännä suunta (V)
+toolbox.split_way=Jaa polku (X)
+toolbox.merge_ways=Yhdistä polut
+toolbox.straighten_way=Suorista polku
+toolbox.make_circular=Pyöristä
+toolbox.create_parrallel_way=Luo rinnakkainen polku (P)
+oauth.gotLinkBox=Alla olevan linkin kautta voit oikeuttaa muita sovelluksia ohjaamaan tätä sovellusta.
+oauth.authorized=Kun olet antanut oikeuden, testaa sen toimivuutta alla olevalla painikkeella.
+oauth.deniedLabel=<b>Käyttö on estetty, tarkista ja yritä uudelleen</b>
+oauth.rememberMe=Muista minut
+oauth.tryAccessButton=Testaa oikeutta
+oauth.cancelButton=Peruuta
+save.editDescription=Kuvaile tekemiäsi muutoksia, jotta muut kartoittajat saavat käsityksen niistä.
+styleSelector.editButton=Muokkaa...
+backgroundSelector.dim=himmennä
+backgroundSelector.sharpen=terävöitä
+backgroundSelector.editButton=Muokkaa...
+backgroundSelector.vectorButton=Vektoritiedosto...
+options.tbcheck=Näytä työkalupalkki
+options.cursorcheck=Käytä mukautettuja osoittimia
+options.ok=OK
index 727b4d8..214e844 100644 (file)
@@ -1,4 +1,38 @@
-# fr_FR resources file
+# Messages for French (Français)
+# Exported from translatewiki.net
+# Author: Crochet.david
+# Author: Verdy p
 
-help.gettingStarted = De Commencer
-help.welcome = Bienvenue
\ No newline at end of file
+help.gettingStarted=Comment bien commencer
+help.welcome=Bienvenue
+help.whyOpenstreetmap=<p><b>Pourquoi OpenStreetMap ?</b> OSM est un service de cartographie dans lequel toutes les données sont constamment mises à jour et modifiées par des personnes ordinaires telles que vous. L’avantage évident est qu’OSM est libre et gratuit à utiliser, mais OSM est également devenu un acteur majeur de la cartographie des crises (par ex., utilisation des données OSM pour coordonner les efforts humanitaires suite au tremblement de terre en Haïti). La précision de ces données est critique et nous espérons que vous serez capable de contribuer de façon bénévole un peu de votre temps !</p>
+help.activeMembers=<p><b>+ Pour les membres actifs d’OpenStreetMap</b>, veuillez vous connecter à OSM avant d’effectuer vos modifications.</p>
+help.newMembers=<p><b>+ Pour les nouveaux membres</b>, veuillez visiter <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> pour créer un compte, connectez-vous, puis revenez ici pour autoriser l’accès par Potlatch 2 avant de commencer vos modifications.</p>
+help.introText=<p><b>Potlatch 2</b> est un éditeur pour OpenStreetMap (OSM) qui vous permet d’apporter des modifications directement via le site Web de {0}.</p>
+help.introduction=Introduction
+help.controls=Contrôles
+help.interfaceControls=Contrôles de l’interface
+help.mapBackground=<p>Choisissez votre fond de carte parmi les éléments de la liste ou ajoutez votre propre fichier vectoriel.</p>
+help.colourStyle=<p>Choisissez le style dans lequel vous souhaitez afficher la carte. Les couleurs et le style général varient et comprennent également d’autres options telles que la vue en fil de fer.</p>
+help.gps=GPS
+help.createOsmMap=<p>Créez des données de carte OSM en utilisant en calque de fond les traces GPS fournies par d’autres personnes.</p>
+help.myGps=MonGPS
+help.displayGps=<p>Affichez les traces GPS que vous avez téléversées précédemment sur OpenStreetMap.</p>
+help.undoRedo=Défaire / Refaire
+help.madeMistake=<p>Vous avez commis une erreur ? Cliquez simplement sur Défaire ou Refaire pour corriger vos modifications.</p>
+help.help=Aide
+help.guideInfomation=<p>Fournit ce guide au cas où vous auriez besoin d’informations lorsque vous débutez dans vos modifications.</p>
+help.save=Enregistrer
+help.addingFeatures=Ajout d’objets sur la carte
+help.addingFeaturesText=<p><i>Avant de commencer, la première règle que vous devez savoir concerne l’utilisation des données propriétaires. L’insertion de données cartographiques protégées par le droit d’auteur (copyright) ou des droits voisins (notamment le droit des bases de données), ou de toute autre donnée propriétaire n’est pas autorisée ! La copie, le retraçage ou toute reproduction d’œuvres protégées sont interdits ! (Source : <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - OpenStreetMap Wiki</a>)</i></p>\n<p></p>\n<p>Les objets linéaires tels que des rues, sentiers pédestres, chemins de fer et contours de bâtis seront ci-après nommés comme des <b>chemins</b>.</p>\n<p>Si vous vous apercevez soudainement que votre barre latérale d’icônes a disparu, c’est parce que vous avez un objet sélectionné sur la carte. Désélectionnez-le tout simplement en cliquant sur une zone vide de la carte pour faire apparaître les icônes à nouveau.</p>\n<p><b>Pour créer un point (ou nœud)</b>, il suffit de glisser et déplacer l’icône appropriée de la barre latérale sur la carte. Consultez « Ajouter des POIs » pour en savoir plus sur la création d’un POI (point d’intérêt)</p>\n<p><b>Pour créer un chemin</b>, commencez en cliquant sur la carte à son point de départ, puis cliquez sur chaque point successif. Double-cliquez pour terminer le tracé ou appuyez sur Entrée.</p>\n<p><b>Pour créer un polygone</b>, commencez en cliquant sur la carte à son point de départ, puis cliquez sur chaque point successif (de façon similaire à la création d’un chemin) et terminez en cliquant sur le premier point pour fermer le polygone.</p>\n<p>N’oubliez pas, si vous faites une erreur, vous pouvez toujours frapper le bouton Annuler. L’appui sur la touche Échap annulera toutes vos modifications sur l’objet actuellement sélectionné.</p>
+help.editBeg=Modifs. (déb.)
+help.editingFeatures=Fonctionnalités de modification (débutant)
+help.editingFeaturesText=<p><b>Pour ajouter un point à un chemin existant</b>, sélectionnez le chemin et cliquez en pressant la touche Maj à l’endroit voulu.</p>\n<p><b>Pour supprimer un point</b>, sélectionnez le point et cliquez sur le bouton « Supprimer l’élément » dans le coin inférieur droit ou appuyez sur la touche Suppr (ou Retour arrière) de votre clavier.</p>\n<p><b>Pour supprimer un chemin</b>, sélectionnez le chemin et cliquez le bouton « Supprimer l’élément » dans le coin inférieur droit ou appuyez sur les touches Maj+Suppr (ou Maj+Retour arrière) de votre clavier.</p>\n<p><b>Pour déplacer un point</b>, cliquez et faites glisser le point.</p>\n<p><b>Pour déplacer un chemin</b>, cliquez et faites glisser l’élément entier (Astuce : prenez un segment où vous ne déplacerez pas accidentellement un nœud).</p>\n<p><b>Pour étendre un chemin</b>, cliquez sur l’un des points d’extrémité du chemin. Puis continuez de dessiner les autres points comme d’habitude.</p>\n<p><b>Pour ajouter un nouveau chemin connecté à un chemin existant</b>, cliquez sur un des points du chemin en pressant la touche Maj. Puis continuez de dessin comme d'habitude.</p>
+help.editAdv=Modifs. (av.)
+help.editingFeaturesAdv=Fonctionnalités de modification (avancées)
+help.editingFeaturesAdvText=<p><b>Pour scinder un chemin</b>, sélectionnez le point auquel vous souhaitez couper et cliquez sur les Ciseaux de la boîte d’outils ou tapez la touche X de votre clavier. (Astuce : ajoutez d’abord un premier nœud sur le chemin afin de couper entre deux nœuds existants.)</p>\n<p><b>Pour effectuer une jonction entre deux chemins</b>, tracez comme d’habitude jusqu’à ce que vous deviez faire la jonction. Puis lorsque vous déplacerez votre souris sur un autre chemin, ses points s’allumeront en bleu. Cliquez sur un des points bleus ou tout autre endroit désiré sur le chemin pour réaliser la jonction.</p>\n<p><b>Pour déconnecter une jonction</b>, sélectionnez le point sur le chemin que vous souhaitez modifier. Puis pressez la touche Moins (−) de votre clavier pour ôter le point du chemin.</p>\n<p><b>Pour inverser la direction d’un chemin</b>, cliquez sur le bouton « Inverser la direction » en bas à droite. La direction d'un chemin n’a d’intérêt que pour des objets avec une balise <code>oneway</code> — rues à sens unique, lignes de côtes, îles, etc.</p>\n<p><b>Pour créer un chemin parallèle</b>, sélectionnez le chemin et cliquez sur le bouton « Créer un chemin parallèle » dans le coin inférieur droit ou pressez la touche P de votre clavier.</p>\n<p><b>Pour créer un chemin qui partage des nœuds avec un chemin existant</b>, commencez le tracé normalement, cliquez sur les deux premiers nœuds partagés, puis appuyez sur la touche F de votre clavier pour suivre automatiquement les nœuds successifs du chemin existant.</p>\n<p><i>Visitez <a href="http://wiki.openstreetmap.org/wiki/Potlatch2/Primer" target="_blank">Potlatch 2 Primer</a> sur le wiki d’OpenStreetMap pour connaître des méthodes et conventions de modification encore plus avancées.</i></p>
+help.tag=Balise
+help.taggingFeatures=Fonctionnalité de balisage
+help.taggingFeaturesText=<p>Avec Potlatch 2, le balisage d’objets est devenu relativement facile grâce à son utilisation de menus graphiques et de champs/icônes dédiés.</p>\n<p><b>Balisage d‘un objet</b></p>\n<p>Sélectionnez le point ou le chemin que vous souhaitez modifier, et choisissez la balise appropriée dans la barre latérale gauche. Après le balisage de l’objet, certains champs de base devraient apparaître tels que le nom, la limite de vitesse et la largeur, selon la balise vous avez donnée. Remplissez-les autant que vous le pouvez.</p>\n<p>Des utilisateurs avancés peuvent remarquer l’absence de quelques balises et de valeurs de balises qu’ils utilisent parfois. Si c’est le cas, cliquez sur l’onglet « Options avancées » en bas de la barre latérale et modifiez/ajoutez les balises selon vos besoins.</p>\n<p>Le wiki d’OpenStreetMap fournit également une <a href="http://wiki.openstreetmap.org/wiki/Map_features" target="_blank">liste exhaustive et documentée des balises et des valeurs de balise</a>. Veuillez vous référer à la documentation d’OSM si vous ne savez pas quelle balise utiliser.</p>
+help.shortcuts=Raccourcis
+help.keyboardShortcuts=Raccourcis clavier
index 00a10fb..73d5e85 100644 (file)
@@ -1,14 +1,44 @@
-# fr_FR resources file
+# Messages for French (Français)
+# Exported from translatewiki.net
+# Author: Verdy p
 
-main.undo = Défaire
-main.redo = Refaire
-main.background = Arrière-plan
-main.map_style = Style de Carte
-main.gps_data = GPS Informations
-main.my_tracks = Mes Pistes
-main.clear_gps = Effacer
-main.help = Assistance
-main.options = Options
-main.save = Enregistrer
-
-tag_viewer.dndprompt = Ajouter de nouveaux points en les faisant glisser sur la carte
+main.undo=Défaire
+main.redo=Refaire
+main.background=Arrière-plan
+main.map_style=Style de Carte
+main.gpsButton=Données GPS
+main.gps_data=GPS Informations
+main.my_tracks=Mes Pistes
+main.clear_gps=Effacer
+main.help=Assistance
+main.options=Options
+main.save=Enregistrer
+tag_viewer.dndprompt=Ajouter de nouveaux points en les faisant glisser sur la carte
+toolbox.delete_node=Supprimer le nœud (Suppr)
+toolbox.delete_area=Supprimer la zone (Maj+Suppr)
+toolbox.delete_way=Supprimer le chemin (Maj+Suppr)
+toolbox.delete_item=Supprimer l’élément
+toolbox.reverse_direction=Inverser le chemin (V)
+toolbox.split_way=Scinder le chemin (X)
+toolbox.merge_ways=Fusionner les chemins
+toolbox.straighten_way=Aligner les nœuds
+toolbox.make_circular=Placer les nœuds en cercle
+toolbox.make_right_angled=Rendre une forme orthogonale (Q)
+toolbox.create_parrallel_way=Créer un chemin parallèle (P)
+oauth.gotLinkBox=Cliquez sur le lien ci-dessous pour ouvrir une page web où il vous sera demandé d’autoriser l’accès par cette application.
+oauth.authorized=Une fois que vous aurez autorisé l’accès, cliquez le bouton « Essayer l’accès » ci-dessous
+oauth.deniedLabel=<b>L’accès a été refusé, veuillez vérifier et essayer à nouveau</b>
+oauth.rememberMe=Se souvenir de moi
+oauth.permFail=<p>Le serveur a rejeté les informations d’identification de cette application — un lien d’autorisation n’a pas pu être obtenu.</p>\n<p><b>L’accès OAuth ne sera pas possible.</b></p>\n<p>Contactez le fournisseur de l’application pour savoir ce qui se passe.</p>
+oauth.tempFail=Un problème est survenu en contactant le serveur afin d’obtenir l’autorisation. Ceci peut être une erreur temporaire, veuillez réessayer plus tard.
+oauth.tryAccessButton=Essayer l’accès
+oauth.cancelButton=Annuler
+save.editDescription=Veuillez entrer une description de vos modifications. Cela servira à donner aux autres cartographes une idée des changements que vous effectuez.
+styleSelector.editButton=Modifier...
+backgroundSelector.dim=assombrir
+backgroundSelector.sharpen=accentuer le contraste
+backgroundSelector.editButton=Modifier...
+backgroundSelector.vectorButton=Fichier vectoriel...
+options.tbcheck=Afficher la boîte à outils
+options.cursorcheck=Utiliser les curseurs personnalisés
+options.ok=Valider
diff --git a/l10n/locale/ga/p2_main.properties b/l10n/locale/ga/p2_main.properties
new file mode 100644 (file)
index 0000000..b7f1bcd
--- /dev/null
@@ -0,0 +1,19 @@
+# Messages for Irish (Gaeilge)
+# Exported from translatewiki.net
+# Author: D.de.loinsigh
+
+main.clear_gps=Glan
+main.help=Cuidiú
+main.options=Roghanna
+main.save=Sábháil
+tag_viewer.dndprompt=Chun pointí nua a chur leis, tarraing chun na léarscáile iad
+toolbox.delete_node=Scrios nód
+toolbox.delete_area=Scrios achar
+toolbox.delete_way=Scrios slí
+toolbox.delete_item=Scrios mír
+toolbox.split_way=Scoilt slí
+toolbox.merge_ways=Comhcheangal slite
+toolbox.straighten_way=Dírigh slí
+toolbox.make_circular=Déan ciorclach é
+toolbox.create_parrallel_way=Cruthaigh slí chomhthreomhar
+oauth.cancelButton=Cealaigh
diff --git a/l10n/locale/gl/help_dialog.properties b/l10n/locale/gl/help_dialog.properties
new file mode 100644 (file)
index 0000000..51dc75b
--- /dev/null
@@ -0,0 +1,33 @@
+# Messages for Galician (Galego)
+# Exported from translatewiki.net
+# Author: Toliño
+
+help.gettingStarted=Primeiros pasos
+help.welcome=Benvido
+help.whyOpenstreetmap=<p><b>Por que o OpenStreetMap?</b> O OSM é un servizo cartográfico no que todos os datos están en constante actualización e modificación grazas xente coma vostede. O beneficio máis obvio reside en que é de balde, pero tamén se converteu nun medio importante para a cartografía de crises (por exemplo, a utilizaión de datos do OSM para coordinar os esforzos humanitarios no terremoto de Haití). A precisión dos datos é crítica, e agardamos que poida dedicar algo do seu tempo!</p>
+help.activeMembers=<p><b>+ Para os membros activos do OpenStreetMap</b>, accedede ao sistema do OSM antes de facerdes modificacións.</p>
+help.newMembers=<p><b>+ Para os novos membros</b>, visitade <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> para crear unha conta e acceder ao sistema; logo volvede aquí para permitir o acceso ao Potlatch 2 e comezar a editar.</p>
+help.introText=<p>O <b>Potlatch 2</b> é un editor do OpenStreetMap (OSM) que permite facer edicións directamente mediante o sitio web {0}.</p>
+help.introduction=Introdución
+help.controls=Controis
+help.interfaceControls=Controis da interface
+help.mapBackground=<p>Escolla o seu fondo de mapa dun dos elementos que hai na lista ou engada o seu propio ficheiro vectorial.</p>
+help.colourStyle=<p>Escolla o estilo no que queira ver o mapa. As cores e mais o estilo xeral varían e tamén inclúen outras opcións como a vista en arame.</p>
+help.gps=GPS
+help.createOsmMap=<p>Cree os datos do mapa do OSM usando, como fondo, as pistas GPS doutras persoas</p>
+help.myGps=OMeuGPS
+help.displayGps=<p>Bote unha ollada ás trazas GPS que cargou con anterioridade no OpenStreetMap.</p>
+help.undoRedo=Desfacer / Refacer
+help.madeMistake=<p>Cometeu un erro? Basta con premer en "desfacer" e/ou "refacer" para corrixir as edicións.</p>
+help.help=Axuda
+help.guideInfomation=<p>Presenta esta guía en caso de que necesite algunha información mentres está editando.</p>
+help.save=Gardar
+help.addingFeatures=Características de adición
+help.editBeg=Editar (principiante)
+help.editingFeatures=Características de edición (principiante)
+help.editAdv=Editar (avanzado)
+help.editingFeaturesAdv=Características de edición (avanzado)
+help.tag=Etiqueta
+help.taggingFeatures=Características de etiquetaxe
+help.shortcuts=Atallos
+help.keyboardShortcuts=Atallos do teclado
diff --git a/l10n/locale/gl/p2_main.properties b/l10n/locale/gl/p2_main.properties
new file mode 100644 (file)
index 0000000..454c9e9
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Galician (Galego)
+# Exported from translatewiki.net
+# Author: Toliño
+
+main.undo=Desfacer
+main.redo=Refacer
+main.background=Fondo
+main.map_style=Estilo do mapa
+main.gpsButton=Datos do GPS
+main.gps_data=Datos do GPS
+main.my_tracks=As miñas pistas
+main.clear_gps=Limpar
+main.help=Axuda
+main.options=Opcións
+main.save=Gardar
+tag_viewer.dndprompt=Engada novos puntos arrastrándoos sobre o mapa
+toolbox.delete_node=Borrar o nodo (Supr)
+toolbox.delete_area=Borrar a zona (Maiús+Supr)
+toolbox.delete_way=Borrar o camiño (Maiús+Supr)
+toolbox.delete_item=Borrar o elemento
+toolbox.reverse_direction=Inverter a dirección (V)
+toolbox.split_way=Dividir o camiño (X)
+toolbox.merge_ways=Fusionar os camiños
+toolbox.straighten_way=Aliñar os camiños
+toolbox.make_circular=Facer un círculo
+toolbox.make_right_angled=Facer un ángulo recto (Q)
+toolbox.create_parrallel_way=Crear un camiño paralelo (P)
+oauth.gotLinkBox=Prema na ligazón inferior para abrir unha páxina web na que se lle pedirá autorización para acceder a esta aplicación.
+oauth.authorized=Unha vez autorizado o acceso, prema no botón "Intentar o acceso" que hai a continuación
+oauth.deniedLabel=<b>Rexeitouse o acceso; compróbeo e inténteo de novo</b>
+oauth.rememberMe=Lembrádeme
+oauth.permFail=<p>O servidor rexeitou as credenciais de acceso desta aplicación; non se puido obter ligazón de autorización ningunha.             </p>\n<p>       <b>O acceso ao OAuth non será posible.</b>             </p>\n<p>       Póñase en contacto co provedor da aplicación para descubrir o que acontece.</p>
+oauth.tempFail=Houbo un problema ao contactar co servidor para obter a autorización. Este pode ser un erro temporar. Inténteo de novo.
+oauth.tryAccessButton=Intentar o acceso
+oauth.cancelButton=Cancelar
+save.editDescription=Escriba unha descrición das súas edicións. Utilizarase para dar aos outros usuarios unha idea das modificacións que está a realizar.
+styleSelector.editButton=Editar...
+backgroundSelector.dim=atenuar
+backgroundSelector.sharpen=acentuar
+backgroundSelector.editButton=Editar...
+backgroundSelector.vectorButton=Ficheiro vectorial...
+options.tbcheck=Mostrar a caixa de ferramentas
+options.cursorcheck=Usar cursores personalizados
+options.ok=Aceptar
diff --git a/l10n/locale/he/help_dialog.properties b/l10n/locale/he/help_dialog.properties
new file mode 100644 (file)
index 0000000..56e273f
--- /dev/null
@@ -0,0 +1,35 @@
+# Messages for Hebrew (עברית)
+# Exported from translatewiki.net
+# Author: Amire80
+
+help.gettingStarted=תחילת עבודה
+help.welcome=ברוך בואך
+help.whyOpenstreetmap=<p><b>למה OpenStreetMap?&rlm;</b> OSM הוא שירות המיפוי שבו כל הנתונים מתעדכנים ונערכים ללא הרף על־ידי אנשים רגילים כמוך. היתרון הברור הוא שזה חופשי לשימוש, אבל המיזם הזה הפך גם לשחקן בולט במיפוי בעת משבר (למשל, השימוש בנתוני OSM כדי לתאם את מאמצי הסיוע ברעידת האדמה בהאיטי). דיוק הנתונים חיוני, ואנו מקווים שיש לך זמן לנדב לזה!</p>
+help.activeMembers=<p><b>+ לחברי OpenStreetMap פעילים</b>, נא להירשם ל־OSM לפני עריכה</b></p>
+help.newMembers=<p><b>+ לחברים חדשים</b>, אנא בקרו בדך <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> כדי ליצור חשבון משתמש, היכנסו, ואז חזרו הנה כדי לאפשר גישה ל־Potlatch 2 והתחילו לערוך.</p>
+help.introText=<p><b>Potlatch 2</b> הוא עורך OpenStreetMap&rlm (OSM) שמאפשר לך לערוך ישירות דרך אתר {0}.</p>
+help.introduction=מבוא
+help.controls=פקדים
+help.interfaceControls=פקדי ממשק
+help.mapBackground=<p>בחירת רקע המפה שלך מתוך אחד מהפריטים ברשימה או הוספת קובץ וקטורי משלך.</p>
+help.colourStyle=<p>אפשר לבחור את הסגנון להצגת המפה. הצבעים והסגנון הכללי משתנים וכוללים גם קווי־גוף.</p>
+help.gps=GPS
+help.createOsmMap=<p>יצירת נתוני מפות OSM באמצעות שימוש במסלולי GPS של אנשים אחרים בתור רקע</p>
+help.myGps=MyGPS
+help.displayGps=<p>הצגת מסלולי GPS שכבר העלית ל־OpenStreetMap.</p>
+help.undoRedo=ביטול / ביצוע חוזר
+help.madeMistake=<p>עשית טעות? אפשר פשוט ללחוץ על „ביטול” ולתקן את העריכות שלך.</p>
+help.help=עזרה
+help.guideInfomation=<p>העלאת המדריך הזה כשנחוץ לך מידע בעת תחילת העריכה.</p>
+help.save=שמירה
+help.addingFeatures=הוספת תכונות
+# Fuzzy
+help.addingFeaturesText=<p><i>לפני שנתחיל, הכלל הראשון שחשוב לדעת הוא הכלל לגבי שימוש בנתונים קנייניים. נתונים ממפות שמוגבלות בזכויות יוצרים וכל סוג אחר שלנתונים קנייניים אסורים בהחלט! העתקה, העקבה וכל סוג אחר של שכפול של יצירות מוגבלות בזכויות יוצרים אינו מותר! (מקור: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - OpenStreetMap Wiki</a>)</i></p>\n  <p></p>\n  <p>תכונות קוויות כגול רחובות, נתיבי הליכה, מסילות ברזל ושרטוטי בניינים ייקראו מכאן והלאה בשם <b>דרכים</b>.</p>\n  <p>אם פתאום גילית שסרגל הצד שלך עם כל הסמלים נעלם, אז זה בגלל שבחרת בתכונה , it's because you have a feature selected on the map. Simply deselect by clicking on a blank area of the map to bring up the icons again.</p>\n            <p><b>To create a point (or node)</b>, just drag and drop the appropriate icon from the sidebar onto the map. See Add POIs to learn more about creating a POI (Point of Interest)</p>\n            <p><b>To create a way</b>, begin by clicking on the map at its start point, then click at each successive point. Double-click to finish the line or press Enter.</p>\n            <p><b>To create a polygon</b>, begin by clicking on the map at its start point, then click at each successive point (similar to creating a way), and finish by clicking on the very first point to close the polygon.</p>\n            <p>Remember, if you make a mistake, you can always hit the Undo button. Pressing the Esc key will undo all your edits for the current feature.</p>
+help.editBeg=עריכה (למתחילים)
+help.editingFeatures=עריכת תכונות (למתחילים)
+help.editAdv=עריכה (למתקדמים)
+help.editingFeaturesAdv=עריכת תכונות (למתקדמים)
+help.tag=תג
+help.taggingFeatures=תיוג תכונות
+help.shortcuts=קיצורי דרך
+help.keyboardShortcuts=קיצורי מקשים
diff --git a/l10n/locale/he/p2_main.properties b/l10n/locale/he/p2_main.properties
new file mode 100644 (file)
index 0000000..849f3c4
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Hebrew (עברית)
+# Exported from translatewiki.net
+# Author: Amire80
+
+main.undo=ביטול
+main.redo=ביצוע חוזר
+main.background=רקע
+main.map_style=סגנון מפה
+main.gpsButton=נתוני GPS
+main.gps_data=נתוני GPS
+main.my_tracks=השבילים שלי
+main.clear_gps=ניקוי
+main.help=עזרה
+main.options=אפשרויות
+main.save=שמירה
+tag_viewer.dndprompt=נקודות חדשות נוספות באמצעות גרירתן למפה
+toolbox.delete_node=מחיקת צומת (Delete)
+toolbox.delete_area=מחיקת אזור (Shift+Delete)
+toolbox.delete_way=מחיקת דרך (Shift+Delete)
+toolbox.delete_item=מחיקת פריט
+toolbox.reverse_direction=היפוך כיוון (V)
+toolbox.split_way=פיצול דרך (X)
+toolbox.merge_ways=מיזוג דרכים
+toolbox.straighten_way=יישור דרך
+toolbox.make_circular=הפיכה למעגלי
+toolbox.make_right_angled=להפוך לישר־שווית (Q)
+toolbox.create_parrallel_way=יצירת דרך מקבילה (P)
+oauth.gotLinkBox=לחיצה על הקישור להלן תפתח דף שיבקש ממך אישור גישה ליישום הזה.
+oauth.authorized=אחרי שאישרת גישה, נא ללחוץ על כפתור „לנסות לגשת” להלן
+oauth.deniedLabel=<b>הגישה נדחתה, נא לבדוק, ולנסות שוב</b>
+oauth.rememberMe=לזכור אותי
+oauth.permFail=<p>השרת סירב למידע הכניסה של היישום הזה – לא ניתן להשיג את קישור האישור.              </p>\n<p>       <b>גישת OAuth לא תתאפשר.</b>        </p>\n<p>       נא ליצור קשר עם ספק היישום כדי להבין מה קורה.</p>
+oauth.tempFail=הייתה בעיה ביצירת קשר עם השרת לקבלת אישור. ייתכן שזאת טעות זמנית, נא לנסות שוב מאוחר יותר.
+oauth.tryAccessButton=לנסות לגשת
+oauth.cancelButton=ביטול
+save.editDescription=נא להזין תיאור של העריכות שלך. זה יעזור לממפים אחרים להבין אילו שינויים עשית.
+styleSelector.editButton=עריכה...
+backgroundSelector.dim=עמעום
+backgroundSelector.sharpen=חידוד
+backgroundSelector.editButton=עריכה...
+backgroundSelector.vectorButton=קובץ וקטורי...
+options.tbcheck=הצגת ארגז הכלים
+options.cursorcheck=שימוש בסמנים מותאמים אישית
+options.ok=אישור
diff --git a/l10n/locale/hsb/help_dialog.properties b/l10n/locale/hsb/help_dialog.properties
new file mode 100644 (file)
index 0000000..a572776
--- /dev/null
@@ -0,0 +1,24 @@
+# Messages for Upper Sorbian (Hornjoserbsce)
+# Exported from translatewiki.net
+# Author: Michawiki
+
+help.gettingStarted=Prěnje kroki
+help.welcome=Witaj
+help.introText=<p><b>Potlatch2</b> je editor OpenStreetMap (OSM), kotryž ći zmóžnja, změny direktnje přez websydło {0} činić.</p>
+help.introduction=Zawod
+help.controls=Wobsłužowanske elementy
+help.interfaceControls=Wobsłužowanske elementy wužiwarskeho powjercha
+help.gps=GPS
+help.myGps=MyGPS
+help.undoRedo=Cofnyć/Wospjetować
+help.help=Pomoc
+help.save=Składować
+help.addingFeatures=Přidawanje funkcijow
+help.editBeg=Wobdźěłać (započatkarjo)
+help.editingFeatures=Wobdźěłowanske funkcije (započatkarjo)
+help.editAdv=Wobdźěłać (pokročeni)
+help.editingFeaturesAdv=Wobdźěłowanske funkcije (pokročeni)
+help.tag=Woznamjenić
+help.taggingFeatures=Funkcije za markěrowanje
+help.shortcuts=Skrótšenki
+help.keyboardShortcuts=Tastaturowe skrótšenki
diff --git a/l10n/locale/hsb/p2_main.properties b/l10n/locale/hsb/p2_main.properties
new file mode 100644 (file)
index 0000000..ab79e0e
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Upper Sorbian (Hornjoserbsce)
+# Exported from translatewiki.net
+# Author: Michawiki
+
+main.undo=Cofnyć
+main.redo=Wospjetować
+main.background=Pozadk
+main.map_style=Kartowy stil
+main.gpsButton=GPS-daty
+main.gps_data=GPS-daty
+main.my_tracks=Moje čary
+main.clear_gps=Wuprózdnić
+main.help=Pomoc
+main.options=Opcije
+main.save=Składować
+tag_viewer.dndprompt=Přidaj nowe dypki ćahajo je na kartu
+toolbox.delete_node=Suk zhašeć (Entf)
+toolbox.delete_area=Přestrjeń zhašeć (Umsch+Entf)
+toolbox.delete_way=Puć zhašeć (Umsch+Entf)
+toolbox.delete_item=Element zhašeć
+toolbox.reverse_direction=Směr wobroćić (V)
+toolbox.split_way=Puć dźělić (X)
+toolbox.merge_ways=Puće zwjazać
+toolbox.straighten_way=Puć zrunać
+toolbox.make_circular=Kružnje rjadować
+toolbox.make_right_angled=Prawokutnje rjadować
+toolbox.create_parrallel_way=Paralelny puć wutworić (p)
+oauth.gotLinkBox=Klikń na wotkaz horjeka, zo by webstronu wočinił, hdźež će proša, přistup za tutu aplikaciju awtorizować.
+oauth.authorized=Hdyž sy přistup awtorizował, klikń deleka na tłóčatko 'Přistup spytać'
+oauth.deniedLabel=<b>Přistup je so wotpokazał, prošu přepruwuj a spytaj hišće raz</b>
+oauth.rememberMe=Spomjatkować sej
+oauth.permFail=<p>Serwer je přizjewjenske informacije tuteje aplikacije wotpokazał -- awtorizaciski wotkaz njeda so wotwołać.            </p>\n<p>       <b>OAuth-přistup njebudźe móžno.</b>        </p>\n<p>       Prošu staj so ze zhotowjerjom aplikacije do zwiska, zo by wuslědźił, štož so stawa.</p>
+oauth.tempFail=Při zwjazowanju ze serwerom, zo by awtorizaciju dóstał, je problem wustupił. To móhło nachwilny zmylk być, prošu spytaj pozdźišo hišće raz.
+oauth.tryAccessButton=Přistup spytać
+oauth.cancelButton=Přetorhnyć
+save.editDescription=Prošu zapisaj wopisanje twojich změnow. To budźe so wužiwać, zo by druhim kartěrowarjam předstajenje dał, kotre změny činiš.
+styleSelector.editButton=Wobdźěłać...
+backgroundSelector.dim=woćěmnić
+backgroundSelector.sharpen=wótřić
+backgroundSelector.editButton=Wobdźěłać...
+backgroundSelector.vectorButton=Vektorowa dataja...
+options.tbcheck=Gratowy kašćik pokazać
+options.cursorcheck=Swójske kursory wužiwać
+options.ok=W porjadku
diff --git a/l10n/locale/hu/help_dialog.properties b/l10n/locale/hu/help_dialog.properties
new file mode 100644 (file)
index 0000000..21e6e54
--- /dev/null
@@ -0,0 +1,34 @@
+# Messages for Hungarian (Magyar)
+# Exported from translatewiki.net
+# Author: BáthoryPéter
+
+help.gettingStarted=Első lépések
+help.welcome=Üdvözlés
+help.whyOpenstreetmap=<p><b>Miért OpenStreetMap?</b> az OSM egy olyan térképszolgáltatás, ahol az adatokat olyan hétköznapi emberek szerkesztik és frissítik, mint te. Ennek a nyilvánvaló előnye, hogy szabadon felhasználható, de jelentős szereplővé teszi például a válságtérképezésben is (pl. OSM adatok használata a Haitii földrengés segélyakcióinak koordinálásában). Az adatok pontossága nagyon fontos, reméljük rá tudsz szánni egy keveset az idődből!</p>
+help.activeMembers=<p><b>- Aktív OpenStreetMap tagok:</b> szerkesztés előtt kérlek jelentkezz be az OSM-be.</p>
+help.newMembers=<p><b>- Új tagok:</b> regisztráláshoz kérlek, látogasd meg az <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> oldalt, jelentkezz be, majd térj vissza ide, hogy megkezdhesd a szerkesztésd a Potlatch 2-vel.</p>
+help.introText=<p>A <b>Potlatch 2</b> egy OpenStreetMap (OSM) szerkesztőprogram, amivel közvetlenül a(z) {0} oldalról tudsz szerkeszteni.</p>
+help.introduction=Bevezetés
+help.controls=Menüsor
+help.interfaceControls=Felület vezérlők
+help.mapBackground=<p>Válassz egy térképhátteret a listából, vagy add hozzá a saját vektoros fájlodat.</p>
+help.colourStyle=<p>Válaszd ki, milyen stílusban szeretnéd megjeleníteni a térképet. Színben és általános megjelenésben különböznek, de van lehetőség vázrajz (wireframe) nézetre is.</p>
+help.gps=GPS
+help.createOsmMap=<p>Térkép készítése mások által készített, háttérként megjelenített GPS nyomvonalak alapján.</p>
+help.myGps=Nyomvonalaim
+help.displayGps=<p>Megjeleníti OpenStreetMapre korábban feltöltött GPS nyomvonalaidat.</p>
+help.undoRedo=Visszavonás / Újra
+help.madeMistake=<p>Valamit elrontottál? A javításhoz csak nyomd meg a Visszavonás vagy Újra gombot.</p>
+help.help=Súgó
+help.guideInfomation=<p>Megjeleníti ezt az útmutatót, ha a szerkesztés megkezdéséhez információra van szükséged.</p>
+help.save=Mentés
+help.addingFeatures=Hozzáadási lehetőségek
+help.addingFeaturesText=<p><i>Mielőtt elkezdenéd, az első szabály, amit tudnod kell, a védett adatok felhasználására vonatkozik. A jogvédett térképek és egyéb védett adatok használata szigorúan tilos! A jogvédett adatok lemásolása, követése és egyéb reprodukciója nem megengedett! (Lásd: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - OpenStreetMap Wiki</a>)</i></p>\n  <p></p>\n  <p>A lineáris objektumokat – mint utcák, járdák, vasútvonalak és épületkörvonalak – <b>vonalnak</b> nevezzük.</p>\n  <p>Ha azt veszed észre, hogy eltűnt az ikonokat tartalmazó oldalsávod, az azt jelent, hogy kiválasztottál egy objektumot a térképen. Egyszerűn kattints a térképen egy üres helyre és az ikonok újra megjelennek.</p>\n            <p><b>Pont (más néven csomópont) létrehozásához</b> húzz egy ikont az oldalsávról a térképre. POI-k  (Érdekes Pont, Point of Interest) készítéséhez további információkhoz nézd meg az Add POIs részt.</p>\n            <p><b>Vonal készítéséhez</b> kattints a térképen a kezdő helyre, majd minden olyan helyre, ahova a vonalba töréspontot szeretnél tenni. Dupla kattintással, vagy Enterrel tudod befejezni a vonalat.</p>\n            <p><b>Sokszöget készíteni</b> hasonlóan tudsz, mint vonalat, csak a végén a vonal legelső pontjára kell kattintanod, hogy bezárd a sokszöget.</p>\n            <p>Ne feledd, ha valamit elrontasz, csak kattints a Visszavonás gombra. Az Esc visszavonja az összes műveletet, amit az objektumon végeztél.</p>
+help.editBeg=Szerkesztés (1)
+help.editingFeatures=Szerkesztési lehetőségek (kezdő)
+help.editAdv=Szerkesztés (2)
+help.editingFeaturesAdv=Szerkesztési lehetőségek (haladó)
+help.tag=Címkék
+help.taggingFeatures=Címkézési lehetőségek
+help.shortcuts=Billentyűk
+help.keyboardShortcuts=Billentyűparancsok
diff --git a/l10n/locale/hu/p2_main.properties b/l10n/locale/hu/p2_main.properties
new file mode 100644 (file)
index 0000000..abdb321
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Hungarian (Magyar)
+# Exported from translatewiki.net
+# Author: BáthoryPéter
+
+main.undo=Visszavonás
+main.redo=Újra
+main.background=Háttér
+main.map_style=Térképstílus
+main.gpsButton=GPS adatok
+main.gps_data=GPS adatok
+main.my_tracks=Nyomvonalaim
+main.clear_gps=Törlés
+main.help=Súgó
+main.options=Beállítások
+main.save=Mentés
+tag_viewer.dndprompt=Új pont hozzáadása térképre húzással
+toolbox.delete_node=Pont törlése (Delete gomb)
+toolbox.delete_area=Terület törlése (Shift+Delete)
+toolbox.delete_way=Vonal törlése (Shift+Delete)
+toolbox.delete_item=Elem törlése
+toolbox.reverse_direction=Irány megfordítása (V)
+toolbox.split_way=Vonal elvágása (X)
+toolbox.merge_ways=Vonalak egyesítése
+toolbox.straighten_way=Vonal kiegyenesítése
+toolbox.make_circular=Kör készítése
+toolbox.make_right_angled=Derékszögesítés (Q)
+toolbox.create_parrallel_way=Párhuzamos vonal létrehozása (P)
+oauth.gotLinkBox=Az alábbi hivatkozásra kattintva egy új lap nyílik, ahol engedélyezheted a hozzáférést ehhez az alkalmazáshoz.
+oauth.authorized=Ha engedélyezted az elérést, kattints az alábbi "Próbáld elérni" gombra
+oauth.deniedLabel=<b>Hozzáférése megtagadva, kérlek ellenőrizd, majd próbáld újra</b>
+oauth.rememberMe=Emlékezz rám
+oauth.permFail=<p>A kiszolgáló megtagadta az alkalmazás hitelesítését -- az engedélyt nem sikerült beszerezni.       </p>\n<p>       <b>OAuth hozzáférés nem lesz lehetséges.</b>        </p>\n<p>       Kérlek vedd fel a kapcsolatot az alkalmazás készítőjével, hogy kiderüljön, mi történt.</p>
+oauth.tempFail=Nem sikerült kapcsolódni az engedélykiállító kiszolgálóhoz. Ez egy átmeneti hiba lehet, kérlek próbáld újra kicsit később.
+oauth.tryAccessButton=Próbáld elérni
+oauth.cancelButton=Mégsem
+save.editDescription=Kérlek adj meg egy szerkesztési összefoglalót. Erre azért van szükség, hogy a többi térképszerkesztő könnyebben megértse a változtatásaidat.
+styleSelector.editButton=Szerkesztés...
+backgroundSelector.dim=halványít
+backgroundSelector.sharpen=élesít
+backgroundSelector.editButton=Szerkesztés...
+backgroundSelector.vectorButton=Vektoros fájl...
+options.tbcheck=Eszköztár megjelenítése
+options.cursorcheck=Egyedi kurzorok használata
+options.ok=OK
diff --git a/l10n/locale/ia/help_dialog.properties b/l10n/locale/ia/help_dialog.properties
new file mode 100644 (file)
index 0000000..8caaa0b
--- /dev/null
@@ -0,0 +1,35 @@
+# Messages for Interlingua (Interlingua)
+# Exported from translatewiki.net
+# Author: McDutchie
+
+help.gettingStarted=Como initiar
+help.welcome=Benvenite
+help.whyOpenstreetmap=<p><b>Proque OpenStreetMap?</b> OSM es un servicio cartographic in le qual tote le datos es constantemente actualisate e modificate per ordinari personas como te. Le obvie beneficio es que le uso es gratuite, ma OSM ha anque devenite un major factor in le cartographia de crises (p.ex. uso de datos de OSM pro coordinar le effortios humanitari post le tremor de terra in Haiti). Le precision de iste datos es de importantia crucial, e nos spera que tu pote dedicar alcun tempore como voluntario!</p>
+help.activeMembers=<p><b>+ Pro membros active de OpenStreetMap</b>, per favor aperi session in OSM ante de modificar.</p>
+help.newMembers=<p><b>+ Pro nove membros</b>, per favor visita <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> pro crear un conto, aperi session, postea retorna hic pro permitter le accesso a Potlatch 2 e comenciar a modificar.</p>
+help.introText=<p><b>Potlatch 2</b> es un editor pro OpenStreetMap (OSM) que permitte facer modificationes directemente via le sito web {0}.</p>
+help.introduction=Introduction
+help.controls=Controlos
+help.interfaceControls=Controlos del interfacie
+help.mapBackground=<p>Selige un fundo de carta del lista o adde un proprie file de graphico vectorial.</p>
+help.colourStyle=<p>Selige le stilo visual del carta. Le colores e le stilo general varia. Il ha etiam altere optiones como "wireframe" (quadro de filos).</p>
+help.gps=GPS
+help.createOsmMap=<p>Crear datos cartographic pro OSM usante le tracias GPS de altere personas como fundo</p>
+help.myGps=MiGPS
+help.displayGps=<p>Monstrar tracias GPS que tu ha previemente incargate a OpenStreetMap.</p>
+help.undoRedo=Disfacer / Refacer
+help.madeMistake=<p>Ha facite un error? Clicca simplemente sur Disfacer o Refacer pro corriger tu modificationes.</p>
+help.help=Adjuta
+help.guideInfomation=<p>Presenta iste guida in caso que tu ha besonio de information quando tu comencia a modificar.</p>
+help.save=Salveguardar
+help.addingFeatures=Addition de objectos
+help.addingFeaturesText=<p><i>Ante de comenciar, le prime regula que tu debe cognoscer concerne le uso de datos proprietari. Le datos de cartas sub copyright o altere datos proprietari es strictemente prohibite! Le copia, le traciamento e omne altere reproduction de un obra sub copyright non es permittite! (Origine: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - OpenStreetMap Wiki</a>)</i></p>\n  <p></p>\n  <p>Objectos linear como stratas, sentieros pro pedones, ferrovias e profilos de edificios essera hic appellate <b>vias</b>.</p>\n  <p>Si le barra lateral con tote le icones dispare subitemente, isto es perque tu ha seligite un objecto sur le carta. Simplemente disface le selection con un clic sur un area vacue del carta pro facer le icones reapparer.</p>\n           <p><b>Pro crear un puncto (o nodo)</b>, simplemente trahe le icone appropriate ab le barra lateral e depone lo sur le carta. Vider "Adder PDIs" pro saper plus a proposito del creation de un PDI (puncto de interesse).</p>\n           <p><b>Pro crear un via</b>, comencia con un clic sur le carta a su puncto de initio, postea clicca sur cata puncto successive. Face clic duple pro finir le linea o preme le clave Enter.</p>\n           <p><b>Pro crear un polygono</b>, comencia con un clic sur le carta a su puncto de initio, postea clicca sur cata puncto successive (de modo similar al creation de un via), e fini con un clic sur le prime puncto pro clauder le polygono.</p>\n           <p>Non oblida que, si tu face un error, tu pote sempre pulsar le button Disfacer. Preme le clave Esc pro disfacer tote le modificationes del objecto actualmente seligite.</p>
+help.editBeg=Modificar (novicios)
+help.editingFeatures=Modification de objectos (pro comenciantes)
+help.editAdv=Modif. (av.)
+help.editingFeaturesAdv=Modification de objectos (avantiate)
+help.tag=Etiquetta
+help.taggingFeatures=Etiquettage de objectos
+help.taggingFeaturesText=<p>Con Potlatch 2, le etiquettage de objectos ha devenite relativemente facile con le uso de menus graphic e special campos/icones.</p>\n         <p><b>Como etiquettar un objecto</b></p>\n         <p>Selige le puncto o via que tu vole modificar, e selige le etiquetta appropriate ab le barra lateral sinistre. Post etiquettar le objecto, certe campos de base debe apparer como Nomine, Limite de velocitate, e Latitude, dependente del etiquetta que tu specificava. Completa istes tanto como possibile.</p><p>Usatores avantiate pote remarcar le absentia de certe etiquettas e valores que illes occasionalmente usa. Si isto es le caso, clicca sur le scheda "Avantiate" in le parte inferior del barra lateral e modifica/adde como necessari.</p>\n         <p>Le wiki de OpenStreetMap contine etiam un <a href="http://wiki.openstreetmap.org/wiki/Map_features" target="_blank">lista extense de etiquettas e valores de etiquetta</a>. Per favor consulta le documentation de OSM si tu non sape qual etiquetta usar.</p>
+help.shortcuts=Accessos directe
+help.keyboardShortcuts=Claves accelerator
diff --git a/l10n/locale/ia/p2_main.properties b/l10n/locale/ia/p2_main.properties
new file mode 100644 (file)
index 0000000..b019eea
--- /dev/null
@@ -0,0 +1,27 @@
+# Messages for Interlingua (Interlingua)
+# Exported from translatewiki.net
+# Author: McDutchie
+
+main.undo=Disfacer
+main.redo=Refacer
+main.background=Fundo
+main.map_style=Stilo de carta
+main.gpsButton=Datos GPS
+main.gps_data=Datos GPS
+main.my_tracks=Mi pistas
+main.clear_gps=Rader
+main.help=Adjuta
+main.options=Optiones
+main.save=Salveguardar
+tag_viewer.dndprompt=Adde nove punctos per traher e deponer los sur le carta
+toolbox.delete_node=Deler nodo (Del)
+toolbox.delete_area=Deler area (Shift+Del)
+toolbox.delete_way=Deler via (Shift+Del)
+toolbox.delete_item=Deler objecto
+toolbox.reverse_direction=Inverter direction (V)
+toolbox.split_way=Scinder cammino (X)
+toolbox.merge_ways=Fusionar caminos
+toolbox.straighten_way=Render recte
+toolbox.make_circular=Render circular
+toolbox.make_right_angled=Render orthogonal
+toolbox.create_parrallel_way=Crear via parallel (P)
diff --git a/l10n/locale/ja_JP/help_dialog.properties b/l10n/locale/ja_JP/help_dialog.properties
new file mode 100644 (file)
index 0000000..1ce1082
--- /dev/null
@@ -0,0 +1,36 @@
+# Messages for Japanese (日本語)
+# Exported from translatewiki.net
+
+help.gettingStarted=はじめよう
+help.welcome=ようこそ
+help.whyOpenstreetmap=<p><b>なぜ OpenStreetMapなのか?</b> OSM は、すべてのデータが、あなたのような人々の手で、いつも更新され、編集される地図作成サービスです。明らかなメリットは、自由かつ無料でつかえるということです。でも、それだけにとどまらず、震災時のマッピングにも活躍するのです。 (例 OSMを東日本大震災の救援活動に使用したsinsai.infoや、ハイチ大震災の救援活動のように)。このデータの正確さは非常に重要です。そして、あなたがボランティアとして、少しの時間を活動に当ててくれることを希望しています!</p>
+help.activeMembers=<p><b>そして、OpenStreetMapメンバーのみなさんは</b>, 編集前にOSM.orgにサインインしてください。</p>
+help.newMembers=<p><b>そして、新しいメンバーのみんさん</b>! まず、 <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> へ、行って本家アカウントを作ってください。そして、ログインしてください。アカウント作成にはライセンスと規約に同意いただく必要があります。そして、ここにもどってきて、Potlatch2 で編集しましょう。</p>
+help.introText=<p><b>Potlatch2</b> は、 OpenStreetMap (OSM)エディターです。これは、直接{0}のWebサイトから編集できるようにするものです。</p>
+help.introduction=イントロ
+help.controls=制御
+help.interfaceControls=インターフェース制御
+help.mapBackground=<p>一覧から地図背景を選択してください。あるいは、自身で準備したベクターファイルを使用することもできます。</p>
+help.colourStyle=<p>Choose the style in which you wish to view the map. Colours and overall style vary and also includes other options like wireframe.</p>
+help.gps=GPS
+help.createOsmMap=<p>Create OSM map data using other people's GPS tracks as a background</p>
+help.myGps=MyGPS
+help.displayGps=<p>Display GPS traces that you've previously uploaded to OpenStreetMap.</p>
+help.undoRedo=Undo / Redo
+help.madeMistake=<p>Made a mistake? Just hit undo and/or redo to correct your edits.</p>
+help.help=ヘルプ
+help.guideInfomation=<p>Brings up this guide in case you need any information as you begin editing.</p>
+help.save=保存
+help.addingFeatures=Adding Features
+help.addingFeaturesText=<p><i>始める前に、知っているべき最初のルールは、商用データ使用についてです。著作権のある地図や他の商用データからのデータ使用は強く禁止されています!! 著作権のある製品は、コピー、トレース、あるいはどのような方法でも、許されません!(Source: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - OpenStreetMap Wiki</a>)</i></p>  <p></p>  <p> 道路, 歩道, 鉄道、ビル外周などの線として表される地物は、ここでは<b>ウエイ</b>として表現されます。</p>  <p>もし、あなたのサイドバーのすべてのアイコンが無くなってしまったら、その時は地図の地物が選択されています。単純に地図の何もないところをクリックして選択解除することで、アイコンは復活します。</p>            <p><b>点(またはノード)を作るには</b>, アイコンをサイドバーから地図上の作りたい場所にドラッグアンドドロップしてください。 POI (Point of Interest)の追加についての詳細は、「POIを追加」を見てください。</p>   <p><b>ウエイを作成するには</b>, 地図上の開始点をクリックして、各節点をクリックしながら、終了点でダブルクリックするかエンターをおしてください。</p>            <p><b>To create a polygon</b>, begin by clicking on the map at its start point, then click at each successive point (similar to creating a way), and finish by clicking on the very first point to close the polygon.</p>            <p>Remember, if you make a mistake, you can always hit the Undo button. Pressing the Esc key will undo all your edits for the current feature.</p>
+help.editBeg=編集(簡易)
+help.editingFeatures=地物の編集 (ビギナー)
+help.editingFeaturesText=<p><b>既存のウエイに点を追加するには</b>、ウエイを選択肢、希望の点でシフト+クリックをしてください。</p>            <p><b>点を削除するには</b>、ウエイ上の点を選択して、右下の角にあるアイテム削除ボタンをクリックするか、キーボードのデリートキー(またはバックスペースキー)をおしてください。</p>  <p><b>ウエイを削除するには</b>、ウエイを選択して、右下の角にあるアイテム削除ボタンをクリックするか、キーボードのデリートキー(またはバックスペースキー)をおしてください。</p>            <p><b>点を移動するには</b>、クリックして点でドラッグしてください。</p>            <p><b>ウエイを移動するには</b>、click and drag the entire feature (hint: grab a segment where you won't accidentally move a node).</p>            <p><b>To extend a way</b>, click on one of the end points of the way. Then continue drawing as usual.</p>            <p><b>To add a new way extending from an existing way</b>, shift+click on one of the end points of the way. Then continue drawing as usual.</p>
+help.editAdv=編集(高度)
+help.editingFeaturesAdv=地物の編集(高度)
+help.editingFeaturesAdvText=<p><b>To split a way</b>, select the point at which you want to cut, and click the Scissor tool or press X on your keyboard. (Hint: Add a node first in order to cut between nodes.)</p>            <p><b>To make a junction between two ways</b>, draw as usual until you need to make a junction. Then as you move your mouse over another way, the points will light up blue. Click on one of the blue points or any other desired location on the way to make a junction.</p>            <p><b>To disconnect a junction</b>, select the point on the way you wish to alter. The press - on your keyboard to remove the point.</p>            <p><b>To reverse the direction of a way</b>, click the Reverse Direction button in the bottom right corner. The direction of a way is only a concern for those features with a "oneway" tag - oneway streets, coastlines, islands, and so on.</p>            <p><b>To create a way running parallel</b>, select the way and click the Create Parallel Way button in the bottom right corner or press P on your keyboard.</p>     <p><b>To create a way that shares nodes with an existing way</b>, start drawing, click the first two shared nodes, then press F to automatically follow the existing way.</p>            <p><i>Visit the <a href="http://wiki.openstreetmap.org/wiki/Potlatch2/Primer" target="_blank">Potlatch2 Primer</a> on the OpenStreetMap wiki for even more advanced editing methods and conventions.</i></p>
+help.tag=Tag
+help.taggingFeatures=Tagging Features
+help.taggingFeaturesText=<p>With Potlatch2, tagging features has become relatively easy with its use of graphical menus and dedicated fields/icons.</p>          <p><b>Tagging a feature</b></p>          <p>Select the point or way that you wish to edit, adn choose the appropriate tag from the left sidebar. After tagging the feature, some basic fields should appear such as Name, Speed Limit, and Width, depending on the tag you gave. Fill these out as best you can.</p><p>Advanced users may notice the absence of a few tags and tag values they occasionally use. If this is the case, click on the Advanced tab at the bottom of the sidebar and edit/add as necessary.</p>          <p>The OpenStreetMap wiki also provides an <a href="http://wiki.openstreetmap.org/wiki/Map_features" target="_blank">extensive list of tags and tag values</a>. Please refer back to the OSM documentation if you are unsure of which tag to use.</p>
+help.shortcuts=Shortcuts
+help.keyboardShortcuts=Keyboard Shortcuts
diff --git a/l10n/locale/ja_JP/p2_main.properties b/l10n/locale/ja_JP/p2_main.properties
new file mode 100644 (file)
index 0000000..04b32dc
--- /dev/null
@@ -0,0 +1,43 @@
+# Messages for Japanese (日本語)
+# Exported from translatewiki.net
+
+main.undo=戻す
+main.redo=やり直し
+main.background=背景
+main.map_style=地図スタイル
+main.gpsButton=GPSデータ
+main.gps_data=GPSデータ
+main.my_tracks=自分のデータ
+main.clear_gps=クリアー
+main.help=ヘルプ
+main.options=オプション
+main.save=保存
+tag_viewer.dndprompt=新規ポイントを地図にドラッグすることで作成
+toolbox.delete_node=ノードを削除 (Delete)
+toolbox.delete_area=エリアを削除 (Shift+Delete)
+toolbox.delete_way=ウエイを削除 (Shift+Delete)
+toolbox.delete_item=アイテムを削除
+toolbox.reverse_direction=方向を反転 (V)
+toolbox.split_way=ウエイを分割 (X)
+toolbox.merge_ways=ウエイを結合
+toolbox.straighten_way=ウエイをまっすぐに
+toolbox.make_circular=環状にする
+toolbox.make_right_angled=右向きにする (Q)
+toolbox.create_parrallel_way=パラレルウエイを作成 (P)
+oauth.gotLinkBox=次のリンクをクリックして開くウエブページで、このアプリへのアクセスを承認してください。
+oauth.authorized=一度アクセスが承認されたら以下の「アクセスする」ボタンをおしてください。
+oauth.deniedLabel=<b>アクセスが拒否されたら、ドキュメントを確認して再度やってみてください。</b>
+oauth.rememberMe=覚えておく
+oauth.permFail=<p>サーバがこのアプリケーションの証明書を拒否しているとき、承認リンクはでてきません。 </p><p><b>OAuthアクセスはできません。</b>      </p><p>アプリケーションベンダーにどうすればいいか、確認してください。</p>
+oauth.tempFail=認証サーバへの接続に失敗しました。問題があるようです。おそらく一時的なものなので、時間をおいて試してみてください。
+oauth.tryAccessButton=アクセスする
+oauth.cancelButton=キャンセル
+save.editDescription=編集の説明を入れてください。これは他のマッパーがあなたが何をしようとしたか、あとで理解するときに使われます。
+styleSelector.editButton=編集...
+backgroundSelector.dim=dim
+backgroundSelector.sharpen=シャープ化
+backgroundSelector.editButton=編集...
+backgroundSelector.vectorButton=ベクターファイル...
+options.tbcheck=ツールボックス表示
+options.cursorcheck=カスタムカーソルを使う
+options.ok=Ok
diff --git a/l10n/locale/ka/p2_main.properties b/l10n/locale/ka/p2_main.properties
new file mode 100644 (file)
index 0000000..c636012
--- /dev/null
@@ -0,0 +1,33 @@
+# Messages for Georgian (ქართული)
+# Exported from translatewiki.net
+# Author: David1010
+
+main.undo=გაუქმება
+main.redo=განმეორება
+main.background=ფონი
+main.map_style=რუკის სტილი
+main.gpsButton=GPS-ის მონაცემები
+main.gps_data=GPS-ის მონაცემები
+main.my_tracks=ჩემი გზები
+main.clear_gps=წაშლა
+main.help=დახმარება
+main.options=პარამეტრები
+main.save=შენახვა
+toolbox.delete_node=წერტილის წაშლა (Delete)
+toolbox.delete_area=ტერიტორიის წაშლა (Shift+Delete)
+toolbox.delete_way=გზის წაშლა (Shift+Delete)
+toolbox.delete_item=ელემენტის წაშლა
+toolbox.split_way=გზის გაყოფა (X)
+toolbox.merge_ways=გზების გაერთიანება
+toolbox.straighten_way=გზაბის გასწორება
+toolbox.make_circular=წრიული მოძრაობის შექმნა
+toolbox.make_right_angled=პირდაპირი კუთხის შექმნა (Q)
+toolbox.create_parrallel_way=პარალელური გზის შექმნა (P)
+oauth.rememberMe=დამიმახსოვრე
+oauth.cancelButton=გაუქმება
+styleSelector.editButton=რედაქტირება...
+backgroundSelector.editButton=რედაქტირება...
+backgroundSelector.vectorButton=ვექტორული ფაილი...
+options.tbcheck=ხელსაწყოების ყუთის ჩვენება
+options.cursorcheck=საკუთარი კურსორების გამოყენება
+options.ok=კარგი
diff --git a/l10n/locale/lb/p2_main.properties b/l10n/locale/lb/p2_main.properties
new file mode 100644 (file)
index 0000000..0182f54
--- /dev/null
@@ -0,0 +1,25 @@
+# Messages for Luxembourgish (Lëtzebuergesch)
+# Exported from translatewiki.net
+# Author: Robby
+
+main.undo=Zréck setzen
+main.redo=Widderhuelen
+main.background=Hannergrond
+main.map_style=Styl vun der Kaart
+main.gpsButton=GPS-Donnéeën
+main.gps_data=GPS-Donnéeën
+main.clear_gps=Eidel maachen
+main.help=Hëllef
+main.options=Optiounen
+main.save=Späicheren
+toolbox.delete_node=Knuet läschen (Läschen)
+toolbox.delete_item=Objet läschen
+toolbox.reverse_direction=Richtung ëmdréinen (V)
+oauth.rememberMe=Sech u mech erënneren
+oauth.cancelButton=Ofbriechen
+styleSelector.editButton=Änneren...
+backgroundSelector.editButton=Änneren...
+backgroundSelector.vectorButton=Vektor-Fichier...
+options.tbcheck=Geschirkëscht weisen
+options.cursorcheck=Benotzt déi personaliséiert Curseuren
+options.ok=OK
diff --git a/l10n/locale/mk/help_dialog.properties b/l10n/locale/mk/help_dialog.properties
new file mode 100644 (file)
index 0000000..fe85ed0
--- /dev/null
@@ -0,0 +1,37 @@
+# Messages for Macedonian (Македонски)
+# Exported from translatewiki.net
+# Author: Bjankuloski06
+
+help.gettingStarted=Како да почнете
+help.welcome=Добредојдовте
+help.whyOpenstreetmap=<p><b>Зошто OpenStreetMap?</b> OSM е картографска служба каде сите податоци постојано се подновуваат, а уредувањата ги вршат обични луѓе како Вас. Очигледната предност е тоа што е бесплатна за употреба, но денес е од голема важност и при справувањето со вонредни состојби (на пр. кога нашите податоци се користеа за усогласување на дејствата за помош во земјотересот на Хаити). Точноста на податоците е од суштинско значење, па се надеваме дека ќе можете да посветите дел од Вашето време!</p>
+help.activeMembers=<p><b>+ Активни членови на OpenStreetMap:</b>најавете се на OSM пред да уредувате.</p>
+help.newMembers=<p><b>+ Нови членови:</b>посетете го <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> и направете сметка, најавете се, а потоа вратете се тука за да пристапите на Potlatch 2 и да почнете со уредување.</p>
+help.introText=<p><b>Potlatch2</b> е уредник за OpenStreetMap (OSM) што ви овозможува да уредувате непосредно преку страницата {0}.</p>
+help.introduction=Вовед
+help.controls=Контроли
+help.interfaceControls=Контроли на посредникот
+help.mapBackground=<p>Од списокот одберете позадина на картата или пак ставете своја векторска податотека.</p>
+help.colourStyle=<p>Одберете во кој стил сакате да ви се прикажува картата. Постојат различни бои и сеопшт изглед, а има и други можности како да речеме решетка.</p>
+help.gps=GPS
+help.createOsmMap=<p>Создавајте картографски податоци на OSM користејќи туѓи GPS-траги како позадина</p>
+help.myGps=МојGPS
+help.displayGps=<p>Ги прикажува GPS-трагите што претходно сте ги подигнале на OpenStreetMap.</p>
+help.undoRedo=Врати / Повтори
+help.madeMistake=<p>Направивте некоја грешка? Само стиснете на „врати“ и/или „повтори“ за да ја исправите.</p>
+help.help=Помош
+help.guideInfomation=<p>Го истакнува овој водич во случај да ви затреба некоја информација кога почнувате со уредување.</p>
+help.save=Зачувај
+help.addingFeatures=Додавање на функции
+help.addingFeaturesText=<p><i>Пред да почнете, најважно е да знаете за сопственички податоци. Податоците од карти заштитени со авторски права и секакви други заштитени подацови се строго забранети! Не е дозволено копирање, прецртување и секакво умножување на заштитени дела! (Извор: <a href="http://wiki.openstreetmap.org/wiki/Mk:Copyright?uselang=mk" target="_blank">Авторски права - Вики на OpenStreetMap</a>)</i></p>\n  <p></p>\n  <p>Линеарните елементи како улици, пешачки патеки, пруги и контури на објекти тука се дефинираат како <b>патишта</b>.</p>\n  <p>Доколку наеднаш ви ја снема страничната лента сосе сите икони, тоа значи дека имате одбрано некој елемент на картата. Едноставно стиснете на празен простор на картата за да си ги повратите иконите.</p>\n            <p><b>З да создадете точка (или јазол)</b>, едноставно повлечете ја соодветната икона од лентата и пуштете ја на картата. Погл. Додавање на точки од интерес (POI) за да дознаете повеќе за ваквите точки</p>\n            <p><b>За да создадете пат</b>, стиснете на картата во местото кајшто сакате да почнува, а потоа стискајте на секоја следна точка. Стиснете двојно за да ја завршите линијата, или притиснете Enter.</p>\n            <p><b>За да создадете многуаголник</b>, стиснете на картата во местото кајшто сакате да почнува, а потоа стискајте на секоја следна точка (слично како за пат), а на крај стиснете на најпрвата точка за да го затворите многуаголникот.</p>\n            <p>Запомнете дека ако направите грешка, секогаш ви е на располагање копчето „Врати“. Со копчето Esc ќе ги вратите сите извршени измени во тековниот елемент.</p>
+help.editBeg=Уредување (почет.)
+help.editingFeatures=Функции за уредување (почетнички)
+help.editingFeaturesText=<p><b>За да му додадете точка на постоечки пат</b> - изберете го и стиснете shift+клик на саканото место.</p>\n    <p><b>За да избришете точка</b> - изберете го патот, па стиснете на копчето „Избриши елемент“ во долниот десен агол или притиснете на копчето Delete (или копчето за назад) на тастатурата.</p>\n  <p><b>За да избришете пат</b> - изберете го патот, па стиснете на копчето „Избриши елемент“ во долниот десен агол или притиснете shift+Delete (или  shift+копче за назад) на тастатурата.</p>\n    <p><b>За да преместите точка</b> - стиснете на неа и повлечете ја.</p>\n   <p><b>За да преместите пат</b> - стиснете и повлечете го целиот елемент (совет: стиснете во отсечка каде нема да наидете на јазол).</p>\n  <p><b>За да продолжите пат</b> - стиснете на една од крајните точки на него. Потоа продолжете нормално да цртате.</p>\n    <p><b>За да додадете пат што ќе продолжува од постоечки пат</b> - shift+клик на една од крајните точки на патот. Потоа продолжите нормално да цртате.</p>
+help.editAdv=Уредување (напр.)
+help.editingFeaturesAdv=Функции за уредување (напредни)
+help.editingFeaturesAdvText=<p><b>За да раздвоите пат</b> - одберете во која точка сакате патот да се пресече, па стиснете на алатката Ножици или притиснете на копчето X на тастатурата. (помош: Прво додајте јазол за да можете да пресечете помеѓу јазлите.)</p>\n            <p><b>За да направите спој на два пата</b> - цртајте нормално додека не ви притреба спојот. Потоа, како што го движите глушецот на друга страна, точките ќе светнат со сино. Стиснете на една од сините точки или некое друго поаскувано место на патот за да направите спој.</p>\n            <p><b>За да раздвоите спој</b> - одберете ја точката на патот што сакате да го измените. Потоа притиснете на копчето - (минус) на тастатурата за да ја отстраните точката.</p>\n            <p><b>За да ја смените насоката на пат</b> - стиснете на копчето „Смени насока“ во долниот десен агол. Насоката на патот е важна само кај оние елементи со ознаката „еднонасочно“ - еднонасочни улици, крајбрежја, острови и тн.</p>\n            <p><b>За да создадете паралелен пат</b> - одберете го патот и стиснете на копчето „Создај паралелен пат“ во долниот десен агол или пак стиснете на копчето P на тастатурата.</p>\n     <p><b>За да создадете пат што дели јазли со постоечки пат</b> - почнете да цртате, стиснете на првите два заеднички јазла, а потоа стиснете на F за автоматски да се проследи постоечкиот пат.</p>\n            <p><i>Уште понапредни начини на уредување ќе најдете на страницата <a href="http://wiki.openstreetmap.org/wiki/Potlatch_2/Primer" target="_blank">Учебник за Potlatch2</a> на викито на OpenStreetMap.</i></p>
+help.tag=Означување
+help.taggingFeatures=Функции за означување
+help.taggingFeaturesText=<p>Со Potlatch2, означувањето на елементите стана релативно лесно поради неговите графички менија и наменски полиња/икони.</p>\n          <p><b>Означување на елемент</b></p>\n          <p>Одберете ја точката или патот што сакате да го уредите, па изберете ја соодветната ознака од страничната лента лево. Откако ќе ја ставите ознаката, треба да се појават некои основни полиња како „Име“,  „Брзинско ограничување“ и „Ширина“, зависно од ознаката. Пополнете ги најдобро што знаете.</p><p>Напредните корисници можат да забележат дека отсуствуваат некои ознаки и вредности што понекогаш ги користат. Доколку се случи ова, стиснете на јазичето „Напредно“ на дното од страничната лента, па на уреди/додај.</p>\n          <p>Викито на OpenStreetMap нуди и <a href="http://wiki.openstreetmap.org/wiki/Map_features" target="_blank">опширен список на ознаки и вредности</a>. Погледајте ја документацијата ако не сте сигурни која ознака треба да се употреби.</p>
+help.shortcuts=Кратенки
+help.keyboardShortcuts=Тастатурни кратенки
diff --git a/l10n/locale/mk/p2_main.properties b/l10n/locale/mk/p2_main.properties
new file mode 100644 (file)
index 0000000..c6b9ceb
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Macedonian (Македонски)
+# Exported from translatewiki.net
+# Author: Bjankuloski06
+
+main.undo=Врати
+main.redo=Повтори
+main.background=Позадина
+main.map_style=Стил на картата
+main.gpsButton=GPS-податоци
+main.gps_data=GPS-податоци
+main.my_tracks=Мои траги
+main.clear_gps=Исчисти
+main.help=Помош
+main.options=Нагодувања
+main.save=Зачувај
+tag_viewer.dndprompt=Додајте нови точки со тоа што ќе ги довлечете на картата
+toolbox.delete_node=Избриши јазол (Delete)
+toolbox.delete_area=Избриши подрачје (Shift+Delete)
+toolbox.delete_way=Избриши пат (Shift+Delete)
+toolbox.delete_item=Избриши елемент
+toolbox.reverse_direction=Смени насока (V)
+toolbox.split_way=Раздели пат (X)
+toolbox.merge_ways=Спој патишта
+toolbox.straighten_way=Исправи пат
+toolbox.make_circular=Направи кружно
+toolbox.make_right_angled=Направи нормално (Q)
+toolbox.create_parrallel_way=Создај паралелен пат (P)
+oauth.gotLinkBox=Стиснете на врската подолу за да отворите страница кадешто ќе ви биде побарано да го овластите пристапот на овој прилог.
+oauth.authorized=Откако ќе го овластите пристапот, стиснете на копчето „Пробај да пристапиш“ подолу.
+oauth.deniedLabel=<b>Пристапот е одбиен. Проверете и обидете се повторно</b>
+oauth.rememberMe=Запомни ме
+oauth.permFail=<p>Опслужувачот ги одби акредитивите на овој прилог -- не можев да добијам врска за овластување.          </p>\n<p>       <b>Нема да можете да пристапите на OAuth.</b>         </p>\n<p>       Обратете се кај добавувачот на прилогот за да дознаете во што е проблемот.</p>
+oauth.tempFail=Се појави проблем при поврзувањето со опслужувачот за овластување. Ова може да е привремена грешка, па затоа ве советуваме да се обидете подоцна.
+oauth.tryAccessButton=Пробај да пристапиш
+oauth.cancelButton=Откажи
+save.editDescription=Внесете опис на вашите уредувања. Така другите картографи ќе имаат претстава какви измени сте направиле.
+styleSelector.editButton=Уреди...
+backgroundSelector.dim=замати
+backgroundSelector.sharpen=заостри
+backgroundSelector.editButton=Уреди...
+backgroundSelector.vectorButton=Векторска податотека...
+options.tbcheck=Пок. алатник
+options.cursorcheck=Користи курсори по мој избор
+options.ok=ОК
diff --git a/l10n/locale/ms/help_dialog.properties b/l10n/locale/ms/help_dialog.properties
new file mode 100644 (file)
index 0000000..ca9f293
--- /dev/null
@@ -0,0 +1,37 @@
+# Messages for Malay (Bahasa Melayu)
+# Exported from translatewiki.net
+# Author: Anakmalaysia
+
+help.gettingStarted=Permulaan
+help.welcome=Selamat Datang
+help.whyOpenstreetmap=<p><b>Mengapa pilih OpenStreetMap?</b> OSM ialah sebuah perkhidmatan pemetaan di mana semua data sentiasa dikemaskinikan dan disunting oleh orang keramaian seperti anda. Yang bagusnya sekali, anda boleh menggunakannya secara percuma, tetapi ia juga telah memainkan peranan penting dalam pemetaan sewaktu bencana (cth. penggunaan data OSM untuk menyelaras usaha menyelamat di Haiti setelah dilanda gempa bumi). Ketepatan data ini adalah amat penting, dan kami berharap anda anda dapat meluangkan sedikit masa anda!</p>
+help.activeMembers=<p><b>+ Bagi ahli-ahli OpenStreetMap yang aktif</b>, sila daftar masuk ke dalam OSM sebelum menyunting.</p>
+help.newMembers=<p><b>+ Bagi ahli baru</b>, sila lawati <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> untuk membuka akaun, log masuk, kemudian balik ke sini untuk membenarkan akses kepada Potlatch 2 dan mula menyunting.</p>
+help.introText=<p><b>Potlatch2</b> ialah sebuah alat penyuntingan OpenStreetMap (OSM) yang membolehkan anda untuk membuat suntingan secara langsung melalui tapak sesawang {0}.</p>
+help.introduction=Pengenalan
+help.controls=Kawalan
+help.interfaceControls=Kawalan Antaramuka
+help.mapBackground=<p>Pilih latar belakang peta anda daripada salah satu perkara dalam senarai, atau tambahkan fail vektor anda sendiri.</p>
+help.colourStyle=<p>Pilih gaya yang mana anda ingin perlihatkan peta itu. Terdapat pelbagai pilihan warna dan gaya keseluruhan, juga disertakan pilihan-pilihan lain seperti "wireframe".</p>
+help.gps=GPS
+help.createOsmMap=<p>Hasilkan data peta OSM dengan menggunakan laluan GPS orang lain sebagai latar belakang</p>
+help.myGps=MyGPS
+help.displayGps=<p>Paparkan jejak-jejak GPS yang pernah anda muat naik ke OpenStreetMap.</p>
+help.undoRedo=Nyahbuat / Buat Balik
+help.madeMistake=<p>Tersilap? Tekan sahaja 'nyahbuat' dan/atau 'buat balik' untuk membetulkan suntingan anda.</p>
+help.help=Bantuan
+help.guideInfomation=<p>Menampilkan panduan ini sekiranya anda memerlukan sebarang maklumat apabila anda bermula menyunting.</p>
+help.save=Simpan
+help.addingFeatures=Menambahkan Bentuk Alam
+help.addingFeaturesText=<p><i>Sebelum bermula, peraturan pertama yang perlu anda tahu adalah tentang penggunaan data bermilik (</i>proprietary<i>). Data dari peta yang berhak cipta atau sebarang data bermilik yang lain adalah dilarang sama sekali! Dilarang menyalin, menyurih atau melakukan sebarang penghasilan semula bahan yang berhak cipta! (Sumber: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - OpenStreetMap Wiki</a>)</i></p>\n  <p></p>\n  <p>Bentuk alam yang lelurus seperti jalan raya, lorong jalan kaki, landasan keretapi dan garis bentuk bangunan, adalah dipanggil <b>jalan</b>.</p>\n  <p>Jika anda sedar bahawa palang sisi dengan semua ikonnya tiba-tiba hilang, ini adalah kerana anda telah memilih suatu bentuk alam pada peta. Klik bahagian kosong pada peta sahaja untuk menyahpilih bentuk alam itu dan mengembalikan ikon-ikon itu.</p>\n            <p><b>Untuk meletakkan titik (atau nod)</b>, tarik dan lepas ikon yang berkenaan dari palang sisi kepada peta. Lihat 'Tambah POI' untuk keterangan lanjut tentang pembentukan POI (Point of Interest)</p>\n            <p><b>Untuk membuat jalan</b>, mula dengan mengklik titik mulanya di atas peta, kemudian klik setiap titik yang berturut-turut. Klik dua kali untuk siap atau tekan Enter.</p>\n            <p><b>Untuk membuat poligon</b>, mula dengan mengklik titik mulanya di atas peta, kemudian klik setiap titik yang berturut-turut (sama dengan membuat jalan), dan akhir sekali, klik pada titik yang pertama sekali untuk menyiapkan poligon.</p>\n            <p>Ingat, jika anda terbuat silap, anda boleh menekan butang Nyahbuat. Menekan Esc akan membatalkan semua suntingan anda bagi bentuk alam yang anda sedang usahakan itu.</p>
+help.editBeg=Sunting (Asas)
+help.editingFeatures=Menyunting Bentuk Alam (Asas)
+help.editingFeaturesText=<p><b>Untuk menambahkan titik pada jalan yang sedia ada</b>, pilih jalan yang berkenaan dan tekan shift+click pada lokasi yang dikehendaki.</p>\n    <p><b>Untuk memadamkan titik</b>, pilih titik yang berkenaan dan klik punat Hapuskan Perkara di sudut kanan bawah, atau tekan Delete (atau Backspace) pada papan kekunci anda.</p>\n  <p><b>Untuk memadamkan jalan</b>, pilih jalan yang berkenaan dan klik punat Hapuskan Perkara di sudut kanan bawah, atau tekan shift+Delete (atau shift+Backspace) pada papan kekunci anda.</p>\n    <p><b>Untuk mengalihkan titik</b>, klik dan seret titik berkenaan.</p>\n   <p><b>Untuk mengalihkan jalan</b>, klik dan seret seluruh bentuk berkenaan (petua: ambil satu segmen di mana anda tidak akan teralih nod).</p>\n  <p><b>Untuk menyambungkan jalan</b>, klik pada salah satu titik hujung jalan itu. Kemudian, teruskan kerja memeta seperti biasa.</p>\n    <p><b>Untuk membuat jalan baru yang bersambung dari jalan yang sedia ada</b>, tekan shift+click pada salah satu titik hujung jalan itu. Kemudian, teruskan kerja memeta seperti biasa.</p>
+help.editAdv=Sunting (Lanj.)
+help.editingFeaturesAdv=Menyunting Bentuk Alam (Lanjutan)
+help.editingFeaturesAdvText=<p><b>Untuk membelah jalan</b>, pilih titik di mana anda ingin potong, dan klik alatan Gunting atau tekan X pada papan kekunci. (Petua: Bubuh nod dahulu untuk memotong di antara nod.)</p>\n            <p><b>Untuk membuat simpang di antara dua jalan</b>, lukis jalan seperti biasa sehingga anda perlu membuat simpang. Kemudian, apabila menghalakan tetikus ke jalan yang lain, titik-titik itu bernyala biru. Klik pada salah satu titik biru itu atau sebarang lokasi yang diingini pada jalan itu untuk membuat simpang.</p>\n            <p><b>Untuk memutuskan simpang</b>, pilih titik pada jalan yang ingin anda ubah itu. Kemudian, tekan kekunci sengkang (-) pada papan kekunci anda untuk membuang titik berkenaan.</p>\n            <p><b>Untuk menterbalikkan arah jalan</b>, klik punat 'Terbalikkan arah' di sudut kanan bawah. Arah sesebuah jalan hanya berkenaan dengan bentuk-bentuk alam yang berteg "sehala", iaitu jalan sehala, garis pinggir laut, pulau dan sebagainya.</p>\n            <p><b>Untuk membuat jalan selari</b>, pilih jalan yang berkenaan dan klik punat 'Buat jalan selari' di sudut kanan bawah atau tekan kekunci P pada papan kekunci anda.</p>\n     <p><b>Untuk membuat jalan yang berkongsi nod dengan jalan yang sedia ada</b>, mula melukis, klik dua nod terkongsi yang pertama, kemudian tekan F untuk mengikuti jalan yang sedia ada itu secara automatik.</p>\n            <p><i>Lawati <a href="http://wiki.openstreetmap.org/wiki/Potlatch2/Primer" target="_blank">Potlatch2 Primer</a> di wiki OpenStreetMap untuk kaedah dan kelaziman penyuntingan yang lebih lanjut.</i></p>
+help.tag=Teg
+help.taggingFeatures=Mengeteg Bentuk Alam
+help.taggingFeaturesText=<p>Dengan Potlatch2, adalah lebih mudah untuk mengeteg bentuk alam dengan menggunakan menu grafik dan ruangan/ikon khusus.</p>\n          <p><b>Mengeteg bentuk alam</b></p>\n          <p>Pilih titik atau jalan yang ingin anda sunting, kemudian pilih tag yang sesuai dari palang sisi kiri. Setelah mengeteg bentuk alam itu, dijangka munculnya ruangan-ruangan asas seperti Nama, Had Laju, dan Lebar, berasaskan teg yang anda berikan. Isikan ruangan-ruangan itu sepenuh yang boleh.</p><p>Pengguna yang lebih berpengalaman mungkin akan mendapati ketiadaan beberapa teg dan nilai teg yang digunakan sekali-sekala. Jika begitu, klik tab Lanjutan di bawah palang sisi dan sunting/tambahkan apa yang perlu.</p>\n          <p>Wiki OpenStreetMap juga menyediakan satu <a href="http://wiki.openstreetmap.org/wiki/Map_features" target="_blank">senarai teg dan nilai teg yang menyeluruh</a>. Sila rujuk kembali dokumentasi OSM jika anda tidak pasti teg yang mana harus digunakan.</p>
+help.shortcuts=Pintasan
+help.keyboardShortcuts=Pintasan Papan Kekunci
diff --git a/l10n/locale/ms/p2_main.properties b/l10n/locale/ms/p2_main.properties
new file mode 100644 (file)
index 0000000..58aedd8
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Malay (Bahasa Melayu)
+# Exported from translatewiki.net
+# Author: Anakmalaysia
+
+main.undo=Nyahbuat
+main.redo=Buat semula
+main.background=Latar belakang
+main.map_style=Gaya Peta
+main.gpsButton=Data GPS
+main.gps_data=Data GPS
+main.my_tracks=Laluan Saya
+main.clear_gps=Padamkan
+main.help=Bantuan
+main.options=Pilihan
+main.save=Simpan
+tag_viewer.dndprompt=Tambahkan titik baru dengan menyeretnya kepada peta
+toolbox.delete_node=Hapuskan nod (Delete)
+toolbox.delete_area=Hapuskan kawasan (Shift+Delete)
+toolbox.delete_way=Hapuskan jalan (Shift+Delete)
+toolbox.delete_item=Hapuskan perkara
+toolbox.reverse_direction=Terbalikkan arah
+toolbox.split_way=Pecahkan jalan (X)
+toolbox.merge_ways=Gabungkan jalan
+toolbox.straighten_way=Luruskan jalan
+toolbox.make_circular=Jadikan bulat
+toolbox.make_right_angled=Jadikan sudut tegak (Q)
+toolbox.create_parrallel_way=Buat jalan selari (P)
+oauth.gotLinkBox=Klik pautan di bawah untuk membuka laman web di mana anda akan diminta untuk membenarkan akses kepada aplikasi ini.
+oauth.authorized=Sebaik sahaja anda membenarkan akses itu, klik butang 'Cuba akses' di bawah
+oauth.deniedLabel=<b>Akses ditolak; sila semak dan cuba lagi</b>
+oauth.rememberMe=Ingati saya
+oauth.permFail=<p>Pelayan menolak watikah permohonan ini -- pautan kebenaran tidak dapat diperoleh.          </p>\n<p>       <b>Akses OAuth tidak dibenarkan.</b>            </p>\n<p>       Sila hubungi pembekal aplikasi untuk mengetahui masalahnya.</p>
+oauth.tempFail=Masalah dialami ketika menghubungi pelayan untuk memperoleh kebenaran. Ini mungkin ralat yang sementara; sila cuba lagi.
+oauth.tryAccessButton=Cuba akses
+oauth.cancelButton=Batalkan
+save.editDescription=Sila masukkan keterangan suntingan anda. Ini akan digunakan untuk menerangkan pemeta-pemeta yang lain tentang suntingan anda.
+styleSelector.editButton=Sunting...
+backgroundSelector.dim=kaburkan
+backgroundSelector.sharpen=perjelas
+backgroundSelector.editButton=Sunting...
+backgroundSelector.vectorButton=Fail vektor...
+options.tbcheck=Paparkan kotak alatan
+options.cursorcheck=Gunakan kursor tersuai
+options.ok=OK
diff --git a/l10n/locale/nb_NO/help_dialog.properties b/l10n/locale/nb_NO/help_dialog.properties
new file mode 100644 (file)
index 0000000..560e33d
--- /dev/null
@@ -0,0 +1,5 @@
+# Messages for Norwegian Bokmål (‪Norsk (bokmål)‬)
+# Exported from translatewiki.net
+
+help.gettingStarted=Kom i gang
+help.welcome=Velkommen
diff --git a/l10n/locale/nb_NO/p2_main.properties b/l10n/locale/nb_NO/p2_main.properties
new file mode 100644 (file)
index 0000000..fe2fe91
--- /dev/null
@@ -0,0 +1,45 @@
+# Messages for Norwegian Bokmål (‪Norsk (bokmål)‬)
+# Exported from translatewiki.net
+# Author: Dittaeva
+# Author: Gnonthgol
+
+main.undo=Angre
+main.redo=Gjør om
+main.background=Bakgrunn
+main.map_style=Kartstil
+main.gpsButton=GPS-data
+main.gps_data=GPS-data
+main.my_tracks=Mine spor
+main.clear_gps=Tøm
+main.help=Hjelp
+main.options=Innstillinger
+main.save=Lagre
+tag_viewer.dndprompt=Legg til nye punkt ved å dra dem over på kartet
+toolbox.delete_node=Slett node (Delete)
+toolbox.delete_area=Slett område (Shift+Delete)
+toolbox.delete_way=Slett veg (Shift+Delete)
+toolbox.delete_item=Slett element
+toolbox.reverse_direction=Snu retning (V)
+toolbox.split_way=Del veg (X)
+toolbox.merge_ways=Slå sammen veger
+toolbox.straighten_way=Rett opp veg
+toolbox.make_circular=Gjør sirkulær
+toolbox.make_right_angled=Gjør rettvinkla (Q)
+toolbox.create_parrallel_way=Lag parallell veg (P)
+oauth.gotLinkBox=Trykk på lenka under for å åpne ei nettside der du blir bedt om å godkjenne tilgang for dette programmet.
+oauth.authorized=Trykk på «Prøv tilgang»-knappen under, etter at du har godkjent tilgangen.
+oauth.deniedLabel=<b>Tilgang ble ikke gitt, undersøk brukeropplysningene og prøv om igjen.</b>
+oauth.rememberMe=Husk meg
+oauth.permFail=<p>Teneren nekta tilgang til dette programmet -- godkjenningslenke kunne ikke skaffes.        </p><p>         <b>OAuth-tilgang vil ikke være mulig.</b>         </p><p> Ta kontakt med leverandøren for å finne ut hva som er problemet.</p>
+oauth.tempFail=Det var problem med å få kontakt med teneren for å få godkjenning.    Dette kan være et mellombels problem, prøv om igjen senere.
+oauth.tryAccessButton=Prøv tilgang
+oauth.cancelButton=Avbryt
+save.editDescription=Skriv ei kort skildring av endringene dine. Den blir brukt til å gi andre kartleggere hint om hva du har gjort.
+styleSelector.editButton=Endre...
+backgroundSelector.dim=demp
+backgroundSelector.sharpen=gjør skarpere
+backgroundSelector.editButton=Endre...
+backgroundSelector.vectorButton=Vektorfil...
+options.tbcheck=Vis verktøy
+options.cursorcheck=Bruk skreddersydde pekere
+options.ok=Ok
diff --git a/l10n/locale/nl_NL/help_dialog.properties b/l10n/locale/nl_NL/help_dialog.properties
new file mode 100644 (file)
index 0000000..922edea
--- /dev/null
@@ -0,0 +1,39 @@
+# Messages for Dutch (Nederlands)
+# Exported from translatewiki.net
+# Author: McDutchie
+# Author: SPQRobin
+# Author: Siebrand
+
+help.gettingStarted=Aan de slag
+help.welcome=Welkom
+help.whyOpenstreetmap=<p><b>Waarom OpenStreetMap?</b> OSM is een kaartdienst op internet waarin gegevens voortdurend worden bijgewerkt en bewerkt door gewone mensen zoals u. Het voor de hand liggende voordeel is dat het gratis te gebruiken is, maar het is ook een belangrijke kaartenleverancier in crises geworden (OSM-gegevens zijn bijvoorbeeld gebruikt tijdens het coördineren van de hulpverlening na de aardbeving in Haïti). De nauwkeurigheid van deze gegevens is van cruciaal belang, en we hopen dat u uw tijd als vrijwilliger aan dit project besteedt!</p>
+help.activeMembers=<p><b>+ Als u een actief lid van OpenStreetMap bent</b>, meld u aan bij OSM voordat u bewerkt.</p>
+help.newMembers=<p><b>+ Voor nieuwe leden</b>: ga alstublieft naar <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> om een gebruiker aan te maken, meld u aan en kom dan terug om toegang te krijgen tot Potlatch 2 en te beginnen met bewerken.</p>
+help.introText=<p><b>Potlatch2</b> is een editor voor OpenStreetMap (OSM) waarmee u de website {0} rechtstreeks kunt bewerken.</p>
+help.introduction=Inleiding
+help.controls=Besturing
+help.interfaceControls=Besturingselementen van de interface
+help.mapBackground=<p>Kies uw kaartachtergrond uit de lijst of voeg uw eigen vectorbestand toe.</p>
+help.colourStyle=<p>Kies de kaartstijl die u wilt gebruiken. Kleuren en algemene stijl variëren en omvatten ook andere opties zoals draadframe.</p>
+help.gps=GPS
+help.createOsmMap=<p>OSM-kaartgegevens maken met behulp van GPS-tracks van andere mensen als achtergrond</p>
+help.myGps=MyGPS
+help.displayGps=<p>GPS-traces weergeven die u eerder hebt geüpload naar OpenStreetMap.</p>
+help.undoRedo=Ongedaan maken/opnieuw uitvoeren
+help.madeMistake=<p>Een fout gemaakt? Klik gewoon op hit ongedaan maken of opnieuw uitvoeren om uw bewerkingen te corrigeren.</p>
+help.help=Hulp
+help.guideInfomation=<p>Hiermee geeft u deze handleiding weer in het geval u informatie nodig hebt als u begint met bewerken.</p>
+help.save=Opslaan
+help.addingFeatures=Functies toevoegen
+help.addingFeaturesText=<p><i>Voordat u begint, moet u weten hoe u moet omgaan met door eigendomsrechten beschermde gegevens. Gegevens gebruiken uit auteursrechtelijk beschermde kaarten of andere merkgebonden gegevens is ten strengste verboden! Kopiëren, overtrekken of elke reproductie van auteursrechtelijk beschermd werk is niet toegestaan! (Bron: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Auteursrechten - OpenStreetMap Wiki</a>)</i></p>\n  <p></p>\n  <p>Lineaire dingen zoals straten, voetpaden, spoorwegen en contouren van gebouwen worden vanaf nu <b>wegen</b> genoemd.</p>\n  <p>Als u zich plotseling realiseert dat uw zijbalk met alle pictogrammen is verdwenen, komt dat doordat u een functie hebt geselecteerd op de kaart. Deselecteer gewoon door te klikken op een leeg gebied van de kaart om de pictogrammen opnieuw weer te geven.</p>\n    <p><b>Een punt (of knooppunt) maken</b>, doet u door gewoon het juiste pictogram uit de zijbalk naar de kaart te slepen en het daar neer te zetten. Zie "POI's toevoegen" voor meer informatie over het maken van een POI (Point of Interest).</p>\n    <p><b>Een weg maken</b> doet u door op de kaart op het startpunt te klikken, en daarna op volgende punten te klikken. Dubbelklik als de lijn klaar is op type "Enter".</p>\n    <p><b>Een veelhoek maken</b> kan door op het beginpunt te klikken punt en daarna op volgende punten te klikken (net zoals voor een weg). Eindig door te klikken op het beginpunt om de polygoon te voltooien.</p>\n  <p>Vergeet niet dat als u een fout maakt, kunt u altijd op de knop ongedaan maken kunt klikken. Door "Esc" in te toetsen worden al uw bewerkingen voor de huidige eigenschap ongedaan gemaakt.</p>
+help.editBeg=Bewerken (beginners)
+help.editingFeatures=Bewerkingsfuncties (voor beginners)
+help.editingFeaturesText=<p><b>Om een punt toe te voegen aan een bestaande weg</b> selecteert u de weg en voert shift+klik uit op de gewenste plaats.</p>\n    <p><b>Om een punt te verwijderen</b> selecteert u het punt en klikt op de knop "Item verwijderen" rechts onderaan of typt "Delete" of "Backspace" op uw toetsenbord.</p>\n  <p><b>Om een weg te verwijderen</b> selecteert u de weg en klikt op de knop "Weg verwijderen" rechts onderaan of u typt shift+Delete of shift+Backspace op uw toestenbord.</p>\n    <p><b>Om ene punt te verplaatsen</b> klikt u op een punt en sleept het naar de gewenste positie.</p>\n   <p><b>Om een weg te verplaatsen</b> klikt u op een weg en sleept deze in het geheel naar de gewenste positie. Hint: Selecteer een segment, zodat u niet per ongeluk een node verplaatst.</p>\n  <p><b>Om een weg langer te maken</b> klikt u op een van de uiteinden van de weg. Daarna kunt u tekenen zoals u gewend bent.</p>\n    <p><b>Om een nieuwe weg toe te voegen die voortkomt uit een bestaande weg</b>, shift+klikt u op een van de uiteinden van de weg.  Daarna kunt u tekenen zoals u gewend bent.</p>
+help.editAdv=Bewerken (gevorderd)
+help.editingFeaturesAdv=Bewerkingsfuncties (voor gevorderden)
+help.editingFeaturesAdvText=<p><b>Om een weg te splitsen</b> selecteert u het punt waar u wilt snijden en klikt op het hulpmiddel Schaar of typt "X" op uw toetsenbord. Hint: Voeg eerst een node toe om tussen twee bestaande nodes te kunnen knippen.</p>\n            <p><b>Om een kruising voor twee wegen te maken</b> tekent u zoals gebruikelijk, totdat u een de kruising moet maken. Als u dan uw muisaanwijzer over de andere weg beweegt, licht deze bluaw op. Klik op een van de blauwe punten of een wllikeurige gewenste plaats op de weg om een kruising te maken.</p>\n            <p><b>Om een kruising op te heffen</b> selecteert u het punt op de weg dat u wilt wijzigen. Typ dan "-" op uw toetsenbord om het punt te verwijderen.</p>\n            <p><b>Om de richting van een weg te wijzigen</b> klikt u op de knop "Richting wijzigen" in de rechter bovenhoek. De richting van een weg is alleen van belang voor eigenschappen met een label "één richting", zoals straten met eenrichtingsverkeer, kustlijnen, eilanden, enzovoort.</p>\n            <p><b>Om een parallelweg te maken</b> selecteert u een weg en klikt op de knop "Parallelweg" in de rechter onderhoek of u typt "P" op uw toetsenbord.</p>\n     <p><b>Om een weg te maken die nodes deelt met een bestaande weg</b> begint u te tekenen, klikt op de eerste twee gedeelde nodes, en typt dan "F" op uw toetsenbord om automatisch de bestaande weg te volgen.</p>\n            <p><i>Bekijk de <a href="http://wiki.openstreetmap.org/wiki/Potlatch2/Primer" target="_blank">Handleiding voor Potlatch 2</a> op de wiki van OpenStreetMap voor nog meer gevorderde bewerkingsmethoden en -afspraken.</i></p>
+help.tag=Label
+help.taggingFeatures=Labelfuncties
+help.taggingFeaturesText=<p>Met Potlatch 2 is het toevoegen van eigenschappen relatief eenvoudig geworden. Er is nu een grafisch menu beschikbaar en specifieke velden en iconen..</p>\n          <p><b>Een eigenschap toevoegen</b></p>\n          <p>Selecteer het punt of de weg die u wilt bewerken en kies het label uit het menu aan de linkerkant. Na het labelen van de eigenschap, verschijnen er een aantal basisvelden zoals Naam, Maximum snelheid en Breedte, afhankelijk van de eigenschap die u hebt toegevoegd. Vul de velden in voor zover mogelijk.</p><p>Gevorderde gebruikers merken wellicht de afwezigheid van een aantal labels en labelwaarden op die ze af en toe gebruiken. Als dit het geval is, klik dan op het tabblad "Gevorderd" onderin de zijbalk en bewerk of voeg toe waar nodig.</p>\n          <p>Op de wiki van OpenStreetMap staat ook een <a href="http://wiki.openstreetmap.org/wiki/Map_features" target="_blank">uitgebreide lijst met labels en labelwaarden</a>. Raadpleeg alstublieft de OSM-documentatie als u niet zeker weet hoe u iets moet labelen.</p>
+help.shortcuts=Snelkoppelingen
+help.keyboardShortcuts=Sneltoetsen
diff --git a/l10n/locale/nl_NL/p2_main.properties b/l10n/locale/nl_NL/p2_main.properties
new file mode 100644 (file)
index 0000000..49e820a
--- /dev/null
@@ -0,0 +1,45 @@
+# Messages for Dutch (Nederlands)
+# Exported from translatewiki.net
+# Author: SPQRobin
+# Author: Siebrand
+
+main.undo=Ongedaan maken
+main.redo=Opnieuw uitvoeren
+main.background=Achtergrond
+main.map_style=Kaartstijl
+main.gpsButton=GPS-gegevens
+main.gps_data=GPS-gegevens
+main.my_tracks=Mijn tracks
+main.clear_gps=Wissen
+main.help=Hulp
+main.options=Instellingen
+main.save=Opslaan
+tag_viewer.dndprompt=Nieuwe punten toevoegen door ze op de kaart te slepen
+toolbox.delete_node=Node verwijderen (Delete)
+toolbox.delete_area=Gebied verwijderen (Shift+Delete)
+toolbox.delete_way=Weg verwijderen (Shift+Delete)
+toolbox.delete_item=Item verwijderen
+toolbox.reverse_direction=Richting omkeren (V)
+toolbox.split_way=Weg splitsen (X)
+toolbox.merge_ways=Wegen samenvoegen
+toolbox.straighten_way=Weg recht maken
+toolbox.make_circular=Circulair maken
+toolbox.make_right_angled=Rechthoekig maken (Q)
+toolbox.create_parrallel_way=Parallelle weg maken (P)
+oauth.gotLinkBox=Klik op de onderstaande verwijzing om een webpagina te openen waar u gevraagd wordt om toegang tot deze app te krijgen.
+oauth.authorized=Als u toegang hebt, klik dan op de knop "Toegang krijgen" hieronder
+oauth.deniedLabel=<b>U hebt geen toegang. Controleer uw gegevens en probeer het opnieuw</b>
+oauth.rememberMe=Aanmeldgegevens onthouden
+oauth.permFail=<p>De server heeft de toegang geweigerd. Het was niet mogelijk om een autorisatieverwijzing te verkrijgen.</p>\n<p><b>OAuth-toegang is niet mogelijk.</b></p>\n<p>Neem contact op met de leverancier van de toepassing om te achterhalen wat er aan de hand is.</p>
+oauth.tempFail=Er is een probleem opgetreden tijdens het contact opnemen met de server om toegang te krijgen. Dit kan een tijdelijke fout zijn. Probeer het later opnieuw.
+oauth.tryAccessButton=Toegang proberen te verkrijgen
+oauth.cancelButton=Annuleren
+save.editDescription=Geef een beschrijving van uw bewerking op. Dit is nodig om andere mappers een idee te geven welke wijzigingen u aangebracht hebt.
+styleSelector.editButton=Bewerken...
+backgroundSelector.dim=vervagen
+backgroundSelector.sharpen=verscherpen
+backgroundSelector.editButton=Bewerken...
+backgroundSelector.vectorButton=Vectorbestand...
+options.tbcheck=Hulpmiddelen weergeven
+options.cursorcheck=Aangepaste cursors gebruiken
+options.ok=OK
diff --git a/l10n/locale/nn_NO/help_dialog.properties b/l10n/locale/nn_NO/help_dialog.properties
new file mode 100644 (file)
index 0000000..1c2c442
--- /dev/null
@@ -0,0 +1,5 @@
+# Messages for Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+# Exported from translatewiki.net
+
+help.gettingStarted=Kom i gang
+help.welcome=Velkommen
diff --git a/l10n/locale/nn_NO/p2_main.properties b/l10n/locale/nn_NO/p2_main.properties
new file mode 100644 (file)
index 0000000..2c39b39
--- /dev/null
@@ -0,0 +1,45 @@
+# Messages for Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+# Exported from translatewiki.net
+# Author: Dittaeva
+# Author: Gnonthgol
+
+main.undo=Angre
+main.redo=Gjer om
+main.background=Bakgrunn
+main.map_style=Kartstil
+main.gpsButton=GPS-data
+main.gps_data=GPS-data
+main.my_tracks=Mine spor
+main.clear_gps=Tøm
+main.help=Hjelp
+main.options=Innstillingar
+main.save=Lagra
+tag_viewer.dndprompt=Legg til nye punkt ved å dra dei over på kartet
+toolbox.delete_node=Slett node (Delete)
+toolbox.delete_area=Slett område (Shift+Delete)
+toolbox.delete_way=Slett veg (Shift+Delete)
+toolbox.delete_item=Slett element
+toolbox.reverse_direction=Snu retning (V)
+toolbox.split_way=Del veg (X)
+toolbox.merge_ways=Slå saman vegar
+toolbox.straighten_way=Rett opp veg
+toolbox.make_circular=Gjer sirkulær
+toolbox.make_right_angled=Gjer rettvinkla (Q)
+toolbox.create_parrallel_way=Lag parallell veg (P)
+oauth.gotLinkBox=Trykk på lenkja under for å opne ei nettside der du blir beden om å godkjenne tilgang for dette programmet.
+oauth.authorized=Trykk på «Prøv tilgang»-knappen under, etter at du har godkjent tilgangen.
+oauth.deniedLabel=<b>Tilgang vart ikkje gjeven, undersøk brukaropplysningar og prøv om att.</b>
+oauth.rememberMe=Hugs meg
+oauth.permFail=<p>Tenaren nekta tilgang til dette programmet -- godkjenningslenkje kunne ikkje skaffast.             </p><p>         <b>OAuth-tilgang vil ikkje vere mogleg.</b>        </p><p> Ta kontakt med leverandøren for å finne ut kva som er problemet.</p>
+oauth.tempFail=Det var problem med å få kontakt med tenaren for å få godkjenning.    Dette kan vere eit mellombels problem, prøv om att seinare.
+oauth.tryAccessButton=Prøv tilgang
+oauth.cancelButton=Avbryt
+save.editDescription=Skriv ei kort skildring av endringane dine. Den blir brukt til å gje andre kartleggjarar hint om kva du har gjort.
+styleSelector.editButton=Endre...
+backgroundSelector.dim=demp
+backgroundSelector.sharpen=gjer skarpare
+backgroundSelector.editButton=Endre...
+backgroundSelector.vectorButton=Vektorfil...
+options.tbcheck=Vis verkty
+options.cursorcheck=Bruk skreddarsydde peikarar
+options.ok=Ok
diff --git a/l10n/locale/no_NO b/l10n/locale/no_NO
new file mode 120000 (symlink)
index 0000000..59ea540
--- /dev/null
@@ -0,0 +1 @@
+nb_NO
\ No newline at end of file
index c0c0ebd..e872fbb 100644 (file)
@@ -1,4 +1,19 @@
-# pl_PL resources file
+# Messages for Polish (Polski)
+# Exported from translatewiki.net
+# Author: BeginaFelicysym
 
-help.gettingStarted = Pierwsze kroki
-help.welcome = Witaj
+help.gettingStarted=Pierwsze kroki
+help.welcome=Witaj
+help.gps=GPS
+help.createOsmMap=<p>Utwórz dane mapy OSM przy użyciu śladów GPS innych osób jako podstawie</p>
+help.myGps=MyGPS
+help.displayGps=<p>Wyświetl ślady GPS, które wcześniej już załadowano do OpenStreetMap.</p>
+help.help=Pomoc
+help.save=Zapisz
+help.editBeg=Edycja (Pocz.)
+help.editingFeatures=Funkcje edycji (początkujący)
+help.editAdv=Edycja (zaaw.)
+help.editingFeaturesAdv=Funkcje edycji (zaawansowane)
+help.tag=Znacznik
+help.shortcuts=Skróty
+help.keyboardShortcuts=Skróty klawiaturowe
index f113bf7..0e0f4d6 100644 (file)
@@ -1,26 +1,27 @@
-# pl_PL resources file
+# Messages for Polish (Polski)
+# Exported from translatewiki.net
+# Author: BeginaFelicysym
 
-main.undo = Cofnij
-main.redo = Ponów
-main.background = Tło
-main.map_style = Styl mapy
-main.gps_data = Dane GPS
-main.my_tracks = Moje ślady
-main.clear_gps = Clear
-main.help = Pomoc
-main.options = Opcje
-main.save = Zapisz
-
-tag_viewer.dndprompt = Dodaj nowy punkt poprzez przeniesienie go na mapę
-
-toolbox.delete_node = Usuń węzeł (Delete)
-toolbox.delete_area = Usuń obszar (Shift+Delete)
-toolbox.delete_way = Usuń drogę (Shift+Delete)
-toolbox.delete_item = Usuń obiekt
-toolbox.reverse_direction = Odwróć kierunek (V)
-toolbox.split_way = Przetnij drogę (X)
-toolbox.merge_ways = Połącz drogi
-toolbox.straighten_way = Prosta droga
-toolbox.make_circular = Utwórz okrąg
-toolbox.make_right_angled = Utwórz kąty proste (Q)
-toolbox.create_parrallel_way = Stwórz drogę równoległą (P)
+main.undo=Cofnij
+main.redo=Ponów
+main.background=Tło
+main.map_style=Styl mapy
+main.gpsButton=Dane GPS
+main.gps_data=Dane GPS
+main.my_tracks=Moje ślady
+main.clear_gps=Clear
+main.help=Pomoc
+main.options=Opcje
+main.save=Zapisz
+tag_viewer.dndprompt=Dodaj nowy punkt poprzez przeniesienie go na mapę
+toolbox.delete_node=Usuń węzeł (Delete)
+toolbox.delete_area=Usuń obszar (Shift+Delete)
+toolbox.delete_way=Usuń drogę (Shift+Delete)
+toolbox.delete_item=Usuń obiekt
+toolbox.reverse_direction=Odwróć kierunek (V)
+toolbox.split_way=Przetnij drogę (X)
+toolbox.merge_ways=Połącz drogi
+toolbox.straighten_way=Prosta droga
+toolbox.make_circular=Utwórz okrąg
+toolbox.make_right_angled=Utwórz kąty proste (Q)
+toolbox.create_parrallel_way=Stwórz drogę równoległą (P)
diff --git a/l10n/locale/ru/help_dialog.properties b/l10n/locale/ru/help_dialog.properties
new file mode 100644 (file)
index 0000000..3f776a6
--- /dev/null
@@ -0,0 +1,38 @@
+# Messages for Russian (Русский)
+# Exported from translatewiki.net
+# Author: Express2000
+# Author: TarzanASG
+
+help.gettingStarted=Начало работы
+help.welcome=Добро пожаловать
+help.whyOpenstreetmap=<p><b>Почему OpenStreetMap?</b> OSM - сервис картографии, в котором все данные постоянно обновляются и редактируются такими же людьми как и вы. Очевидным преимуществом является бесплатное использование сервиса, при этом он стал основным инструментом кризисного картографирования (например, использование данных OSM для координации усилий по оказанию помощи при землетрясении в Гаити). Точность этих данных имеет решающее значение, и мы надеемся, что вы сможете добровольно потратить немного своего времени!</p>
+help.activeMembers=<p><b>+ Для активных участников OpenStreetMap</b>, войдите в OSM перед редактированием.</p>
+help.newMembers=<p><b>+ Для новых участников</b>, пожалуйста посетите <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> для создания учетной записи, войдите в систему, а затем вернитесь для получения доступа к редактору Potlatch 2 для начала редактирования.</p>
+help.introText=<p><b>Potlatch 2</b> — редактор OpenStreetMap (OSM), позволяющий вносить изменения непосредственно через веб-сайт {0}.</p>
+help.introduction=Введение
+help.controls=Элементы управления
+help.interfaceControls=Элементы интерфейса
+help.mapBackground=<p>Выберите фоновый рисунок карты, выбрав один из элементов в списке или добавьте свой собственный векторный файл.</p>
+help.colourStyle=<p>Выберите стиль, в котором вы хотите просматривать карту. Цвета и общий стиль могут быть изменены и включают также другие варианты как, например, каркас.</p>
+help.gps=GPS
+help.createOsmMap=<p>Создание данных OSM карты, используя GPS-треки других людей в качестве подложки</p>
+help.myGps=МойGPS
+help.displayGps=<p>Отображение GPS-треков, загруженных вами на OpenStreetMap ранее.</p>
+help.undoRedo=Отменить / повторить
+help.madeMistake=<p>Сделали ошибку? Просто нажмите отменить и/или повторить для исправления изменений.</p>
+help.help=Помощь
+help.guideInfomation=<p>Открывает данное руководство в случае, если вам понадобится информация во время редактирования.</p>
+help.save=Сохранить
+help.addingFeatures=Добавление функций
+help.addingFeaturesText=<p><i>Прежде чем начать, первое правило, которое вы должны знать - это использование проприетарных (собственнических) данных. Данные с защищенных авторским правом карт или любых других собственнических источников строго запрещены! Не допускается копирование, трассировка или любое воспроизведение авторских работ! (Источник: <a href="http://wiki.openstreetmap.org/wiki/RU:%D0%90%D0%B2%D1%82%D0%BE%D1%80%D1%81%D0%BA%D0%B8%D0%B5_%D0%BF%D1%80%D0%B0%D0%B2%D0%B0?uselang=ru" target="_blank">авторское право - OpenStreetMap Вики</a>)</i></p>\n<p>\n<p>Линейные объекты вроде улиц, пешеходных дорожек, железных дорог и строительных контуров здесь и далее будут называться <b>линиями</b>.</p>\n<p>Если вы вдруг заметили, что боковая панель с ее значками пропали, то это произошло потому, что Вы выбрали на карте какой-то объект. Просто отмените выбор, щелкнув пустую область для восстановления значков.</p>\n<p><b>Для создания точки (или узла)</b>, просто перетащите соответствующий значок с боковой панели на карту. Посмотрите раздел добавление объектов, чтобы узнать больше о создании POI (Point of Interest - точек интереса)</p>\n<p><b>Для создания линии</b>, начните его щёлкнув по карте в точке её начала, а затем щелкайте на каждой его последующей точке. Дважды щелкните, чтобы закончить линию или нажмите клавишу Enter.</p>\n<p><b>Для создания полигона</b>, начните его, нажав на карте на его начальной точке, а затем щелкайте на каждой его вершине. Чтобы закончить полигон, щелкните на его первой вершине.</p>\n<p>Помните, если вы совершили ошибку, вы всегда можете нажать кнопку Отменить. Нажатие клавиши Esc отменяет все изменения для текущей функции.</p>
+help.editBeg=Редактирование (Нач.)
+help.editingFeatures=Редактирование (начинающим)
+help.editingFeaturesText=<p><b>Чтобы добавить точку на существующую линию</b>, выберите данную линию и, удерживая Shift, щёлкните в нужном месте.</p>\n<p><b>Чтобы удалить точку</b>, выберите точку и нажмите кнопку «Удалить элемент» в правом нижнем углу или нажмите на клавиатуре клавишу Delete (или Backspace).</p>\n<p><b>Чтобы удалить путь</b>, выберите путь и в правом нижнем углу нажмите кнопку Удалить элемент или нажмите Shift + Delete (или Shift + Backspace) на вашей клавиатуре.</p>\n<p><b>Чтобы переместить точку</b>, щелкните по ней и перетащите точку.</p>\n<p><b>Чтобы переместить линию</b>, щелкните по ней и перетащите её (Подсказка: захватите сегмент, где Вы не заденете случайно точку).</p>\n<p><b>Для расширения линии</b>, нажмите на одну из конечных точек пути. Затем можно продолжить рисование как обычно.</p>\n<p><b>Добавить новую линию расширяющийся от существующего</b>, щёлкните на одной из конечных точек пути удерживая Shift. Затем можно продолжить рисование как обычно.</p>
+help.editAdv=Редактирование (Опытным)
+help.editingFeaturesAdv=Редактирование (Опытным пользователям)
+help.editingFeaturesAdvText=<p><b>Для разделения линии</b>, выберите точку, в которой вы хотите разделить и щёлкните на инструмент Ножницы или нажмите X на вашей клавиатуре. (Подсказка: Добавьте сначала точку, чтобы разделить между точками.)</p>\n            <p><b>Чтобы соединить две линии</b>, рисуйте как обычно до тех пор, пока вам не понадобиться сделать соединение. Затем как только вы наведёте вашу мышь над другой линией, точки подсветятся голубым. Кликните на одной из голубых точек или другом желаемом месте на линии для создания соединения.</p>\n            <p><b>Чтобы разъединить соединение</b>, выберите точку на линии, которую вы хотите изменить. Нажмите "-" на вашей клавиатуре для удаления точки.</p>\n            <p><b>Для изменения направления линии</b>, кликните на кнопку Изменить направление в нижнем правом углу. Направление линии касается только для тех элементов, которые имеют тег "oneway" - односторонние улицы, береговые линии, острова и так далее.</p>\n            <p><b>Чтобы создать параллельную линию</b>, выберите линию и нажмите кнопку "Создать параллельную линию" в нижнем правом углу или нажмите P на вашей клавиатуре.</p>\n     <p><b>Для создания линии, которая имеет общие точки с существующей линией</b>, начните рисовать, нажмите на две первые общие точки, затем нажмите F для автоматического следования существующей линии.</p>\n            <p><i>Посетите <a href="http://wiki.openstreetmap.org/wiki/RU:%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_Potlatch_2?uselang=ru" target="_blank">букварь по Potlatch 2</a> в вики OpenStreetMap для более расширенных методов редактирования и условных соглашений.</i></p>
+help.tag=Тег
+help.taggingFeatures=Функции теггирования
+help.taggingFeaturesText=<p>С Potlatch 2 создание меток стало достаточно простым при использовании графических меню и специальных полей/значков.</p>\n          <p><b>Создание меток для объекта</b></p>\n          <p>Выберите точку или путь для редактирования и выберите подходящую метку с левой боковой панели. После создания метки объекта будут доступны основные поля (Имя, ограничение скорости и ширина, в зависимости от метки, которую Вы присваиваете). Заполните как можно более подробно.</p><p>Продвинутые пользователи могут заметить отсутствие некоторых меток и их значений. В этом случае нажмите вкладку Подробно внизу боковой панели и отредактируйте или добавьте что считаете нужным.</p>\n          <p>В OpenStreetMap вики также можно найти <a href="wiki.openstreetmap.org/wiki/RU:Map_Features?uselang=ru" target="_blank">расширенный список меток и их значений</a>. Пожалуйста, обратитесь к документации OSM, если Вы не уверены какую метку стоит использовать.</p>
+help.shortcuts=Сочетания клавиш
+help.keyboardShortcuts=Клавиатурные сочетания клавиш
diff --git a/l10n/locale/ru/p2_main.properties b/l10n/locale/ru/p2_main.properties
new file mode 100644 (file)
index 0000000..506cff9
--- /dev/null
@@ -0,0 +1,47 @@
+# Messages for Russian (Русский)
+# Exported from translatewiki.net
+# Author: Cekli829
+# Author: Express2000
+# Author: TarzanASG
+# Author: Александр Сигачёв
+
+main.undo=Отменить
+main.redo=Повторить
+main.background=Подложка
+main.map_style=Стиль карты
+main.gpsButton=Данные GPS
+main.gps_data=Данные GPS
+main.my_tracks=Мои треки
+main.clear_gps=Очистить
+main.help=Помощь
+main.options=Настройки
+main.save=Сохранить
+tag_viewer.dndprompt=Добавьте новые точки, переместив их на карту
+toolbox.delete_node=Удалить точку (Delete)
+toolbox.delete_area=Удалить область (Shift + Delete)
+toolbox.delete_way=Удалить линию (Shift + Delete)
+toolbox.delete_item=Удалить элемент
+toolbox.reverse_direction=Обратить направление (V)
+toolbox.split_way=Разделить линию (X)
+toolbox.merge_ways=Объединить пути
+toolbox.straighten_way=Выпрямить путь
+toolbox.make_circular=Создать круговое движение
+toolbox.make_right_angled=Сделать прямой угол (Q)
+toolbox.create_parrallel_way=Создать параллельную линию (P)
+oauth.gotLinkBox=Нажмите на ссылку ниже, чтобы открыть веб-страницу, где вам будет предложено авторизовать доступ к этому приложению.
+oauth.authorized=Авторизовав доступ, нажмите внизу на кнопку «Испытать доступ»
+oauth.deniedLabel=<b>В доступе отказано, проверьте и повторите попытку</b>
+oauth.rememberMe=Запомнить меня
+oauth.permFail=<p>Сервер отклонил полномочия этого приложения: не удалось получить ссылку авторизации.</p>\n<p>             <b>OAuth доступ невозможен.</b>         </p>\n<p>Пожалуйста, свяжитесь с поставщиком приложения, чтобы выяснить подробности.</p>
+oauth.tempFail=Проблема подключения к серверу для получения авторизации.    Это может быть временной ошибкой, повторите попытку позже.
+oauth.tryAccessButton=Испытать доступ
+oauth.cancelButton=Отмена
+save.editDescription=Введите описание изменений. Это даст представление другим редакторам о сделанных вами изменениях.
+styleSelector.editButton=Изменить...
+backgroundSelector.dim=размыть
+backgroundSelector.sharpen=резкость
+backgroundSelector.editButton=Изменить...
+backgroundSelector.vectorButton=Векторный файл...
+options.tbcheck=Показать панель инструментов
+options.cursorcheck=Использовать свои курсоры
+options.ok=OK
diff --git a/l10n/locale/sq/help_dialog.properties b/l10n/locale/sq/help_dialog.properties
new file mode 100644 (file)
index 0000000..41c6b5b
--- /dev/null
@@ -0,0 +1,23 @@
+# Messages for Albanian (Shqip)
+# Exported from translatewiki.net
+# Author: Euriditi
+
+help.gettingStarted=Duke filluar
+help.welcome=Mirësevini
+help.whyOpenstreetmap=<p><b>Përse OpenStreetMap?</b> OSM është një shërbim harografik në të cilin të dhënat freskohen në mënyrë konstante çdo ditë nga njerëz si ju. Përfitimi i dukshëm është se gjithçka është falas dhe gjithashtu dhe ne kemi luajtur rol të veçantë në koordifikimin e fatkeqsive natyrore (p.sh. përdorimi i të dhënave nga OSM për të koordinuar përpjekjet e ndihmave gjatë tërmetit në Haiti). Saktësia e të dhënave nuk është e sigurtë dhe shpresojmë se ju do të na kushtoni vullnetarisht pak nga koha juaj!</p>
+help.activeMembers=<p><b>+ Anëtarët aktivë të OpenStreetMap</b>, janë të lutur të kyçen në OSM përpara se të redaktojnë.</p>
+help.newMembers=<p><b>+ Anëtarët e rinj</b>, për të krijuar një llogari janë të lutur të vizitojnë <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a>, më pas kyçuni në llogari, dhe pastaj rikthehuni këtu për të lejuar aksesin e Potlatch 2 në mënyrë që të redaktoni.</p>
+help.introText=<p><b>Potlatch 2</b> është një redaktor i OpenStreetMap (OSM) që ju lejon ju të bëni ndryshime direkte përmes uebsite-it {0}.</p>
+help.controls=Kontrolli
+help.interfaceControls=Ndërfaqja e kontrollit
+help.mapBackground=<p>Zgjidhni një nga artikujt e listuar më poshtë si sfond për hartën ose shto skedën tënde vektoriale.</p>
+help.colourStyle=<p>Zgjidhni stilin në të cilin dëshironi të shikoni hartën. Ngjyrat dhe stili variojnë dhe gjithashtu përfshijnë opsione shtesë si p.sh. korniza.</p>
+help.gps=GPS
+help.createOsmMap=<p>Krijo hartë OSM duke përdorur si sfond gjurmë GPS nga përdorues të tjerë</p>
+help.myGps=MyGPS
+help.displayGps=<p>Shfaq gjurmët GPS që ju i keni ngarkuar më parë në OpenStreetMap.</p>
+help.undoRedo=Zhbëje / Ribëje
+help.madeMistake=<p>Keni bërë ndonjë gabim? Thjesht shtypni zhbëje dhe/ose ribëje për të korrektuar redaktimin tuaj.</p>
+help.help=Ndihmë
+help.guideInfomation=<p>Shfaq këtë guidë në rast se keni nevojë për informacion gjatë redaktimit.</p>
+help.save=Ruaje
diff --git a/l10n/locale/ta/p2_main.properties b/l10n/locale/ta/p2_main.properties
new file mode 100644 (file)
index 0000000..314cde9
--- /dev/null
@@ -0,0 +1,21 @@
+# Messages for Tamil (தமிழ்)
+# Exported from translatewiki.net
+# Author: Aswn
+# Author: Karthi.dr
+
+main.undo=செயல்தவிர்
+main.redo=மீண்டும் செய்
+main.background=பின்னணி
+main.gpsButton=ஜி.பி.எஸ் தகவல்
+main.gps_data=புவியிடங்காட்டித் தரவு
+main.clear_gps=வெறுமையாக்கு
+main.help=உதவி
+main.options=விருப்பத் தேர்வுகள்
+main.save=சேமி
+toolbox.delete_item=உருப்படியை நீக்கு
+toolbox.merge_ways=வழிகளை ஒன்றுசேர்
+toolbox.straighten_way=வழியை நேராக்கு
+oauth.cancelButton=ரத்து செய்
+styleSelector.editButton=திருத்து...
+backgroundSelector.editButton=தொகு...
+options.ok=சரி
diff --git a/l10n/locale/tr/p2_main.properties b/l10n/locale/tr/p2_main.properties
new file mode 100644 (file)
index 0000000..c2d5119
--- /dev/null
@@ -0,0 +1,40 @@
+# Messages for Turkish (Türkçe)
+# Exported from translatewiki.net
+# Author: Emperyan
+# Author: Katpatuka
+
+main.undo=Geri al
+main.redo=Yinele
+main.background=Arka plan
+main.map_style=Harita Biçimi
+main.gpsButton=GPS Verisi
+main.gps_data=GPS Verisi
+main.my_tracks=GPS İzlerim
+main.clear_gps=Temizle
+main.help=Yardım
+main.options=Seçenekler
+main.save=Kaydet
+tag_viewer.dndprompt=Yeni noktaları sürükleyerek haritaya ekle
+toolbox.delete_node=Noktayı sil (Del)
+toolbox.delete_area=Alanı sil (Shift + Del)
+toolbox.delete_way=Yolu sil (Shift + Del)
+toolbox.delete_item=Öğeyi sil
+toolbox.reverse_direction=Yönünü tersine döndür (V)
+toolbox.split_way=Yolunu böl (X)
+toolbox.merge_ways=Yolları birleştir
+toolbox.straighten_way=Yolu hizala
+toolbox.make_circular=Dairesel yap
+toolbox.make_right_angled=Dik açılı yap (Q)
+toolbox.create_parrallel_way=Paralel yolu oluştur (P)
+oauth.rememberMe=Beni hatırla
+oauth.tryAccessButton=Erişim dene
+oauth.cancelButton=Vazgeç
+save.editDescription=Lütfen düzenlemelerinin açıklamasını yaz. Diğer haritacıları ne gibi değişiklikler yaptığını fikir verebilir.
+styleSelector.editButton=Düzenle...
+backgroundSelector.dim=söndür
+backgroundSelector.sharpen=keskinleştir
+backgroundSelector.editButton=Düzenle...
+backgroundSelector.vectorButton=Vektör dosyası...
+options.tbcheck=Araç kutusunu görüntüle
+options.cursorcheck=Özel imleçler kullan
+options.ok=Tamam
diff --git a/l10n/locale/uk/help_dialog.properties b/l10n/locale/uk/help_dialog.properties
new file mode 100644 (file)
index 0000000..48fd2e0
--- /dev/null
@@ -0,0 +1,37 @@
+# Messages for Ukrainian (Українська)
+# Exported from translatewiki.net
+# Author: Andygol
+
+help.gettingStarted=Початок роботи
+help.welcome=Ласкаво просимо!
+help.whyOpenstreetmap=<p><b>Чому OpenStreetMap?</b> OSM — це сервіс мап, в якому всі дані постійно оновлюються та виправляються звичайним людьми, такими як ви. Очевидною перевагою є те, що він безкоштовний для використання, він також став основним гравцем у кратографванні кризисних явищ (наприклад використання OSM даних під час надання допомоги під час землетрусу на Гаїті). Точність цих даних має вирішальне значення, і ми сподіваємося, що ви в змозі пожертвувати частину вашого часу!</p>
+help.activeMembers=<p><b>+ Для активних учасників OpenStreetMap</b>, будь ласка, увійдіть до OSM перед редагуванням.</p>
+help.newMembers=<p><b>+ Для нових учасників</b>, будь ласка, відвідайте <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> для створення облікового запису, увійдіть в систему, а потім поверніться сюди, щоб отримати доступ до Потлач 2 і почати редагування.</p>
+help.introText=<p><b>Потлач 2</b> є OpenStreetMap (OSM) редактором, який дозволяє зробити зміни безпосередньо через веб-сайт {0}.</p>
+help.introduction=Вступ
+help.controls=Елементи керування
+help.interfaceControls=Елементи інтерфейсу
+help.mapBackground=<p>Виберіть фонове зображення для мапи з елементів у списку, або додайте власний вектор файл.</p>
+help.colourStyle=<p>Виберіть стиль, в якому ви бажаєте переглядати мапу. Кольори і загальний стиль можна змінити і включають інші варіанти, такі як  каркас.</p>
+help.gps=GPS
+help.createOsmMap=<p>Створюйте  мапу OSM використовуючи GPS-треки інших людей в якості тла</p>
+help.myGps=МійGPS
+help.displayGps=<p>Показ GPS-треків, завантажених  раніше на OpenStreetMap.</p>
+help.undoRedo=Скасувати / Повернути
+help.madeMistake=<p>Зробили помилку? Просто натисніть Скасувати або повторити, щоб виправити ваші зміни.</p>
+help.help=Довідка
+help.guideInfomation=<p>Використовуйте це керівництво, якщо вам потрібна будь-яка інформація під час редагування.</p>
+help.save=Зберегти
+help.addingFeatures=Додавання об’єктів
+help.addingFeaturesText=<p><i>Перше ніж почати, перше правило, яке вам потрібно знати — ЗАБОРОНЕНО використовувати дані з джерел захищених авторським правом, чи даних, на використання яких у вас нема дозволу! Копіювання, обведення чи будь-яке відтворення таких даних недозволене!  (Джерело: <a href="http://wiki.openstreetmap.org/wiki/Copyright" target="_blank">Copyright - OpenStreetMap Wiki</a>)</i></p>\n  <p></p>\n  <p>Лінійні об’єкти, такі як вилиці, стежки, залізничні колії та контури будівель є <b>лініями</b>.</p>\n  <p>Якщо ви помітили, що бокова панель зі значками кудись поділась, не хвилюйтесь, — все через те, що ви виділили об’єкт на мапі. Зніміть виділення, клацнувши у будь-якому порожньому місці на мапі, щоб повернути панель із значками.</p>\n            <p><b>Для створення  точки</b>, просто перетягніть відповідний значок з бокової панелі у відповідне місце на мапі. Дивіться розділ Додавання POI, щоб дізнатись про створення точкових об’єктів — POI (Point of Interest)</p>\n            <p><b>Для створення ліній</b>, клацніть на мапі в місці початку лінії, потім клацайте у кожній потрібній точці, щоб лінія мали відповідну форму. Подвійне клацання, чи натискання на Enter призведе до завершення креслення лінії.</p>\n            <p><b>Для створення полігону</b>, робіть все так само як і для створення лінії, для завершення клацніть на початкову точку , щоб замкнути лінію полігону.</p>\n            <p>Запам’ятайте, якщо ви припустились помилки,завжди можна скористатись кнопкою Відмінити. Натискання Esc призведе до скасування усіх змін для поточного об’єкта.</p>
+help.editBeg=Правити (поч.)
+help.editingFeatures=Редагування об’єктів (початківцям)
+help.editingFeaturesText=<p><b>Щоб додати точку до існуючої лінії</b>, виділіть її натисніть клавішу shift та клацніть у потрібному місці.</p>\n    <p><b>Для вилучення точки</b>, виділіть її та натисніть «Влучити елемент» в правому нижньому куті або натисніть Delete (чи Backspace) на клавіатурі.</p>\n  <p><b>Для вилучення лінії</b>,  виділіть її та натисніть «Влучити елемент» в правому нижньому куті або натисніть shift+Delete (ч shift+Backspace)  на клавіатурі.</p>\n    <p><b>Для переміщення точки</b>, клацніть на еї та потягніть.</p>\n   <p><b>Для переміщення лінії</b>, клацніть та потягніть весь об’єкт. Підказка: Хапайтесь за відрізок, якщо ви не бажаєете випадково пересунути точку.</p>\n  <p><b>Для продовження лінії</b>, клацніть на один з її кінців, потім креслить як завжди.</p>\n    <p><b>Для додавання нової лінії, що з’єднується з інсуючою лінією</b>, клацніть на кінець лінії натиснувши shift, потім кресліть як звичайно.</p>
+help.editAdv=Редагування (Досв.)
+help.editingFeaturesAdv=Редагування об’єктів (Розширене)
+help.editingFeaturesAdvText=<p><b>Щоб розділити лінію</b>, виділіть точку в якій її треба розрізати та скористайтесь «Ножицями» або натисніть X на клавіатурі. Порада: Якщо в потрібному місці точка відсутня — спочатку додайте її, а потім розрізайте.</p>\n            <p><b>Щоб з’єднати дві лінії, що перехрещуються</b>, кресліть як звичайно до тих під доки вам не знадобиться створити перехрестя. Наведіть вказівник миші на іншу лінію, точки на ній підсвітяться синім, клацніть на синю точку або у потрібне місце на лінії для створення перехрестя.</p>\n            <p><b>Для роз’єднання перехрещених ліній</b>, виділіть точку на лінії, яку потрібно змінити. Натисніть «-» на клавіатурі для вилучення точки.</p>\n            <p><b>Для зміни напрямку лінії</b>, натисніть на кнопку «Змінити напрямок» у правому нижньому куті. Напрямок лінії має сенс лише для певних об’єктів таких як дороги з одностороннім рухом, берегова лінія, острови та таке інше.</p>\n            <p><b>Для створення паралельної лінії</b>, виділіть лінію та натисніть на кнопку «Створити паралельну лінію» в правому нижньому куті чи натисніть P на клавіатурі.</p>\n     <p><b>Для створення лінії, що використовує точки вже існуючої лінії</b>, почніть креслити, клацнувши на дві перші спільні точки, а потім натисніть F для автоматичного слідування точкам існуючої лінії.</p>\n            <p><i>Відвідайте <a href="http://wiki.openstreetmap.org/wiki/Potlatch2/Primer" target="_blank">Приклади Potlatch 2</a> на Вікі OpenStreetMap, щоб знайти більше інформації про методи та угоди редагування.</i></p>
+help.tag=Теґ
+help.taggingFeatures=Позначення об’єктів
+help.taggingFeaturesText=<p>В Potlatch 2, позначення об’єктів стало значно простішим з використанням графічних меню та спеціальних полів/значків.</p>\n          <p><b>Позначення об’єктів теґами</b></p>\n          <p>Виділіть точку чи лінію, яку ви бажаєте редагувати, оберіть відповідний теґ із панелі ліворуч. Після позначення об’єкту, з’являться кілька основних полів, такі як назва, обмеження швидкості, ширина, в залежності від обраного теґу. Заповніть їх потрібними значеннями.</p><p>Досвідчені користувачі можуть помітити відсутність деяких теґів та їх значень, які вони використовують. Якщо вам потрібно додати додаткові теґи скористайтесь вкладкою Розширені параметри знизу панелі у разі потреби.</p>\n          <p>Вікі OpenStreetMap також надає <a href="http://wiki.openstreetmap.org/wiki/Uk:Map_features" target="_blank">розширений перелік теґів та їх значнь</a>. Будь ласка, звертайтесь до документації OSM, якщо ви невпевнені, що до застосування теґів.</p>
+help.shortcuts=Комбінації клавіш
+help.keyboardShortcuts=Сполучення клавіш
diff --git a/l10n/locale/uk/p2_main.properties b/l10n/locale/uk/p2_main.properties
new file mode 100644 (file)
index 0000000..92e2765
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Ukrainian (Українська)
+# Exported from translatewiki.net
+# Author: Andygol
+
+main.undo=Скасувати
+main.redo=Повернути
+main.background=Фон
+main.map_style=Стиль мапи
+main.gpsButton=GPS-дані
+main.gps_data=GPS-дані
+main.my_tracks=Мої треки
+main.clear_gps=Очистити
+main.help=Довідка
+main.options=Параметри
+main.save=Зберегти
+tag_viewer.dndprompt=Додайте нові точки, перетягнувши їх на мапу
+toolbox.delete_node=Вилучити точку (Delete)
+toolbox.delete_area=Вилучити  ділянку (Shift+Delete)
+toolbox.delete_way=Вилучити лінію (Shift+Delete)
+toolbox.delete_item=Вилучити елемент
+toolbox.reverse_direction=Змінити напрямок (V)
+toolbox.split_way=Розділити лінію (X)
+toolbox.merge_ways=Об’єднати лінії
+toolbox.straighten_way=Випрямити лінію
+toolbox.make_circular=Створити коло
+toolbox.make_right_angled=Зробити кути прямими (Q)
+toolbox.create_parrallel_way=Створити паралельну лінію (P)
+oauth.gotLinkBox=Натисніть на посилання нижче, щоб відкрити веб-сторінку, де вам буде запропоновано дозволити доступ для цього застосунка.
+oauth.authorized=Автентифікований доступ можна перевірити натиснув на кнопки «Випробувати доступ»
+oauth.deniedLabel=<b>Відмовлено в доступі, перевірте і повторіть спробу</b>
+oauth.rememberMe=Запам’ятати мене
+oauth.permFail=<p>Сервер відхилив повноваження цього застосунку — не вдається отримати посилання на авторизації.</p>\n<p>        <b>OAuth доступу не можливий.</b>              </p>\n<p>Зверніться до постачальника застосунку, щоб з’ясувати, що відбувається.</p>
+oauth.tempFail=Сталася помилка підключення до сервера для отримання авторизації.    Це може бути тимчасова помилка, спробуйте ще раз пізніше.
+oauth.tryAccessButton=Випробувати доступ
+oauth.cancelButton=Скасувати
+save.editDescription=Будь ласка, введіть опис для ваших змін. Він дасть можливість іншим маперам мати уявлення про те, які зміни ви зробили.
+styleSelector.editButton=Правити…
+backgroundSelector.dim=приглушити
+backgroundSelector.sharpen=збільшити різкість
+backgroundSelector.editButton=Правити…
+backgroundSelector.vectorButton=Векторний файл…
+options.tbcheck=Показати панель інструментів
+options.cursorcheck=Використовувати власні курсори
+options.ok=Гаразд
diff --git a/l10n/locale/vi_VN/help_dialog.properties b/l10n/locale/vi_VN/help_dialog.properties
new file mode 100644 (file)
index 0000000..9fd363c
--- /dev/null
@@ -0,0 +1,37 @@
+# Messages for Vietnamese (Tiếng Việt)
+# Exported from translatewiki.net
+# Author: Minh Nguyen
+
+help.gettingStarted=Bắt đầu
+help.welcome=Hoan nghênh
+help.whyOpenstreetmap=<p><b>Tại sao OpenStreetMap?</b> OSM là một dịch vụ bản đồ có dữ liệu được cập nhật luôn luôn do công sức của những nguời thường như bạn. Dĩ nhiên bạn có thể sử dụng OSM miễn phí, nhưng nó cũng có điểm lợi khác. Nó là một trong những dịch vụ quan trọng nhất cung cấp bản đồ ở nơi thảm họa: dữ liệu OSM được sử dụng để phối hợp các nỗ lực cứu tế tại Haiti sau động đất. Dữ liệu bản đồ cần phải chính xác và đầy đủ. Hy vọng bạn sẽ tình nguyện để dành một tí thì giờ để đóng góp!</p>
+help.activeMembers=<p><b>• Các thành viên đã có tài khoản:</b> Xin vui lòng đăng nhập vào OpenStreetMap truớc khi sửa đổi.</p>
+help.newMembers=<p><b>• Các thành viên mới:</b> Xin vui lòng ghé vào <a href="http://www.openstreetmap.org/user/new" target="_blank">http://www.openstreetmap.org</a> để mở tài khoản mới truớc tiên. Sau đó, đăng nhập và trở về đây để cho phép Potlatch 2 truy cập tài khoản và bắt đầu sửa đổi.</p>
+help.introText=<p><b>Potlatch2</b> là một trình vẽ OpenStreetMap (OSM) cho phép bạn sửa đổi trực tiếp từ trang {0}.</p>
+help.introduction=Giới thiệu
+help.controls=Điều khiển
+help.interfaceControls=Các điều khiển giao diện
+help.mapBackground=<p>Chọn lớp nền bản đồ từ trình đơn hoặc thêm một tập tin vectơ của bạn.</p>
+help.colourStyle=<p>Chọn kiểu để hiển thị bản đồ. Có sẵn nhiều kiểu màu sắc và kiểu vẽ đường, cũng như một số tùy chọn khác như Khung lưới.</p>
+help.gps=GPS
+help.createOsmMap=<p>Vẽ dữ liệu bản đồ OSM bằng cách đồ lên tuyến đường GPS của nguời khác.</p>
+help.myGps=MyGPS
+help.displayGps=<p>Hiện các tuyến đường GPS mà bạn đã tải lên OpenStreetMap.</p>
+help.undoRedo=Hoàn tác / Làm lại
+help.madeMistake=<p>Vừa vẽ nhầm lẫn? Chỉ việc bấm Hoàn tác hoặc Làm lại để chỉnh sửa các đối tượng vẽ.</p>
+help.help=Trợ giúp
+help.guideInfomation=<p>Mở hướng dẫn này để chỉ dẫn cách sửa đổi.</p>
+help.save=Lưu
+help.addingFeatures=Bổ sung Đối tượng
+help.addingFeaturesText=<p><i>Truớc tiên, bạn phải nhớ quy tắc quan trọng nhất về cách sử dụng dữ liệu mang tính thương mại: <b>không cho phép</b> sử dụng dữ liệu từ bất kỳ bản đồ có bản quyền hoặc bất kỳ dữ liệu thương mại khác! <b>Không cho phép</b> sao chép, đồ lên, hoặc tái sản xuất bằng bất cứ phương pháp nào! (Nguồn: <a href="http://wiki.openstreetmap.org/wiki/Copyright?uselang=vi" target="_blank">Quyền tác giả – OpenStreetMap Wiki</a>)</i></p>\n<p></p>\n<p>Hướng dẫn này chỉ đến các đối tượng hình tuyến như đường sá, đường bộ, đường sắt, và hình dạng tòa nhà với tên <b>lối</b>.</p>\n<p>Nếu bạn tình cờ nhận thấy rằng các hình tượng trên thanh bên bị mất, có lẽ một địa điểm hay lối đang được chọn trên bản đồ. Để bỏ chọn nó, nhấn chuột vào một vùng trống trên bản đồ; các hình tượng sẽ hiện ngay.</p>\n<p>Để <b>bổ sung một địa điểm (hoặc nốt)</b>, chỉ việc kéo một hình tượng trưng cho nó từ thanh bên và thả nó vào bản đồ. Xem “Bổ sung địa điểm” để biết thêm về việc tạo địa điểm ưa thích (POI)</p>\n<p>Để <b>vẽ một lối</b>, nhấn chuột vào bản đồ tại vị trí bắt đầu, rồi nhấn chuột vào mọi vị trí dẫn tiếp. Nhấn đúp hoặc bấm “Enter” trên bàn phím để kết thúc đường vẽ.</p>\n<p>Để <b>vẽ một hình đa giác (vùng)</b>, nhấn chuột vào bản đồ tại vị trí bắt đầu, rồi nhấn chuột vào mọi vị trí dẫn tiếp – y chang như việc vẽ lối – và nhấn chuột vào nốt đầu tiên để đóng hình đa giác.</p>\n<p>Nếu bạn vẽ nhầm lẫn, bạn có thể bấm nút Hoàn tác. Bấm “Esc” trên bàn phím để kết thúc sửa đổi điểm hay lối hiện hành.</p>
+help.editBeg=Sửa (Cơ bản)
+help.editingFeatures=Sửa đổi Đối tượng (Cơ bản)
+help.editingFeaturesText=<p>Để <b>thêm một nốt vào giữa một lối đã tồn tại</b>, chọn lối đó, rồi giữ bấm Shift và nhấn chuột vào vị trí của nốt mới.</p>\n<p>Để <b>xóa một nốt</b>, chọn nó và bấm nút “Xóa Nốt” ở phía duới bên phải hoặc bấm Delete (hoặc Backspace) trên bàn phím.</p>\n<p>Để <b>xóa cả một lối</b>, chọn lối đó và bấm nút “Xóa Lối” ở phía dưới bên phải, hoặc bấm Shift+Delete (hoặc Shift+Backspace) trên bàn phím.</p>\n<p>Để <b>di chuyển một điểm hay nốt</b>, chọn và kéo nó.</p>\n<p>Để <b>di chuyển một lối</b>, bấm và kéo cả lối đó. (Gợi ý: Khi kéo lối, tránh các nốt của lối).</p>\n<p>Để <b>kéo dài một lối</b>, nhấn chuột vào nốt tại đầu hay đuôi của lối, rồi tiếp tục vẽ lối bình thường.</p>\n<p>Để <b>vẽ một lối mới liền với đầu hay đuôi của lối đã tồn tại</b>, giữ Shift và nhấn chuột vào nốt tại đầu hay đuôi của lối đó, rồi tiếp tục vẽ lối mới bình thường.</p>
+help.editAdv=Sửa (Nâng cao)
+help.editingFeaturesAdv=Sửa đổi Đối tượng (Nâng cao)
+help.editingFeaturesAdvText=<p>Để <b>cắt đôi một lối</b>, chọn một điểm để cắt và nhấn chuột vào công cụ “Cắt đôi” (đôi kéo) hoặc bấm “X” trên bàn phím. (Gợi ý: Để cắt một lối giữa hai nốt, thêm một nốt mới trước tiên.)</p>\n<p>Để <b>nối liền hai lối</b>, vẽ các lối bình thường đến khi cần nối liền. Khi bạn chuyển con trỏ lên trên một lối khác, các nốt của lối đó sẽ được tô màu xanh. Nhấn chuột vào một trong những nốt xanh hoặc vào nơi khác nào đó trên lối để nối liền.</p>\n<p>Để <b>gỡ một lối khỏi nơi nối liền</b>, chọn nốt trên lối mà bạn muốn gỡ ra. Bấm “-” trên bàn phím để dời nốt khỏi lối.</p>\n<p>Để <b>đảo nguợc một lối</b>, bấm nút “Đảo nguợc” ở phía duới bên phải. Hướng của lối chỉ có ảnh hưởng đến các lối có thẻ “oneway” (một chiều) như các đường một chiều, cũng như các bờ biển, hòn đảo, v.v.</p>\n<p>Để <b>vẽ các lối song song</b>, chọn lối gốc và bấm nút “Vẽ Lối Song song” ở phía duới bên phải, hoặc bấm “P” trên bàn phím.</p>\n<p>Để <b>vẽ lối mới chạy theo lối khác</b>, bắt đầu vẽ lối mới, nhấn chuột vào ít nhất hai nốt trên lối khác, rồi cứ bấm “F” trên bàn phím để tự động chạy theo lối khác.</p>\n<p><i>Đọc <a href="http://wiki.openstreetmap.org/wiki/Potlatch2/Primer?uselang=vi" target="_blank">Hướng dẫn Potlatch2</a> trên OpenStreetMap Wiki để biết những cách sửa đổi nâng cao hơn.</i></p>
+help.tag=Thẻ
+help.taggingFeatures=Gắn thẻ vào Đối tượng
+help.taggingFeaturesText=<p>Trong Potlatch 2, bạn có thể sử dụng các trình đơn, hộp văn bản, và hình tượng để gắn thẻ dễ dàng.</p>\n<p><b>Gắn thẻ vào một địa điểm, nốt, hay lối</b></p>\n<p>Chọn nốt hay điểm để sửa đổi và chọn thẻ phù hợp từ thanh bên ở bên trái. Sau khi gắn thẻ vào đối tượng, bạn có thể tùy biến một số chi tiết cơ bản, thí dụ như “Tên”, “Tốc độ Tối đa”, và “Chiều rộng”, tùy thẻ được chọn. Điền biểu mẫu này càng đầy đủ càng tốt.</p>\n<p>Những người dùng nâng cao có thể cần đặt một số thẻ và chi tiết ít phổ biến hơn. Trong trường hợp này, bấm thẻ “Nâng cao” ở phía duới của thanh bên và sửa đổi và bổ sung các thẻ khác.</p>\n<p>OpenStreetMap Wiki cung cấp một <a href="http://wiki.openstreetmap.org/wiki/Vi:Map_Features?uselang=vi" target="_blank">danh sách thẻ và giá trị thẻ đầy đủ</a>. Xin vui lòng tra cứu tài liệu OSM này khi nào không chắc chắn về các thẻ để sử dụng.</p>
+help.shortcuts=Phím tắt
+help.keyboardShortcuts=Phím tắt
diff --git a/l10n/locale/vi_VN/p2_main.properties b/l10n/locale/vi_VN/p2_main.properties
new file mode 100644 (file)
index 0000000..8f15315
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Vietnamese (Tiếng Việt)
+# Exported from translatewiki.net
+# Author: Minh Nguyen
+
+main.undo=Hoàn tác
+main.redo=Làm lại
+main.background=Lớp Nền
+main.map_style=Kiểu Bản đồ
+main.gpsButton=Dữ liệu GPS
+main.gps_data=Dữ liệu GPS
+main.my_tracks=Tuyến dường của Tôi
+main.clear_gps=Xóa
+main.help=Trợ giúp
+main.options=Tùy chọn
+main.save=Lưu
+tag_viewer.dndprompt=Để thêm dịa điểm mới, kéo nó vào bản đồ
+toolbox.delete_node=Xóa Nốt (Delete)
+toolbox.delete_area=Xóa Vùng (Shift+Delete)
+toolbox.delete_way=Xóa Lối (Shift+Delete)
+toolbox.delete_item=Xóa Đối tượng
+toolbox.reverse_direction=Đảo nguợc (V)
+toolbox.split_way=Cắt đôi Lối (X)
+toolbox.merge_ways=Hợp nhất các Lối
+toolbox.straighten_way=Làm Thẳng
+toolbox.make_circular=Làm Tròn
+toolbox.make_right_angled=Làm Vuông góc (Q)
+toolbox.create_parrallel_way=Vẽ Lối Song song (P)
+oauth.gotLinkBox=Nhấn chuột vào liên kết ở duới để mở một trang Web xin bạn cho phép ứng dụng này truy cập vào tài khoản của bạn.
+oauth.authorized=Sau khi bạn cho phép ứng dụng này, bấm nút “Thử Truy cập” ở duới.
+oauth.deniedLabel=<b>Ứng dụng không có phép truy cập tài khoản của bạn. Xin vui lòng kiểm tra lại và thử lần nữa.</b>
+oauth.rememberMe=Nhớ thông tin đăng nhập của tôi
+oauth.permFail=<p>Máy chủ không thể xác nhận thông tin đăng nhập của ứng dụng này.</p>\n<p> <b>Không thể truy cập tài khoản của OAuth.</b> </p>\n<p> Xin vui lòng liên lạc với chủ ứng dụng để biết thêm chi tiết.</p>
+oauth.tempFail=Xuất hiện trục trặc khi kết nối với máy chủ để kiểm tra thông tin đăng nhập. Đây có thể là một vấn đề tạm thời; xin thử lại sau.
+oauth.tryAccessButton=Thử Truy cập
+oauth.cancelButton=Hủy bỏ
+save.editDescription=Xin vui lòng miêu tả các sửa đổi của bạn, để cho những nguời dùng khác hiểu biết những thay đổi trên bản đồ.
+styleSelector.editButton=Sửa đổi…
+backgroundSelector.dim=Làm mờ
+backgroundSelector.sharpen=Làm rõ
+backgroundSelector.editButton=Sửa đổi…
+backgroundSelector.vectorButton=Tập tin Vectơ…
+options.tbcheck=Hiện hộp công cụ
+options.cursorcheck=Hiện con trỏ đặc biệt
+options.ok=OK
diff --git a/l10n/locale/zh_CN/help_dialog.properties b/l10n/locale/zh_CN/help_dialog.properties
new file mode 100644 (file)
index 0000000..7fb76a4
--- /dev/null
@@ -0,0 +1,21 @@
+# Messages for Simplified Chinese (‪中文(简体)‬)
+# Exported from translatewiki.net
+# Author: Mmyangfl
+
+help.gettingStarted=入门
+help.welcome=欢迎
+help.activeMembers=<p><b>+ 活跃的 OpenStreetMap 成员</b>,在编辑之前请先登录到 OSM。</p>
+help.controls=控件
+help.interfaceControls=界面控件
+help.gps=GPS
+help.createOsmMap=<p>使用他人的 GPS 轨迹作为背景,以创建 OSM 地图数据</p>
+help.myGps=我的 GPS
+help.undoRedo=撤消/重做
+help.madeMistake=<p>错了吗?只需单击撤消和/或重做,就可更正您的编辑。</p>
+help.help=帮助
+help.save=保存
+help.editBeg=编辑(基础)
+help.editAdv=编辑(高级)
+help.tag=标签
+help.shortcuts=快捷键
+help.keyboardShortcuts=键盘快捷键
diff --git a/l10n/locale/zh_CN/p2_main.properties b/l10n/locale/zh_CN/p2_main.properties
new file mode 100644 (file)
index 0000000..5feaf76
--- /dev/null
@@ -0,0 +1,44 @@
+# Messages for Simplified Chinese (‪中文(简体)‬)
+# Exported from translatewiki.net
+# Author: Mmyangfl
+
+main.undo=撤销
+main.redo=重做
+main.background=背景
+main.map_style=地图样式
+main.gpsButton=GPS 数据
+main.gps_data=GPS 数据
+main.my_tracks=我的轨迹
+main.clear_gps=清除
+main.help=帮助
+main.options=选项
+main.save=保存
+tag_viewer.dndprompt=拖动它们到地图上以添加新的点
+toolbox.delete_node=删除节点(Delete)
+toolbox.delete_area=删除区域(Shift+Delete)
+toolbox.delete_way=删除路径(Shift+Delete)
+toolbox.delete_item=删除项目
+toolbox.reverse_direction=逆转方向(V)
+toolbox.split_way=分拆路径(X)
+toolbox.merge_ways=合并路径
+toolbox.straighten_way=拉直路径
+toolbox.make_circular=制作圆形
+toolbox.make_right_angled=制作直角(Q)
+toolbox.create_parrallel_way=创建平行路径(P)
+oauth.gotLinkBox=点击下面的链接打开一个网页,在那里你会被要求授权这个应用程序可以访问。
+oauth.authorized=一旦你已授权访问,点击下面的“尝试访问”按钮
+oauth.deniedLabel=<b>访问被拒绝,请检查,然后重试</b>
+oauth.rememberMe=记住我
+oauth.permFail=<p>服务器拒绝此应用程序的凭据 -- 无法获得授权链接。             </p>\n<p>       <b>OAuth 访问将不可用。</b>              </p>\n<p>       请联系应用程序提供商,以找出发生了什么事情。</p>
+oauth.tempFail=联系服务器获得授权时有一个问题。    这可能是一个暂时的错误,请稍后再试。
+oauth.tryAccessButton=尝试访问
+oauth.cancelButton=取消
+save.editDescription=请输入您的修改的说明。这将被用来告诉其他制图者您在做什么。
+styleSelector.editButton=编辑...
+backgroundSelector.dim=亮度
+backgroundSelector.sharpen=锐化
+backgroundSelector.editButton=编辑...
+backgroundSelector.vectorButton=矢量文件...
+options.tbcheck=显示工具栏
+options.cursorcheck=使用自定义光标
+options.ok=确定
index b96a414..3b8d932 100644 (file)
@@ -2,27 +2,39 @@
 <LocaleMap enableLog="false"
     xmlns:mx="http://www.adobe.com/2006/mxml"
     xmlns:factory="mx.core.*"
-    xmlns="library://ns.babelfx.org/l10n/flex/" >
+    xmlns="http://l10n.babelfx.org/" >
 
   <!-- Support for Locale ResourceBundle changes -->
   <mx:Script>
     <![CDATA[
-      import com.mindspace.l10n.commands.ExternalLocaleCommand;
+      import org.babelfx.commands.ExternalLocaleCommand;
+      import org.babelfx.events.LocaleEvent;
       import mx.resources.ResourceManager;
       import mx.resources.IResourceManager;
 
       import net.systemeD.potlatch2.help.HelpDialog;
+
       import net.systemeD.potlatch2.TagViewer;
       import net.systemeD.potlatch2.Toolbox;
+      import net.systemeD.potlatch2.StyleSelector;
+      import net.systemeD.potlatch2.BackgroundSelector;
+
+      import net.systemeD.potlatch2.save.OAuthPanel;
+      import net.systemeD.potlatch2.save.SaveDialog;
+
+      import net.systemeD.potlatch2.options.OptionsDialog;
 
       private function onLocaleChanged(event:Event):void {
           var rMngr : IResourceManager = ResourceManager.getInstance();
-          var sri : SmartResourceInjector = event.target as SmartResourceInjector;
+          var sri : ResourceInjector = event.target as ResourceInjector;
           var options : Array = [
                                   { label : rMngr.getString('p2_main','main.gps_data') },
                                   { label : rMngr.getString('p2_main','main.my_tracks') },
                                   { label : rMngr.getString('p2_main','main.clear_gps') }
                                 ];
+          // ** FIXME: If the locale is en_US, then the above rMngr.getString calls return null.
+          //           Conversely, with any locale, the actual Label of gpsButton is never
+          //           updated and keeps showing 'GPS'.
 
           // Iterate all view instances and inject new dataProvider
           for each (var inst:potlatch2 in sri.targetInstances) {
   </commandFactory>
 
   <!--
-  SmartResourceInjectors for targeted class instantiations. Instead of dependency injection of UI instances,
-  we use SRI(s) here to remove any need to know view hierarchy relationships... we simply want a reference
+  ResourceInjectors(at v2) for targeted class instantiations. Instead of dependency injection of UI instances,
+  we use RI(s) here to remove any need to know view hierarchy relationships... we simply want a reference
   to the UI instance when ready.
   -->
 
-  <SmartResourceInjector bundleName="help_dialog" target="{HelpDialog}">
-    <ResourceProxy property="gettingStarted.text" key="help.gettingStarted" />
-    <ResourceProxy property="welcome.label" key="help.welcome" />
-  </SmartResourceInjector>
-
-  <SmartResourceInjector bundleName="p2_main" target="{potlatch2}" localeChange="onLocaleChanged(event)">
-    <ResourceProxy property="bgButton.label" key="main.background" />
-    <ResourceProxy property="styleButton.label" key="main.map_style" />
-    <ResourceProxy property="undo.label" key="main.undo" />
-    <ResourceProxy property="redo.label" key="main.redo" />
-    <ResourceProxy property="helpButton.label" key="main.help" />
-    <ResourceProxy property="optionsButton.label" key="main.options" />
-    <ResourceProxy property="saveButton.label" key="main.save" />
-  </SmartResourceInjector>
-
-  <SmartResourceInjector bundleName="p2_main" target="{TagViewer}">
-    <ResourceProxy property="dndPrompt" key="tag_viewer.dndprompt" />
-  </SmartResourceInjector>
-
-  <SmartResourceInjector bundleName="p2_main" target="{Toolbox}">
-    <ResourceProxy property="deleteNode" key="toolbox.delete_node" />
-    <ResourceProxy property="deleteWay" key="toolbox.delete_way" />
-    <ResourceProxy property="deleteArea" key="toolbox.delete_area" />
-    <ResourceProxy property="deleteItem" key="toolbox.delete_item" />
-    <ResourceProxy property="reverseButton.toolTip" key="toolbox.reverse_direction" />
-    <ResourceProxy property="splitButton.toolTip" key="toolbox.split_way" />
-    <ResourceProxy property="mergeButton.toolTip" key="toolbox.merge_ways" />
-    <ResourceProxy property="straightenButton.toolTip" key="toolbox.straighten_way" />
-    <ResourceProxy property="circulariseButton.toolTip" key="toolbox.make_circular" />
-    <ResourceProxy property="quadrilateraliseButton.toolTip" key="toolbox.make_right_angled" />
-    <ResourceProxy property="parralleliseButton.toolTip" key="toolbox.create_parrallel_way" />
-  </SmartResourceInjector>
-
-</LocaleMap>
\ No newline at end of file
+  <ResourceInjector bundleName="help_dialog" target="{HelpDialog}">
+    <ResourceSetter property="gettingStarted.text" key="help.gettingStarted" />
+    <ResourceSetter property="welcome.label" key="help.welcome" />
+    <ResourceSetter property="whyOpenStreetMap.htmlText" key="help.whyOpenstreetmap" />
+    <ResourceSetter property="activeMembers.htmlText" key="help.activeMembers" />
+    <ResourceSetter property="newMembersText.htmlText" key="help.newMembers" />
+    <!-- wanna call loaderInfo.parameters["site_name"] or getIntroText() -->
+    <!-- <ResourceSetter property="introText.htmlText" key="help.introText" parameters="that"/> -->
+    <ResourceSetter property="introduction.label" key="help.introduction" />
+    <ResourceSetter property="Controls.label" key="help.controls" />
+    <ResourceSetter property="interfaceControls.label" key="help.interfaceControls"/>
+    <ResourceSetter property="background.label" key="help.background"/>
+    <ResourceSetter property="mapBackground.htmlText" key="help.mapBackground"/>
+    <ResourceSetter property="mapStyle.label" key="help.mapStyle"/>
+    <ResourceSetter property="colourStyle.htmlText" key="help.colourStyle"/>
+    <ResourceSetter property="gps.label" key="help.gps"/>
+    <ResourceSetter property="createOsmMap.htmlText" key="help.createOsmMap"/>
+    <ResourceSetter property="undoRedo.label" key="help.undoRedo" />
+    <ResourceSetter property="madeMistake.htmlText" key="help.madeMistake" />
+    <ResourceSetter property="help.label" key="help.help" />
+    <ResourceSetter property="guideInfomation.htmlText" key="help.guideInfomation" />
+    <ResourceSetter property="save.label" key="help.save" />
+ <!--   <ResourceSetter property="saveText.htmlText" key="help.saveText" />    -->
+    <ResourceSetter property="addingFeatures.label" key="help.addingFeatures" />
+    <ResourceSetter property="addingFeaturesText.htmlText" key="help.addingFeaturesText" />
+    <ResourceSetter property="editBeg.label" key="help.editBeg" />
+    <ResourceSetter property="editingFeatures.label" key="help.editingFeatures" />
+    <ResourceSetter property="editingFeaturesText.htmlText" key="help.editingFeaturesText" />
+    <ResourceSetter property="editAdv.label" key="help.editAdv" />
+    <ResourceSetter property="editingFeaturesAdv.label" key="help.editingFeaturesAdv"/>
+    <ResourceSetter property="editingFeaturesAdvText.htmlText" key="help.editingFeaturesAdvText"/>
+    <ResourceSetter property="tag.label" key="help.tag" />
+    <ResourceSetter property="taggingFeatures.label" key="help.taggingFeatures" />
+    <ResourceSetter property="taggingFeaturesText.htmlText" key="help.taggingFeaturesText" />
+    <ResourceSetter property="shortcuts.label" key="help.shortcuts" />
+    <ResourceSetter property="keyboardShortcuts.label" key="help.keyboardShortcuts" />
+  </ResourceInjector>
+
+  <ResourceInjector bundleName="p2_main" target="{potlatch2}" localeChange="onLocaleChanged(event);">
+    <ResourceSetter property="bgButton.label" key="main.background" />
+    <ResourceSetter property="styleButton.label" key="main.map_style" />
+    <ResourceSetter property="undo.label" key="main.undo" />
+    <ResourceSetter property="redo.label" key="main.redo" />
+    <ResourceSetter property="helpButton.label" key="main.help" />
+    <ResourceSetter property="optionsButton.label" key="main.options" />
+    <ResourceSetter property="saveButton.label" key="main.save" />
+    <ResourceSetter property="gpsButton.label" key="main.gpsButton" />
+  <!--   These are setted on onLocaleChanged()
+    <ResourceSetter property="gpsData.label" key="main.gps_data" />
+    <ResourceSetter property="myTrack.label" key="main.my_track" />
+    <ResourceSetter property="clearGps.label" key="main.clear_gps" />
+    -->
+  </ResourceInjector>
+
+  <ResourceInjector bundleName="p2_main" target="{OAuthPanel}">
+    <ResourceSetter property="gotLinkBox.text" key="oauth.gotLinkBox" />
+    <ResourceSetter property="authorized.text" key="oauth.authorized" />
+    <ResourceSetter property="deniedLabel.text" key="oauth.deniedLabel" />
+    <ResourceSetter property="rememberMe.label" key="oauth.rememberMe" />
+    <ResourceSetter property="permFail.htmlText" key="oauth.permFail" />
+    <ResourceSetter property="tempFail.text" key="oauth.tempFail" />
+    <ResourceSetter property="tryAccessButton.label" key="oauth.tryAccessButton" />
+    <ResourceSetter property="cancelButton.label" key="oauth.cancelButton" />
+  </ResourceInjector>
+
+  <ResourceInjector bundleName="p2_main" target="{TagViewer}">
+    <ResourceSetter property="dndPrompt" key="tag_viewer.dndprompt" />
+  </ResourceInjector>
+
+  <ResourceInjector bundleName="p2_main" target="{Toolbox}">
+    <ResourceSetter property="deleteNode" key="toolbox.delete_node" />
+    <ResourceSetter property="deleteWay" key="toolbox.delete_way" />
+    <ResourceSetter property="deleteArea" key="toolbox.delete_area" />
+    <ResourceSetter property="deleteItem" key="toolbox.delete_item" />
+    <ResourceSetter property="reverseButton.toolTip" key="toolbox.reverse_direction" />
+    <ResourceSetter property="splitButton.toolTip" key="toolbox.split_way" />
+    <ResourceSetter property="mergeButton.toolTip" key="toolbox.merge_ways" />
+    <ResourceSetter property="straightenButton.toolTip" key="toolbox.straighten_way" />
+    <ResourceSetter property="circulariseButton.toolTip" key="toolbox.make_circular" />
+    <ResourceSetter property="quadrilateraliseButton.toolTip" key="toolbox.make_right_angled" />
+    <ResourceSetter property="parralleliseButton.toolTip" key="toolbox.create_parrallel_way" />
+  </ResourceInjector>
+
+  <ResourceInjector bundleName="p2_main" target="{StyleSelector}">
+    <ResourceSetter property="editButton.label" key="styleSelector.editButton" />
+  </ResourceInjector>
+
+  <ResourceInjector bundleName="p2_main" target="{BackgroundSelector}">
+    <ResourceSetter property="dim.label" key="backgroundSelector.dim" />
+    <ResourceSetter property="sharpen.label" key="backgroundSelector.sharpen" />
+    <ResourceSetter property="editButton.label" key="backgroundSelector.editButton" />
+    <ResourceSetter property="vectorButton.label" key="backgroundSelector.vectorButton" />
+  </ResourceInjector>
+
+  <ResourceInjector bundleName="p2_main" target="{SaveDialog}">
+    <ResourceSetter property="editDescription.text" key="save.editDescription" />
+    <ResourceSetter property="commentLabel.label" key="save.commentLabel" />
+  </ResourceInjector>
+
+  <ResourceInjector bundleName="p2_main" target="{OptionsDialog}">
+    <ResourceSetter property="tbcheck.label" key="options.tbcheck" />
+    <ResourceSetter property="cursorcheck.label" key="options.cursorcheck" />
+    <ResourceSetter property="ok.label" key="option.ok" />
+  </ResourceInjector>
+</LocaleMap>
diff --git a/lib/Framework_BabelFx-2.0.4.swc b/lib/Framework_BabelFx-2.0.4.swc
new file mode 100644 (file)
index 0000000..e4ec660
Binary files /dev/null and b/lib/Framework_BabelFx-2.0.4.swc differ
diff --git a/lib/Framework_BabelFx-g400a96.swc b/lib/Framework_BabelFx-g400a96.swc
deleted file mode 100644 (file)
index ccba27d..0000000
Binary files a/lib/Framework_BabelFx-g400a96.swc and /dev/null differ
diff --git a/lib/ant-contrib-1.0b3.jar b/lib/ant-contrib-1.0b3.jar
new file mode 100644 (file)
index 0000000..a7cd45b
Binary files /dev/null and b/lib/ant-contrib-1.0b3.jar differ
index b753057..7cff2c3 100644 (file)
Binary files a/lib/flexTasks.jar and b/lib/flexTasks.jar differ
diff --git a/lib/vector-collection-1.1.0-Final.swc b/lib/vector-collection-1.1.0-Final.swc
new file mode 100644 (file)
index 0000000..41817f4
Binary files /dev/null and b/lib/vector-collection-1.1.0-Final.swc differ
index 0f9461a..99d9e36 100644 (file)
@@ -207,24 +207,23 @@ package net.systemeD.controls {
                        
                        if(selectedIndex == -1 && typedTextChanged && textInput.text!=typedText) { 
                                // not in menu
-                               // trace("not in menu"); trace("- restoring to "+typedText);
                                textInput.text = typedText;
+                               textInput.validateNow();
                                textInput.selectRange(cursorPosition, cursorPosition);
                        } else if (dropdown && typedTextChanged && textInput.text!=typedText) {
                                // in menu, but user has typed
-                               // trace("in menu, but user has typed"); trace("- restoring to "+typedText);
                                textInput.text = typedText;
+                               textInput.validateNow();
                                textInput.selectRange(cursorPosition, cursorPosition);
                        } else if (showingDropdown && textInput.text==selectedLabel) {
                                // force update if Flex has fucked up again
-                               // trace("should force update");
                                TextInput(textInput).htmlText=selectedLabel;
                                textInput.validateNow();
                                if (typedTextChanged) textInput.selectRange(cursorPosition, cursorPosition);
                        } else if (showingDropdown && textInput.text!=selectedLabel && !typedTextChanged) {
                                // in menu, user has navigated with cursor keys/mouse
-                               // trace("in menu, user has navigated with cursor keys/mouse");
                                textInput.text = selectedLabel;
+                               textInput.validateNow();
                                textInput.selectRange(0, textInput.text.length);
                        } else if (textInput.text!="") {
                                textInput.selectRange(cursorPosition, cursorPosition);
index 47ac699..caa1423 100644 (file)
@@ -3,7 +3,15 @@ package net.systemeD.controls {
        import mx.controls.listClasses.*;
        import flash.display.DisplayObject;
        import mx.controls.Image;
+
+    /**
+    * The DataGridWarningField is a custom Label component that highlights values containing semicolons.
+    * It does so using colour and a warning icon. Simply use in place of a standard Label component, or use
+    * as a custom itemRenderer for a DataGridColumn.
+    *
+    * @see PromptingTextInputWarning
+    */
+
        public class DataGridWarningField extends Label {
 
                private var _image:Image;
index 3fbabce..64c7c2b 100644 (file)
@@ -6,13 +6,24 @@ package net.systemeD.controls {
        import flash.text.*;
        import flash.utils.Timer;
 
+       /**
+       * A FloatingAlert displays a message and stays on screen until the user next presses the mouse or a key.
+       * It's an alternative to showing a modal dialog that would simply be dismissed. The alert appears at the bottom
+       * centre of the screen and fades in as it moves up into view.
+       */
+
        public class FloatingAlert extends Sprite {
 
                private var textfield:TextField;
                private var h:int;
                private var w:int;
                private var timer:Timer;
-               
+
+               /**
+               * Create a new FloatingAlert
+               *
+               * @param message The message to display to the user
+               */
                public function FloatingAlert(message:String) {
                        super();
 
index 3661646..02f4e98 100644 (file)
@@ -3,6 +3,12 @@ package net.systemeD.controls {
        import flash.display.DisplayObject;
        import mx.controls.Image;
 
+    /**
+    * The PromptingTextInputWarning is a custom PromptingTextInput component that highlights values containing semicolons.
+    * It does so using colour and a warning icon. Simply use in place of a flexlib PromptingTextInput component.
+    *
+    * @see DataGridWarningField
+    */
        public class PromptingTextInputWarning extends PromptingTextInput {
 
                private var _image:Image;
diff --git a/net/systemeD/controls/Spinner.as b/net/systemeD/controls/Spinner.as
new file mode 100644 (file)
index 0000000..038aefa
--- /dev/null
@@ -0,0 +1,68 @@
+package net.systemeD.controls {
+       import flash.events.TimerEvent;
+       import flash.events.Event;
+       import flash.display.Sprite;
+       import flash.display.Shape;
+       import flash.utils.Timer;
+       import flash.filters.GlowFilter;
+       
+       // Adapted from http://www.stevensacks.net/2008/10/01/as3-apple-style-preloader/
+
+       public class Spinner extends Sprite {
+               private var timer:Timer;
+               private var slices:int;
+               private var radius:int;
+
+               public function Spinner(slices:int = 12, radius:int = 6) {
+                       super();
+                       this.slices = slices;
+                       this.radius = radius;
+                       draw();
+
+                       var filter:GlowFilter=new GlowFilter(0xFFFFFF,1,4,4,6);
+                       this.filters = [filter];
+               }
+
+               public function start():void {
+                       visible=true;
+                       if (timer) return;
+                       timer = new Timer(65);
+                       timer.addEventListener(TimerEvent.TIMER, onTimer, false, 0, true);
+                       timer.start();
+               }
+
+               public function stop():void {
+                       visible=false;
+                       if (!timer) return;
+                       timer.reset();
+                       timer.removeEventListener(TimerEvent.TIMER, onTimer);
+                       timer = null;
+               }
+
+               private function onTimer(event:TimerEvent):void {
+                       rotation = (rotation + (360 / slices)) % 360;
+               }
+               
+               private function draw():void {
+                       var i:int = slices;
+                       var degrees:int = 360 / slices;
+                       while (i--) {
+                               var slice:Shape = getSlice();
+                               slice.alpha = Math.max(0.2, 1 - (0.1 * i));
+                               var radianAngle:Number = (degrees * i) * Math.PI / 180;
+                               slice.rotation = -degrees * i;
+                               slice.x = Math.sin(radianAngle) * radius;
+                               slice.y = Math.cos(radianAngle) * radius;
+                               addChild(slice);
+                       }
+               }
+
+               private function getSlice():Shape {
+                       var slice:Shape = new Shape();
+                       slice.graphics.beginFill(0x666666);
+                       slice.graphics.drawRoundRect(-1, 0, 2, 6, 12, 12);
+                       slice.graphics.endFill();
+                       return slice;
+               }
+       }
+}
index 8aa038b..7bbf018 100644 (file)
@@ -1,24 +1,22 @@
 package net.systemeD.halcyon {
 
-       /*
-               === DebugURLRequest ===
-
-               If nocache has been set to 'true' via FlashVars, this will make the URLRequest using 
-               POST rather than GET - thereby preventing FP from caching it
-               (see http://www.ultrashock.com/forums/actionscript/force-reload-files-only-using-as3-123408.html).
-               
-               Sadly we can't just subclass URLRequest, which is defined as final. So you need to create your 
-               new DebugURLRequest, then refer to its .request property.
-               
-               We use an evil Global because we don't know where loaderInfo.parameters will be.
-
-       */
-
        import flash.net.URLRequest;
        import flash.net.URLRequestMethod;
        import flash.system.Capabilities;
        import net.systemeD.halcyon.Globals;
 
+    /**
+    * If nocache has been set to 'true' via FlashVars, this will make the URLRequest using
+    * POST rather than GET - thereby preventing FP from caching it.
+    *
+    * <p>Sadly we can't just subclass URLRequest, which is defined as final. So you need to create your
+    * new DebugURLRequest, then refer to its .request property.</p>
+    *
+    * <p>We use an evil Global because we don't know where loaderInfo.parameters will be.</p>
+    *
+    * @see http://www.ultrashock.com/forums/actionscript/force-reload-files-only-using-as3-123408.html
+    */
+
        public class DebugURLRequest {
 
                public var request:URLRequest;
index 81a2419..294f9d9 100644 (file)
@@ -3,14 +3,19 @@ package net.systemeD.halcyon {
        import flash.events.*;
     import flash.external.ExternalInterface;
 
-       /* JSController provides an interface for Halcyon to call the enclosing page, via JavaScript
-         */
+       /**
+       * JSController provides an interface for Halcyon to call the enclosing page, via JavaScript.
+       */
 
     public class JSController implements MapController {
 
         private var map:Map;
-               private var jsresponder:String;                                 // JavaScript function called when user clicks
+               private var jsresponder:String;
 
+        /**
+        * @param map
+        * @param jsresponder JavaScript function called when user clicks
+        */
         public function JSController(map:Map, jsresponder:String) {
             this.map = map;
             this.jsresponder = jsresponder;
index 1962177..833526e 100644 (file)
@@ -64,6 +64,7 @@ package net.systemeD.halcyon {
                public const NOT_DRAGGING:uint=0;                               //  |
                public const NOT_MOVED:uint=1;                                  //  |
                public const DRAGGING:uint=2;                                   //  |
+               public const SWALLOW_MOUSEUP:uint=3;                    //  |
                /** How far the map can be dragged without actually triggering a pan. */
                public const TOLERANCE:uint=7;                                  //  |
                
@@ -218,13 +219,14 @@ package net.systemeD.halcyon {
             }
                }
 
-        /** Download map data. Data is downloaded for the connection and the vector layers, where supported.
+        /** Download map data. Data is downloaded for the currently visible layers
         * The bounding box for the download is taken from the current map edges.
         */
                public function download():void {
-                       this.dispatchEvent(new MapEvent(MapEvent.DOWNLOAD, {minlon:edge_l, maxlon:edge_r, maxlat:edge_t, minlat:edge_b} ));
                        for (var i:uint=0; i<paintContainer.numChildren; i++)
-                               getLayerAt(i).connection.loadBbox(edge_l,edge_r,edge_t,edge_b);
+                               if(getLayerAt(i).visible == true) {
+                    getLayerAt(i).connection.loadBbox(edge_l,edge_r,edge_t,edge_b);
+                }
                }
 
         // Handle mouse events on ways/nodes
@@ -388,7 +390,8 @@ package net.systemeD.halcyon {
                /** Prepare for being dragged by recording start time and location of mouse. */
                public function mouseDownHandler(event:MouseEvent):void {
                        if (!_draggable) { return; }
-                       dragstate=NOT_MOVED;
+                       if (dragstate==DRAGGING) { moveMap(x,y); dragstate=SWALLOW_MOUSEUP; }   // cancel drag if mouse-up occurred outside the window (thanks, Safari)
+                       else { dragstate=NOT_MOVED; }
                        lastxmouse=stage.mouseX; downX=stage.mouseX;
                        lastymouse=stage.mouseY; downY=stage.mouseY;
                        downTime=new Date().getTime();
@@ -427,6 +430,7 @@ package net.systemeD.halcyon {
 
                private function everyFrame(event:Event):void {
                        if (tileset) { tileset.serviceQueue(); }
+                       if (stage.focus && !stage.contains(stage.focus)) { stage.focus=stage; }
                }
 
                // ------------------------------------------------------------------------------------------
@@ -445,21 +449,5 @@ package net.systemeD.halcyon {
                        }
                }
 
-               // ------------------------------------------------------------------------------------------
-               // Debugging
-               
-               public function clearDebug():void {
-                       if (!Globals.vars.hasOwnProperty('debug')) return;
-                       Globals.vars.debug.text='';
-               }
-                       
-               public function addDebug(text:String):void {
-                       trace(text);
-                       if (!Globals.vars.hasOwnProperty('debug')) return;
-                       if (!Globals.vars.debug.visible) return;
-                       Globals.vars.debug.appendText(text+"\n");
-                       Globals.vars.debug.scrollV=Globals.vars.debug.maxScrollV;
-               }
-
        }
 }
index 3dfeeba..907d6cf 100644 (file)
@@ -17,7 +17,7 @@ package net.systemeD.halcyon {
                public static const NUDGE_BACKGROUND:String = "nudge_background";
         /** Map has been created and is ready, although data is not yet downloaded. */
         public static const INITIALISED:String = "initialized";
-               /** Backrgound imagery has changed to one with attribution that must not be obscured. */
+               /** Background imagery has changed to one with attribution that must not be obscured. */
                public static const BUMP:String = "bump";
                public static const MOUSE_MOVE:String="mouse_move";
                public static const ERROR:String = "error";                             // ** FIXME - this should be a dedicated ErrorEvent class
index a340f60..8016686 100644 (file)
@@ -188,7 +188,7 @@ package net.systemeD.halcyon {
                        }
 
                        for each (poi in o.poisInside) {
-                               if (!nodeuis[poi.id]) { createNodeUI(poi); }
+                               if (!nodeuis[poi.id]) { createNodeUI(poi,true); }
                                else if (redraw) { nodeuis[poi.id].redraw(); }
                        }
 
@@ -249,13 +249,26 @@ package net.systemeD.halcyon {
                                if (nodeuis[node.id]) { deleteNodeUI(node); }
                        }
                }
+               
+               /** Return WayUI properties */
+               public function wayUIProperties(way:Way):Object {
+                       if (wayuis[way.id]) {
+                               return { centroid_x: wayuis[way.id].centroid_x,
+                                            centroid_y: wayuis[way.id].centroid_y,
+                                            patharea:   wayuis[way.id].patharea,
+                                            pathlength: wayuis[way.id].pathlength };
+                       } else {
+                               return {};
+                       }
+               }
 
                /** Make a UI object representing a node. */
-               public function createNodeUI(node:Node,rotation:Number=0,layer:int=NO_LAYER,stateClasses:Object=null):NodeUI {
+               public function createNodeUI(node:Node,isPOI:Boolean,rotation:Number=0,layer:int=NO_LAYER,stateClasses:Object=null):NodeUI {
                        if (!nodeuis[node.id]) {
-                               nodeuis[node.id]=new NodeUI(node,this,rotation,layer,stateClasses);
+                               nodeuis[node.id]=new NodeUI(node,this,isPOI,rotation,layer,stateClasses);
                                node.addEventListener(Connection.NODE_DELETED, nodeDeleted);
                        } else {
+                               nodeuis[node.id].isPOI=isPOI;
                                for (var state:String in stateClasses) {
                                        nodeuis[node.id].setStateClass(state,stateClasses[state]);
                                }
@@ -336,15 +349,14 @@ package net.systemeD.halcyon {
                /** Redraw all entities */
                public function redraw():void {
                        for each (var w:WayUI in wayuis) { w.recalculate(); w.invalidateStyleList(); w.redraw(); }
-                       /* sometimes (e.g. in Map.setStyle) Mappaint.redrawPOIs() is called immediately afterwards anyway. FIXME? */
-                       for each (var p:NodeUI in nodeuis) { p.invalidateStyleList(); p.redraw(); }
-            for each (var m:MarkerUI in markeruis) { m.invalidateStyleList(); m.redraw(); }
+                       for each (var p:NodeUI in nodeuis) { if (p.isPOI) { p.invalidateStyleList(); p.redraw(); } }
+                       for each (var m:MarkerUI in markeruis) { m.invalidateStyleList(); m.redraw(); }
                }
 
                /** Redraw nodes and markers only */
                public function redrawPOIs():void {
-                       for each (var p:NodeUI in nodeuis) { p.invalidateStyleList(); p.redraw(); }
-            for each (var m:MarkerUI in markeruis) { m.invalidateStyleList(); m.redraw(); }
+                       for each (var p:NodeUI in nodeuis) { if (p.isPOI) { p.invalidateStyleList(); p.redraw(); } }
+                       for each (var m:MarkerUI in markeruis) { m.invalidateStyleList(); m.redraw(); }
                }
                
                /** Redraw a single entity if it exists */
@@ -381,7 +393,7 @@ package net.systemeD.halcyon {
         private function newPOICreatedListener(event:EntityEvent):void {
             var node:Node = event.entity as Node;
                        if (!node.within(map.edge_l, map.edge_r, map.edge_t, map.edge_b)) { return; }
-                       createNodeUI(node);
+                       createNodeUI(node,true);
         }
 
         private function newMarkerCreatedListener(event:EntityEvent):void {
index 4ad2c59..11bcc02 100644 (file)
@@ -16,6 +16,7 @@ package net.systemeD.halcyon {
        public class NodeUI extends EntityUI {
                
                public var loaded:Boolean=false;
+               public var isPOI:Boolean;
                private var iconnames:Object={};                        // name of icon on each subpart
                private var heading:Number=0;                           // heading within way
                private var rotation:Number=0;                          // rotation applied to this POI
@@ -27,9 +28,10 @@ package net.systemeD.halcyon {
                 * @param heading Optional angle.
                 * @param layer Which layer on the MapPaint object it sits on. @default Top layer
                 * @param stateClasses A settings object definining the initial state of the node (eg, highlighted, hover...) */
-               public function NodeUI(node:Node, paint:MapPaint, heading:Number=0, layer:int=NO_LAYER, stateClasses:Object=null) {
+               public function NodeUI(node:Node, paint:MapPaint, isPOI:Boolean, heading:Number=0, layer:int=NO_LAYER, stateClasses:Object=null) {
                        super(node,paint);
                        if (layer==NO_LAYER) { this.layer=paint.maxlayer; } else { this.layer=layer; }
+                       this.isPOI=isPOI;
                        this.heading = heading;
                        if (stateClasses) {
                                for (var state:String in stateClasses) {
@@ -77,7 +79,7 @@ package net.systemeD.halcyon {
                        tags=applyStateClasses(tags);
                        if (entity.status) { tags['_status']=entity.status; }
                        if (!styleList || !styleList.isValidAt(paint.map.scale)) {
-                               styleList=paint.ruleset.getStyles(entity,tags,paint.map.scale); 
+                               styleList=paint.ruleset.getStyles(entity,tags,paint.map.scale,isPOI); 
                        }
 
                        var suggestedLayer:Number=styleList.layerOverride();
index 5d2e1ea..84d6576 100644 (file)
@@ -50,6 +50,11 @@ package net.systemeD.halcyon {
                public function init(params:Object, update:Boolean=false):void {
                        baseurl=params.url;
                        scheme =params.scheme ? params.scheme : '900913';
+                       requests=[]; waiting=loadcount=0;
+                       for (var tilename:String in tiles) {
+                               if (tiles[tilename] is Loader) tiles[tilename].unload();
+                               tiles[tilename]=null;
+                       }
                        tiles={};
                        offset_lon=offset_lat=x=y=0;
                        while (numChildren) { removeChildAt(0); }
@@ -133,8 +138,8 @@ package net.systemeD.halcyon {
                                        waiting++;
                                        var loader:Loader = new Loader();
                                        tiles[map.scale+','+tx+','+ty]=loader;
-                                       loader.contentLoaderInfo.addEventListener(Event.INIT, doImgInit);
-                       loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, missingTileError);
+                                       loader.contentLoaderInfo.addEventListener(Event.INIT, doImgInit, false, 0, true);
+                                       loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, missingTileError, false, 0, true);
                                        loader.load(new URLRequest(tileURL(tx,ty,tz)), 
                                                    new LoaderContext(true));
                                        l=this.getChildAt(map.scale-map.MINSCALE);
index f278972..f7a5945 100644 (file)
@@ -218,6 +218,7 @@ package net.systemeD.halcyon {
                                centroid_x=c[0];
                                centroid_y=c[1];
                        }
+                       patharea=Math.abs(patharea);
                }
 
                // ------------------------------------------------------------------------------------------
@@ -346,7 +347,7 @@ package net.systemeD.halcyon {
 //                                  else { nodetags['_heading']=(heading[i]+heading[i-1])/2; }
                                // ** FIXME - heading isn't currently applied
                                nodeStateClasses['junction']=(node.numParentWays>1);
-                               paint.createNodeUI(node,r,layer,nodeStateClasses);
+                               paint.createNodeUI(node,false,r,layer,nodeStateClasses);
                        }
                        if (!drawn) { return false; } // If not visible, no hitzone.
                        
@@ -614,7 +615,7 @@ package net.systemeD.halcyon {
                /* Interaction */
         // TODO: can this be sped up? Hit testing for long ways (that go off the screen) seems to be very slow. */
                public function hitTest(x:Number, y:Number):Way {
-                       if (hitzone.hitTestPoint(x,y,true)) { return entity as Way; }
+                       if (hitzone && hitzone.hitTestPoint(x,y,true)) { return entity as Way; }
                        return null;
                }
        }
index f6f2a7a..94a9b05 100644 (file)
@@ -7,22 +7,27 @@ package net.systemeD.halcyon.connection {
     import net.systemeD.halcyon.AttentionEvent;
     import net.systemeD.halcyon.MapEvent;
     import net.systemeD.halcyon.connection.actions.*;
+    import net.systemeD.halcyon.connection.bboxes.*;
     import net.systemeD.halcyon.Globals;
+    import net.systemeD.halcyon.styleparser.CSSTransform;
 
        public class Connection extends EventDispatcher {
 
                public var name:String;
                public var statusFetcher:StatusFetcher;
+               public var inlineStatus:Boolean = false;
+               public var cssTransform:CSSTransform;
         protected var apiBaseURL:String;
         protected var policyURL:String;
         protected var params:Object;
 
-               public function Connection(cname:String,api:String,policy:String,initparams:Object=null) {
+               public function Connection(cname:String,api:String,policy:String,initparams:Object=null,transform:CSSTransform=null) {
                        initparams = (initparams!=null ? initparams:{});
                        name=cname;
                        apiBaseURL=api;
                        policyURL=policy;
                        params=initparams;
+                       cssTransform=transform;
                }
 
         public function getParam(name:String, defaultValue:String):String {
@@ -77,6 +82,10 @@ package net.systemeD.halcyon.connection {
                public static var RESUME_REDRAW:String = "resume_redraw";
         public static var TRACES_LOADED:String = "traces_loaded";
 
+               /** maximum number of /map calls to request for each pan/zoom */
+               protected const MAX_BBOXES:uint=3;
+               protected var fetchSet:FetchSet = new FetchSet();
+
         // store the data we download
         private var negativeID:Number = -1;
         private var nodes:Object = {};
@@ -93,7 +102,6 @@ package net.systemeD.halcyon.connection {
         private var traces:Vector.<Trace> = new Vector.<Trace>();
         private var nodePositions:Object = {};
         protected var traces_loaded:Boolean = false;
-               private var loadedBboxes:Array = [];
 
                /** maximum number of ways to keep in memory before purging */
                protected const MAXWAYS:uint=3000;
@@ -391,29 +399,12 @@ package net.systemeD.halcyon.connection {
                        return modified;
                }
 
-               // Keep track of the bboxes we've loaded
-
-               /** Has the data within this bbox already been loaded? */
-               protected function isBboxLoaded(left:Number,right:Number,top:Number,bottom:Number):Boolean {
-                       var l:Number,r:Number,t:Number,b:Number;
-                       for each (var box:Array in loadedBboxes) {
-                               l=box[0]; r=box[1]; t=box[2]; b=box[3];
-                               if (left>=l && left<=r && right>=l && right<=r && top>=b && top<=t && bottom>=b && bottom<=t) {
-                                       return true;
-                               }
-                       }
-                       return false;
-               }
-               /** Mark that bbox is loaded */
-               protected function markBboxLoaded(left:Number,right:Number,top:Number,bottom:Number):void {
-                       if (isBboxLoaded(left,right,top,bottom)) return;
-                       loadedBboxes.push([left,right,top,bottom]);
-               }
                /** Purge all data if number of ways exceeds limit */
                public function purgeIfFull(left:Number,right:Number,top:Number,bottom:Number):void {
                        if (waycount<=MAXWAYS) return;
                        purgeOutside(left,right,top,bottom);
-                       loadedBboxes=[[left,right,top,bottom]];
+                       fetchSet=new FetchSet();
+                       fetchSet.add(new Box().fromBbox(left,bottom,right,top));
                }
 
                // Changeset tracking
@@ -580,6 +571,9 @@ package net.systemeD.halcyon.connection {
 
         // these are functions that the Connection implementation is expected to
         // provide. This class has some generic helpers for the implementation.
+        /**
+        * Load data for the bounding box given. Usually called in response to pan / zoom requests
+        */
                public function loadBbox(left:Number, right:Number,
                                                                top:Number, bottom:Number):void {
            }
index 2a47935..c5c6178 100644 (file)
@@ -33,6 +33,7 @@ package net.systemeD.halcyon.connection {
             this._uid = uid;
             this._timestamp = timestamp;
             this._user = user
+            if (connection.cssTransform) tags=connection.cssTransform.run(this,tags);
             this.tags = tags;
                        this._loaded = loaded;
             modified = id < 0;
@@ -135,6 +136,14 @@ package net.systemeD.halcyon.connection {
             return tags[key];
         }
 
+               /** Retrieve a key matching a regex. */
+               public function getTagByRegex(regex:RegExp):String {
+                       for (var k:String in tags) {
+                               if (k.match(regex)) return tags[k];
+                       }
+                       return null;
+               }
+
         /** @return true if there exists key=value */
         public function tagIs(key:String,value:String):Boolean {
             if (!tags[key]) { return false; }
@@ -153,7 +162,7 @@ package net.systemeD.halcyon.connection {
 
         /** Change oldKey=[value] to newKey=[value], with optional undoability.
          * @param oldKey Name of key to rename
-         * @parame newKey New name of key
+         * @param newKey New name of key
          * @param performAction Single-argument function to pass a SetTagKeyAction to.
          * @example renameTag("building", "amenity", MainUndoStack.getGlobalStack().addAction);
          */
index 98d6034..1d036ab 100644 (file)
@@ -16,6 +16,7 @@ package net.systemeD.halcyon.connection {
                private var addedToRelationTimer:Timer;
                private var removedFromRelationTimer:Timer;
                private var delayedEvents:Array = [];
+               private static const DIFFERENT:String = "<different>";
 
         public function EntityCollection(entities:Array) {
                        var conn:Connection=entities[0].connection;
@@ -35,6 +36,14 @@ package net.systemeD.halcyon.connection {
                        }
         }
                
+               public function releaseListeners():void {
+                       for each(var entity:Entity in _entities) {
+                               entity.removeEventListener(Connection.TAG_CHANGED, onTagChanged);
+                               entity.removeEventListener(Connection.ADDED_TO_RELATION, onAddedToRelation);
+                               entity.removeEventListener(Connection.REMOVED_FROM_RELATION, onRemovedFromRelation);
+                       }
+               }
+               
                public override function get entities():Array {
                        return _entities;
                }
@@ -66,20 +75,19 @@ package net.systemeD.halcyon.connection {
                
                private function getMergedTags():Object {
                        //Builds an object with tags of all entities in this collection. If the value of a tag differs or is not set in all entities, value is marked
-                       var differentMarker:String = "<different>";
                        var mergedTags:Object = _entities[0].getTagsCopy();
                        for each(var entity:Entity in _entities) {
                                var entityTags:Object = entity.getTagsHash();
                                for(var key:String in entityTags) {
                                        var value:String = entityTags[key];
                                        if(mergedTags[key] == null || mergedTags[key] != value) {
-                                               mergedTags[key] = differentMarker;
+                                               mergedTags[key] = DIFFERENT;
                                        }
                                }
                                for(var mergedKey:String in mergedTags) {
                                        var mergedValue:String = mergedTags[mergedKey];
                                        if(entityTags[mergedKey] == null || entityTags[mergedKey] != mergedValue) {
-                                               mergedTags[mergedKey] = differentMarker;
+                                               mergedTags[mergedKey] = DIFFERENT;
                                        }
                                }
                        }
@@ -115,6 +123,7 @@ package net.systemeD.halcyon.connection {
                }
                
                public override function setTag(key:String, value:String, performAction:Function):void {
+            if (value==DIFFERENT) return;
                        var oldValue:String = getMergedTags()[key];     
                        var undoAction:CompositeUndoableAction = new CompositeUndoableAction("set_tag_entity_collection");
                        for each (var entity:Entity in _entities) {
@@ -126,7 +135,9 @@ package net.systemeD.halcyon.connection {
         public override function renameTag(oldKey:String, newKey:String, performAction:Function):void {
                        var undoAction:CompositeUndoableAction = new CompositeUndoableAction("rename_tag_entity_collection");
                        for each (var entity:Entity in _entities) {
-                               undoAction.push(new SetTagKeyAction(entity, oldKey, newKey));
+                               if (entity.getTag(oldKey)) {
+                                       undoAction.push(new SetTagKeyAction(entity, oldKey, newKey));
+                               }
                        }
             performAction(undoAction);
         }
@@ -171,7 +182,7 @@ package net.systemeD.halcyon.connection {
                                                if (!relations[rel.id]) {
                                                        relations[rel.id]= { role: role, relation: rel, distinctCount: 0};
                                                } else if (relations[rel.id].role!=role) {
-                                                       relations[rel.id].role="<different>";
+                                                       relations[rel.id].role=DIFFERENT;
                                                }
                                        }
                                        relations[rel.id].distinctCount++;
index 7b03d5f..16c6a63 100644 (file)
@@ -107,6 +107,11 @@ package net.systemeD.halcyon.connection {
         public function replaceWith(target:Node, performAction:Function):void {
             performAction(new ReplaceNodeAction(this, target));
         }
+        public function replaceWithNew(connection:Connection, lat:Number, lon:Number, tags:Object, performAction:Function):Node {
+                       var action:ReplaceNodeWithNewAction = new ReplaceNodeWithNewAction(this, connection, lat, lon, tags);
+                       performAction(action);
+                       return action.replacement;
+        }
 
         public function isDupe():Boolean {
             if (connection.getNode(this.id) == this // node could be part of a vector layer
index 999643f..db6d435 100644 (file)
@@ -60,6 +60,14 @@ package net.systemeD.halcyon.connection {
             return members[index];
         }
 
+               public function getFirstMember():RelationMember {
+                       return members[0];
+               }
+
+               public function getLastMember():RelationMember {
+                       return members[members.length-1];
+               }
+
         public function setMember(index:uint, member:RelationMember, performAction:Function):void {
             var composite:CompositeUndoableAction = new CompositeUndoableAction("Set Member at index "+index);
             composite.push(new RemoveMemberByIndexAction(this, members, index));
@@ -92,11 +100,19 @@ package net.systemeD.halcyon.connection {
         }
 
                public function removeMember(entity:Entity, performAction:Function):void {
-                       performAction(new RemoveEntityFromRelationAction(this, entity, members));
+                       if (length>1) {
+                               performAction(new RemoveEntityFromRelationAction(this, entity, members));
+                       } else {
+                               performAction(new DeleteRelationAction(this, setDeletedState, members));
+                       }
                }
 
         public function removeMemberByIndex(index:uint, performAction:Function):void {
-            performAction(new RemoveMemberByIndexAction(this, members, index));
+                       if (length>1) {
+                               performAction(new RemoveMemberByIndexAction(this, members, index));
+                       } else {
+                               performAction(new DeleteRelationAction(this, setDeletedState, members));
+                       }
         }
 
                public override function remove(performAction:Function):void {
@@ -112,20 +128,47 @@ package net.systemeD.halcyon.connection {
                        return (deleted || (members.length==0));
                }
 
-        public override function getDescription():String {
-            var desc:String = "";
-            var relTags:Object = getTagsHash();
-            if ( relTags["type"] ) {
-                desc = relTags["type"];
-                if ( relTags[desc] )
-                    desc += " " + relTags[desc];
-            }
-            if ( relTags["ref"] )
-                desc += " " + relTags["ref"];
-            if ( relTags["name"] )
-                desc += " " + relTags["name"];
-            return desc;
-        }
+               public override function getDescription():String {
+                       var desc:String = "";
+                       var relTags:Object = getTagsHash();
+                       var named:Boolean = false;
+                       if ( relTags["type"] ) {
+                               // type=route                           --> "route"
+                               desc = relTags["type"];
+                               // type=route, route=bicycle--> "route bicycle"
+                               if (relTags[desc]) { desc += " " + relTags[desc]; }
+                       }
+                       // type=route, route=bicycle, network=ncn, ref=54 -> "route bicycle ncn 54"
+                       if ( relTags["network"]) { desc += " " + relTags["network"]; }
+                       if ( relTags["ref"]    ) { desc += " " + relTags["ref"];  named=true; }
+                       if ( relTags["name"]   ) { desc += " " + relTags["name"]; named=true; }
+                       // handle node->node routes
+                       if ( !named && relTags["type"] && relTags["type"]=="route" ) {
+                               var firstName:String=getSignificantName(getFirstMember().entity);
+                               var lastName:String=getSignificantName(getLastMember().entity);
+                               if ((firstName+lastName)!='') desc+=" "+firstName+"-"+lastName;
+                       }
+                       return desc;
+               }
+               
+               public function getRelationType():String {
+                       var relTags:Object = getTagsHash();
+                       return relTags["type"] ? relTags["type"] : getType();
+               }
+               
+               private function getSignificantName(entity:Entity):String {
+                       if (!entity.loaded || (entity is Relation)) return '';
+
+                       var t:String;
+                       if (entity is Way) {
+                               t=getSignificantName(Way(entity).getFirstNode());
+                               if (t=='') t=getSignificantName(Way(entity).getLastNode());
+                               return t;
+                       }
+                       t=Node(entity).getTag('name');
+                       if (!t) t=Node(entity).getTagByRegex(/ref$/);
+                       return t ? t : '';
+               }
 
                public override function getType():String {
                        return 'relation';
index 25cf8ca..91db46d 100644 (file)
@@ -60,14 +60,15 @@ package net.systemeD.halcyon.connection {
 
                                // **** Specific WTFE-parsing code starts here
                                // FIXME: should be generalised
-                               //              if all users are "yes" or "auto", status is 'ok' (green)
-                               //              if first user is "no", status is 'no' (red)
-                               //              if any other users are no, status is 'partial' (softer red)
-                               //              otherwise, status is 'unsure' (yellow)
+                               //              if all users are "yes" or "auto", status is 'ok' (3, green)
+                               //              if first user is "no", status is 'no' (0, red)
+                               //              if any other users are no, status is 'partial' (1, softer red)
+                               //              otherwise, status is 'unsure' (2, yellow)
                                var s:uint=3;   // ok
                                for each (var user:XML in exml.user) {
-                                       if (user.@decision=='no' && user.@version=='first') { s=0; }    // no from v1
-                                       else if (user.@decision=='no') { s=Math.min(s,1); }                             // no from later version
+                                       if (user.@severity=='harmless' || user.@severity=='none') continue;     // ignore if harmless
+                                       if (user.@decision=='no' && user.@version=='first') { s=0; }            // no from v1
+                                       else if (user.@decision=='no') { s=Math.min(s,1); }                                     // no from later version
                                        else if (user.@decision=='undecided' || user.@decision=='anonymous') { s=Math.min(s,2); }       // unsure
                                }
                                status=STATUSES[s];
index 2f9289b..26911ed 100644 (file)
@@ -19,7 +19,7 @@ package net.systemeD.halcyon.connection {
             var oldKey:String = _key;
             var realVal:String = entity.getTag(oldKey);
             _key = key;
-            if ( oldKey != null && realVal != null && realVal != "" )
+            if ( oldKey != null && realVal != null && realVal != "" && oldKey!=key )
                 entity.renameTag(oldKey, key, MainUndoStack.getGlobalStack().addAction);
         }
 
index 9cd917e..4e66127 100644 (file)
@@ -22,7 +22,7 @@ package net.systemeD.halcyon.connection {
         public function get newValue():String { return _newValue; }
 
         public override function toString():String {
-            return super.toString() + "::'"+_oldKey+"' '"+_key +"' '"+_oldValue+"' '"+_newValue+"'";
+            return super.toString() + "::'"+_oldKey+"' '"+_key +"' '"+_oldValue+"' '"+_newValue+"' ["+item+"]";
         }
     }
 
index 8a4199e..d3bc0f2 100644 (file)
@@ -126,22 +126,12 @@ package net.systemeD.halcyon.connection {
                                }
                        }
 
-            for each (var trkseg:XML in file..trkseg) {
-                var way:Way;
-                var nodestring:Array = [];
-                for each (var trkpt:XML in trkseg.trkpt) {
-                    nodestring.push(connection.createNode({}, trkpt.@lat, trkpt.@lon, action.push));
-                }
-                if (nodestring.length > 0) {
-                    way = connection.createWay({}, nodestring, action.push);
-                    //if (simplify) { Simplify.simplify(way, paint.map, false); }
-                }
-            }
-
+                       Trace.parseTrkSegs(file,connection,action,false);
+                       
             for each (var wpt:XML in file.wpt) {
                 var tags:Object = {};
                 for each (var tag:XML in wpt.children()) {
-                    tags[tag.name().localName]=tag.toString();
+                    tags[tag.name().localName]=tag.toString().substr(0,255);
                 }
                 var node:Node = connection.createNode(tags, wpt.@lat, wpt.@lon, action.push);
                                connection.registerPOI(node);
@@ -151,5 +141,49 @@ package net.systemeD.halcyon.connection {
                        default xml namespace = new Namespace("");
             layer.updateEntityUIs(true, false);
         }
+
+               /* Draw ways from <trkseg>s, with elementary filter to remove points within 3 metres of each other. 
+                  Optionally split way if more than 50m from previous point.
+                  FIXME: do auto-joining of dupes as per Importer. */
+
+               public static function parseTrkSegs(file:XML, connection:Connection, action:CompositeUndoableAction, smartSplitting:Boolean=false):void {
+                       for each (var ns:Namespace in file.namespaceDeclarations()) {
+                               if (ns.uri.match(/^http:\/\/www\.topografix\.com\/GPX\/1\/[01]$/)) { default xml namespace = ns; }
+                       }
+                       for each (var trkseg:XML in file..trkseg) {
+                               var nodestring:Array = [];
+                               var lat:Number = NaN, lastlat:Number = NaN;
+                               var lon:Number = NaN, lastlon:Number = NaN;
+                               var dist:Number=0;
+                               for each (var trkpt:XML in trkseg.trkpt) {
+                                       lat = trkpt.@lat;
+                                       lon = trkpt.@lon;
+                                       if (isNaN(lastlat)) { lastlat = lat; lastlon = lon; }
+                                       dist=Trace.greatCircle(lat, lon, lastlat, lastlon);
+                                       if (dist>3) {
+                                               if ((dist>50 && smartSplitting) || nodestring.length>500) {
+                                                       if (dist<=50 || !smartSplitting) nodestring.push(connection.createNode({}, lat, lon, action.push));
+                                                       if (nodestring.length>1) connection.createWay({}, nodestring, action.push);
+                                                       nodestring=[];
+                                               }
+                                               nodestring.push(connection.createNode({}, lat, lon, action.push));
+                                               lastlat=lat; lastlon=lon;
+                                       }
+                               }
+                               if (nodestring.length > 1) { connection.createWay({}, nodestring, action.push); }
+                       }
+               }
+               
+               public static function greatCircle(lat1:Number,lon1:Number,lat2:Number,lon2:Number):Number {
+                       var dlat:Number=(lat2-lat1)*Math.PI/180;
+                       var dlon:Number=(lon2-lon1)*Math.PI/180;
+                       var a:Number=Math.pow(Math.sin(dlat / 2),2) + 
+                                    Math.cos(lat1*Math.PI/180) * 
+                                    Math.cos(lat2*Math.PI/180) * 
+                                    Math.pow(Math.sin(dlon / 2),2);
+                       a=Math.atan2(Math.sqrt(a),Math.sqrt(1-a));
+                       return a*3958.75*1609;
+               }
+               
     }
 }
index bdb1716..11d3214 100644 (file)
@@ -90,7 +90,7 @@ package net.systemeD.halcyon.connection {
         public function insertNode(index:uint, node:Node, performAction:Function):void {
                        if (index>0 && getNode(index-1)==node) return;
                        if (index<nodes.length-1 && getNode(index)==node) return;
-                       performAction(new AddNodeToWayAction(this, node, nodes, index));
+                       performAction(new AddNodeToWayAction(this, node, nodes, index, false));
         }
 
         public function appendNode(node:Node, performAction:Function):uint {
@@ -157,6 +157,39 @@ package net.systemeD.halcyon.connection {
             performAction(new ReverseNodesAction(this, nodes));
         }
 
+               
+               /** Is a point within this way?
+               * From http://as3.miguelmoraleda.com/2009/10/28/point-in-polygon-with-actionscript-3punto-dentro-de-un-poligono-con-actionscript-3/
+               */
+
+               public function pointWithin(lon:Number,lat:Number):Boolean {
+                       if (!isArea()) return false;
+                       
+                       var counter:uint = 0;
+                       var p1x:Number = nodes[0].lon;
+                       var p1y:Number = nodes[0].lat;
+                       var p2x:Number, p2y:Number;
+                       for (var i:uint = 1; i <= length; i++) {
+                               p2x = nodes[i % length].lon;
+                               p2y = nodes[i % length].lat;
+                               if (lat > Math.min(p1y, p2y)) {
+                                       if (lat <= Math.max(p1y, p2y)) {
+                                               if (lon <= Math.max(p1x, p2x)) {
+                                                       if (p1y != p2y) {
+                                                               var xinters:Number = (lat - p1y) * (p2x - p1x) / (p2y - p1y) + p1x;
+                                                               if (p1x == p2x || lon <= xinters) counter++;
+                                                       }
+                                               }
+                                       }
+                               }
+                               p1x = p2x;
+                               p1y = p2y;
+                       }
+                       if (counter % 2 == 0) { return false; }
+                       else { return true; }
+               }
+
         /**
          * Finds the 1st way segment which intersects the projected
          * coordinate and adds the node to that segment. If snap is
index 4a62d27..5de8112 100644 (file)
@@ -7,6 +7,7 @@ package net.systemeD.halcyon.connection {
        import org.iotashan.oauth.*;
 
        import net.systemeD.halcyon.MapEvent;
+    import net.systemeD.halcyon.connection.bboxes.*;
 
        /**
        * XMLBaseConnection is the common code between connecting to an OSM server
@@ -43,6 +44,7 @@ package net.systemeD.halcyon.connection {
                                        minlat=map.bounds.@minlat;
                                        maxlat=map.bounds.@maxlat;
                                        singleEntityRequest=false;
+                                       fetchSet.add(new Box().fromBbox(minlon,minlat,maxlon,maxlat));
                                }
 
                                for each(var relData:XML in map.relation) {
@@ -111,7 +113,9 @@ package net.systemeD.halcyon.connection {
                                                                           Number(nodeData.@uid),
                                                                           nodeData.@timestamp,
                                                                           nodeData.@user);
-                               
+
+                    if ( inlineStatus ) { newNode.status = nodeData.@status; }
+
                                        if ( singleEntityRequest ) {
                                                // it's a revert request, so create/update the node
                                                setOrUpdateNode(newNode, true);
@@ -147,17 +151,18 @@ package net.systemeD.halcyon.connection {
                                                tags = parseTags(data.tag);
                                                if ( way == null ) {
                                                        way=new Way(this, id, version, tags, true, nodelist, uid, timestamp, user)
+                                                       if ( inlineStatus ) { way.status = data.@status; }
                                                        setWay(way,false);
                                                        createdEntities.push(way);
                                                } else {
+                                                       if (!way.loaded) createdEntities.push(way);
                                                        waycount++;
                                                        way.update(version, tags, true, true, nodelist, uid, timestamp, user);
+                                                       if ( inlineStatus ) { way.status = data.@status; }
                                                        sendEvent(new EntityEvent(NEW_WAY, way), false);
                                                }
                                        }
                                }
-                       
-                               markBboxLoaded(minlon,maxlon,maxlat,minlat);
                                registerPOINodes();
                        }
 
index 2cba9ac..b177762 100644 (file)
@@ -10,13 +10,26 @@ package net.systemeD.halcyon.connection {
        import net.systemeD.halcyon.AttentionEvent;
        import net.systemeD.halcyon.MapEvent;
        import net.systemeD.halcyon.ExtendedURLLoader;
+    import net.systemeD.halcyon.connection.bboxes.*;
 
     /**
     * XMLConnection provides all the methods required to connect to a live
     * OSM server. See OSMConnection for connecting to a read-only .osm file
+    *
+    * @see OSMConnection
     */
        public class XMLConnection extends XMLBaseConnection {
 
+               private const MARGIN:Number=0.05;
+
+        /**
+        * Create a new XML connection
+        * @param name The name of the connection
+        * @param api The url of the OSM API server, e.g. http://api06.dev.openstreetmap.org/api/0.6/
+        * @param policy The url of the flash crossdomain policy to load,
+                        e.g. http://api06.dev.openstreetmap.org/api/crossdomain.xml
+        * @param initparams Any further parameters for the connection, such as the serverName
+        */
                public function XMLConnection(name:String,api:String,policy:String,initparams:Object) {
 
                        super(name,api,policy,initparams);
@@ -29,21 +42,29 @@ package net.systemeD.halcyon.connection {
                override public function loadBbox(left:Number,right:Number,
                                                                top:Number,bottom:Number):void {
             purgeIfFull(left,right,top,bottom);
-            if (isBboxLoaded(left,right,top,bottom)) return;
-
-            // enlarge bbox by 20% on each edge
-            var xmargin:Number=(right-left)/5;
-            var ymargin:Number=(top-bottom)/5;
-            left-=xmargin; right+=xmargin;
-            bottom-=ymargin; top+=ymargin;
-
-            var mapVars:URLVariables = new URLVariables();
-            mapVars.bbox= left+","+bottom+","+right+","+top;
-
-            var mapRequest:URLRequest = new URLRequest(apiBaseURL+"map");
-            mapRequest.data = mapVars;
-
-            sendLoadRequest(mapRequest);
+                       var requestBox:Box=new Box().fromBbox(left,bottom,right,top);
+                       var boxes:Array;
+                       try {
+                               boxes=fetchSet.getBoxes(requestBox,MAX_BBOXES);
+                       } catch(err:Error) {
+                               boxes=[requestBox];
+                       }
+                       for each (var box:Box in boxes) {
+                               // enlarge bbox by given margin on each edge
+                               var xmargin:Number=(box.right-box.left)*MARGIN;
+                               var ymargin:Number=(box.top-box.bottom)*MARGIN;
+                               left  =box.left  -xmargin; right=box.right+xmargin;
+                               bottom=box.bottom-ymargin; top  =box.top  +ymargin;
+
+                               dispatchEvent(new MapEvent(MapEvent.DOWNLOAD, {minlon:left, maxlon:right, maxlat:top, minlat:bottom} ));
+
+                               // send HTTP request
+                               var mapVars:URLVariables = new URLVariables();
+                               mapVars.bbox=left+","+bottom+","+right+","+top;
+                               var mapRequest:URLRequest = new URLRequest(apiBaseURL+"map");
+                               mapRequest.data = mapVars;
+                               sendLoadRequest(mapRequest);
+                       }
                }
 
                override public function loadEntityByID(type:String, id:Number):void {
@@ -54,20 +75,24 @@ package net.systemeD.halcyon.connection {
 
                private function sendLoadRequest(request:URLRequest):void {
                        var mapLoader:URLLoader = new URLLoader();
+            var errorHandler:Function = function(event:IOErrorEvent):void {
+                errorOnMapLoad(event, request);
+            }
                        mapLoader.addEventListener(Event.COMPLETE, loadedMap);
-                       mapLoader.addEventListener(IOErrorEvent.IO_ERROR, errorOnMapLoad);
+                       mapLoader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
                        mapLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, mapLoadStatus);
             request.requestHeaders.push(new URLRequestHeader("X-Error-Format", "XML"));
                        mapLoader.load(request);
                        dispatchEvent(new Event(LOAD_STARTED));
                }
 
-        private function errorOnMapLoad(event:Event):void {
-                       dispatchEvent(new MapEvent(MapEvent.ERROR, { message: "Couldn't load the map" } ));
-                       dispatchEvent(new Event(LOAD_COMPLETED));
+        private function errorOnMapLoad(event:Event, request:URLRequest):void {
+            var url:String = request.url + '?' + URLVariables(request.data).toString(); // for get reqeusts, at least
+            dispatchEvent(new MapEvent(MapEvent.ERROR, { message: "There was a problem loading the map data.\nPlease check your internet connection, or try zooming in.\n\n" + url } ));
+            dispatchEvent(new Event(LOAD_COMPLETED));
         }
+
         private function mapLoadStatus(event:HTTPStatusEvent):void {
-            trace("loading map status = "+event.status);
         }
 
         protected var appID:OAuthConsumer;
index 185bf55..266af85 100644 (file)
@@ -7,12 +7,14 @@ package net.systemeD.halcyon.connection.actions {
         private var nodeList:Array;
         private var index:int;
         private var firstNode:Node;
+        private var autoDelete:Boolean;                /* automatically delete way when undoing addition of node 2? */
         
-        public function AddNodeToWayAction(way:Way, node:Node, nodeList:Array, index:int) {
+        public function AddNodeToWayAction(way:Way, node:Node, nodeList:Array, index:int, autoDelete:Boolean=true) {
             super(way, "Add node "+node.id+" to");
             this.node = node;
             this.nodeList = nodeList;
             this.index = index;
+            this.autoDelete = autoDelete;
         }
             
         public override function doAction():uint {
@@ -47,7 +49,7 @@ package net.systemeD.halcyon.connection.actions {
                        //           simply refuse to undo adding the 2nd node if the way is in any relations. (This should
                        //           be a vanishingly small case anyway, because usually the AddMemberToRelationAction will
                        //           have been undone already.)
-                       if (way.length==2 && way.parentRelations.length) return FAIL;
+                       if (autoDelete && way.length==2 && way.parentRelations.length) return FAIL;
 
                        // remove node
             var removed:Array=nodeList.splice(index, 1);
@@ -56,7 +58,7 @@ package net.systemeD.halcyon.connection.actions {
             way.dispatchEvent(new WayNodeEvent(Connection.WAY_NODE_REMOVED, removed[0], way, index));
             
                        // delete way if it's now 1-length, and convert the one remaining node to a POI
-                       if (way.length==1) {
+                       if (autoDelete && way.length==1) {
                                way.setDeletedState(true);
                                way.dispatchEvent(new EntityEvent(Connection.WAY_DELETED, way));
                                firstNode=way.getNode(0);
index f2fd1bc..59d91a3 100644 (file)
@@ -30,6 +30,8 @@ package net.systemeD.halcyon.connection.actions {
                                way.dispatchEvent(new WayNodeEvent(Connection.WAY_NODE_REMOVED, node, way, 0));
                 if (!node.hasParents && !node.hasInterestingTags()) { //need to trigger redraw of new POIs?
                   node.remove(effects.push);
+                } else {
+                  if (!node.hasParentWays) node.connection.registerPOI(node);
                 }
                        }
                        effects.doAction();
@@ -61,6 +63,7 @@ package net.systemeD.halcyon.connection.actions {
             for each(var node:Node in oldNodeList) {
                 nodeList.push(node);
                node.addParent(way);
+               node.connection.unregisterPOI(node);
                 way.dispatchEvent(new WayNodeEvent(Connection.WAY_NODE_ADDED, node, way, 0));
             }
                        way.resume();
index 39c22e0..80445e9 100644 (file)
@@ -5,8 +5,8 @@ package net.systemeD.halcyon.connection.actions {
     /** Action that substitutes one node instead of another, in all the ways and relations that that node is part of. */
     public class ReplaceNodeAction extends CompositeUndoableAction {
 
-        private var node:Node;
-        private var replacement:Node;
+        protected var node:Node;
+        public var replacement:Node;
 
         /**
         * @param node The node we're getting rid of
@@ -19,7 +19,6 @@ package net.systemeD.halcyon.connection.actions {
         }
 
         public override function doAction():uint {
-
             for each (var way:Way in node.parentWays) {
               for (var x:uint=0; x<way.length; x++) {
                 if (way.getNode(x) == node) {
diff --git a/net/systemeD/halcyon/connection/actions/ReplaceNodeWithNewAction.as b/net/systemeD/halcyon/connection/actions/ReplaceNodeWithNewAction.as
new file mode 100644 (file)
index 0000000..86c8e32
--- /dev/null
@@ -0,0 +1,35 @@
+package net.systemeD.halcyon.connection.actions {
+
+    import net.systemeD.halcyon.connection.*;
+
+    /** Action that substitutes one node instead of another, in all the ways and relations that that node is part of. */
+    public class ReplaceNodeWithNewAction extends ReplaceNodeAction {
+
+        private var connection:Connection;
+        private var lat:Number;
+        private var lon:Number;
+        private var tags:Object;
+
+        /**
+        * @param node The node we're getting rid of
+        * @param replacement The node we want to end up with
+        */
+        public function ReplaceNodeWithNewAction(node:Node, connection:Connection, lat:Number, lon:Number, tags:Object) {
+                       super(node,null);
+            this.connection = connection;
+            this.lat = lat;
+            this.lon = lon;
+            this.tags = tags;
+        }
+
+        public override function doAction():uint {
+            replacement = connection.createNode(tags,lat,lon,push);
+                       return super.doAction();
+        }
+
+        public override function undoAction():uint {
+            return super.undoAction();
+        }
+    }
+}
+
diff --git a/net/systemeD/halcyon/connection/bboxes/Box.as b/net/systemeD/halcyon/connection/bboxes/Box.as
new file mode 100755 (executable)
index 0000000..e4b1d99
--- /dev/null
@@ -0,0 +1,130 @@
+package net.systemeD.halcyon.connection.bboxes {
+       
+       public class Box {
+
+               public var x:Interval;
+               public var y:Interval;
+               
+               function Box():void {
+               }
+               
+               public function get left():Number   { return x._min; }
+               public function get right():Number  { return x._max; }
+               public function get bottom():Number { return y._min; }
+               public function get top():Number    { return y._max; }
+               
+               // Initialise from either a bbox or two Intervals
+
+               public function fromIntervals(x:Interval,y:Interval):Box {
+                       this.x=x; this.y=y;
+                       return this;
+               }
+               public function fromBbox(minx:Number,miny:Number,maxx:Number,maxy:Number):Box {
+                       x=new Interval(minx,maxx);
+                       y=new Interval(miny,maxy);
+                       return this;
+               }
+               
+               // If this box has any area, whether it contains a valid amount of space.
+
+               public function get valid():Boolean {
+                       return (x.valid && y.valid);
+               }
+
+               // Whether this box intersects another.
+
+               public function intersects(other:Box):Boolean {
+                       return (x.intersects(other.x) && y.intersects(other.y));
+               }
+               
+               // Intersection. May return a box that isn't valid.
+               public function intersection(other:Box):Box {
+                       return (new Box().fromIntervals(x.intersection(other.x), y.intersection(other.y)));
+               }
+
+               // Union. Return a Box covering this Box and the other.
+               public function union(other:Box):Box {
+                       return (new Box().fromIntervals(x.union(other.x), y.union(other.y)));
+               }
+
+               // Inverse. Returns an array of 4 Boxes covering all space except for this box.
+               public function get inverse():Array {
+                       return [
+                               new Box().fromBbox(-Infinity, y._max,    Infinity, Infinity),
+                               new Box().fromBbox(-Infinity, y._min,    x._min,   y._max  ),
+                               new Box().fromBbox(x._max,    y._min,    Infinity, y._max  ),
+                               new Box().fromBbox(-Infinity, -Infinity, Infinity, y._min  )
+                       ];
+               }
+
+               // Subtraction. take the inverse of one bbox and intersect it with this one. returns an array of Boxes.
+               public function subtract(other:Box):Array {
+                       var inverses:Array=other.inverse;
+                       var results:Array=[];
+                       var candidate:Box;
+                       for each (var i:Box in inverses) {
+                               candidate=intersection(i);
+                               if (candidate.valid) results.push(candidate);
+                       }
+                       return results;
+               }
+
+               // Subtract all Boxes in given array. Resulting set of boxes will be disjoint.
+               public function subtractAll(others:Array):Array {
+                       var memo:Array=[this];
+                       for each (var other:Box in others) {
+                               var subtracted:Array=[];
+                               for each (var b:Box in memo) {
+                                       subtracted=subtracted.concat(b.subtract(other));
+                               }
+                               memo=subtracted;
+                       }
+                       // do we need to flatten memo here?
+                       return memo;
+               }
+
+               // Is this box directly adjacent to the other, with no gap in between?
+
+               public function adjacentTo(other:Box):Boolean {
+                       return (((x.equals(other.x)) && ((y._min == other.y._max) || (y._max == other.y._min))) ||
+                                       ((y.equals(other.y)) && ((x._min == other.x._max) || (x._max == other.x._min))));
+               }
+
+               // Does this box enclose another one entirely?
+               
+               public function encloses(other:Box):Boolean {
+                       return (x.contains(other.x._min) && x.contains(other.x._max) && 
+                               y.contains(other.y._min) && y.contains(other.x._max));
+               }
+
+               // Merge as many boxes as possible without increasing the total area of the set of boxes. This is done by
+               // identifying edges along which boxes are adjacent. Note that the input set must be disjoint.
+               //
+               // This is an O(n^2) algorithm, so it's going to be very slow on large numbers of boxes. There's 
+               // almost certainly a better algorithm out there to do the same thing in better time. but it's nice
+               // and simple.
+
+               public static function merge(boxes:Array):Array {
+                       if (boxes.length==0) return [];
+                       var first:Box=boxes.shift();
+                       var kept:Array=[];
+                       for each (var box:Box in boxes) {
+                               if (first.adjacentTo(box)) { first=first.union(box); }
+                               else kept.push(box);
+                       }
+                       return [first].concat(Box.merge(kept));
+               }
+
+               public function equals(other:Box):Boolean {
+                       return (x.equals(other.x) && y.equals(other.y));
+               }
+               
+               public function get size():Number {
+                       return (x.size*y.size);
+               }
+
+               public function toString():String {
+                       return ("Box["+x._min+","+y._min+","+x._max+","+y._max+"]");
+               }
+       }
+}
diff --git a/net/systemeD/halcyon/connection/bboxes/FetchSet.as b/net/systemeD/halcyon/connection/bboxes/FetchSet.as
new file mode 100644 (file)
index 0000000..b2a9297
--- /dev/null
@@ -0,0 +1,106 @@
+package net.systemeD.halcyon.connection.bboxes {
+       
+       public class FetchSet {
+
+               private var existing:Array;
+               private static const MAX_PARTITION_TRIALS:uint = 100;
+
+               function FetchSet():void {
+                       existing=[];
+               }
+
+               public function getBoxes(bbox:Box,maxBoxes:uint):Array {
+                       var bits:Array=Box.merge(bbox.subtractAll(existing));
+                       var toFetch:Array=optimalPart(maxBoxes,bits);
+                       return toFetch;
+               }
+               
+               public function add(bbox:Box):void {
+                       existing.push(bbox);
+                       existing=existing.filter(function(item:Box,i:uint,arr:Array):Boolean {
+                               return !bbox.encloses(item);
+                       });
+               }
+
+               public function get size():int {
+                       return existing.length;
+               }
+
+               private function rgString(prefix:Array, numSets:int, numElts:int, numTries:int):Array {
+                       if (numElts==0) return [prefix];
+                       var maxDigit:Number=Math.min(maxValue(prefix)+1,numSets-1);
+                       var result:Array=[];
+                       for (var digit:uint=0; digit<=maxDigit; digit++) {
+                               if (numTries>0) {
+                                       var rv:Array=rgString(prefix.concat([digit]),numSets,numElts-1,numTries);
+                                       numTries-=rv.length;
+                                       result=result.concat(rv);
+                               }
+                       }
+                       return result;
+               }
+
+               // select only the partitions of the set which have a certain size, or smaller
+
+               private function partsOfSize(n:int,set:Array):Array {
+                       if (set.length==0) { return []; }
+                       return (rgString([0], n, set.length-1, MAX_PARTITION_TRIALS).map(
+                               function(rgs:Array,index:uint,array:Array):* {
+                                       var ary:Array=[];
+                                       for (var j:uint=0; j<=maxValue(rgs); j++) ary.push([]);
+                                       for (var i:uint=0; i<rgs.length; i++) ary[rgs[i]].push(set[i]);
+                                       return ary;
+                               }));
+               }
+               
+               private function maxValue(a:Array):Number {
+                       var m:Number=Number.NEGATIVE_INFINITY;
+                       for each (var n:Number in a) m=Math.max(m,n);
+                       return m;
+               }
+
+               // find the optimal partition - the one which requests the smallest amount of extra space - 
+               // given the set p of partitions
+
+               private function optimalPart(n:int, set:Array):Array {
+                       var p:Array=partsOfSize(n,set);
+                       if (p.length==0) return [];
+                       var q:Array=p.sort(function(a:Array,b:Array):Number {
+                               var aw:Number = wasteSize(a, set);
+                               var bw:Number = wasteSize(b, set);
+                               if (aw < bw) return -1;
+                               else if (aw > bw) return 1;
+                               else return 0;
+                       });
+                       return unionPartitions(q[0]);
+               }
+
+               private function wasteSize(boxes:Array, set:Array):Number {
+                       var waste:Number = 0;
+                       unionPartitions(boxes).forEach(function(b:Box,index:int,array:Array):void {
+                               var included:Number = 0;
+                               set.forEach(function(s:Box,index:int,array:Array):void {
+                                       s = s.intersection(b);
+                                       if (s.valid) included += s.size;
+                               });
+                               waste += b.size - included;
+                       });
+                       return waste;
+               }
+
+               private function unionPartitions(a:Array):Array {
+                       return a.map(function(bs:Array,index:int,array:Array):Box {
+                               var box:Box = bs[0];
+                               bs.forEach(function(b:Box,index:int,array:Array):void {
+                                       box=box.union(b);
+                               });
+                               return box;
+                       });
+               }
+               
+               public function toString():String {
+                       return "["+existing.join(",")+"]";
+               }
+
+       }
+}
diff --git a/net/systemeD/halcyon/connection/bboxes/Interval.as b/net/systemeD/halcyon/connection/bboxes/Interval.as
new file mode 100755 (executable)
index 0000000..3d54e4c
--- /dev/null
@@ -0,0 +1,68 @@
+package net.systemeD.halcyon.connection.bboxes {
+       
+       public class Interval {
+
+               public var _min:Number;
+               public var _max:Number;
+               
+               function Interval(min:Number,max:Number):void {
+                       _min=min;
+                       _max=max;
+               }
+
+               public function contains(x:Number):Boolean { return (x>=_min && x<_max); }
+               public function get valid():Boolean { return (_max>_min); }
+               public function get size():Number { return (_max-_min); }
+
+               public function intersects(other:Interval):Boolean { return (_max>other._min && _min<other._max); }
+               public function equals(other:Interval):Boolean { return (_min==other._min && _max==other._max); }
+               public function union(other:Interval):Interval { return new Interval(Math.min(_min,other._min), Math.max(_max,other._max)); }
+               public function intersection(other:Interval):Interval { return new Interval(Math.max(_min,other._min), Math.min(_max,other._max)); }
+               
+               public function toString():String { return ("Interval["+_min+","+_max+"]"); }
+
+               // Merge an array of possibly overlapping intervals into a set of disjoint intervals.
+               public static function merge(intervals:Array):Array {
+                       intervals.sort(compareMinimum);
+                       var memo:Array=[];
+                       for each (var elem:Interval in intervals) {
+                               var last:Interval=memo.pop();
+                               if (!last) { 
+                                       memo=[elem];
+                               } else if (last.intersects(elem)) {
+                                       memo.push(last.union(elem));
+                               } else {
+                                       memo.push(last);
+                                       memo.push(elem);
+                               }
+                       }
+                       return memo;
+               }
+
+               // Returns the largest empty interval in the given set of intervals.
+               
+               public static function largestEmpty(intervals:Array):Interval {
+                       var gaps:Array=[];
+                       intervals=merge(intervals);
+                       for (var i:uint=0; i<=intervals.length-2; i++) {
+                               gaps.push(new Interval(intervals[i]._max, intervals[i+1]._min));
+                       }
+                       gaps.sort(compareSize);
+                       return gaps[gaps.length-1];
+               }
+
+               // Comparison methods for sorting
+
+               private static function compareMinimum(a:Interval, b:Interval):int {
+                       if (a._min>b._min) { return 1; }
+                       if (a._min<b._min) { return -1; }
+                       return 0;
+               }
+
+               private static function compareSize(a:Interval, b:Interval):int {
+                       if (a.size>b.size) { return 1; }
+                       if (a.size<b.size) { return -1; }
+                       return 0;
+               }
+       }
+}
diff --git a/net/systemeD/halcyon/styleparser/CSSTransform.as b/net/systemeD/halcyon/styleparser/CSSTransform.as
new file mode 100644 (file)
index 0000000..27a7747
--- /dev/null
@@ -0,0 +1,35 @@
+package net.systemeD.halcyon.styleparser {
+
+       import flash.net.*;
+    import flash.events.*;
+       import net.systemeD.halcyon.connection.Entity;
+
+    public class CSSTransform {
+
+               private static const GLOBAL_INSTANCE:CSSTransform = new CSSTransform();
+               public static function getInstance():CSSTransform { return GLOBAL_INSTANCE; }
+
+               [Bindable] public var url:String='';
+               private var ruleset:RuleSet;
+               
+               public function loadFromUrl(filename:String):void {
+                       url=filename;
+                       ruleset=new RuleSet(0,30,cssReady);
+                       ruleset.loadFromCSS(url);
+               }
+
+               public function clear():void {
+                       ruleset=null;
+                       url='';
+               }
+
+               private function cssReady():void {
+               }
+               
+               public function run(entity:Entity,tags:Object):Object {
+                       if (ruleset) return ruleset.runInstructions(entity,tags);
+                       return tags;
+               }
+
+       }
+}
index 1dec03e..82d5c79 100644 (file)
@@ -2,15 +2,28 @@ package net.systemeD.halcyon.styleparser {
 
        public class InstructionStyle extends Style {
 
-               public var set_tags:Object;
+               public var set_tags:Object={};
                public var breaker:Boolean=false;
+               public var set_tags_order:Array=[];
 
                public function addSetTag(k:String,v:*):void {
+                       if (v is Eval) { evals[k]=v; }
+                       else if (v is TagValue) { tagvalues[k]=v; }
+                       
                        edited=true;
-                       if (!set_tags) { set_tags=new Object(); }
+                       set_tags_order.push(k);
                        set_tags[k]=v;
                }
 
+               public function assignSetTags(tags:Object):void {
+                       for (var i:uint=0; i<set_tags_order.length; i++) {
+                               var k:String=set_tags_order[i];
+                               var v:*=set_tags[k];
+                               if (v is TagValue) { v=v.getValue(tags); }
+                               if (v=='') { delete tags[k]; }
+                               else { tags[k]=v; }
+                       }
+               }
        }
 
 }
index de8d3dd..6a8d6a0 100644 (file)
@@ -9,13 +9,15 @@ package net.systemeD.halcyon.styleparser {
     import net.systemeD.halcyon.ImageBank;
 
     import net.systemeD.halcyon.connection.*;
-       
-       /** A complete stylesheet, as loaded from a MapCSS file. It contains all selectors, declarations, 
-               and embedded images.                                                                                                                                                            </p><p>
-               
-               The RuleSet class has two principal methods: getStyles, which calculates the styles that apply
-               to an entity (returned as a StyleList); and parse, which parses a MapCSS stylesheet into
-               a complete RuleSet. */
+
+    /**
+    * A complete stylesheet, as loaded from a MapCSS file. It contains all selectors, declarations,
+    * and embedded images.
+    *
+    * <p>The RuleSet class has two principal methods: getStyles, which calculates the styles that apply
+    * to an entity (returned as a StyleList); and parse, which parses a MapCSS stylesheet into
+    * a complete RuleSet.</p>
+    */
 
        public class RuleSet {
 
@@ -59,12 +61,15 @@ package net.systemeD.halcyon.styleparser {
                private static const CONDITION_LE:RegExp        =/^ \s* ([:\w]+) \s* <= \s* (.+) \s* $/sx;
                private static const CONDITION_REGEX:RegExp     =/^ \s* ([:\w]+) \s* =~\/ \s* (.+) \/ \s* $/sx;
 
-               private static const ASSIGNMENT_EVAL:RegExp     =/^ \s* (\S+) \s* \:      \s* eval \s* \( \s* ' (.+?) ' \s* \) \s* $/isx;
-               private static const ASSIGNMENT:RegExp          =/^ \s* (\S+) \s* \:      \s*          (.+?) \s*                   $/sx;
-               private static const SET_TAG_EVAL:RegExp        =/^ \s* set \s+(\S+)\s* = \s* eval \s* \( \s* ' (.+?) ' \s* \) \s* $/isx;
-               private static const SET_TAG:RegExp                     =/^ \s* set \s+(\S+)\s* = \s*          (.+?) \s*                   $/isx;
-               private static const SET_TAG_TRUE:RegExp        =/^ \s* set \s+(\S+)\s* $/isx;
-               private static const EXIT:RegExp                        =/^ \s* exit \s* $/isx;
+               private static const ASSIGNMENT_EVAL:RegExp             =/^ \s* (\S+) \s* \:      \s* eval \s* \( \s* ' (.+?) ' \s* \) \s* $/isx;
+               private static const ASSIGNMENT_TAGVALUE:RegExp =/^ \s* (\S+) \s* \:      \s* tag  \s* \( \s* ' (.+?) ' \s* \) \s* $/isx;
+               private static const ASSIGNMENT:RegExp                  =/^ \s* (\S+) \s* \:      \s*          (.+?) \s*                   $/sx;
+               private static const SET_TAG_EVAL:RegExp                =/^ \s* set \s+(\S+)\s* = \s* eval \s* \( \s* ' (.+?) ' \s* \) \s* $/isx;
+               private static const SET_TAG_TAGVALUE:RegExp    =/^ \s* set \s+(\S+)\s* = \s* tag  \s* \( \s* ' (.+?) ' \s* \) \s* $/isx;
+               private static const SET_TAG:RegExp                             =/^ \s* set \s+(\S+)\s* = \s*          (.+?) \s*                   $/isx;
+               private static const SET_TAG_TRUE:RegExp                =/^ \s* set \s+(\S+)\s* $/isx;
+               private static const DELETE_TAG:RegExp                  =/^ \s* delete \s+(\S+)\s* $/isx;
+               private static const EXIT:RegExp                                =/^ \s* exit \s* $/isx;
 
                private static const oZOOM:uint=2;
                private static const oGROUP:uint=3;
@@ -235,16 +240,29 @@ package net.systemeD.halcyon.styleparser {
                }
 
                /** Create a StyleList for an Entity, by creating a blank StyleList, then running each StyleChooser over it.
+                   Optionally, styleUntagged can be set to false, to abort (and return a blank StyleList) if the tag hash is empty.
                        @see net.systemeD.halcyon.styleparser.StyleList */
 
-               public function getStyles(obj:Entity, tags:Object, zoom:uint):StyleList {
+               public function getStyles(obj:Entity, tags:Object, zoom:uint, styleUntagged:Boolean=true):StyleList {
                        var sl:StyleList=new StyleList();
-                       for each (var sc:StyleChooser in choosers) {
-                               sc.updateStyles(obj,tags,sl,zoom);
+                       var tagged:Boolean=styleUntagged;
+                       for (var k:String in tags) { tagged=true; break; }
+                    &nbs