Merge remote-tracking branch 'upstream/master' into windows

This commit is contained in:
wimh 2011-11-14 20:50:27 +01:00
commit 2fa6c72fd8
34 changed files with 675 additions and 399 deletions

1
.gitignore vendored
View file

@ -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

21
NEWS
View file

@ -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

9
README
View file

@ -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

View file

@ -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;
}
}

View file

@ -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 ("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + n +
"<sparkleshare>" + n +
" <user>" + n +
" <name>" + user_name + "</name>" + n +
" <email>Unknown</email>" + n +
" </user>" + n +
"</sparkleshare>");
writer.Close ();
string n = Environment.NewLine;
File.WriteAllText (FullPath,
"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>" + n +
"<sparkleshare>" + n +
" <user>" + n +
" <name>" + user_name + "</name>" + n +
" <email>Unknown</email>" + n +
" </user>" + n +
"</sparkleshare>");
SparkleHelpers.DebugInfo ("Config", "Created \"" + FullPath + "\"");
}
@ -276,10 +274,16 @@ namespace SparkleLib {
List<string> hosts = new List<string> ();
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;

View file

@ -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<string> channels = new List<string> ();
protected List<SparkleAnnouncement> queue_up = new List<SparkleAnnouncement> ();
protected List<SparkleAnnouncement> queue_down = new List<SparkleAnnouncement> ();
protected List<string> channels = new List<string> ();
protected Dictionary<string,List<SparkleAnnouncement>> recent_announcements = new Dictionary<string, List<SparkleAnnouncement>> ();
protected int max_recent_announcements = 10;
protected Dictionary<string, SparkleAnnouncement> queue_up = new Dictionary<string, SparkleAnnouncement> ();
protected Dictionary<string,SparkleAnnouncement> queue_down = new Dictionary<string, SparkleAnnouncement> ();
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<string, SparkleAnnouncement> 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<SparkleAnnouncement> GetRecentAnnouncements (string folder_identifier)
{
if (!this.recent_announcements.ContainsKey (folder_identifier))
this.recent_announcements [folder_identifier] = new List<SparkleAnnouncement> ();
return (List<SparkleAnnouncement>) this.recent_announcements [folder_identifier];
}
private void AddRecentAnnouncement (SparkleAnnouncement announcement)
{
List<SparkleAnnouncement> 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 {
}
}
}

View file

@ -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", "");
}
}
}

View file

@ -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 <double> sizebuffer = new List<double> ();
private List<double> sizebuffer = new List<double> ();
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<SparkleChangeSet> 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<SparkleChangeSet> 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 ();
}
}

View file

@ -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

View file

@ -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;
}

View file

@ -66,6 +66,7 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\bin\SparkleLib.dll</HintPath>
</Reference>
<Reference Include="System.Net" />
</ItemGroup>
<ItemGroup>
<Compile Include="AppDelegate.cs">

View file

@ -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 {

View file

@ -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

View file

@ -1,3 +1,4 @@
#!/usr/bin/python
# SparkleShare, an instant update workflow to Git.
# Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
#

View file

@ -1,3 +1,4 @@
#!/usr/bin/python
# SparkleShare, an instant update workflow to Git.
# Copyright (C) 2010 Hylke Bons <hylkebons@gmail.com>
#
@ -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

View file

@ -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 = "<span font_size='small' fgcolor='white'>" +
"version " + Controller.RunningVersion +

View file

@ -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 ();

View file

@ -83,6 +83,7 @@ namespace SparkleShare {
public abstract string PluginsPath { get; }
private SparkleFetcherBase fetcher;
private List<string> failed_avatars = new List<string> ();
// 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);
}
}
}
}

View file

@ -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 its 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;

View file

@ -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")
])

View file

@ -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)
"

29
data/git-hooks/post-update Executable file
View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,3 +1,4 @@
MacCore/src/Options.cs
SparkleShare/Nautilus/sparkleshare-nautilus-extension.py
SparkleShare/Nautilus/sparkleshare-nautilus3-extension.py
SparkleLib/SparkleOptions.cs

View file

@ -6,18 +6,20 @@
# Heffer <felix@fetzig.org>, 2011.
# Jan-Christoph Borchardt <JanCBorchardt@fsfe.org>, 2011.
# kabum <uu.kabum@gmail.com>, 2011.
# <killerjoe@gmx.de>, 2011.
# kxnop <m_leinmueller@hotmail.com>, 2011.
# Łukasz Jernaś <deejay1@srem.org>, 2011.
# <mm@imsoftware.de>, 2011.
# Sascha <S.Lewandowski@abiwillich.de>, 2011.
# <urs.obernolte@googlemail.com>, 2011.
# <yujiang.wang@ymail.com>, 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 <deejay1@srem.org>\n"
"POT-Creation-Date: 2011-11-12 18:42+0100\n"
"PO-Revision-Date: 2011-11-14 07:55+0000\n"
"Last-Translator: iwsnipy <S.Lewandowski@abiwillich.de>\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"

View file

@ -1,6 +1,7 @@
# This file is distributed under the same license as the SparkleShare package.
#
# Translators:
# Claudio Rodrigo Pereyra Diaz <elsupergomez@gmail.com>, 2011.
# <jamelrom@gmail.com>, 2011.
# jamelrom <jamelrom@gmail.com>, 2011.
# <luiso.perez@gmail.com>, 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 <deejay1@srem.org>\n"
"PO-Revision-Date: 2011-11-02 12:13+0000\n"
"Last-Translator: elsupergomez <elsupergomez@gmail.com>\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 <b>Add Hosted Project…</b> from the status icon menu to add one"
" by hand."
msgstr ""
"... o seleccione <b>\"Agregar proyecto alojado ... \"</b> en el menú del "
"icono de estado para agregar uno manualmente."
#. Opens the wizard to add a new remote folder
#: ../SparkleShare/SparkleSetup.cs:551

View file

@ -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 <deejay1@srem.org>\n"
"PO-Revision-Date: 2011-11-04 22:18+0000\n"
"Last-Translator: chezyann <chezyann@gmail.com>\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"

View file

@ -1,13 +1,14 @@
# This file is distributed under the same license as the SparkleShare package.
#
# Translators:
# <ophir.setter+transifex@gmail.com>, 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 <deejay1@srem.org>\n"
"PO-Revision-Date: 2011-11-01 20:06+0000\n"
"Last-Translator: ophir <ophir.setter+transifex@gmail.com>\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 its 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

View file

@ -2,9 +2,11 @@
#
# Translators:
# <benjamincottyn@gmail.com>, 2011.
# <hylkebons@gmail.com>, 2011.
# <inxidious@gmail.com>, 2011.
# Łukasz Jernaś <deejay1@srem.org>, 2011.
# <m.manshanden@gmail.com>, 2011.
# <mr.mmans@gmail.com>, 2011.
# smeagiel <michielaiso@hotmail.com>, 2011.
# <sven.koehler@student.hpi.uni-potsdam.de>, 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 <deejay1@srem.org>\n"
"PO-Revision-Date: 2011-11-06 22:01+0000\n"
"Last-Translator: mmans <mr.mmans@gmail.com>\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 <b>Add Hosted Project…</b> from the status icon menu to add one"
" by hand."
msgstr ""
"…of selecteer <b>Gehost project toevoegen…</b> 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"

View file

@ -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 <deejay1@srem.org>\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 <b>Add Hosted Project…</b> from the status icon menu to add one"
" by hand."
msgstr ""
"…lub można wybrać opcję <b>\"Dodaj utrzymywany projekt…\"</b> z menu "
"powiadamiania, aby dodać projekt ręcznie."
#. Opens the wizard to add a new remote folder
#: ../SparkleShare/SparkleSetup.cs:551

View file

@ -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 <deejay1@srem.org>\n"
"PO-Revision-Date: 2011-11-08 12:53+0000\n"
"Last-Translator: eduardosilva <eduardo@eduardosilva.eti.br>\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 <b>Add Hosted Project…</b> from the status icon menu to add one"
" by hand."
msgstr ""
"... Ou selecione <b>'Adicionar Projeto Hosted ...'</b> 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"

View file

@ -4,14 +4,15 @@
# Dmitry Golubkov <master@hsdesign.ru>, 2011.
# <faland@gmail.com>, 2011.
# Just a baka <justabaka@gmail.com>, 2011.
# Misha Shnurapet <shnurapet@fedoraproject.org>, 2011.
# Oleg Shmelyov <shmelyov.o@gmail.com>, 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 <deejay1@srem.org>\n"
"PO-Revision-Date: 2011-11-02 11:31+0000\n"
"Last-Translator: shnurapet <shnurapet@fedoraproject.org>\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 <b>Add Hosted Project…</b> from the status icon menu to add one"
" by hand."
msgstr ""
"...или выберите <b>«Добавить ведомый проект...»</b> через меню в области "
"уведомлений, чтобы добавить проект вручную."
#. 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"

View file

@ -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 <deejay1@srem.org>\n"
"PO-Revision-Date: 2011-11-05 22:22+0000\n"
"Last-Translator: shlstrm <shlstrm@sdf.org>\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 <b>Add Hosted Project…</b> from the status icon menu to add one"
" by hand."
msgstr ""
"...eller välj <b>Lägg till Projekt…</b> i statusmenyn för att lägga till "
"ett projekt manuellt."
#. Opens the wizard to add a new remote folder
#: ../SparkleShare/SparkleSetup.cs:551