diff --git a/.gitignore b/.gitignore
index e0233878..6c9e3630 100644
--- a/.gitignore
+++ b/.gitignore
@@ -44,6 +44,7 @@ SparkleLib/windows/GlobalAssemblyInfo.cs
SparkleShare/sparkleshare
po/sparkleshare.pot
SparkleShare/Nautilus/sparkleshare-nautilus-extension.py
+SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py
gnome-doc-utils.make
/sparkleshare-*
data/plugins/*.xml
diff --git a/NEWS b/NEWS
index 40c7541c..6b8eba0b 100755
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,24 @@
+0.4.0 for Linux and Mac (Sun Nov 12 2011):
+ Hylke: It has been a while since the last release. Since so many
+ things changed, and it being (softly) incompatible with 0.2, I decided
+ to call it 0.4. Here are the most important improvements:
+
+ - Support OS X Lion
+ - Revamped "Add Hosted Project..." dialog
+ - First run tutorial
+ - Clicking notifications opens the event log
+ - Support for organisation/host plugins
+ - Adding empty folders now works
+ - More useful error reporting
+ - Progress bar on the initial sync, and a button to cancel
+ - Replace IRC by a custom protocol as the default notification system
+ - Many many fixes for crashes and bugs
+
+ Travis:
+ - Nautilus 3.x plugin
+ - Bugfixes
+
+
0.2.5 for Linux and Mac (Mon Jul 25 2011):
Hylke: Reimplement notes to be less buggy and backend independent. Polish
diff --git a/README b/README
index 258cd010..8dfd1a40 100644
--- a/README
+++ b/README
@@ -88,7 +88,7 @@ Just double-click the SparkleShare bundle.
# Build on Mac
-Install Xcode, the Mono Framework, MonoDevelop and the MonoMac plugin (you find it in Add-in Manager).
+Install Xcode, the Mono Framework, MonoDevelop and the MonoMac plugin (you can find it in MonoDevelop => Add-in Manager).
You may need to adjust some environment variables to let the build environment tools find mono:
@@ -108,10 +108,11 @@ Start the first part of the build:
Now that you have compiled the libraries, open 'SparkleShare/Mac/SparkleShare.sln' in
MonoDevelop and start the build.
-To create the SparkleShare.app, select Project from the menu bar
-and click "Create Mac Installer..." Save the SparkleShare.app somewhere.
+To create the SparkleShare.app, make sure the project is focused and select Project from the menu bar
+and click "Create Mac Installer...". Make sure to select "Don't link assemblies".
-Paste the contents of the following file in SparkleShare.app/Contents/MonoBundle/config:
+Save the SparkleShare.app somewhere. Paste the contents of
+the following file in SparkleShare.app/Contents/MonoBundle/config:
https://raw.github.com/gist/1aeffa61bac73fc08eca/0c0f09ef9e36864c35f34fd5e8bf4f99886be193/gistfile1.txt
Copy /Library/Frameworks/Mono.framework/Versions/Current/lib/libintl.dylib
diff --git a/SparkleLib/Git/SparkleRepoGit.cs b/SparkleLib/Git/SparkleRepoGit.cs
index 17084257..c00d84bb 100644
--- a/SparkleLib/Git/SparkleRepoGit.cs
+++ b/SparkleLib/Git/SparkleRepoGit.cs
@@ -37,25 +37,31 @@ namespace SparkleLib {
}
+ private string identifier = null;
+
public override string Identifier {
get {
+ if (string.IsNullOrEmpty (this.identifier)) {
- // Because git computes a hash based on content,
- // author, and timestamp; it is unique enough to
- // use the hash of the first commit as an identifier
- // for our folder
- SparkleGit git = new SparkleGit (LocalPath, "rev-list --reverse HEAD");
- git.Start ();
+ // Because git computes a hash based on content,
+ // author, and timestamp; it is unique enough to
+ // use the hash of the first commit as an identifier
+ // for our folder
+ SparkleGit git = new SparkleGit (LocalPath, "rev-list --reverse HEAD");
+ git.Start ();
- // Reading the standard output HAS to go before
- // WaitForExit, or it will hang forever on output > 4096 bytes
- string output = git.StandardOutput.ReadToEnd ();
- git.WaitForExit ();
+ // Reading the standard output HAS to go before
+ // WaitForExit, or it will hang forever on output > 4096 bytes
+ string output = git.StandardOutput.ReadToEnd ();
+ git.WaitForExit ();
- if (output.Length < 40)
- return null;
+ if (output.Length < 40)
+ return null;
- return output.Substring (0, 40);
+ this.identifier = output.Substring (0, 40);
+ }
+
+ return this.identifier;
}
}
diff --git a/SparkleLib/SparkleConfig.cs b/SparkleLib/SparkleConfig.cs
index 2e54009a..1fd3fece 100755
--- a/SparkleLib/SparkleConfig.cs
+++ b/SparkleLib/SparkleConfig.cs
@@ -113,17 +113,15 @@ namespace SparkleLib {
if (string.IsNullOrEmpty (user_name))
user_name = "Unknown";
- TextWriter writer = new StreamWriter (FullPath);
- string n = Environment.NewLine;
-
- writer.Write ("" + n +
- "" + n +
- " " + n +
- " " + user_name + "" + n +
- " Unknown" + n +
- " " + n +
- "");
- writer.Close ();
+ string n = Environment.NewLine;
+ File.WriteAllText (FullPath,
+ "" + n +
+ "" + n +
+ " " + n +
+ " " + user_name + "" + n +
+ " Unknown" + n +
+ " " + n +
+ "");
SparkleHelpers.DebugInfo ("Config", "Created \"" + FullPath + "\"");
}
@@ -276,10 +274,16 @@ namespace SparkleLib {
List hosts = new List ();
foreach (XmlNode node_folder in SelectNodes ("/sparkleshare/folder")) {
- Uri uri = new Uri (node_folder ["url"].InnerText);
+ try {
+ Uri uri = new Uri (node_folder ["url"].InnerText);
- if ("git" != uri.UserInfo && !hosts.Contains (uri.UserInfo + "@" + uri.Host))
- hosts.Add (uri.UserInfo + "@" + uri.Host);
+ if (uri.UserInfo != "git" && !hosts.Contains (uri.UserInfo + "@" + uri.Host))
+ hosts.Add (uri.UserInfo + "@" + uri.Host);
+
+ } catch (UriFormatException) {
+ SparkleHelpers.DebugInfo ("Config",
+ "Ignoring badly formatted URI: " + node_folder ["url"].InnerText);
+ }
}
return hosts;
diff --git a/SparkleLib/SparkleListenerBase.cs b/SparkleLib/SparkleListenerBase.cs
index aeb4a004..bba5b171 100755
--- a/SparkleLib/SparkleListenerBase.cs
+++ b/SparkleLib/SparkleListenerBase.cs
@@ -16,8 +16,10 @@
using System;
+using System.Collections;
using System.Collections.Generic;
using System.Timers;
+using System.Linq;
namespace SparkleLib {
@@ -50,7 +52,7 @@ namespace SparkleLib {
// don't have your own. All data needed to connect is hashed and
// we don't store any personal information ever
- uri = "tcp://204.62.14.135:1986"; // TODO: announcements.sparkleshare.org
+ uri = "tcp://notifications.sparkleshare.org:1986";
}
Uri announce_uri = new Uri (uri);
@@ -80,7 +82,7 @@ namespace SparkleLib {
listeners.Add (new SparkleListenerTcp (announce_uri, folder_identifier));
break;
}
-
+
SparkleHelpers.DebugInfo ("ListenerFactory", "Issued new listener for " + announce_uri);
return (SparkleListenerBase) listeners [listeners.Count - 1];
}
@@ -104,20 +106,21 @@ namespace SparkleLib {
public event AnnouncementEventHandler Announcement;
public delegate void AnnouncementEventHandler (SparkleAnnouncement announcement);
-
public abstract void Connect ();
public abstract void Announce (SparkleAnnouncement announcent);
public abstract void AlsoListenTo (string folder_identifier);
public abstract bool IsConnected { get; }
-
- protected List channels = new List ();
- protected List queue_up = new List ();
- protected List queue_down = new List ();
+ protected List channels = new List ();
+ protected Dictionary> recent_announcements = new Dictionary> ();
+ protected int max_recent_announcements = 10;
+ protected Dictionary queue_up = new Dictionary ();
+ protected Dictionary queue_down = new Dictionary ();
protected bool is_connecting;
protected Uri server;
protected Timer reconnect_timer = new Timer { Interval = 60 * 1000, Enabled = true };
+
public SparkleListenerBase (Uri server, string folder_identifier)
{
this.server = server;
@@ -133,30 +136,23 @@ namespace SparkleLib {
public void AnnounceBase (SparkleAnnouncement announcement)
{
- if (IsConnected) {
- SparkleHelpers.DebugInfo ("Listener",
- "Announcing to " + announcement.FolderIdentifier + " on " + this.server);
+ if (!this.IsRecentAnnounement (announcement)) {
+ if (IsConnected) {
+ SparkleHelpers.DebugInfo ("Listener",
+ "Announcing message " + announcement.Message + " to " + announcement.FolderIdentifier + " on " + this.server);
- Announce (announcement);
+ Announce (announcement);
+ this.AddRecentAnnouncement (announcement);
+ } else {
+ SparkleHelpers.DebugInfo ("Listener", "Can't send message to " + this.server + ". Queuing message");
+ this.queue_up [announcement.FolderIdentifier] = announcement;
+ }
} else {
- SparkleHelpers.DebugInfo ("Listener", "Not connected to " + this.server + ". Queuing message");
- this.queue_up.Add (announcement);
- }
- }
-
-
- public string NextQueueDownMessage (string folder_identifier)
- {
- foreach (SparkleAnnouncement announcement in this.queue_down.GetRange (0, this.queue_down.Count)) {
- if (announcement.FolderIdentifier.Equals (folder_identifier)) {
- string message = announcement.Message;
- this.queue_down.Remove (announcement);
- return message;
- }
+ SparkleHelpers.DebugInfo ("Listener",
+ "Already processed message " + announcement.Message + " to " + announcement.FolderIdentifier + " from " + this.server);
}
- return null;
}
@@ -169,7 +165,7 @@ namespace SparkleLib {
public void OnConnected ()
{
- SparkleHelpers.DebugInfo ("Listener", "Connected to " + Server);
+ SparkleHelpers.DebugInfo ("Listener", "Listening for announcements on " + Server);
if (Connected != null)
Connected ();
@@ -177,17 +173,19 @@ namespace SparkleLib {
if (this.queue_up.Count > 0) {
SparkleHelpers.DebugInfo ("Listener", "Delivering " + this.queue_up.Count + " queued messages...");
- foreach (SparkleAnnouncement announcement in this.queue_up.GetRange(0, this.queue_up.Count)) {
+ foreach (KeyValuePair item in this.queue_up) {
+ SparkleAnnouncement announcement = item.Value;
AnnounceBase (announcement);
- this.queue_up.Remove (announcement);
}
+
+ this.queue_down.Clear ();
}
}
public void OnDisconnected ()
{
- SparkleHelpers.DebugInfo ("Listener", "Disonnected from " + Server);
+ SparkleHelpers.DebugInfo ("Listener", "Signal of " + Server + " lost");
if (Disconnected != null)
Disconnected ();
@@ -196,15 +194,71 @@ namespace SparkleLib {
public void OnAnnouncement (SparkleAnnouncement announcement)
{
- SparkleHelpers.DebugInfo ("Listener", "Got message from " + announcement.FolderIdentifier + " on " + this.server);
+ SparkleHelpers.DebugInfo ("Listener",
+ "Got message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server);
- this.queue_down.Add (announcement);
+ if (IsRecentAnnounement(announcement) ){
+ SparkleHelpers.DebugInfo ("Listener",
+ "Ignoring previously processed message " + announcement.Message +
+ " from " + announcement.FolderIdentifier + " on " + this.server);
+
+ return;
+ }
+
+ SparkleHelpers.DebugInfo ("Listener",
+ "Processing message " + announcement.Message + " from " + announcement.FolderIdentifier + " on " + this.server);
+
+ AddRecentAnnouncement (announcement);
+ this.queue_down [announcement.FolderIdentifier] = announcement;
if (Announcement != null)
Announcement (announcement);
}
+ private bool IsRecentAnnounement (SparkleAnnouncement announcement)
+ {
+ if (!HasRecentAnnouncements (announcement.FolderIdentifier)) {
+ return false;
+
+ } else {
+ foreach (SparkleAnnouncement recent_announcement in GetRecentAnnouncements (announcement.FolderIdentifier)) {
+ if (recent_announcement.Message.Equals (announcement.Message))
+ return true;
+ }
+
+ return false;
+ }
+ }
+
+
+ private List GetRecentAnnouncements (string folder_identifier)
+ {
+ if (!this.recent_announcements.ContainsKey (folder_identifier))
+ this.recent_announcements [folder_identifier] = new List ();
+
+ return (List) this.recent_announcements [folder_identifier];
+ }
+
+
+ private void AddRecentAnnouncement (SparkleAnnouncement announcement)
+ {
+ List recent_announcements = this.GetRecentAnnouncements (announcement.FolderIdentifier);
+
+ if (!IsRecentAnnounement (announcement))
+ recent_announcements.Add (announcement);
+
+ if (recent_announcements.Count > this.max_recent_announcements)
+ recent_announcements.RemoveRange (0, (recent_announcements.Count - this.max_recent_announcements));
+ }
+
+
+ private bool HasRecentAnnouncements (string folder_identifier)
+ {
+ return this.recent_announcements.ContainsKey (folder_identifier);
+ }
+
+
public virtual void Dispose ()
{
this.reconnect_timer.Dispose ();
@@ -225,3 +279,4 @@ namespace SparkleLib {
}
}
}
+
diff --git a/SparkleLib/SparkleListenerTcp.cs b/SparkleLib/SparkleListenerTcp.cs
index c844bf02..15268a94 100755
--- a/SparkleLib/SparkleListenerTcp.cs
+++ b/SparkleLib/SparkleListenerTcp.cs
@@ -29,7 +29,7 @@ namespace SparkleLib {
public class SparkleListenerTcp : SparkleListenerBase {
private Thread thread;
-
+
// these are shared
private readonly Object mutex = new Object();
private Socket socket;
@@ -93,11 +93,14 @@ namespace SparkleLib {
if (bytes_read > 0) {
string received = Encoding.UTF8.GetString (bytes);
- string folder_identifier = received.Substring (0, received.IndexOf ("!"));
- string message = received.Substring (received.IndexOf ("!") + 1);
-
- OnAnnouncement (new SparkleAnnouncement (folder_identifier, message));
-
+ string line = received.Substring (0, received.IndexOf ("\n"));
+ if (!line.Contains ("!"))
+ continue;
+ string folder_identifier = line.Substring (0, line.IndexOf ("!"));
+ string message = this.CleanMessage (line.Substring (line.IndexOf ("!") + 1));
+ if (!folder_identifier.Equals("debug") &&
+ !String.IsNullOrEmpty(message))
+ OnAnnouncement (new SparkleAnnouncement (folder_identifier, message));
} else {
SparkleHelpers.DebugInfo ("ListenerTcp", "Error on socket");
@@ -109,9 +112,9 @@ namespace SparkleLib {
}
}
}
-
+
SparkleHelpers.DebugInfo ("ListenerTcp", "Disconnected from " + Server.Host);
-
+
} catch (SocketException e) {
SparkleHelpers.DebugInfo ("ListenerTcp", "Could not connect to " + Server + ": " + e.Message);
@@ -127,6 +130,7 @@ namespace SparkleLib {
public override void AlsoListenTo (string folder_identifier)
{
string channel = folder_identifier;
+
if (!base.channels.Contains (channel)) {
base.channels.Add (channel);
@@ -136,13 +140,13 @@ namespace SparkleLib {
string to_send = "subscribe " + folder_identifier + "\n";
try {
-
lock (this.mutex) {
this.socket.Send (Encoding.UTF8.GetBytes (to_send));
}
+
} catch (SocketException e) {
- SparkleHelpers.DebugInfo ("ListenerTcp", "Could not connect to " + Server + ": " + e.Message);
- OnDisconnected ();
+ SparkleHelpers.DebugInfo ("ListenerTcp", "Could not connect to " + Server + ": " + e.Message);
+ OnDisconnected ();
}
}
}
@@ -173,5 +177,10 @@ namespace SparkleLib {
this.thread.Join ();
base.Dispose ();
}
+
+ private string CleanMessage(string message)
+ {
+ return message.Trim ().Replace ("\n", "").Replace ("\0", "");
+ }
}
}
diff --git a/SparkleLib/SparkleRepoBase.cs b/SparkleLib/SparkleRepoBase.cs
index 1ca3d1df..1d775174 100755
--- a/SparkleLib/SparkleRepoBase.cs
+++ b/SparkleLib/SparkleRepoBase.cs
@@ -21,6 +21,7 @@ using System.IO;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
+using System.Threading;
using System.Timers;
using System.Xml;
@@ -41,12 +42,13 @@ namespace SparkleLib {
private SparkleWatcher watcher;
private TimeSpan poll_interval;
- private Timer local_timer = new Timer () { Interval = 0.25 * 1000 };
- private Timer remote_timer = new Timer () { Interval = 10 * 1000 };
+ private System.Timers.Timer local_timer = new System.Timers.Timer () { Interval = 0.25 * 1000 };
+ private System.Timers.Timer remote_timer = new System.Timers.Timer () { Interval = 10 * 1000 };
private DateTime last_poll = DateTime.Now;
- private List sizebuffer = new List ();
+ private List sizebuffer = new List ();
private bool has_changed = false;
private Object change_lock = new Object ();
+ private Object watch_lock = new Object ();
protected SparkleListenerBase listener;
protected SyncStatus status;
@@ -116,12 +118,6 @@ namespace SparkleLib {
if (CheckForRemoteChanges ())
SyncDownBase ();
-
- string message;
- while ((message = this.listener.NextQueueDownMessage (identifier)) != null) {
- if (!message.Equals (CurrentRevision))
- SyncDownBase ();
- }
}
// In the unlikely case that we haven't synced up our
@@ -138,6 +134,7 @@ namespace SparkleLib {
while (HasUnsyncedChanges)
SyncUpBase ();
+
EnableWatching ();
}
@@ -244,18 +241,30 @@ namespace SparkleLib {
{
this.listener = SparkleListenerFactory.CreateListener (Name, Identifier);
+ if (this.listener.IsConnected) {
+ this.poll_interval = this.long_interval;
+
+ new Thread (new ThreadStart (delegate {
+ if (!IsSyncing && CheckForRemoteChanges ())
+ SyncDownBase ();
+ })).Start ();
+ }
+
// Stop polling when the connection to the irc channel is succesful
this.listener.Connected += delegate {
this.poll_interval = this.long_interval;
this.last_poll = DateTime.Now;
- // Check for changes manually one more time
- if (CheckForRemoteChanges ())
- SyncDownBase ();
+ if (!IsSyncing) {
- // Push changes that were made since the last disconnect
- if (HasUnsyncedChanges)
- SyncUpBase ();
+ // Check for changes manually one more time
+ if (CheckForRemoteChanges ())
+ SyncDownBase ();
+
+ // Push changes that were made since the last disconnect
+ if (HasUnsyncedChanges)
+ SyncUpBase ();
+ }
};
// Start polling when the connection to the irc channel is lost
@@ -271,22 +280,29 @@ namespace SparkleLib {
if (announcement.FolderIdentifier.Equals (identifier) &&
!announcement.Message.Equals (CurrentRevision)) {
- if ((Status != SyncStatus.SyncUp) &&
- (Status != SyncStatus.SyncDown) &&
- !this.is_buffering) {
+ while (this.IsSyncing)
+ System.Threading.Thread.Sleep (100);
- string message;
- while ((message = this.listener.NextQueueDownMessage (identifier)) != null) {
- if (!message.Equals (CurrentRevision))
- SyncDownBase ();
- }
- }
+ SparkleHelpers.DebugInfo ("Listener", "Syncing due to announcement");
+ SyncDownBase ();
+
+ } else {
+ if (announcement.FolderIdentifier.Equals (identifier))
+ SparkleHelpers.DebugInfo ("Listener", "Not syncing, message is for current revision");
}
};
-
+
// Start listening
- if (!this.listener.IsConnected && !this.listener.IsConnecting) {
+ if (!this.listener.IsConnected && !this.listener.IsConnecting)
this.listener.Connect ();
+ }
+
+
+ private bool IsSyncing {
+ get {
+ return (Status == SyncStatus.SyncUp ||
+ Status == SyncStatus.SyncDown ||
+ this.is_buffering);
}
}
@@ -297,7 +313,7 @@ namespace SparkleLib {
if (this.has_changed) {
if (this.sizebuffer.Count >= 4)
this.sizebuffer.RemoveAt (0);
-
+
DirectoryInfo dir_info = new DirectoryInfo (LocalPath);
this.sizebuffer.Add (CalculateFolderSize (dir_info));
@@ -309,7 +325,7 @@ namespace SparkleLib {
SparkleHelpers.DebugInfo ("Local", "[" + Name + "] Changes have settled.");
this.is_buffering = false;
this.has_changed = false;
-
+
DisableWatching ();
while (AnyDifferences)
SyncUpBase ();
@@ -485,6 +501,8 @@ namespace SparkleLib {
if (SyncStatusChanged != null)
SyncStatusChanged (SyncStatus.SyncDown);
+ string pre_sync_revision = CurrentRevision;
+
if (SyncDown ()) {
SparkleHelpers.DebugInfo ("SyncDown", "[" + Name + "] Done");
this.server_online = true;
@@ -492,24 +510,27 @@ namespace SparkleLib {
if (SyncStatusChanged != null)
SyncStatusChanged (SyncStatus.Idle);
- List change_sets = GetChangeSets (1);
- if (change_sets != null && change_sets.Count > 0) {
- SparkleChangeSet change_set = change_sets [0];
+ if (!pre_sync_revision.Equals (CurrentRevision)) {
+ List change_sets = GetChangeSets (1);
- bool note_added = false;
- foreach (string added in change_set.Added) {
- if (added.Contains (".notes")) {
- if (NewNote != null)
- NewNote (change_set.User.Name, change_set.User.Email);
+ if (change_sets != null && change_sets.Count > 0) {
+ SparkleChangeSet change_set = change_sets [0];
- note_added = true;
- break;
+ bool note_added = false;
+ foreach (string added in change_set.Added) {
+ if (added.Contains (".notes")) {
+ if (NewNote != null)
+ NewNote (change_set.User.Name, change_set.User.Email);
+
+ note_added = true;
+ break;
+ }
}
- }
- if (!note_added) {
- if (NewChangeSet != null)
- NewChangeSet (change_set);
+ if (!note_added) {
+ if (NewChangeSet != null)
+ NewChangeSet (change_set);
+ }
}
}
@@ -537,15 +558,19 @@ namespace SparkleLib {
public void DisableWatching ()
{
- this.watcher.EnableRaisingEvents = false;
- this.local_timer.Stop ();
+ lock (watch_lock) {
+ this.watcher.EnableRaisingEvents = false;
+ this.local_timer.Stop ();
+ }
}
public void EnableWatching ()
{
- this.watcher.EnableRaisingEvents = true;
- this.local_timer.Start ();
+ lock (watch_lock) {
+ this.watcher.EnableRaisingEvents = true;
+ this.local_timer.Start ();
+ }
}
diff --git a/SparkleShare/Mac/Makefile.am b/SparkleShare/Mac/Makefile.am
index 4313776a..c7df923a 100755
--- a/SparkleShare/Mac/Makefile.am
+++ b/SparkleShare/Mac/Makefile.am
@@ -1,16 +1,20 @@
EXTRA_DIST = \
AppDelegate.cs \
+ Growl.framework \
+ Growl.plist \
Info.plist \
MainMenu.xib \
MainMenu.xib.designer.cs \
SparkleAbout.cs \
SparkleAlert.cs \
- SparkleSetup.cs \
+ SparkleBadger.cs \
+ SparkleBubbles.cs \
+ SparkleController.cs \
SparkleEventLog.cs \
- SparkleMacController.cs \
SparkleMacWatcher.cs \
+ SparkleSetup.cs \
+ SparkleSetupWindow.cs \
SparkleShare.csproj \
SparkleShare.sln \
SparkleStatusIcon.cs \
- SparkleUI.cs \
- SparkleSetupWindow.cs
+ SparkleUI.cs
diff --git a/SparkleShare/Mac/SparkleSetup.cs b/SparkleShare/Mac/SparkleSetup.cs
index 226b6e8c..f03cc37b 100755
--- a/SparkleShare/Mac/SparkleSetup.cs
+++ b/SparkleShare/Mac/SparkleSetup.cs
@@ -41,14 +41,16 @@ namespace SparkleShare {
private NSButton SkipTutorialButton;
private NSButton OpenFolderButton;
private NSButton FinishButton;
- private NSButton AddProjectButton;
private NSImage SlideImage;
private NSImageView SlideImageView;
- private NSForm UserInfoForm;
private NSProgressIndicator ProgressIndicator;
+ private NSTextField EmailLabel;
+ private NSTextField EmailTextField;
+ private NSTextField FullNameTextField;
+ private NSTextField FullNameLabel;
private NSTextField AddressTextField;
- private NSTextField PathTextField;
private NSTextField AddressLabel;
+ private NSTextField PathTextField;
private NSTextField PathLabel;
private NSTextField PathHelpLabel;
private NSTextField AddProjectTextField;
@@ -73,18 +75,36 @@ namespace SparkleShare {
Description = "Before we can create a SparkleShare folder on this " +
"computer, we need some information from you.";
- UserInfoForm = new NSForm (new RectangleF (250, Frame.Height - 280, 350, 64));
- UserInfoForm.AddEntry ("Full Name:");
- UserInfoForm.AddEntry ("Email Address:");
+ FullNameLabel = new NSTextField () {
+ Alignment = NSTextAlignment.Right,
+ BackgroundColor = NSColor.WindowBackground,
+ Bordered = false,
+ Editable = false,
+ Frame = new RectangleF (165, Frame.Height - 234, 160, 17),
+ StringValue = "Full Name:",
+ Font = SparkleUI.Font
+ };
- UserInfoForm.CellSize = new SizeF (280, 22);
- UserInfoForm.IntercellSpacing = new SizeF (4, 4);
- UserInfoForm.Cells [0].LineBreakMode = NSLineBreakMode.TruncatingTail;
- UserInfoForm.Cells [1].LineBreakMode = NSLineBreakMode.TruncatingTail;
+ FullNameTextField = new NSTextField () {
+ Frame = new RectangleF (330, Frame.Height - 238, 196, 22),
+ StringValue = Controller.GuessedUserName
+ };
- UserInfoForm.Cells [0].StringValue = Controller.GuessedUserName;
- UserInfoForm.Cells [1].StringValue = Controller.GuessedUserEmail;
+ EmailLabel = new NSTextField () {
+ Alignment = NSTextAlignment.Right,
+ BackgroundColor = NSColor.WindowBackground,
+ Bordered = false,
+ Editable = false,
+ Frame = new RectangleF (165, Frame.Height - 264, 160, 17),
+ StringValue = "Email:",
+ Font = SparkleUI.Font
+ };
+
+ EmailTextField = new NSTextField () {
+ Frame = new RectangleF (330, Frame.Height - 268, 196, 22),
+ StringValue = Controller.GuessedUserEmail
+ };
// TODO: Ugly hack, do properly with events
timer = new Timer () {
@@ -100,18 +120,18 @@ namespace SparkleShare {
timer.Stop ();
timer = null;
- string full_name = UserInfoForm.Cells [0].StringValue.Trim ();
- string email = UserInfoForm.Cells [1].StringValue.Trim ();
+ string full_name = FullNameTextField.StringValue.Trim ();
+ string email = EmailTextField.StringValue.Trim ();
Controller.SetupPageCompleted (full_name, email);
};
timer.Elapsed += delegate {
InvokeOnMainThread (delegate {
- bool name_is_valid = !UserInfoForm.Cells [0].StringValue.Trim ().Equals ("");
+ bool name_is_valid = !FullNameTextField.StringValue.Trim ().Equals ("");
bool email_is_valid = Program.Controller.IsValidEmail (
- UserInfoForm.Cells [1].StringValue.Trim ());
+ EmailTextField.StringValue.Trim ());
ContinueButton.Enabled = (name_is_valid && email_is_valid);
});
@@ -119,7 +139,11 @@ namespace SparkleShare {
timer.Start ();
- ContentView.AddSubview (UserInfoForm);
+ ContentView.AddSubview (FullNameLabel);
+ ContentView.AddSubview (FullNameTextField);
+ ContentView.AddSubview (EmailLabel);
+ ContentView.AddSubview (EmailTextField);
+
Buttons.Add (ContinueButton);
break;
@@ -161,7 +185,8 @@ namespace SparkleShare {
PathTextField = new NSTextField () {
Frame = new RectangleF (190 + 196 + 16, Frame.Height - 336, 196, 22),
StringValue = Controller.PreviousPath,
- Enabled = (Controller.SelectedPlugin.Path == null)
+ Enabled = (Controller.SelectedPlugin.Path == null),
+ Bezeled = true
};
@@ -567,14 +592,6 @@ namespace SparkleShare {
"to add one by hand."
};
- AddProjectButton = new NSButton () {
- Title = "Add Project…"
- };
-
- AddProjectButton.Activated += delegate {
- Controller.TutorialPageCompleted ();
- };
-
FinishButton = new NSButton () {
Title = "Finish"
};
@@ -600,7 +617,6 @@ namespace SparkleShare {
ContentView.AddSubview (SlideImageView);
ContentView.AddSubview (AddProjectTextField);
Buttons.Add (FinishButton);
- Buttons.Add (AddProjectButton);
break;
}
diff --git a/SparkleShare/Mac/SparkleShare.csproj b/SparkleShare/Mac/SparkleShare.csproj
index d9c0e8f1..d2f87467 100755
--- a/SparkleShare/Mac/SparkleShare.csproj
+++ b/SparkleShare/Mac/SparkleShare.csproj
@@ -66,6 +66,7 @@
False
..\..\bin\SparkleLib.dll
+
diff --git a/SparkleShare/Mac/SparkleStatusIcon.cs b/SparkleShare/Mac/SparkleStatusIcon.cs
index 50238afe..55563d69 100755
--- a/SparkleShare/Mac/SparkleStatusIcon.cs
+++ b/SparkleShare/Mac/SparkleStatusIcon.cs
@@ -147,9 +147,11 @@ namespace SparkleShare {
StatusItem.AlternateImage.Size = new SizeF (16, 16);
Menu = new NSMenu ();
+ Menu.AutoEnablesItems = false;
StateMenuItem = new NSMenuItem () {
- Title = StateText
+ Title = StateText,
+ Enabled = false
};
Menu.AddItem (StateMenuItem);
@@ -165,6 +167,7 @@ namespace SparkleShare {
FolderMenuItem.Image = SparkleShareImage;
FolderMenuItem.Image.Size = new SizeF (16, 16);
+ FolderMenuItem.Enabled = true;
Menu.AddItem (FolderMenuItem);
@@ -189,7 +192,8 @@ namespace SparkleShare {
FolderMenuItems [i] = item;
FolderMenuItems [i].Activated += Tasks [i];
-
+ FolderMenuItem.Enabled = true;
+
i++;
};
@@ -197,7 +201,8 @@ namespace SparkleShare {
FolderMenuItems = new NSMenuItem [1];
FolderMenuItems [0] = new NSMenuItem () {
- Title = "No projects yet"
+ Title = "No projects yet",
+ Enabled = false
};
}
@@ -207,7 +212,8 @@ namespace SparkleShare {
Menu.AddItem (NSMenuItem.SeparatorItem);
SyncMenuItem = new NSMenuItem () {
- Title = "Add Hosted Project…"
+ Title = "Add Hosted Project…",
+ Enabled = true
};
if (!Program.Controller.FirstRun) {
@@ -233,7 +239,8 @@ namespace SparkleShare {
Menu.AddItem (NSMenuItem.SeparatorItem);
RecentEventsMenuItem = new NSMenuItem () {
- Title = "Open Recent Events"
+ Title = "Open Recent Events",
+ Enabled = true
};
if (Controller.Folders.Length > 0) {
@@ -252,7 +259,9 @@ namespace SparkleShare {
Menu.AddItem (RecentEventsMenuItem);
- NotificationsMenuItem = new NSMenuItem ();
+ NotificationsMenuItem = new NSMenuItem () {
+ Enabled = true
+ };
if (Program.Controller.NotificationsEnabled)
NotificationsMenuItem.Title = "Turn Notifications Off";
@@ -274,7 +283,8 @@ namespace SparkleShare {
Menu.AddItem (NSMenuItem.SeparatorItem);
AboutMenuItem = new NSMenuItem () {
- Title = "About SparkleShare"
+ Title = "About SparkleShare",
+ Enabled = true
};
AboutMenuItem.Activated += delegate {
diff --git a/SparkleShare/Nautilus/Makefile.am b/SparkleShare/Nautilus/Makefile.am
index 68b8772d..8240d060 100755
--- a/SparkleShare/Nautilus/Makefile.am
+++ b/SparkleShare/Nautilus/Makefile.am
@@ -1,10 +1,15 @@
SOURCES = \
- sparkleshare-nautilus-extension.py
+ sparkleshare-nautilus-extension.py \
+ sparkleshare-nautilus3-extension.py
-if NAUTILUS_EXTENSION_ENABLED
+if NAUTILUS2_EXTENSION_ENABLED
NAUTILUS_PYTHON_INSTALL_DIR=$(subst $(NAUTILUS_PREFIX)/,${prefix}/,$(NAUTILUS_PYTHON_DIR))
extensiondir = $(NAUTILUS_PYTHON_INSTALL_DIR)
-extension_SCRIPTS = $(addprefix $(srcdir)/, $(SOURCES))
-else
-EXTRA_DIST = $(SOURCES) sparkleshare-nautilus-extension.py.in
+extension_SCRIPTS = $(addprefix $(srcdir)/, sparkleshare-nautilus-extension.py))
endif
+if NAUTILUS3_EXTENSION_ENABLED
+NAUTILUS_PYTHON_INSTALL_DIR=$(subst $(NAUTILUS_PREFIX)/,${prefix}/,$(NAUTILUS_PYTHON_DIR))
+extensiondir = $(NAUTILUS_PYTHON_INSTALL_DIR)
+extension_SCRIPTS = $(addprefix $(srcdir)/, sparkleshare-nautilus3-extension.py)
+endif
+EXTRA_DIST = $(SOURCES) sparkleshare-nautilus-extension.py.in sparkleshare-nautilus3-extension.py.in
diff --git a/SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in b/SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in
index a43d761a..717761bc 100755
--- a/SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in
+++ b/SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in
@@ -1,3 +1,4 @@
+#!/usr/bin/python
# SparkleShare, an instant update workflow to Git.
# Copyright (C) 2010 Hylke Bons
#
diff --git a/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py b/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in
similarity index 98%
rename from SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py
rename to SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in
index e3abdd44..e4de79c7 100755
--- a/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py
+++ b/SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in
@@ -1,3 +1,4 @@
+#!/usr/bin/python
# SparkleShare, an instant update workflow to Git.
# Copyright (C) 2010 Hylke Bons
#
@@ -25,7 +26,7 @@ from gi.repository import Nautilus, GObject, Gtk, Gdk
SPARKLESHARE_PATH = os.path.join (os.path.expanduser ('~'), "SparkleShare")
import gettext
-gettext.bindtextdomain('sparkleshare', '/usr/share/locale')
+gettext.bindtextdomain('sparkleshare', '@prefix@/share/locale')
gettext.textdomain('sparkleshare')
_ = gettext.gettext
diff --git a/SparkleShare/SparkleAbout.cs b/SparkleShare/SparkleAbout.cs
index 6d0a18f9..6a35cf78 100755
--- a/SparkleShare/SparkleAbout.cs
+++ b/SparkleShare/SparkleAbout.cs
@@ -97,9 +97,6 @@ namespace SparkleShare {
private void CreateAbout ()
{
- Gdk.Color color = Style.Foreground (StateType.Insensitive);
- string secondary_text_color = SparkleUIHelpers.GdkColorToHex (color);
-
Label version = new Label () {
Markup = "" +
"version " + Controller.RunningVersion +
diff --git a/SparkleShare/SparkleAboutController.cs b/SparkleShare/SparkleAboutController.cs
index 5495dfc9..801d84a6 100755
--- a/SparkleShare/SparkleAboutController.cs
+++ b/SparkleShare/SparkleAboutController.cs
@@ -71,19 +71,26 @@ namespace SparkleShare {
if (args.Error != null)
return;
- string new_version = args.Result.Trim ();
+ int running_version = int.Parse (
+ "" + RunningVersion [0] + RunningVersion [2] + RunningVersion [4]
+ );
+
+ string result = args.Result.Trim ();
+ int new_version = int.Parse (
+ "" + result [0] + result [2] + result [4]
+ );
// Add a little delay, making it seems we're
// actually doing hard work
Thread.Sleep (2 * 1000);
- if (RunningVersion.Equals (new_version)) {
+ if (running_version >= new_version) {
if (VersionUpToDateEvent != null)
VersionUpToDateEvent ();
} else {
if (NewVersionEvent != null)
- NewVersionEvent (new_version);
+ NewVersionEvent (result);
}
this.version_checker.Start ();
diff --git a/SparkleShare/SparkleControllerBase.cs b/SparkleShare/SparkleControllerBase.cs
index dd333958..4f202b00 100644
--- a/SparkleShare/SparkleControllerBase.cs
+++ b/SparkleShare/SparkleControllerBase.cs
@@ -83,6 +83,7 @@ namespace SparkleShare {
public abstract string PluginsPath { get; }
private SparkleFetcherBase fetcher;
+ private List failed_avatars = new List ();
// Short alias for the translations
@@ -901,15 +902,15 @@ namespace SparkleShare {
// Add some restrictions to what the key can
// do when uploaded to the server
- string public_key = File.ReadAllText (key_file_path + ".pub");
- public_key = "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " + public_key;
- File.WriteAllText (key_file_path + ".pub", public_key);
+ // string public_key = File.ReadAllText (key_file_path + ".pub");
+ // public_key = "no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty " + public_key;
+ // File.WriteAllText (key_file_path + ".pub", public_key);
// Create an easily accessible copy of the public
// key in the user's SparkleShare folder
File.Copy (key_file_path + ".pub",
- Path.Combine (SparklePath, UserName + "'s key.txt"));
-
+ Path.Combine (SparklePath, UserName + "'s key.txt"),
+ true); // Overwriting is allowed
}
}
@@ -944,10 +945,21 @@ namespace SparkleShare {
// Delete avatars older than a month
if (avatar_info.CreationTime < DateTime.Now.AddMonths (-1)) {
- avatar_info.Delete ();
- old_avatars.Add (email);
+ try {
+ avatar_info.Delete ();
+ old_avatars.Add (email);
+
+ } catch (FileNotFoundException) {
+ // FIXME: For some reason the previous File.Exists () check
+ // doesn't cover all cases sometimes, so we catch any errors
+
+ if (old_avatars.Contains (email))
+ old_avatars.Remove (email);
+ }
}
+ } else if (this.failed_avatars.Contains (email)) {
+ break;
} else {
WebClient client = new WebClient ();
string url = "http://gravatar.com/avatar/" + GetMD5 (email) +
@@ -969,8 +981,11 @@ namespace SparkleShare {
SparkleHelpers.DebugInfo ("Controller", "Failed fetching gravatar for " + email);
// Stop downloading further avatars if we have no internet access
- if (e.Status == WebExceptionStatus.Timeout)
+ if (e.Status == WebExceptionStatus.Timeout){
break;
+ } else {
+ this.failed_avatars.Add (email);
+ }
}
}
}
diff --git a/SparkleShare/SparkleSetup.cs b/SparkleShare/SparkleSetup.cs
index 6633088a..84a7ffd8 100755
--- a/SparkleShare/SparkleSetup.cs
+++ b/SparkleShare/SparkleSetup.cs
@@ -218,7 +218,7 @@ namespace SparkleShare {
TreeSelection selection = (sender as TreeView).Selection;
selection.GetSelected (out model, out iter);
- SparklePlugin plugin = (SparklePlugin) model.GetValue (iter, 2);
+ // SparklePlugin plugin = (SparklePlugin) model.GetValue (iter, 2);
int selected_path = int.Parse (model.GetPath (iter).ToString ());
Controller.SelectedPluginChanged (selected_path);
@@ -333,7 +333,7 @@ namespace SparkleShare {
case PageType.Syncing: {
Header = String.Format (_("Adding project ‘{0}’…"), Controller.SyncingFolder);
- Description = _("This may take a while." + Environment.NewLine) +
+ Description = _("This may take a while.") + Environment.NewLine +
_("Are you sure it’s not coffee o'clock?");
Button finish_button = new Button () {
@@ -548,11 +548,6 @@ namespace SparkleShare {
Image slide = SparkleUIHelpers.GetImage ("tutorial-slide-4.png");
- Button add_project_button = new Button (_("Add Hosted Project…"));
- add_project_button.Clicked += delegate {
- Controller.TutorialPageCompleted ();
- };
-
Button finish_button = new Button (_("Finish"));
finish_button.Clicked += delegate {
Close ();
@@ -564,8 +559,6 @@ namespace SparkleShare {
box.Add (label);
Add (box);
-
- AddButton (add_project_button);
AddButton (finish_button);
break;
diff --git a/build/m4/sparkleshare/nautilus-python.m4 b/build/m4/sparkleshare/nautilus-python.m4
index 1256f362..cec0a72e 100755
--- a/build/m4/sparkleshare/nautilus-python.m4
+++ b/build/m4/sparkleshare/nautilus-python.m4
@@ -1,14 +1,34 @@
AC_DEFUN([SPARKLESHARE_NAUTILUS_PYTHON],
[
- PKG_CHECK_MODULES(NAUTILUS_PYTHON, nautilus-python, have_nautilus_python=yes, have_nautilus_python=no)
- if test "x$have_nautilus_python" = "xyes"; then
- NAUTILUS_PREFIX="`$PKG_CONFIG --variable=prefix nautilus-python`"
- AC_SUBST(NAUTILUS_PREFIX)
- NAUTILUS_PYTHON_DIR="`$PKG_CONFIG --variable=pythondir nautilus-python`"
- AC_SUBST(NAUTILUS_PYTHON_DIR)
- AM_CONDITIONAL(NAUTILUS_EXTENSION_ENABLED, true)
+ AC_ARG_ENABLE(nautilus-extension,
+ AC_HELP_STRING([--disable-nautilus-extension],[Do not install the Nautilus plugin]), enable_nautilus_extension=$enableval, enable_nautilus_extension=yes )
+ if test x$enable_nautilus_extension = xyes; then
+ PKG_CHECK_MODULES(NAUTILUS_PYTHON, nautilus-python < 1.1, have_nautilus2_python=yes, have_nautilus2_python=no)
+ if test "x$have_nautilus2_python" = "xyes"; then
+ NAUTILUS_PREFIX="`$PKG_CONFIG --variable=prefix nautilus-python`"
+ AC_SUBST(NAUTILUS_PREFIX)
+ NAUTILUS_PYTHON_DIR="`$PKG_CONFIG --variable=pythondir nautilus-python`"
+ AC_SUBST(NAUTILUS_PYTHON_DIR)
+ AM_CONDITIONAL(NAUTILUS2_EXTENSION_ENABLED, true)
+ else
+ AM_CONDITIONAL(NAUTILUS2_EXTENSION_ENABLED, false)
+ fi
+ PKG_CHECK_MODULES(NAUTILUS3_PYTHON, nautilus-python >= 1.1, have_nautilus3_python=yes, have_nautilus3_python=no)
+ if test "x$have_nautilus3_python" = "xyes"; then
+ NAUTILUS_PREFIX="`$PKG_CONFIG --variable=prefix nautilus-python`"
+ AC_SUBST(NAUTILUS_PREFIX)
+ NAUTILUS_PYTHON_DIR="`$PKG_CONFIG --variable=pythondir nautilus-python`"
+ AC_SUBST(NAUTILUS_PYTHON_DIR)
+ AM_CONDITIONAL(NAUTILUS3_EXTENSION_ENABLED, true)
+ else
+ AM_CONDITIONAL(NAUTILUS3_EXTENSION_ENABLED, false)
+ fi
else
- AM_CONDITIONAL(NAUTILUS_EXTENSION_ENABLED, false)
+ have_nautilus2_python="disabled"
+ have_nautilus3_python="disabled"
fi
+
+ AM_CONDITIONAL(NAUTILUS2_EXTENSION_ENABLED, test "x$enable_nautilus_extension" = "xyes")
+ AM_CONDITIONAL(NAUTILUS3_EXTENSION_ENABLED, test "x$enable_nautilus_extension" = "xyes")
])
diff --git a/configure.ac b/configure.ac
index ca8c6046..2116eb11 100755
--- a/configure.ac
+++ b/configure.ac
@@ -1,9 +1,9 @@
dnl Process this file with autoconf to produce a configure script.
m4_define([sparkleshare_version],
- [0.2.5])
+ [0.4.0])
m4_define([sparkleshare_asm_version],
- [0.2.5])
+ [0.4.0])
AC_PREREQ([2.54])
AC_INIT([SparkleShare], sparkleshare_version)
@@ -175,6 +175,7 @@ SparkleShare/Makefile
SparkleShare/Mac/Makefile
SparkleShare/Nautilus/Makefile
SparkleShare/Nautilus/sparkleshare-nautilus-extension.py
+SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py
po/Makefile.in
Makefile
])
@@ -185,7 +186,8 @@ SparkleShare ${VERSION}
Configuration:
Prefix : ${prefix}
Build Gtk+ UI : ${enable_gtkui}
- Nautilus plugin : ${have_nautilus_python}
+ Nautilus 2.x plugin : ${have_nautilus2_python}
+ Nautilus 3.x plugin : ${have_nautilus3_python}
User Help : ${enable_user_help} (requires gnome-doc-utils >= 0.17.3)
"
diff --git a/data/git-hooks/post-update b/data/git-hooks/post-update
new file mode 100755
index 00000000..45078f3c
--- /dev/null
+++ b/data/git-hooks/post-update
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# for use with gitolite
+#
+# http://sitaramc.github.com/gitolite/hooks.html
+# copy this file to
+# .gitolite/hooks/common/post-update
+# run gl-setup again
+
+# for use with standard ssh/http(s)/git repos
+#
+# simply move this file to
+# .git/hooks/post-update in the remote repository
+
+# make sure to chmod -x in all cases after the file has been copied
+
+#To supress all output
+exec > /dev/null 2>&1
+
+# for information on running your own server
+# https://github.com/hbons/fanout.node.js
+SERVER="204.62.14.135"
+PORT="1986"
+CHANNEL=$(git rev-list --reverse HEAD | head -n 1)
+MESSAGE=$(git rev-list HEAD | head -n 1)
+DATA="announce ${CHANNEL} ${MESSAGE}"
+echo "${DATA}\n" | socat - TCP-CONNECT:${SERVER}:${PORT} &
+
+exit 0
diff --git a/data/plugins/Makefile.am b/data/plugins/Makefile.am
index 8bf7b4ab..45a936af 100644
--- a/data/plugins/Makefile.am
+++ b/data/plugins/Makefile.am
@@ -17,7 +17,7 @@ dist_plugins_DATA = \
pluginsdir = $(pkgdatadir)/plugins/
-EXTRA_DIST=$(xml_in_files) $(xml_DATA)
+EXTRA_DIST=$(dist_plugins_in_files) $(xml_DATA)
MAINTAINERCLEANFILES = \
Makefile.in
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 02cf6655..fbf8c10f 100755
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -10,6 +10,7 @@ data/plugins/own-server.xml.in
SparkleShare/Mac/SparkleStatusIcon.cs
SparkleShare/Mac/SparkleUI.cs
SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in
+SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in
SparkleShare/Program.cs
SparkleShare/SparkleAbout.cs
SparkleShare/SparkleController.cs
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index e340ffb1..0ef022e2 100755
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -1,3 +1,4 @@
MacCore/src/Options.cs
SparkleShare/Nautilus/sparkleshare-nautilus-extension.py
+SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py
SparkleLib/SparkleOptions.cs
diff --git a/po/de.po b/po/de.po
index 0b1a334e..9ce2741f 100755
--- a/po/de.po
+++ b/po/de.po
@@ -6,18 +6,20 @@
# Heffer , 2011.
# Jan-Christoph Borchardt , 2011.
# kabum , 2011.
+# , 2011.
# kxnop , 2011.
# Łukasz Jernaś , 2011.
# , 2011.
+# Sascha , 2011.
# , 2011.
# , 2011.
msgid ""
msgstr ""
"Project-Id-Version: SparkleShare\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-30 15:50+0100\n"
-"PO-Revision-Date: 2011-10-30 14:50+0000\n"
-"Last-Translator: deejay1 \n"
+"POT-Creation-Date: 2011-11-12 18:42+0100\n"
+"PO-Revision-Date: 2011-11-14 07:55+0000\n"
+"Last-Translator: iwsnipy \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -26,11 +28,11 @@ msgstr ""
#: ../data/plugins/bitbucket.xml.in.h:1 ../data/plugins/github.xml.in.h:1
msgid "/username/project"
-msgstr ""
+msgstr "/username/project"
#: ../data/plugins/bitbucket.xml.in.h:2
msgid "Bitbucket"
-msgstr ""
+msgstr "Bitbucket"
#: ../data/plugins/bitbucket.xml.in.h:3
msgid "Free code hosting for Git and Mercurial"
@@ -42,11 +44,11 @@ msgstr ""
#: ../data/plugins/github.xml.in.h:3
msgid "Github"
-msgstr ""
+msgstr "Github"
#: ../data/plugins/gitorious.xml.in.h:1
msgid "/project/repository"
-msgstr ""
+msgstr "/Projekt/Ablage"
#: ../data/plugins/gitorious.xml.in.h:2
msgid "Gitorious"
@@ -58,11 +60,11 @@ msgstr ""
#: ../data/plugins/gnome.xml.in.h:1
msgid "/project"
-msgstr ""
+msgstr "/Projekt"
#: ../data/plugins/gnome.xml.in.h:2
msgid "A free and easy interface for your computer"
-msgstr ""
+msgstr "Eine freie und einfache Schnittstelle für deinen Computer"
#: ../data/plugins/gnome.xml.in.h:3
msgid "The GNOME Project"
@@ -70,57 +72,62 @@ msgstr "Das GNOME Projekt"
#: ../data/plugins/own-server.xml.in.h:1
msgid "/path/to/project"
-msgstr ""
+msgstr "/Pfad/zum/Projekt"
#: ../data/plugins/own-server.xml.in.h:2
msgid "Everything under my control"
-msgstr ""
+msgstr "Alles unter meiner Kontrolle"
#: ../data/plugins/own-server.xml.in.h:3
msgid "On my own server"
-msgstr ""
+msgstr "Auf meinem eigenen Server"
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:70
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:88
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:84
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:102
#: ../SparkleShare/SparkleSetup.cs:75 ../SparkleShare/SparkleStatusIcon.cs:75
#: ../SparkleShare/SparkleStatusIcon.cs:89
msgid "Welcome to SparkleShare!"
msgstr "Willkommen bei SparkleShare!"
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:72
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:90
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:86
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:104
#: ../SparkleShare/SparkleStatusIcon.cs:77
#: ../SparkleShare/SparkleStatusIcon.cs:91
msgid "Up to date"
-msgstr "Schon auf dem aktuellsten Stand."
+msgstr "Aktualisiert"
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:99
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:113
#: ../SparkleShare/SparkleStatusIcon.cs:106
msgid "Syncing…"
-msgstr "Abgleichen …"
+msgstr "Synchronisiere..."
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:109
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:123
#: ../SparkleShare/SparkleStatusIcon.cs:116
msgid "Not everything is synced"
-msgstr "Nicht alles ist synchronisiert"
+msgstr "Es ist nicht alles synchronisiert"
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:113
+#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:140
msgid "Copy Web Link"
-msgstr "Internetadresse kopieren"
+msgstr "Web Link kopieren"
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:114
+#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:141
msgid "Copy the web address of this file to the clipboard"
msgstr "Die Internetadresse dieser Datei in die Zwischenablage kopieren"
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:147
+#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:173
msgid "Get Earlier Version"
msgstr "Frühere Version abrufen"
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:148
+#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:174
msgid "Make a copy of an earlier version in this folder"
msgstr "Erstelle eine Kopie einer früheren Version in diesem Verzeichnis"
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:161
+#: ../SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py.in:187
msgid "Select to get a copy of this version"
msgstr "Selektieren, um eine Kopie dieser Version abzurufen"
@@ -196,42 +203,42 @@ msgstr "Sie verwenden die aktuelle Version."
msgid "Checking for updates..."
msgstr "Suche Aktualisierungen..."
-#: ../SparkleShare/SparkleControllerBase.cs:493
+#: ../SparkleShare/SparkleControllerBase.cs:494
msgid "dddd, MMMM d, yyyy"
msgstr ""
-#: ../SparkleShare/SparkleControllerBase.cs:499
+#: ../SparkleShare/SparkleControllerBase.cs:500
msgid "dddd, MMMM d"
msgstr ""
-#: ../SparkleShare/SparkleControllerBase.cs:707
+#: ../SparkleShare/SparkleControllerBase.cs:708
#, csharp-format
msgid "added ‘{0}’"
-msgstr ""
+msgstr "Hinzugefügt '{0}'"
-#: ../SparkleShare/SparkleControllerBase.cs:712
+#: ../SparkleShare/SparkleControllerBase.cs:713
#, csharp-format
msgid "moved ‘{0}’"
-msgstr ""
+msgstr "'{0}' verschoben"
-#: ../SparkleShare/SparkleControllerBase.cs:717
+#: ../SparkleShare/SparkleControllerBase.cs:718
#, csharp-format
msgid "edited ‘{0}’"
-msgstr ""
+msgstr "Bearbeitet '{0}'"
-#: ../SparkleShare/SparkleControllerBase.cs:722
+#: ../SparkleShare/SparkleControllerBase.cs:723
#, csharp-format
msgid "deleted ‘{0}’"
-msgstr ""
+msgstr "Gelöscht '{0}'"
-#: ../SparkleShare/SparkleControllerBase.cs:731
+#: ../SparkleShare/SparkleControllerBase.cs:732
#, csharp-format
msgid "and {0} more"
msgid_plural "and {0} more"
msgstr[0] ""
msgstr[1] ""
-#: ../SparkleShare/SparkleControllerBase.cs:735
+#: ../SparkleShare/SparkleControllerBase.cs:736
msgid "did something magical"
msgstr ""
@@ -270,11 +277,11 @@ msgstr ""
#: ../SparkleShare/SparkleSetup.cs:275
msgid "Address"
-msgstr ""
+msgstr "Adresse"
#: ../SparkleShare/SparkleSetup.cs:295
msgid "Remote Path"
-msgstr ""
+msgstr "Entfernter Pfad"
#. Cancel button
#: ../SparkleShare/SparkleSetup.cs:309 ../SparkleShare/SparkleSetup.cs:345
@@ -289,7 +296,7 @@ msgstr "Hinzufügen"
#: ../SparkleShare/SparkleSetup.cs:335
#, csharp-format
msgid "Adding project ‘{0}’…"
-msgstr ""
+msgstr "Füge Projekt '{0}' hinzu..."
#: ../SparkleShare/SparkleSetup.cs:336
msgid "This may take a while."
@@ -323,7 +330,7 @@ msgstr "Projekt erfolgreich hinzugefügt!"
#: ../SparkleShare/SparkleSetup.cs:448
msgid "Access the files from your SparkleShare folder."
-msgstr ""
+msgstr "Zugriff auf die Dateien von Ihrem SparkleShare Ordner."
#. A button that opens the synced folder
#: ../SparkleShare/SparkleSetup.cs:451
@@ -339,6 +346,8 @@ msgid ""
"SparkleShare creates a special folder in your personal folder that will keep"
" track of your projects."
msgstr ""
+"SparkleShare erzeugt einen eigenen Ordner in Ihrem persönlichen Ordner, der "
+"den Überblick über Ihre Projekte behalten."
#: ../SparkleShare/SparkleSetup.cs:481
msgid "Skip Tutorial"
@@ -358,6 +367,8 @@ msgid ""
"All files added to your project folders are synced with the host "
"automatically, as well as with your collaborators."
msgstr ""
+"Alle zu Ihrem Projekt hinzugefügten Dateien sind automatisch mit dem Server "
+"und Ihren Mitarbeitern synchronisiert."
#: ../SparkleShare/SparkleSetup.cs:520
msgid "The status icon is here to help"
@@ -368,16 +379,20 @@ msgid ""
"It shows the syncing process status, and contains links to your projects and"
" the event log."
msgstr ""
+"Es zeigt den Synchronisierungsstatus und beinhaltet Links zu deinem Projekt "
+"und deinen letzten Ereignissen."
#: ../SparkleShare/SparkleSetup.cs:538
msgid "Adding projects to SparkleShare"
-msgstr ""
+msgstr "Füge Projekte zu SparkleShare"
#: ../SparkleShare/SparkleSetup.cs:539
msgid ""
"Just click this button when you see it on the web, and the project will be "
"automatically added:"
msgstr ""
+"Klicken den Button, wenn du ihn im Internet siehst, und das Projekt wird "
+"automatisch hinzu gefügt:"
#: ../SparkleShare/SparkleSetup.cs:542
msgid ""
@@ -397,11 +412,11 @@ msgstr "SparkleShare Konfiguration"
#: ../SparkleShare/SparkleStatusIcon.cs:228
msgid "No projects yet"
-msgstr ""
+msgstr "Bislang keine Projekte "
#: ../SparkleShare/SparkleStatusIcon.cs:262
msgid "Open Recent Events"
-msgstr ""
+msgstr "Öffne letzte Ereignisse"
#: ../SparkleShare/SparkleStatusIcon.cs:282
msgid "Turn Notifications Off"
diff --git a/po/es.po b/po/es.po
index c3971a6c..553a662a 100755
--- a/po/es.po
+++ b/po/es.po
@@ -1,6 +1,7 @@
# This file is distributed under the same license as the SparkleShare package.
#
# Translators:
+# Claudio Rodrigo Pereyra Diaz , 2011.
# , 2011.
# jamelrom , 2011.
# , 2011.
@@ -9,8 +10,8 @@ msgstr ""
"Project-Id-Version: SparkleShare\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-10-30 15:50+0100\n"
-"PO-Revision-Date: 2011-10-30 14:50+0000\n"
-"Last-Translator: deejay1 \n"
+"PO-Revision-Date: 2011-11-02 12:13+0000\n"
+"Last-Translator: elsupergomez \n"
"Language-Team: Spanish (Castilian) (http://www.transifex.net/projects/p/sparkleshare/team/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -201,33 +202,33 @@ msgstr ""
#: ../SparkleShare/SparkleControllerBase.cs:707
#, csharp-format
msgid "added ‘{0}’"
-msgstr ""
+msgstr "añadido '{0}'"
#: ../SparkleShare/SparkleControllerBase.cs:712
#, csharp-format
msgid "moved ‘{0}’"
-msgstr ""
+msgstr "movido '{0}'"
#: ../SparkleShare/SparkleControllerBase.cs:717
#, csharp-format
msgid "edited ‘{0}’"
-msgstr ""
+msgstr "editado '{0}'"
#: ../SparkleShare/SparkleControllerBase.cs:722
#, csharp-format
msgid "deleted ‘{0}’"
-msgstr ""
+msgstr "eliminado '{0}'"
#: ../SparkleShare/SparkleControllerBase.cs:731
#, csharp-format
msgid "and {0} more"
msgid_plural "and {0} more"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "y {0} más"
+msgstr[1] "y {0} más"
#: ../SparkleShare/SparkleControllerBase.cs:735
msgid "did something magical"
-msgstr ""
+msgstr "hizo algo mágico"
#: ../SparkleShare/SparkleEventLog.cs:58
msgid "Recent Events"
@@ -386,6 +387,8 @@ msgid ""
"…or select ‘Add Hosted Project…’ from the status icon menu to add one"
" by hand."
msgstr ""
+"... o seleccione \"Agregar proyecto alojado ... \" en el menú del "
+"icono de estado para agregar uno manualmente."
#. Opens the wizard to add a new remote folder
#: ../SparkleShare/SparkleSetup.cs:551
diff --git a/po/fr.po b/po/fr.po
index 3f28ae5c..c4479fec 100755
--- a/po/fr.po
+++ b/po/fr.po
@@ -12,8 +12,8 @@ msgstr ""
"Project-Id-Version: SparkleShare\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-10-30 15:50+0100\n"
-"PO-Revision-Date: 2011-10-30 14:50+0000\n"
-"Last-Translator: deejay1 \n"
+"PO-Revision-Date: 2011-11-04 22:18+0000\n"
+"Last-Translator: chezyann \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -194,31 +194,31 @@ msgstr "Vérification des mises à jour…"
#: ../SparkleShare/SparkleControllerBase.cs:493
msgid "dddd, MMMM d, yyyy"
-msgstr ""
+msgstr "dddd d MMMM yyyy"
#: ../SparkleShare/SparkleControllerBase.cs:499
msgid "dddd, MMMM d"
-msgstr ""
+msgstr "dddd d MMMM"
#: ../SparkleShare/SparkleControllerBase.cs:707
#, csharp-format
msgid "added ‘{0}’"
-msgstr ""
+msgstr "Ajouté: ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:712
#, csharp-format
msgid "moved ‘{0}’"
-msgstr ""
+msgstr "Déplacé: ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:717
#, csharp-format
msgid "edited ‘{0}’"
-msgstr ""
+msgstr "Modifié: ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:722
#, csharp-format
msgid "deleted ‘{0}’"
-msgstr ""
+msgstr "Supprimé: ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:731
#, csharp-format
@@ -229,7 +229,7 @@ msgstr[1] ""
#: ../SparkleShare/SparkleControllerBase.cs:735
msgid "did something magical"
-msgstr ""
+msgstr "Attendez un miracle"
#: ../SparkleShare/SparkleEventLog.cs:58
msgid "Recent Events"
diff --git a/po/he.po b/po/he.po
index 84ac2dda..8752c0f5 100755
--- a/po/he.po
+++ b/po/he.po
@@ -1,13 +1,14 @@
# This file is distributed under the same license as the SparkleShare package.
#
# Translators:
+# , 2011.
msgid ""
msgstr ""
"Project-Id-Version: SparkleShare\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-10-30 15:50+0100\n"
-"PO-Revision-Date: 2011-10-30 14:50+0000\n"
-"Last-Translator: deejay1 \n"
+"PO-Revision-Date: 2011-11-01 20:06+0000\n"
+"Last-Translator: ophir \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -64,11 +65,11 @@ msgstr ""
#: ../data/plugins/own-server.xml.in.h:2
msgid "Everything under my control"
-msgstr ""
+msgstr "הכל תחת שליטתי"
#: ../data/plugins/own-server.xml.in.h:3
msgid "On my own server"
-msgstr ""
+msgstr "שרת משלי"
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:70
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:88
@@ -169,20 +170,20 @@ msgstr "ספארקלשר"
#. A menu item that takes the user to http://www.sparkleshare.org/
#: ../SparkleShare/SparkleAbout.cs:53 ../SparkleShare/SparkleStatusIcon.cs:295
msgid "About SparkleShare"
-msgstr ""
+msgstr "אודות ספארקלשר"
#: ../SparkleShare/SparkleAbout.cs:70
#, csharp-format
msgid "A newer version ({0}) is available!"
-msgstr ""
+msgstr "גירסה חדשה יותר ({0}) זמינה!"
#: ../SparkleShare/SparkleAbout.cs:79
msgid "You are running the latest version."
-msgstr ""
+msgstr "אתה מריץ את הגרסה המעודכנת ביותר"
#: ../SparkleShare/SparkleAbout.cs:88 ../SparkleShare/SparkleAbout.cs:113
msgid "Checking for updates..."
-msgstr ""
+msgstr "בודק עדכונים..."
#: ../SparkleShare/SparkleControllerBase.cs:493
msgid "dddd, MMMM d, yyyy"
@@ -195,22 +196,22 @@ msgstr ""
#: ../SparkleShare/SparkleControllerBase.cs:707
#, csharp-format
msgid "added ‘{0}’"
-msgstr ""
+msgstr "‘{0}’ הוסף"
#: ../SparkleShare/SparkleControllerBase.cs:712
#, csharp-format
msgid "moved ‘{0}’"
-msgstr ""
+msgstr "‘{0}’ הוזז"
#: ../SparkleShare/SparkleControllerBase.cs:717
#, csharp-format
msgid "edited ‘{0}’"
-msgstr ""
+msgstr "‘{0}’ שונה"
#: ../SparkleShare/SparkleControllerBase.cs:722
#, csharp-format
msgid "deleted ‘{0}’"
-msgstr ""
+msgstr "‘{0}’ נמחק"
#: ../SparkleShare/SparkleControllerBase.cs:731
#, csharp-format
@@ -225,12 +226,12 @@ msgstr ""
#: ../SparkleShare/SparkleEventLog.cs:58
msgid "Recent Events"
-msgstr ""
+msgstr "אירועים אחרונים"
#: ../SparkleShare/SparkleEventLog.cs:169
#: ../SparkleShare/SparkleEventLog.cs:188
msgid "All Folders"
-msgstr ""
+msgstr "כל התיקיות"
#: ../SparkleShare/SparkleSetup.cs:76
msgid ""
@@ -245,7 +246,7 @@ msgstr "שם מלא:"
#: ../SparkleShare/SparkleSetup.cs:98
msgid "Email:"
-msgstr "דוא\"ל"
+msgstr "דוא\"ל:"
#: ../SparkleShare/SparkleSetup.cs:108
msgid "Next"
@@ -271,20 +272,20 @@ msgstr "בטל"
#. Sync button
#: ../SparkleShare/SparkleSetup.cs:316
msgid "Add"
-msgstr ""
+msgstr "הוסף"
#: ../SparkleShare/SparkleSetup.cs:335
#, csharp-format
msgid "Adding project ‘{0}’…"
-msgstr ""
+msgstr "מוסיף פרויקט ‘{0}’…"
#: ../SparkleShare/SparkleSetup.cs:336
msgid "This may take a while."
-msgstr ""
+msgstr "זה עלול לקחת זמן מה"
#: ../SparkleShare/SparkleSetup.cs:337
msgid "Are you sure it’s not coffee o'clock?"
-msgstr ""
+msgstr "מה אתה אומר על קפה?"
#: ../SparkleShare/SparkleSetup.cs:341 ../SparkleShare/SparkleSetup.cs:457
#: ../SparkleShare/SparkleSetup.cs:556
@@ -293,24 +294,24 @@ msgstr "סיים"
#: ../SparkleShare/SparkleSetup.cs:374
msgid "Something went wrong"
-msgstr ""
+msgstr "משהו השתבש"
#: ../SparkleShare/SparkleSetup.cs:422
msgid "Try Again…"
-msgstr ""
+msgstr "נסה שוב..."
#: ../SparkleShare/SparkleSetup.cs:441
#, csharp-format
msgid "‘{0}’ has been successfully added"
-msgstr ""
+msgstr "‘{0}’ הוסף בהצלחה"
#: ../SparkleShare/SparkleSetup.cs:447
msgid "Project successfully added!"
-msgstr ""
+msgstr "פרויקט הוסף בהצלחה!"
#: ../SparkleShare/SparkleSetup.cs:448
msgid "Access the files from your SparkleShare folder."
-msgstr ""
+msgstr "גש לקבצים מתיקיית ספארקלשר"
#. A button that opens the synced folder
#: ../SparkleShare/SparkleSetup.cs:451
@@ -319,7 +320,7 @@ msgstr "פתח תקייה"
#: ../SparkleShare/SparkleSetup.cs:477
msgid "What's happening next?"
-msgstr ""
+msgstr "מה עכשיו?"
#: ../SparkleShare/SparkleSetup.cs:478
msgid ""
@@ -329,16 +330,16 @@ msgstr ""
#: ../SparkleShare/SparkleSetup.cs:481
msgid "Skip Tutorial"
-msgstr ""
+msgstr "דלג על הדרכה"
#: ../SparkleShare/SparkleSetup.cs:486 ../SparkleShare/SparkleSetup.cs:506
#: ../SparkleShare/SparkleSetup.cs:524
msgid "Continue"
-msgstr ""
+msgstr "המשך"
#: ../SparkleShare/SparkleSetup.cs:502
msgid "Sharing files with others"
-msgstr ""
+msgstr "שיתוף קבצים עם אחרים"
#: ../SparkleShare/SparkleSetup.cs:503
msgid ""
@@ -358,13 +359,13 @@ msgstr ""
#: ../SparkleShare/SparkleSetup.cs:538
msgid "Adding projects to SparkleShare"
-msgstr ""
+msgstr "הוספת פרויקטים לספארקלשר"
#: ../SparkleShare/SparkleSetup.cs:539
msgid ""
"Just click this button when you see it on the web, and the project will be "
"automatically added:"
-msgstr ""
+msgstr "לחץ כאן כשאתה רואה אותו ברשת, והפרויקט יתווסף אוטומטית:"
#: ../SparkleShare/SparkleSetup.cs:542
msgid ""
@@ -380,23 +381,23 @@ msgstr ""
#: ../SparkleShare/SparkleSetupWindow.cs:44
msgid "SparkleShare Setup"
-msgstr ""
+msgstr "התקנת ספארקלשר"
#: ../SparkleShare/SparkleStatusIcon.cs:228
msgid "No projects yet"
-msgstr ""
+msgstr "עדיין אין פרויקטים"
#: ../SparkleShare/SparkleStatusIcon.cs:262
msgid "Open Recent Events"
-msgstr ""
+msgstr "פתח אירועים אחרונים"
#: ../SparkleShare/SparkleStatusIcon.cs:282
msgid "Turn Notifications Off"
-msgstr ""
+msgstr "כבה הודעות"
#: ../SparkleShare/SparkleStatusIcon.cs:284
msgid "Turn Notifications On"
-msgstr ""
+msgstr "הפעל הודעות"
#. A menu item that quits the application
#: ../SparkleShare/SparkleStatusIcon.cs:311
diff --git a/po/nl.po b/po/nl.po
index 944e845e..6aa7dd2d 100755
--- a/po/nl.po
+++ b/po/nl.po
@@ -2,9 +2,11 @@
#
# Translators:
# , 2011.
+# , 2011.
# , 2011.
# Łukasz Jernaś , 2011.
# , 2011.
+# , 2011.
# smeagiel , 2011.
# , 2011.
msgid ""
@@ -12,8 +14,8 @@ msgstr ""
"Project-Id-Version: SparkleShare\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-10-30 15:50+0100\n"
-"PO-Revision-Date: 2011-10-30 14:50+0000\n"
-"Last-Translator: deejay1 \n"
+"PO-Revision-Date: 2011-11-06 22:01+0000\n"
+"Last-Translator: mmans \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -34,7 +36,7 @@ msgstr "Gratis hosting voor Git en Mercurial"
#: ../data/plugins/github.xml.in.h:2
msgid "Free public Git repositories with collaborator management"
-msgstr ""
+msgstr "Gratis publieke repositories met teambeheer."
#: ../data/plugins/github.xml.in.h:3
msgid "Github"
@@ -50,7 +52,7 @@ msgstr "Gitorious"
#: ../data/plugins/gitorious.xml.in.h:3
msgid "Open source infrastructure for hosting open source projects"
-msgstr "Opensource infratstructuur voor het hosten van opensource projecten."
+msgstr "Opensource infrastructuur voor het hosten van opensource projecten."
#: ../data/plugins/gnome.xml.in.h:1
msgid "/project"
@@ -66,11 +68,11 @@ msgstr "Het GNOME Project"
#: ../data/plugins/own-server.xml.in.h:1
msgid "/path/to/project"
-msgstr ""
+msgstr "/pad/naar/project"
#: ../data/plugins/own-server.xml.in.h:2
msgid "Everything under my control"
-msgstr ""
+msgstr "Alles onder mijn controle"
#: ../data/plugins/own-server.xml.in.h:3
msgid "On my own server"
@@ -114,7 +116,7 @@ msgstr "Verkrijg eerdere versie"
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:148
msgid "Make a copy of an earlier version in this folder"
-msgstr "Maak een kopie van een oudere versie in deze map"
+msgstr "Maak een kopie van een oudere versie naar deze map"
#: ../SparkleShare/Nautilus/sparkleshare-nautilus-extension.py.in:161
msgid "Select to get a copy of this version"
@@ -152,7 +154,7 @@ msgstr " onder bepaalde voorwaarden. Zie de GNU GPLv3 voor meer informatie."
#: ../SparkleShare/Program.cs:92
msgid "SparkleShare automatically syncs Git repositories in "
-msgstr "SparkleShare synchroniseerd automatisch Git repositories in "
+msgstr "SparkleShare synchroniseert automatisch Git repositories in "
#: ../SparkleShare/Program.cs:93
msgid "the ~/SparkleShare folder with their remote origins."
@@ -194,42 +196,42 @@ msgstr "Controleren op updates ..."
#: ../SparkleShare/SparkleControllerBase.cs:493
msgid "dddd, MMMM d, yyyy"
-msgstr ""
+msgstr "dddd, MMMM d, yyyy"
#: ../SparkleShare/SparkleControllerBase.cs:499
msgid "dddd, MMMM d"
-msgstr ""
+msgstr "dddd, MMMM d"
#: ../SparkleShare/SparkleControllerBase.cs:707
#, csharp-format
msgid "added ‘{0}’"
-msgstr ""
+msgstr "toegevoegd: ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:712
#, csharp-format
msgid "moved ‘{0}’"
-msgstr ""
+msgstr "verplaatst: ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:717
#, csharp-format
msgid "edited ‘{0}’"
-msgstr ""
+msgstr "bewerkt: ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:722
#, csharp-format
msgid "deleted ‘{0}’"
-msgstr ""
+msgstr "verwijderd: ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:731
#, csharp-format
msgid "and {0} more"
msgid_plural "and {0} more"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "en nog {0}"
+msgstr[1] "en nog {0}"
#: ../SparkleShare/SparkleControllerBase.cs:735
msgid "did something magical"
-msgstr ""
+msgstr "deed iets magisch"
#: ../SparkleShare/SparkleEventLog.cs:58
msgid "Recent Events"
@@ -270,7 +272,7 @@ msgstr "Adres"
#: ../SparkleShare/SparkleSetup.cs:295
msgid "Remote Path"
-msgstr ""
+msgstr "Extern pad"
#. Cancel button
#: ../SparkleShare/SparkleSetup.cs:309 ../SparkleShare/SparkleSetup.cs:345
@@ -306,7 +308,7 @@ msgstr "Er ging iets mis"
#: ../SparkleShare/SparkleSetup.cs:422
msgid "Try Again…"
-msgstr "Probeer opnieuw..."
+msgstr "Opnieuw proberen..."
#: ../SparkleShare/SparkleSetup.cs:441
#, csharp-format
@@ -315,11 +317,11 @@ msgstr "'{0}' is met succes toegevoegd"
#: ../SparkleShare/SparkleSetup.cs:447
msgid "Project successfully added!"
-msgstr "Project succesvol toegevoeg"
+msgstr "Project succesvol toegevoegd!"
#: ../SparkleShare/SparkleSetup.cs:448
msgid "Access the files from your SparkleShare folder."
-msgstr ""
+msgstr "Benader de gesynchroniseerde bestanden in je SparkleShare-map."
#. A button that opens the synced folder
#: ../SparkleShare/SparkleSetup.cs:451
@@ -328,13 +330,15 @@ msgstr "Map openen"
#: ../SparkleShare/SparkleSetup.cs:477
msgid "What's happening next?"
-msgstr ""
+msgstr "What gebeurt er nu?"
#: ../SparkleShare/SparkleSetup.cs:478
msgid ""
"SparkleShare creates a special folder in your personal folder that will keep"
" track of your projects."
msgstr ""
+"SparkleShare maakt een speciale map in je persoonlijke map die je projecten "
+"in de gaten houdt."
#: ../SparkleShare/SparkleSetup.cs:481
msgid "Skip Tutorial"
@@ -354,16 +358,20 @@ msgid ""
"All files added to your project folders are synced with the host "
"automatically, as well as with your collaborators."
msgstr ""
+"Alle bestanden die je aan je projectmappen toevoegt worden automatisch "
+"gesynchroniseerd met de host en je team."
#: ../SparkleShare/SparkleSetup.cs:520
msgid "The status icon is here to help"
-msgstr "Het status icoon bied hulp"
+msgstr "Het statusicoon bied hulp"
#: ../SparkleShare/SparkleSetup.cs:521
msgid ""
"It shows the syncing process status, and contains links to your projects and"
" the event log."
msgstr ""
+"Het toont de voortgang van het synchroniseerproces en bevat links naar je "
+"projecten en het logboek."
#: ../SparkleShare/SparkleSetup.cs:538
msgid "Adding projects to SparkleShare"
@@ -374,18 +382,22 @@ msgid ""
"Just click this button when you see it on the web, and the project will be "
"automatically added:"
msgstr ""
+"Klik op deze knop wanneer je deze tegenkomt op het web, en het project wordt"
+" automatisch toegevoegd."
#: ../SparkleShare/SparkleSetup.cs:542
msgid ""
"…or select ‘Add Hosted Project…’ from the status icon menu to add one"
" by hand."
msgstr ""
+"…of selecteer ‘Gehost project toevoegen…’ in het menu van het "
+"statusicoon om een project met de hand toe te voegen."
#. Opens the wizard to add a new remote folder
#: ../SparkleShare/SparkleSetup.cs:551
#: ../SparkleShare/SparkleStatusIcon.cs:238
msgid "Add Hosted Project…"
-msgstr ""
+msgstr "Gehost project toevoegen…"
#: ../SparkleShare/SparkleSetupWindow.cs:44
msgid "SparkleShare Setup"
@@ -397,7 +409,7 @@ msgstr "Nog geen projecten"
#: ../SparkleShare/SparkleStatusIcon.cs:262
msgid "Open Recent Events"
-msgstr "Open recente gebeurtenissen"
+msgstr "Logboek openen"
#: ../SparkleShare/SparkleStatusIcon.cs:282
msgid "Turn Notifications Off"
diff --git a/po/pl.po b/po/pl.po
index 2dc39c76..1dcdd540 100755
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: SparkleShare\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-10-30 15:50+0100\n"
-"PO-Revision-Date: 2011-10-30 14:50+0000\n"
+"POT-Creation-Date: 2011-11-12 13:18+0100\n"
+"PO-Revision-Date: 2011-11-12 12:34+0000\n"
"Last-Translator: deejay1 \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -26,7 +26,8 @@ msgstr "Bitbucket"
#: ../data/plugins/bitbucket.xml.in.h:3
msgid "Free code hosting for Git and Mercurial"
msgstr ""
-"Darmowe utrzymywanie kod dla projektów zarządzanych przez git oraz Mercurial"
+"Darmowe utrzymywanie kodu dla projektów zarządzanych przez git oraz "
+"Mercurial"
#: ../data/plugins/github.xml.in.h:2
msgid "Free public Git repositories with collaborator management"
@@ -47,8 +48,8 @@ msgstr "Gitorious"
#: ../data/plugins/gitorious.xml.in.h:3
msgid "Open source infrastructure for hosting open source projects"
msgstr ""
-"Infrakstruktura o otwartym kodzie źródłowym dla projektów dla społeczności "
-"otwartego kodu"
+"Infrastruktura o otwartym kodzie źródłowym dla projektów o otwartym kodzie "
+"źródłowym"
#: ../data/plugins/gnome.xml.in.h:1
msgid "/project"
@@ -74,26 +75,26 @@ msgstr "Wszystko pod własną kontrolą"
msgid "On my own server"
msgstr "Na własnym serwerze"
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:70
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:88
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:84
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:102
#: ../SparkleShare/SparkleSetup.cs:75 ../SparkleShare/SparkleStatusIcon.cs:75
#: ../SparkleShare/SparkleStatusIcon.cs:89
msgid "Welcome to SparkleShare!"
msgstr "Witamy w programie SparkleShare!"
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:72
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:90
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:86
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:104
#: ../SparkleShare/SparkleStatusIcon.cs:77
#: ../SparkleShare/SparkleStatusIcon.cs:91
msgid "Up to date"
msgstr "Wszystko jest aktualne"
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:99
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:113
#: ../SparkleShare/SparkleStatusIcon.cs:106
msgid "Syncing…"
msgstr "Synchronizowanie…"
-#: ../SparkleShare/Mac/SparkleStatusIcon.cs:109
+#: ../SparkleShare/Mac/SparkleStatusIcon.cs:123
#: ../SparkleShare/SparkleStatusIcon.cs:116
msgid "Not everything is synced"
msgstr "Nie wszystko zostało zsynchronizowane"
@@ -141,7 +142,7 @@ msgstr "Niniejszy program dostarczany jest BEZ JAKIEJKOLWIEK GWARANCJI."
#: ../SparkleShare/Program.cs:89
msgid "This is free software, and you are welcome to redistribute it "
msgstr ""
-"Niniejszy program jest wolnym oprogramowanie, można go rozprowadzać dalej "
+"Niniejszy program jest wolnym oprogramowaniem, można go rozprowadzać dalej "
"pod pewnymi warunkami."
#: ../SparkleShare/Program.cs:90
@@ -153,7 +154,7 @@ msgstr ""
#: ../SparkleShare/Program.cs:92
msgid "SparkleShare automatically syncs Git repositories in "
msgstr ""
-"Program SparkleShare automatycznie synchronizuje reozytoria Git znajdujące "
+"Program SparkleShare automatycznie synchronizuje repozytoria Git znajdujące "
"się"
#: ../SparkleShare/Program.cs:93
@@ -195,35 +196,35 @@ msgstr "Korzystasz z najnowszej wersji."
msgid "Checking for updates..."
msgstr "Wyszukiwanie aktualizacji"
-#: ../SparkleShare/SparkleControllerBase.cs:493
+#: ../SparkleShare/SparkleControllerBase.cs:494
msgid "dddd, MMMM d, yyyy"
-msgstr ""
+msgstr "dddd, d MMMM yyyy"
-#: ../SparkleShare/SparkleControllerBase.cs:499
+#: ../SparkleShare/SparkleControllerBase.cs:500
msgid "dddd, MMMM d"
-msgstr ""
+msgstr "dddd, d MMMM"
-#: ../SparkleShare/SparkleControllerBase.cs:707
+#: ../SparkleShare/SparkleControllerBase.cs:708
#, csharp-format
msgid "added ‘{0}’"
msgstr "dodano \"{0}\""
-#: ../SparkleShare/SparkleControllerBase.cs:712
+#: ../SparkleShare/SparkleControllerBase.cs:713
#, csharp-format
msgid "moved ‘{0}’"
msgstr "przesunięto \"{0}\""
-#: ../SparkleShare/SparkleControllerBase.cs:717
+#: ../SparkleShare/SparkleControllerBase.cs:718
#, csharp-format
msgid "edited ‘{0}’"
msgstr "edytowano \"{0}\""
-#: ../SparkleShare/SparkleControllerBase.cs:722
+#: ../SparkleShare/SparkleControllerBase.cs:723
#, csharp-format
msgid "deleted ‘{0}’"
msgstr "usunięto \"{0}\""
-#: ../SparkleShare/SparkleControllerBase.cs:731
+#: ../SparkleShare/SparkleControllerBase.cs:732
#, csharp-format
msgid "and {0} more"
msgid_plural "and {0} more"
@@ -231,7 +232,7 @@ msgstr[0] "oraz {0} więcej"
msgstr[1] "oraz {0} więcej"
msgstr[2] "oraz {0} więcej"
-#: ../SparkleShare/SparkleControllerBase.cs:735
+#: ../SparkleShare/SparkleControllerBase.cs:736
msgid "did something magical"
msgstr "stało się coś magicznego"
@@ -289,7 +290,7 @@ msgstr "Dodaj"
#: ../SparkleShare/SparkleSetup.cs:335
#, csharp-format
msgid "Adding project ‘{0}’…"
-msgstr "Dodawanie projektu „{0}…"
+msgstr "Dodawanie projektu \"{0}\"…"
#: ../SparkleShare/SparkleSetup.cs:336
msgid "This may take a while."
@@ -323,7 +324,7 @@ msgstr "Projekt został dodany pomyślnie."
#: ../SparkleShare/SparkleSetup.cs:448
msgid "Access the files from your SparkleShare folder."
-msgstr ""
+msgstr "Dostęp do plików możliwy jest z katalogu SparkleShare."
#. A button that opens the synced folder
#: ../SparkleShare/SparkleSetup.cs:451
@@ -339,7 +340,7 @@ msgid ""
"SparkleShare creates a special folder in your personal folder that will keep"
" track of your projects."
msgstr ""
-"Program SparkleShare utwrzy specjalny katalog w katalogu domowym, który "
+"Program SparkleShare utworzy specjalny katalog w katalogu domowym, który "
"będzie zajmował się projektami."
#: ../SparkleShare/SparkleSetup.cs:481
@@ -372,7 +373,7 @@ msgid ""
"It shows the syncing process status, and contains links to your projects and"
" the event log."
msgstr ""
-"Wyświetla stan synchronizacji, jak i zawiera odnośniki do projektów i "
+"Wyświetla stan synchronizacji, jak i zawiera odnośniki do projektów oraz "
"dziennika zdarzeń."
#: ../SparkleShare/SparkleSetup.cs:538
@@ -392,6 +393,8 @@ msgid ""
"…or select ‘Add Hosted Project…’ from the status icon menu to add one"
" by hand."
msgstr ""
+"…lub można wybrać opcję \"Dodaj utrzymywany projekt…\" z menu "
+"powiadamiania, aby dodać projekt ręcznie."
#. Opens the wizard to add a new remote folder
#: ../SparkleShare/SparkleSetup.cs:551
diff --git a/po/pt_BR.po b/po/pt_BR.po
index f2ef4610..c461ed7b 100755
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -9,8 +9,8 @@ msgstr ""
"Project-Id-Version: SparkleShare\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-10-30 15:50+0100\n"
-"PO-Revision-Date: 2011-10-30 14:50+0000\n"
-"Last-Translator: deejay1 \n"
+"PO-Revision-Date: 2011-11-08 12:53+0000\n"
+"Last-Translator: eduardosilva \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -19,7 +19,7 @@ msgstr ""
#: ../data/plugins/bitbucket.xml.in.h:1 ../data/plugins/github.xml.in.h:1
msgid "/username/project"
-msgstr ""
+msgstr "/usuário/projeto"
#: ../data/plugins/bitbucket.xml.in.h:2
msgid "Bitbucket"
@@ -35,11 +35,11 @@ msgstr ""
#: ../data/plugins/github.xml.in.h:3
msgid "Github"
-msgstr ""
+msgstr "Github"
#: ../data/plugins/gitorious.xml.in.h:1
msgid "/project/repository"
-msgstr ""
+msgstr "/projeto/repositório"
#: ../data/plugins/gitorious.xml.in.h:2
msgid "Gitorious"
@@ -51,7 +51,7 @@ msgstr ""
#: ../data/plugins/gnome.xml.in.h:1
msgid "/project"
-msgstr ""
+msgstr "/projeto"
#: ../data/plugins/gnome.xml.in.h:2
msgid "A free and easy interface for your computer"
@@ -63,15 +63,15 @@ msgstr "O projeto GNOME"
#: ../data/plugins/own-server.xml.in.h:1
msgid "/path/to/project"
-msgstr ""
+msgstr "/caminho/para/projeto"
#: ../data/plugins/own-server.xml.in.h:2
msgid "Everything under my control"
-msgstr ""
+msgstr "Tudo sob meu controle"
#: ../data/plugins/own-server.xml.in.h:3
msgid "On my own server"
-msgstr ""
+msgstr "Em meu próprio servidor"
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:70
#: ../SparkleShare/Mac/SparkleStatusIcon.cs:88
@@ -199,22 +199,22 @@ msgstr ""
#: ../SparkleShare/SparkleControllerBase.cs:707
#, csharp-format
msgid "added ‘{0}’"
-msgstr ""
+msgstr "adicionado \"{0} '"
#: ../SparkleShare/SparkleControllerBase.cs:712
#, csharp-format
msgid "moved ‘{0}’"
-msgstr ""
+msgstr "movido '{0}'"
#: ../SparkleShare/SparkleControllerBase.cs:717
#, csharp-format
msgid "edited ‘{0}’"
-msgstr ""
+msgstr "editado '{0}'"
#: ../SparkleShare/SparkleControllerBase.cs:722
#, csharp-format
msgid "deleted ‘{0}’"
-msgstr ""
+msgstr "removido '{0}'"
#: ../SparkleShare/SparkleControllerBase.cs:731
#, csharp-format
@@ -225,7 +225,7 @@ msgstr[1] ""
#: ../SparkleShare/SparkleControllerBase.cs:735
msgid "did something magical"
-msgstr ""
+msgstr "fez algo mágico"
#: ../SparkleShare/SparkleEventLog.cs:58
msgid "Recent Events"
@@ -258,15 +258,15 @@ msgstr "Próximo"
#: ../SparkleShare/SparkleSetup.cs:129
msgid "Where's your project hosted?"
-msgstr ""
+msgstr "Onde está o seu projeto está hospedado?"
#: ../SparkleShare/SparkleSetup.cs:275
msgid "Address"
-msgstr ""
+msgstr "Endereço"
#: ../SparkleShare/SparkleSetup.cs:295
msgid "Remote Path"
-msgstr ""
+msgstr "Caminho remoto"
#. Cancel button
#: ../SparkleShare/SparkleSetup.cs:309 ../SparkleShare/SparkleSetup.cs:345
@@ -276,12 +276,12 @@ msgstr "Cancelar"
#. Sync button
#: ../SparkleShare/SparkleSetup.cs:316
msgid "Add"
-msgstr ""
+msgstr "Adicionar"
#: ../SparkleShare/SparkleSetup.cs:335
#, csharp-format
msgid "Adding project ‘{0}’…"
-msgstr ""
+msgstr "Adicionando projeto '{0}' ..."
#: ../SparkleShare/SparkleSetup.cs:336
msgid "This may take a while."
@@ -302,7 +302,7 @@ msgstr "Algum problema ocorreu"
#: ../SparkleShare/SparkleSetup.cs:422
msgid "Try Again…"
-msgstr ""
+msgstr "Tente novamente..."
#: ../SparkleShare/SparkleSetup.cs:441
#, csharp-format
@@ -311,11 +311,11 @@ msgstr "'{0}' foi incluída com sucesso"
#: ../SparkleShare/SparkleSetup.cs:447
msgid "Project successfully added!"
-msgstr ""
+msgstr "Projeto adicionado com sucesso!"
#: ../SparkleShare/SparkleSetup.cs:448
msgid "Access the files from your SparkleShare folder."
-msgstr ""
+msgstr "Acessar os arquivos da pasta SparkleShare."
#. A button that opens the synced folder
#: ../SparkleShare/SparkleSetup.cs:451
@@ -324,64 +324,74 @@ msgstr "Abrir Pasta"
#: ../SparkleShare/SparkleSetup.cs:477
msgid "What's happening next?"
-msgstr ""
+msgstr "O que está acontecendo em seguida?"
#: ../SparkleShare/SparkleSetup.cs:478
msgid ""
"SparkleShare creates a special folder in your personal folder that will keep"
" track of your projects."
msgstr ""
+"SparkleShare cria uma pasta especial em sua pasta pessoal que vai manter o "
+"controle de seus projetos."
#: ../SparkleShare/SparkleSetup.cs:481
msgid "Skip Tutorial"
-msgstr ""
+msgstr "Pular Tutorial"
#: ../SparkleShare/SparkleSetup.cs:486 ../SparkleShare/SparkleSetup.cs:506
#: ../SparkleShare/SparkleSetup.cs:524
msgid "Continue"
-msgstr ""
+msgstr "Continuar"
#: ../SparkleShare/SparkleSetup.cs:502
msgid "Sharing files with others"
-msgstr ""
+msgstr "Compartilhar arquivos com outras pessoas"
#: ../SparkleShare/SparkleSetup.cs:503
msgid ""
"All files added to your project folders are synced with the host "
"automatically, as well as with your collaborators."
msgstr ""
+"Todos os arquivos adicionados a pasta do seu projeto são sincronizados "
+"automaticamente com o servidor, bem como com seus colaboradores."
#: ../SparkleShare/SparkleSetup.cs:520
msgid "The status icon is here to help"
-msgstr ""
+msgstr "O ícone de status está aqui para ajudar"
#: ../SparkleShare/SparkleSetup.cs:521
msgid ""
"It shows the syncing process status, and contains links to your projects and"
" the event log."
msgstr ""
+"Mostra o status do processo de sincronização, e contém links para seus "
+"projetos e log de eventos."
#: ../SparkleShare/SparkleSetup.cs:538
msgid "Adding projects to SparkleShare"
-msgstr ""
+msgstr "Adicionando projetos ao SparkleShare"
#: ../SparkleShare/SparkleSetup.cs:539
msgid ""
"Just click this button when you see it on the web, and the project will be "
"automatically added:"
msgstr ""
+"Basta clicar neste botão quando você vê-la na web, e o projeto será "
+"automaticamente adicionado automaticamente:"
#: ../SparkleShare/SparkleSetup.cs:542
msgid ""
"…or select ‘Add Hosted Project…’ from the status icon menu to add one"
" by hand."
msgstr ""
+"... Ou selecione 'Adicionar Projeto Hosted ...' no menu do ícone de "
+"status para adicionar manualmente."
#. Opens the wizard to add a new remote folder
#: ../SparkleShare/SparkleSetup.cs:551
#: ../SparkleShare/SparkleStatusIcon.cs:238
msgid "Add Hosted Project…"
-msgstr ""
+msgstr "Adicionar Projeto Hospedado..."
#: ../SparkleShare/SparkleSetupWindow.cs:44
msgid "SparkleShare Setup"
@@ -389,11 +399,11 @@ msgstr "Configurações do SparkleShare"
#: ../SparkleShare/SparkleStatusIcon.cs:228
msgid "No projects yet"
-msgstr ""
+msgstr "Nenhum projeto ainda"
#: ../SparkleShare/SparkleStatusIcon.cs:262
msgid "Open Recent Events"
-msgstr ""
+msgstr "Abrir Eventos Recentes"
#: ../SparkleShare/SparkleStatusIcon.cs:282
msgid "Turn Notifications Off"
diff --git a/po/ru.po b/po/ru.po
index 2f2163c8..d4aeada1 100755
--- a/po/ru.po
+++ b/po/ru.po
@@ -4,14 +4,15 @@
# Dmitry Golubkov , 2011.
# , 2011.
# Just a baka , 2011.
+# Misha Shnurapet , 2011.
# Oleg Shmelyov , 2011.
msgid ""
msgstr ""
"Project-Id-Version: SparkleShare\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-10-30 15:50+0100\n"
-"PO-Revision-Date: 2011-10-30 14:50+0000\n"
-"Last-Translator: deejay1 \n"
+"PO-Revision-Date: 2011-11-02 11:31+0000\n"
+"Last-Translator: shnurapet \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -192,43 +193,43 @@ msgstr "Проверка обновлений…"
#: ../SparkleShare/SparkleControllerBase.cs:493
msgid "dddd, MMMM d, yyyy"
-msgstr ""
+msgstr "дддд, ММММ д, гггг"
#: ../SparkleShare/SparkleControllerBase.cs:499
msgid "dddd, MMMM d"
-msgstr ""
+msgstr "дддд, ММММ д"
#: ../SparkleShare/SparkleControllerBase.cs:707
#, csharp-format
msgid "added ‘{0}’"
-msgstr ""
+msgstr "«{0}» добавлено"
#: ../SparkleShare/SparkleControllerBase.cs:712
#, csharp-format
msgid "moved ‘{0}’"
-msgstr ""
+msgstr "«{0}» перемещено"
#: ../SparkleShare/SparkleControllerBase.cs:717
#, csharp-format
msgid "edited ‘{0}’"
-msgstr ""
+msgstr "«{0}» изменено"
#: ../SparkleShare/SparkleControllerBase.cs:722
#, csharp-format
msgid "deleted ‘{0}’"
-msgstr ""
+msgstr "«{0}» удалено"
#: ../SparkleShare/SparkleControllerBase.cs:731
#, csharp-format
msgid "and {0} more"
msgid_plural "and {0} more"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
+msgstr[0] "и ещё над {0}"
+msgstr[1] "и ещё над {0}"
+msgstr[2] "и ещё над {0}"
#: ../SparkleShare/SparkleControllerBase.cs:735
msgid "did something magical"
-msgstr ""
+msgstr "совершено какое-то колдовство"
#: ../SparkleShare/SparkleEventLog.cs:58
msgid "Recent Events"
@@ -318,7 +319,7 @@ msgstr "Проект успешно добавлен!"
#: ../SparkleShare/SparkleSetup.cs:448
msgid "Access the files from your SparkleShare folder."
-msgstr ""
+msgstr "Получить доступ к файлам из своей папки SparkleShare."
#. A button that opens the synced folder
#: ../SparkleShare/SparkleSetup.cs:451
@@ -379,18 +380,22 @@ msgid ""
"Just click this button when you see it on the web, and the project will be "
"automatically added:"
msgstr ""
+"Просто нажмите эту кнопку, когда увидите её в сети, и проект будет добавлен "
+"автоматически:"
#: ../SparkleShare/SparkleSetup.cs:542
msgid ""
"…or select ‘Add Hosted Project…’ from the status icon menu to add one"
" by hand."
msgstr ""
+"...или выберите «Добавить ведомый проект...» через меню в области "
+"уведомлений, чтобы добавить проект вручную."
#. Opens the wizard to add a new remote folder
#: ../SparkleShare/SparkleSetup.cs:551
#: ../SparkleShare/SparkleStatusIcon.cs:238
msgid "Add Hosted Project…"
-msgstr ""
+msgstr "Добавить ведомый проект..."
#: ../SparkleShare/SparkleSetupWindow.cs:44
msgid "SparkleShare Setup"
diff --git a/po/sv.po b/po/sv.po
index 9a66158c..178d5c2c 100755
--- a/po/sv.po
+++ b/po/sv.po
@@ -13,8 +13,8 @@ msgstr ""
"Project-Id-Version: SparkleShare\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-10-30 15:50+0100\n"
-"PO-Revision-Date: 2011-10-30 14:50+0000\n"
-"Last-Translator: deejay1 \n"
+"PO-Revision-Date: 2011-11-05 22:22+0000\n"
+"Last-Translator: shlstrm \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -202,33 +202,33 @@ msgstr ""
#: ../SparkleShare/SparkleControllerBase.cs:707
#, csharp-format
msgid "added ‘{0}’"
-msgstr ""
+msgstr "lade till ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:712
#, csharp-format
msgid "moved ‘{0}’"
-msgstr ""
+msgstr "flyttade ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:717
#, csharp-format
msgid "edited ‘{0}’"
-msgstr ""
+msgstr "ändrade ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:722
#, csharp-format
msgid "deleted ‘{0}’"
-msgstr ""
+msgstr "raderade ‘{0}’"
#: ../SparkleShare/SparkleControllerBase.cs:731
#, csharp-format
msgid "and {0} more"
msgid_plural "and {0} more"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "och {0} till"
+msgstr[1] "och {0} fler"
#: ../SparkleShare/SparkleControllerBase.cs:735
msgid "did something magical"
-msgstr ""
+msgstr "gjorde någonting magiskt"
#: ../SparkleShare/SparkleEventLog.cs:58
msgid "Recent Events"
@@ -387,6 +387,8 @@ msgid ""
"…or select ‘Add Hosted Project…’ from the status icon menu to add one"
" by hand."
msgstr ""
+"...eller välj ‘Lägg till Projekt…’ i statusmenyn för att lägga till "
+"ett projekt manuellt."
#. Opens the wizard to add a new remote folder
#: ../SparkleShare/SparkleSetup.cs:551