@@ -54,32 +54,29 @@ namespace Duplicati.GUI.TrayIcon
|
||||
{
|
||||
set
|
||||
{
|
||||
m_appIndicator.IconName = GetTrayIconFilename(value);
|
||||
|
||||
switch(value)
|
||||
{
|
||||
case TrayIcons.Paused:
|
||||
m_appIndicator.IconName = "normal-pause";
|
||||
m_appIndicator.IconDesc = "Paused";
|
||||
break;
|
||||
case TrayIcons.Running:
|
||||
m_appIndicator.IconName = "normal-running";
|
||||
m_appIndicator.IconDesc = "Running";
|
||||
break;
|
||||
case TrayIcons.IdleError:
|
||||
m_appIndicator.IconName = "normal-error";
|
||||
m_appIndicator.IconDesc = "Error";
|
||||
break;
|
||||
case TrayIcons.RunningError:
|
||||
m_appIndicator.IconName = "normal-running";
|
||||
break;
|
||||
case TrayIcons.PausedError:
|
||||
m_appIndicator.IconName = "normal-pause";
|
||||
m_appIndicator.IconDesc = "Paused";
|
||||
break;
|
||||
case TrayIcons.Idle:
|
||||
default:
|
||||
m_appIndicator.IconName = "normal";
|
||||
m_appIndicator.IconDesc = "Ready";
|
||||
break;
|
||||
case TrayIcons.Paused:
|
||||
m_appIndicator.IconDesc = "Paused";
|
||||
break;
|
||||
case TrayIcons.Running:
|
||||
m_appIndicator.IconDesc = "Running";
|
||||
break;
|
||||
case TrayIcons.IdleError:
|
||||
m_appIndicator.IconDesc = "Error";
|
||||
break;
|
||||
case TrayIcons.RunningError:
|
||||
m_appIndicator.IconDesc = "Running";
|
||||
break;
|
||||
case TrayIcons.PausedError:
|
||||
m_appIndicator.IconDesc = "Paused";
|
||||
break;
|
||||
case TrayIcons.Idle:
|
||||
default:
|
||||
m_appIndicator.IconDesc = "Ready";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -372,5 +372,29 @@
|
||||
<Link>OSXTrayHost\rumps.py</Link>
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="SVGIcons\dark\context_menu_open.svg">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="SVGIcons\dark\context_menu_pause.svg">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="SVGIcons\dark\context_menu_quit.svg">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="SVGIcons\dark\context_menu_resume.svg">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="SVGIcons\light\context_menu_open.svg">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="SVGIcons\light\context_menu_pause.svg">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="SVGIcons\light\context_menu_quit.svg">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="SVGIcons\light\context_menu_resume.svg">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -24,11 +24,16 @@ namespace Duplicati.GUI.TrayIcon
|
||||
{
|
||||
public class GtkRunner : TrayIconBase
|
||||
{
|
||||
private static string m_svgfolder;
|
||||
|
||||
/// <summary>
|
||||
/// Static constructor that ensures the Gtk environment is initialized
|
||||
/// </summary>
|
||||
static GtkRunner()
|
||||
{
|
||||
m_svgfolder = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "SVGIcons");
|
||||
m_svgfolder = System.IO.Path.Combine(m_svgfolder, "dark");
|
||||
|
||||
Gtk.Application.Init();
|
||||
}
|
||||
|
||||
@@ -45,34 +50,36 @@ namespace Duplicati.GUI.TrayIcon
|
||||
private static Dictionary<MenuIcons, Gtk.Image> _icons = new Dictionary<MenuIcons, Gtk.Image>();
|
||||
|
||||
public MenuItem MenuItem { get { return m_item; } }
|
||||
|
||||
private string GetFilenameForIcon(MenuIcons icon)
|
||||
{
|
||||
switch (icon)
|
||||
{
|
||||
case MenuIcons.Pause:
|
||||
return "context_menu_pause";
|
||||
case MenuIcons.Quit:
|
||||
return "context_menu_quit";
|
||||
case MenuIcons.Resume:
|
||||
return "context_menu_resume";
|
||||
case MenuIcons.Status:
|
||||
return "context_menu_open";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private Gtk.Image GetIcon(MenuIcons icon)
|
||||
{
|
||||
if (Duplicati.Library.Utility.Utility.IsClientOSX)
|
||||
return null;
|
||||
|
||||
if (!_icons.ContainsKey(icon))
|
||||
{
|
||||
switch(icon)
|
||||
_icons[icon] = null;
|
||||
|
||||
var filename = GetFilenameForIcon(icon);
|
||||
if (filename != null)
|
||||
{
|
||||
case MenuIcons.None:
|
||||
_icons[icon] = null;
|
||||
break;
|
||||
case MenuIcons.Pause:
|
||||
_icons[icon] = ImageToGtk(ImageLoader.Pause);
|
||||
break;
|
||||
case MenuIcons.Quit:
|
||||
_icons[icon] = ImageToGtk(ImageLoader.CloseMenuIcon);
|
||||
break;
|
||||
case MenuIcons.Resume:
|
||||
_icons[icon] = ImageToGtk(ImageLoader.Play);
|
||||
break;
|
||||
case MenuIcons.Status:
|
||||
_icons[icon] = ImageToGtk(ImageLoader.StatusMenuIcon);
|
||||
break;
|
||||
default:
|
||||
_icons[icon] = null;
|
||||
break;
|
||||
filename = System.IO.Path.Combine(m_svgfolder, System.IO.Path.ChangeExtension(filename, ".svg"));
|
||||
if (System.IO.File.Exists(filename))
|
||||
_icons[icon] = new Gtk.Image(filename);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,9 +96,9 @@ namespace Duplicati.GUI.TrayIcon
|
||||
if (!Duplicati.Library.Utility.Utility.IsClientOSX)
|
||||
if (icon != MenuIcons.None) {
|
||||
((ImageMenuItem)m_item).Image = GetIcon(icon);
|
||||
|
||||
//TODO: Not sure we should do this, it overrides policy?
|
||||
m_item.ExposeEvent += DrawImageMenuItemImage;
|
||||
|
||||
// On some (older versions) of GDK, this hack is required
|
||||
//m_item.ExposeEvent += DrawImageMenuItemImage;
|
||||
}
|
||||
|
||||
if (subitems != null && subitems.Count > 0)
|
||||
@@ -116,6 +123,7 @@ namespace Duplicati.GUI.TrayIcon
|
||||
m_callback();
|
||||
}
|
||||
|
||||
/*
|
||||
/// <summary> Draw the image to the image menu item. Taken from: http://mono.1490590.n4.nabble.com/ImageMenuItem-does-not-display-the-image-Linux-platform-tp3510861p3511376.html </summary>
|
||||
/// The event source. <see cref="System.Object"/>
|
||||
/// The event args. <see cref="Gtk.ExposeEventArgs"/>
|
||||
@@ -133,7 +141,8 @@ namespace Duplicati.GUI.TrayIcon
|
||||
|
||||
args.Event.Window.DrawPixbuf(mainGC, image.Pixbuf, 0, 0, r.Left + 2,
|
||||
r.Top + (r.Height - image.Pixbuf.Height) / 2, -1, -1, Gdk.RgbDither.None, 0, 0);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
public string Text
|
||||
{
|
||||
@@ -176,7 +185,9 @@ namespace Duplicati.GUI.TrayIcon
|
||||
|
||||
protected virtual void CreateTrayInstance()
|
||||
{
|
||||
m_trayIcon = new StatusIcon();
|
||||
// Sometimes the tray icon will not display
|
||||
// if it is not created with an icon
|
||||
m_trayIcon = StatusIcon.NewFromStock(Stock.About);
|
||||
}
|
||||
|
||||
protected override void Run (string[] args)
|
||||
@@ -231,33 +242,63 @@ namespace Duplicati.GUI.TrayIcon
|
||||
Gtk.Image img = new Gtk.Image(stream);
|
||||
return img;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected static string GetTrayIconFilename(TrayIcons icon)
|
||||
{
|
||||
switch (icon)
|
||||
{
|
||||
case TrayIcons.Paused:
|
||||
return "normal-pause";
|
||||
case TrayIcons.Running:
|
||||
return "normal-running";
|
||||
case TrayIcons.IdleError:
|
||||
return "normal-error";
|
||||
case TrayIcons.RunningError:
|
||||
return "normal-running";
|
||||
case TrayIcons.PausedError:
|
||||
return "normal-pause";
|
||||
case TrayIcons.Idle:
|
||||
default:
|
||||
return "normal";
|
||||
}
|
||||
}
|
||||
|
||||
protected static Pixbuf GetIcon(TrayIcons icon)
|
||||
{
|
||||
if (!_images.ContainsKey(icon))
|
||||
{
|
||||
switch(icon)
|
||||
if (Duplicati.Library.Utility.Utility.IsClientOSX)
|
||||
{
|
||||
case TrayIcons.Paused:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.PauseIcon).ToBitmap());
|
||||
break;
|
||||
case TrayIcons.Running:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.WorkingIcon).ToBitmap());
|
||||
break;
|
||||
case TrayIcons.IdleError:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.ErrorIcon).ToBitmap());
|
||||
break;
|
||||
case TrayIcons.RunningError:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.WorkingIcon).ToBitmap());
|
||||
break;
|
||||
case TrayIcons.PausedError:
|
||||
switch (icon)
|
||||
{
|
||||
case TrayIcons.Paused:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.PauseIcon).ToBitmap());
|
||||
break;
|
||||
case TrayIcons.Idle:
|
||||
default:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.NormalIcon).ToBitmap());
|
||||
break;
|
||||
break;
|
||||
case TrayIcons.Running:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.WorkingIcon).ToBitmap());
|
||||
break;
|
||||
case TrayIcons.IdleError:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.ErrorIcon).ToBitmap());
|
||||
break;
|
||||
case TrayIcons.RunningError:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.WorkingIcon).ToBitmap());
|
||||
break;
|
||||
case TrayIcons.PausedError:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.PauseIcon).ToBitmap());
|
||||
break;
|
||||
case TrayIcons.Idle:
|
||||
default:
|
||||
_images[icon] = ImageToPixbuf(ImageLoader.LoadIcon(ImageLoader.NormalIcon).ToBitmap());
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
_images[icon] = null;
|
||||
var filename = System.IO.Path.Combine(m_svgfolder, System.IO.Path.ChangeExtension(GetTrayIconFilename(icon), ".svg"));
|
||||
if (System.IO.File.Exists(filename))
|
||||
_images[icon] = new Pixbuf(filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -116,6 +116,7 @@ def get_input():
|
||||
img = NSImage.alloc().initWithData_(data)
|
||||
img.setScalesWhenResized_(True)
|
||||
img.setSize_((18, 18))
|
||||
img.setTemplate_(True)
|
||||
app.icon = img
|
||||
|
||||
print "info:Image updated"
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<svg id="tray_menu_icons" data-name="tray menu icons" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #65b1dd;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<title>tray context menu icons</title>
|
||||
<g id="show_Kopie" data-name="show Kopie">
|
||||
<polygon class="cls-1" points="8 4.001 2 10.301 3.5 11.876 8 7.072 12.5 11.876 14 10.301 8 4.001"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 427 B |
@@ -0,0 +1,14 @@
|
||||
<svg id="tray_menu_icons" data-name="tray menu icons" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #65b1dd;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<title>tray context menu icons</title>
|
||||
<g id="pause_Kopie" data-name="pause Kopie">
|
||||
<rect class="cls-1" x="4" y="2" width="3" height="12"/>
|
||||
<rect class="cls-1" x="9" y="2" width="3" height="12"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 445 B |
@@ -0,0 +1,13 @@
|
||||
<svg id="tray_menu_icons" data-name="tray menu icons" xmlns="http://www.w3.org/2000/svg" width="15.997" height="16" viewBox="0 0 15.997 16">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #65b1dd;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<title>tray context menu icons</title>
|
||||
<g id="stop_Kopie" data-name="stop Kopie">
|
||||
<polygon id="stop" class="cls-1" points="13.998 3.95 12.048 2 7.998 6.05 3.948 2 1.998 3.95 6.049 8 1.998 12.05 3.948 14 7.998 9.95 12.048 14 13.998 12.05 9.949 8 13.998 3.95"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 513 B |
@@ -0,0 +1,13 @@
|
||||
<svg id="tray_menu_icons" data-name="tray menu icons" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #65b1dd;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<title>tray context menu icons</title>
|
||||
<g id="resume_Kopie" data-name="resume Kopie">
|
||||
<polygon class="cls-1" points="5 14 13 8 5 2 5 14"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 384 B |
@@ -0,0 +1,13 @@
|
||||
<svg id="tray_menu_icons" data-name="tray menu icons" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #65b1dd;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<title>tray context menu icons</title>
|
||||
<g id="show_Kopie" data-name="show Kopie">
|
||||
<polygon class="cls-1" points="8 4.001 2 10.301 3.5 11.876 8 7.072 12.5 11.876 14 10.301 8 4.001"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 427 B |
@@ -0,0 +1,14 @@
|
||||
<svg id="tray_menu_icons" data-name="tray menu icons" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #65b1dd;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<title>tray context menu icons</title>
|
||||
<g id="pause_Kopie" data-name="pause Kopie">
|
||||
<rect class="cls-1" x="4" y="2" width="3" height="12"/>
|
||||
<rect class="cls-1" x="9" y="2" width="3" height="12"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 445 B |
@@ -0,0 +1,13 @@
|
||||
<svg id="tray_menu_icons" data-name="tray menu icons" xmlns="http://www.w3.org/2000/svg" width="15.997" height="16" viewBox="0 0 15.997 16">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #65b1dd;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<title>tray context menu icons</title>
|
||||
<g id="stop_Kopie" data-name="stop Kopie">
|
||||
<polygon id="stop" class="cls-1" points="13.998 3.95 12.048 2 7.998 6.05 3.948 2 1.998 3.95 6.049 8 1.998 12.05 3.948 14 7.998 9.95 12.048 14 13.998 12.05 9.949 8 13.998 3.95"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 513 B |
@@ -0,0 +1,13 @@
|
||||
<svg id="tray_menu_icons" data-name="tray menu icons" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<defs>
|
||||
<style>
|
||||
.cls-1 {
|
||||
fill: #65b1dd;
|
||||
}
|
||||
</style>
|
||||
</defs>
|
||||
<title>tray context menu icons</title>
|
||||
<g id="resume_Kopie" data-name="resume Kopie">
|
||||
<polygon class="cls-1" points="5 14 13 8 5 2 5 14"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 384 B |
@@ -103,7 +103,7 @@ namespace Duplicati.Library.Main.Strings
|
||||
public static string UsnpolicyShort { get { return LC.L(@"Controls the use of NTFS Update Sequence Numbers"); } }
|
||||
public static string DisableusndiffcheckLong { get { return LC.L(@"If USN is enabled the USN numbers are used to find all changed files since last backup. Use this option to disable the use of USN numbers, which will make Duplicati investigate all source files. This option is primarily intended for testing and should not be disabled in a production environment. If USN is not enabled, this option has no effect."); } }
|
||||
public static string DisableusndiffcheckShort { get { return LC.L(@"Disables changelist by USN numbers"); } }
|
||||
public static string DisabletimetoleranceLong { get { return LC.L(@"When matching timestamps, Duplicati will adjust the times by a small fraction to ensure that minor time differences do not cause unexpected updated. If the option --{0} is set to keep a week of backups, and the backup is made the same time each week, it is possible that a the clock drifts slightly, such that full week has just passed, causing Duplicati to delete the older backup earlier than expected. To avoid this, Duplicati inserts a 1% tolerance (max 1 hour). Use this option to disable the tolerance, and use strict time checking", "--keep-time"); } }
|
||||
public static string DisabletimetoleranceLong { get { return LC.L(@"When matching timestamps, Duplicati will adjust the times by a small fraction to ensure that minor time differences do not cause unexpected updates. If the option --{0} is set to keep a week of backups, and the backup is made the same time each week, it is possible that the clock drifts slightly, such that full week has just passed, causing Duplicati to delete the older backup earlier than expected. To avoid this, Duplicati inserts a 1% tolerance (max 1 hour). Use this option to disable the tolerance, and use strict time checking", "--keep-time"); } }
|
||||
public static string DisabletimetoleranceShort { get { return LC.L(@"Deactivates tolerance when comparing times"); } }
|
||||
public static string ListverifyuploadsShort { get { return LC.L(@"Verify uploads by listing contents"); } }
|
||||
public static string SynchronousuploadLong { get { return LC.L(@"Duplicati will upload files while scanning the disk and producing volumes, which usually makes the backup faster. Use this flag to turn the behavior off, so that Duplicati will wait for each volume to complete."); } }
|
||||
|
||||
@@ -63,9 +63,29 @@ namespace Duplicati.Library.Modules.Builtin
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Implementation of IGenericSourceModule
|
||||
public Dictionary<string, string> ParseSourcePaths(ref string[] paths, ref string filter, Dictionary<string, string> commandlineOptions)
|
||||
{
|
||||
// Early exit in case we are non-windows to prevent attempting to load Windows-only components
|
||||
if (!Utility.Utility.IsClientWindows)
|
||||
{
|
||||
Logging.Log.WriteMessage("Hyper-V backup works only on Windows OS", Logging.LogMessageType.Warning);
|
||||
|
||||
if (paths != null)
|
||||
paths = paths.Where(x => !x.Equals(m_HyperVPathAllRegExp, StringComparison.OrdinalIgnoreCase) && !Regex.IsMatch(x, m_HyperVPathGuidRegExp, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)).ToArray();
|
||||
|
||||
return new Dictionary<string, string>();
|
||||
}
|
||||
|
||||
// Windows, do the real stuff!
|
||||
return RealParseSourcePaths(ref paths, ref filter, commandlineOptions);
|
||||
}
|
||||
|
||||
// Make sure the JIT does not attempt to inline this call and thus load
|
||||
// referenced types from System.Management here
|
||||
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
|
||||
private Dictionary<string, string> RealParseSourcePaths(ref string[] paths, ref string filter, Dictionary<string, string> commandlineOptions)
|
||||
{
|
||||
var changedOptions = new Dictionary<string, string>();
|
||||
var filtersInclude = new List<string>();
|
||||
@@ -84,15 +104,7 @@ namespace Duplicati.Library.Modules.Builtin
|
||||
filter = string.Join(System.IO.Path.PathSeparator.ToString(), remainingfilters);
|
||||
}
|
||||
|
||||
if (!Utility.Utility.IsClientWindows)
|
||||
{
|
||||
Logging.Log.WriteMessage("Hyper-V backup works only on Windows OS", Logging.LogMessageType.Warning);
|
||||
|
||||
if(paths != null)
|
||||
paths = paths.Where(x => !x.Equals(m_HyperVPathAllRegExp, StringComparison.OrdinalIgnoreCase) && !Regex.IsMatch(x, m_HyperVPathGuidRegExp, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant)).ToArray();
|
||||
}
|
||||
|
||||
if (paths == null || !ContainFilesForBackup(paths) || !Utility.Utility.IsClientWindows)
|
||||
if (paths == null || !ContainFilesForBackup(paths))
|
||||
return changedOptions;
|
||||
|
||||
if (commandlineOptions.Keys.Contains("vss-exclude-writers"))
|
||||
|
||||
@@ -177,8 +177,14 @@ namespace Duplicati.Library.Snapshots
|
||||
|
||||
var fse = UnixSupport.File.GetUserGroupAndPermissions(f);
|
||||
dict["unix:uid-gid-perm"] = string.Format("{0}-{1}-{2}", fse.UID, fse.GID, fse.Permissions);
|
||||
dict["unix:owner-name"] = fse.OwnerName;
|
||||
dict["unix:group-name"] = fse.GroupName;
|
||||
if (fse.OwnerName != null)
|
||||
{
|
||||
dict["unix:owner-name"] = fse.OwnerName;
|
||||
}
|
||||
if (fse.GroupName != null)
|
||||
{
|
||||
dict["unix:group-name"] = fse.GroupName;
|
||||
}
|
||||
|
||||
return dict;
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ backupApp.directive('restoreFilePicker', function() {
|
||||
id: data.data.Files[n].Path,
|
||||
size: data.data.Files[n].Sizes[0],
|
||||
iconCls: leaf ? 'x-tree-icon-leaf' : '',
|
||||
entrytype: AppUtils.getEntryTypeFromIconCls(leaf ? 'x-tree-icon-leaf' : ''),
|
||||
leaf: leaf
|
||||
});
|
||||
}
|
||||
@@ -294,7 +295,8 @@ backupApp.directive('restoreFilePicker', function() {
|
||||
expanded: items[n].expanded,
|
||||
iconCls: items[n].iconCls,
|
||||
leaf: items[n].leaf,
|
||||
id: items[n].Path
|
||||
id: items[n].Path,
|
||||
entrytype: AppUtils.getEntryTypeFromIconCls(items[n].iconCls)
|
||||
};
|
||||
|
||||
if (items[n].Children) {
|
||||
|
||||
@@ -33,6 +33,11 @@ backupApp.directive('sourceFolderPicker', function() {
|
||||
return scope.systeminfo.CaseSensitiveFilesystem ? path : path.toLowerCase();
|
||||
}
|
||||
|
||||
function setEntryType(n)
|
||||
{
|
||||
n.entrytype = AppUtils.getEntryTypeFromIconCls(n.iconCls);
|
||||
}
|
||||
|
||||
function setIconCls(n) {
|
||||
var cp = compareablePath(n.id);
|
||||
|
||||
@@ -56,6 +61,8 @@ backupApp.directive('sourceFolderPicker', function() {
|
||||
n.iconCls = 'x-tree-icon-broken';
|
||||
else if (cp.substr(cp.length - 1, 1) != dirsep)
|
||||
n.iconCls = 'x-tree-icon-leaf';
|
||||
|
||||
setEntryType(n);
|
||||
}
|
||||
|
||||
function indexOfPathInArray(array, item) {
|
||||
@@ -227,9 +234,11 @@ backupApp.directive('sourceFolderPicker', function() {
|
||||
|
||||
}, function(data) {
|
||||
var p = data.config.data.path;
|
||||
var ix = findInList(sources, compareablePath(p));
|
||||
if (ix != null && sources[ix].id == p)
|
||||
sources[ix].iconCls = 'x-tree-icon-broken';
|
||||
var ix = findInList(sourceNodeChildren, compareablePath(p));
|
||||
if (ix != null && sourceNodeChildren[ix].id == p) {
|
||||
sourceNodeChildren[ix].iconCls = 'x-tree-icon-broken';
|
||||
setEntryType(sourceNodeChildren[ix]);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -327,6 +336,10 @@ backupApp.directive('sourceFolderPicker', function() {
|
||||
AppService.post('/filesystem?onlyfolders=false&showhidden=true', {path: node.id}).then(function(data) {
|
||||
node.children = data.data;
|
||||
node.loading = false;
|
||||
|
||||
if (node.children != null)
|
||||
for(var i in node.children)
|
||||
setEntryType(node.children[i]);
|
||||
|
||||
updateIncludeFlags(node, node.include);
|
||||
|
||||
|
||||
@@ -26,6 +26,11 @@ backupApp.directive('destinationFolderPicker', function() {
|
||||
return scope.systeminfo.CaseSensitiveFilesystem ? path : path.toLowerCase();
|
||||
};
|
||||
|
||||
function setEntryType(n)
|
||||
{
|
||||
n.entrytype = AppUtils.getEntryTypeFromIconCls(n.iconCls);
|
||||
}
|
||||
|
||||
function setIconCls(n) {
|
||||
var cp = compareablePath(n.id);
|
||||
var dirsep = scope.systeminfo.DirectorySeparator || '/';
|
||||
@@ -42,6 +47,8 @@ backupApp.directive('destinationFolderPicker', function() {
|
||||
n.iconCls = 'x-tree-icon-home';
|
||||
else if (cp.substr(cp.length - 1, 1) != dirsep)
|
||||
n.iconCls = 'x-tree-icon-leaf';
|
||||
|
||||
setEntryType(n);
|
||||
}
|
||||
|
||||
$scope.toggleExpanded = function(node) {
|
||||
@@ -59,6 +66,10 @@ backupApp.directive('destinationFolderPicker', function() {
|
||||
AppService.post('/filesystem?onlyfolders=true&showhidden=true', {path: node.id}).then(function(data) {
|
||||
node.children = data.data;
|
||||
node.loading = false;
|
||||
|
||||
if (node.children != null)
|
||||
for(var i in node.children)
|
||||
setEntryType(node.children[i]);
|
||||
|
||||
}, function() {
|
||||
node.loading = false;
|
||||
@@ -118,7 +129,10 @@ backupApp.directive('destinationFolderPicker', function() {
|
||||
usernode.children.push(data.data[i]);
|
||||
}
|
||||
else
|
||||
systemnode.children.push(data.data[i]);
|
||||
{
|
||||
setEntryType(data.data[i]);
|
||||
systemnode.children.push(data.data[i]);
|
||||
}
|
||||
}
|
||||
|
||||
updateHideUserNode();
|
||||
|
||||
@@ -41,6 +41,40 @@ backupApp.service('AppUtils', function($rootScope, $timeout, $cookies, DialogSer
|
||||
if (m) $timeout(m);
|
||||
};
|
||||
|
||||
this.getEntryTypeFromIconCls = function(cls)
|
||||
{
|
||||
// Entry type is used in as the ALT entry,
|
||||
// to guide screen reading software for visually
|
||||
// impaired users
|
||||
|
||||
var res = gettextCatalog.getString('Folder');
|
||||
|
||||
if (cls == 'x-tree-icon-mydocuments')
|
||||
res = gettextCatalog.getString('My Documents');
|
||||
else if (cls == gettextCatalog.getString('x-tree-icon-mymusic'))
|
||||
res = gettextCatalog.getString('My Music');
|
||||
else if (cls == 'x-tree-icon-mypictures')
|
||||
res = gettextCatalog.getString('My Pictures');
|
||||
else if (cls == 'x-tree-icon-desktop')
|
||||
res = gettextCatalog.getString('Desktop');
|
||||
else if (cls == 'x-tree-icon-home')
|
||||
res = gettextCatalog.getString('Home');
|
||||
else if (cls == 'x-tree-icon-hypervmachine')
|
||||
res = gettextCatalog.getString('Hyper-V Machine');
|
||||
else if (cls == 'x-tree-icon-hyperv')
|
||||
res = gettextCatalog.getString('Hyper-V Machines');
|
||||
else if (cls == 'x-tree-icon-broken')
|
||||
res = gettextCatalog.getString('Broken access');
|
||||
else if (cls == 'x-tree-icon-locked')
|
||||
res = gettextCatalog.getString('Access denied');
|
||||
else if (cls == 'x-tree-icon-symlink')
|
||||
res = gettextCatalog.getString('Symbolic link');
|
||||
else if (cls == 'x-tree-icon-leaf')
|
||||
res = gettextCatalog.getString('File');
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
function reloadTexts() {
|
||||
apputils.fileSizeMultipliers = [
|
||||
{name: gettextCatalog.getString('byte'), value: ''},
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
<div class="buttons" ng-hide="Testing">
|
||||
<a href ng-click="save()" class="save" translate>OK</a>
|
||||
<a href ng-click="testConnection()" class="test-connection" translate>Test connection</a>
|
||||
<a href ng-click="hide()" class="warning cancel" translate>Cancel</a>
|
||||
<a href ng-click="hide()" class="cancel" translate>Cancel</a>
|
||||
</div>
|
||||
|
||||
<div class="button testmessage" ng-show="Testing">
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<ul dx-start-with="treedata" class="tree-view">
|
||||
<li ng-repeat="node in $dxPrior.children" ng-class="{hidden: node.invisible || (node.hidden && !ngShowHidden)}">
|
||||
<div ng-class="{selected: node.selected}">
|
||||
<a class="nav" ng-click="toggleExpanded(node)" ng-class="{expanded: node.expanded, leaf: node.leaf}"></a>
|
||||
<a class="check" ng-click="toggleCheck(node)" ng-class="{include: node.include == '+', exclude: node.include == '-', partial: node.include == ' ', root: node.root}"></a>
|
||||
<a class="type {{node.iconCls}}" ng-class="{invisible: node.hidden, loading: node.loading}"></a>
|
||||
<div ng-class="{selected: node.selected}" alt="{{node.selected ? 'selected' : 'not selected'}}">
|
||||
<a class="nav" ng-click="toggleExpanded(node)" ng-class="{expanded: node.expanded, leaf: node.leaf}" alt="{{node.expanded ? 'expanded' : 'contracted'}}"></a>
|
||||
<a class="check" ng-click="toggleCheck(node)" ng-class="{include: node.include == '+', exclude: node.include == '-', partial: node.include == ' ', root: node.root}" alt="{{node.include == ' ' ? 'partially included' : (node.include == '-' ? 'excluded' : (node.include == '+' ? 'included' : 'not checked'))}}"></a>
|
||||
<a class="type {{node.iconCls}}" alt="{{loading ? 'loading' : node.entrytype}}" ng-class="{invisible: node.hidden, loading: node.loading}"></a>
|
||||
|
||||
<span ng-click="toggleSelected(node)" ng-bind-html="node.text | highlight:ngSearchFilter"></span>
|
||||
</div>
|
||||
<ul ng-class="{expanded: node.expanded}" dx-connect="node"/>
|
||||
<ul ng-class="{expanded: node.expanded}" dx-connect="node" alt="{{node.expanded ? 'expanded' : 'contracted'}}"/>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<ul dx-start-with="treedata" class="tree-view">
|
||||
<li ng-repeat="node in $dxPrior.children" ng-class="{hidden: (node.hidden && !ngShowHidden)}">
|
||||
<div ng-class="{selected: node.selected}">
|
||||
<a class="nav" ng-click="toggleExpanded(node)" ng-class="{expanded: node.expanded, leaf: node.leaf}"></a>
|
||||
<a class="check" ng-click="toggleCheck(node)" ng-class="{include: node.include == '+', exclude: node.include == '-', partial: node.include == ' ', root: node.root}"></a>
|
||||
<a class="type {{node.iconCls}}" ng-class="{invisible: node.hidden, loading: node.loading}"></a>
|
||||
<div ng-class="{selected: node.selected}" alt="{{node.selected ? 'selected' : 'not selected'}}">
|
||||
<a class="nav" ng-click="toggleExpanded(node)" alt="{{node.expanded ? 'expanded' : 'contracted'}}" ng-class="{expanded: node.expanded, leaf: node.leaf}"></a>
|
||||
<a class="check" ng-click="toggleCheck(node)" alt="{{node.include == ' ' ? 'partially included' : (node.include == '-' ? 'excluded' : (node.include == '+' ? 'included' : 'not checked'))}}" ng-class="{include: node.include == '+', exclude: node.include == '-', partial: node.include == ' ', root: node.root}"></a>
|
||||
<a class="type {{node.iconCls}}" alt="{{loading ? 'loading' : node.entrytype}}" ng-class="{invisible: node.hidden, loading: node.loading}"></a>
|
||||
|
||||
<span ng-click="toggleSelected(node)" title="{{ node.tooltip }}">{{ node.text }}</span>
|
||||
</div>
|
||||
<ul ng-class="{expanded: node.expanded, include: node.include, exclude: node.exclude}" dx-connect="node"/>
|
||||
<ul ng-class="{expanded: node.expanded, include: node.include, exclude: node.exclude}" alt="{{node.include == '+' ? 'included' : (node.include == '-' ? 'excluded' : 'partially included')}}" dx-connect="node"/>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<ul dx-start-with="treedata" class="tree-view">
|
||||
<li ng-repeat="node in $dxPrior.children" ng-class="{hidden: node.invisible || (node.hidden && !ngShowHidden)}">
|
||||
<div ng-class="{selected: node.selected}">
|
||||
<a class="nav" ng-click="toggleExpanded(node)" ng-class="{expanded: node.expanded, leaf: node.leaf}"></a>
|
||||
<a class="type {{node.iconCls}}" ng-class="{invisible: node.hidden, loading: node.loading}"></a>
|
||||
<div ng-class="{selected: node.selected}" alt="{{node.selected ? 'selected' : 'not selected'}}">
|
||||
<a class="nav" ng-click="toggleExpanded(node)" ng-class="{expanded: node.expanded, leaf: node.leaf}" alt="{{node.expanded ? 'expanded' : 'contracted'}}"></a>
|
||||
<a class="type {{node.iconCls}}" alt="{{loading ? 'loading' : node.entrytype}}" ng-class="{invisible: node.hidden, loading: node.loading}"></a>
|
||||
|
||||
<span ng-click="toggleSelected(node)">{{ node.text }}</span>
|
||||
</div>
|
||||
<ul ng-class="{expanded: node.expanded}" dx-connect="node"/>
|
||||
<ul ng-class="{expanded: node.expanded}" alt="{{node.expanded ? 'expanded' : 'contracted'}}" dx-connect="node"/>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -5,4 +5,5 @@ cd $SCRIPT_DIR
|
||||
cd ../../Duplicati/
|
||||
find . -type f -name *.cs > $SCRIPT_DIR"/"filelist_cs.txt
|
||||
xgettext -k --from-code=UTF-8 --output=$SCRIPT_DIR"/"localization.pot --files-from=$SCRIPT_DIR"/"filelist_cs.txt --language=C# --keyword=LC.L
|
||||
sed -i "s/charset=CHARSET/charset=UTF-8/g" $SCRIPT_DIR"/"localization.pot
|
||||
rm $SCRIPT_DIR"/"filelist_cs.txt
|
||||
|
||||
@@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-10-14 13:50+0200\n"
|
||||
"POT-Creation-Date: 2016-10-26 13:13+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -150,7 +150,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"Exclude files that match this filter. The special character * means any "
|
||||
"number of character, and the special character ? means any single character, "
|
||||
"use *.txt to include all files with a txt extension. Regular expressions are "
|
||||
"use *.txt to exclude all files with a txt extension. Regular expressions are "
|
||||
"also supported and can be supplied by using hard braces, i.e. [.*\\.txt]."
|
||||
msgstr ""
|
||||
|
||||
@@ -479,7 +479,7 @@ msgstr ""
|
||||
#: Library/Backend/CloudFiles/Strings.cs:4
|
||||
#, csharp-format
|
||||
msgid ""
|
||||
"Cloudfiles use different servers for authentification based on where the "
|
||||
"CloudFiles use different servers for authentification based on where the "
|
||||
"account was resides, use this option to set an alternate authentication URL. "
|
||||
"This option overrides --{0}."
|
||||
msgstr ""
|
||||
@@ -584,7 +584,7 @@ msgid ""
|
||||
"starting the backup, each folder in the list is checked for existence and "
|
||||
"optionally the presence of the marker file supplied by --{0}. The first "
|
||||
"existing path that optionally contains the marker file is then used as the "
|
||||
"destination. Multiple destinations are separated with a {1},. On Windows, "
|
||||
"destination. Multiple destinations are separated with a \"{1}\". On Windows, "
|
||||
"the path may be a UNC path, and the drive letter may be substituted with an "
|
||||
"asterisk (*), eg.: \"*:\\backup\", which will examine all drive letters. If "
|
||||
"a username and password is supplied, the same credentials are used for all "
|
||||
@@ -2295,12 +2295,12 @@ msgstr ""
|
||||
msgid ""
|
||||
"When matching timestamps, Duplicati will adjust the times by a small "
|
||||
"fraction to ensure that minor time differences do not cause unexpected "
|
||||
"updated. If the option --{0} is set to keep a week of backups, and the "
|
||||
"backup is made the same time each week, it is possible that a the clock "
|
||||
"drifts slightly, such that full week has just passed, causing Duplicati to "
|
||||
"delete the older backup earlier than expected. To avoid this, Duplicati "
|
||||
"inserts a 1% tolerance (max 1 hour). Use this option to disable the "
|
||||
"tolerance, and use strict time checking"
|
||||
"updates. If the option --{0} is set to keep a week of backups, and the "
|
||||
"backup is made the same time each week, it is possible that the clock drifts "
|
||||
"slightly, such that full week has just passed, causing Duplicati to delete "
|
||||
"the older backup earlier than expected. To avoid this, Duplicati inserts a "
|
||||
"1% tolerance (max 1 hour). Use this option to disable the tolerance, and use "
|
||||
"strict time checking"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Main/Strings.cs:107
|
||||
@@ -3022,91 +3022,101 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:36
|
||||
msgid "Executes a script before starting an operation, and again on completion"
|
||||
msgid ""
|
||||
"This module works internaly to parse source parameters to backup Hyper-V "
|
||||
"virtual machines"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:37
|
||||
msgid "Configure Hyper-V module"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:40
|
||||
msgid "Executes a script before starting an operation, and again on completion"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:41
|
||||
msgid "Run script"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:38
|
||||
#: Library/Modules/Builtin/Strings.cs:42
|
||||
msgid ""
|
||||
"Executes a script after performing an operation. The script will receive the "
|
||||
"operation results written to stdout."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:39
|
||||
#: Library/Modules/Builtin/Strings.cs:43
|
||||
msgid "Run a script on exit"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:40
|
||||
#: Library/Modules/Builtin/Strings.cs:44
|
||||
#, csharp-format
|
||||
msgid "The script \"{0}\" returned with exit code {1}"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:41
|
||||
#: Library/Modules/Builtin/Strings.cs:45
|
||||
msgid ""
|
||||
"Executes a script before performing an operation. The operation will block "
|
||||
"until the script has completed or timed out. If the script returns a non-"
|
||||
"zero error code or times out, the operation will be aborted."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:42
|
||||
#: Library/Modules/Builtin/Strings.cs:46
|
||||
msgid "Run a required script on startup"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:43
|
||||
#: Library/Modules/Builtin/Strings.cs:47
|
||||
#, csharp-format
|
||||
msgid "Error while executing script \"{0}\": {1}"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:44
|
||||
#: Library/Modules/Builtin/Strings.cs:48
|
||||
#, csharp-format
|
||||
msgid "Execution of the script \"{0}\" timed out"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:45
|
||||
#: Library/Modules/Builtin/Strings.cs:49
|
||||
msgid ""
|
||||
"Executes a script before performing an operation. The operation will block "
|
||||
"until the script has completed or timed out."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:46
|
||||
#: Library/Modules/Builtin/Strings.cs:50
|
||||
msgid "Run a script on startup"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:47
|
||||
#: Library/Modules/Builtin/Strings.cs:51
|
||||
#, csharp-format
|
||||
msgid "The script \"{0}\" reported error messages: {1}"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:48
|
||||
#: Library/Modules/Builtin/Strings.cs:52
|
||||
msgid ""
|
||||
"Sets the maximum time a script is allowed to execute. If the script has not "
|
||||
"completed within this time, it will continue to execute but the operation "
|
||||
"will continue too, and no script output will be processed."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:49
|
||||
#: Library/Modules/Builtin/Strings.cs:53
|
||||
msgid "Sets the script timeout"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:52
|
||||
#: Library/Modules/Builtin/Strings.cs:56
|
||||
msgid "This module can send email after an operation completes"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:53
|
||||
#: Library/Modules/Builtin/Strings.cs:57
|
||||
msgid "Send mail"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:54
|
||||
#: Library/Modules/Builtin/Strings.cs:58
|
||||
#, csharp-format
|
||||
msgid ""
|
||||
"Unable to find the destination mail server through MX lookup, please use the "
|
||||
"option {0} to specify what smtp server to use."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:55
|
||||
#: Library/Modules/Builtin/Strings.cs:59
|
||||
msgid ""
|
||||
"This value can be a filename. If a the file exists, the file contents will "
|
||||
"be used as the message body.\n"
|
||||
@@ -3123,19 +3133,19 @@ msgid ""
|
||||
"Any unknown/unset value is removed."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:64
|
||||
#: Library/Modules/Builtin/Strings.cs:68
|
||||
msgid "The message body"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:65
|
||||
#: Library/Modules/Builtin/Strings.cs:69
|
||||
msgid "The password used to authenticate with the SMTP server if required."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:66
|
||||
#: Library/Modules/Builtin/Strings.cs:70
|
||||
msgid "SMTP Password"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:67
|
||||
#: Library/Modules/Builtin/Strings.cs:71
|
||||
msgid ""
|
||||
"This setting is required if mail should be sent, all other settings have "
|
||||
"default values. You can supply multiple email adresses seperated with "
|
||||
@@ -3147,21 +3157,21 @@ msgid ""
|
||||
"admin@example.com"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:71
|
||||
#: Library/Modules/Builtin/Strings.cs:75
|
||||
msgid "Email recipient(s)"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:72
|
||||
#: Library/Modules/Builtin/Strings.cs:76
|
||||
msgid ""
|
||||
"By default, mail will only be sent after a Backup operation. Use this option "
|
||||
"to send mail for all operations."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:73
|
||||
#: Library/Modules/Builtin/Strings.cs:77
|
||||
msgid "Send email for all operations"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:74
|
||||
#: Library/Modules/Builtin/Strings.cs:78
|
||||
msgid ""
|
||||
"Adress of the email sender. If no host is supplied, the hostname of the "
|
||||
"first recipient is used. Examples of allowed formats:\n"
|
||||
@@ -3172,11 +3182,11 @@ msgid ""
|
||||
"Mail Sender <sender@example.com>"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:80
|
||||
#: Library/Modules/Builtin/Strings.cs:84
|
||||
msgid "Email sender"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:81
|
||||
#: Library/Modules/Builtin/Strings.cs:85
|
||||
#, csharp-format
|
||||
msgid ""
|
||||
"You can specify one of \"{0}\", \"{1}\", \"{2}\". You can supply multiple "
|
||||
@@ -3185,11 +3195,11 @@ msgid ""
|
||||
"send an email."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:82 Library/Modules/Builtin/Strings.cs:114
|
||||
#: Library/Modules/Builtin/Strings.cs:86 Library/Modules/Builtin/Strings.cs:118
|
||||
msgid "The messages to send"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:83
|
||||
#: Library/Modules/Builtin/Strings.cs:87
|
||||
msgid ""
|
||||
"A url for the SMTP server, e.g. smtp://example.com:25. Multiple servers can "
|
||||
"be supplied in a prioritized list, seperated with semicolon. If a server "
|
||||
@@ -3205,64 +3215,64 @@ msgid ""
|
||||
"used for non-ssl, and 587 for SSL connections."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:87
|
||||
#: Library/Modules/Builtin/Strings.cs:91
|
||||
msgid "SMTP Url"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:88
|
||||
#: Library/Modules/Builtin/Strings.cs:92
|
||||
#, csharp-format
|
||||
msgid ""
|
||||
"This setting supplies the email subject. Values are replaced as described in "
|
||||
"the description for --{0}."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:89
|
||||
#: Library/Modules/Builtin/Strings.cs:93
|
||||
msgid "The email subject"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:90
|
||||
#: Library/Modules/Builtin/Strings.cs:94
|
||||
msgid "The username used to authenticate with the SMTP server if required."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:91
|
||||
#: Library/Modules/Builtin/Strings.cs:95
|
||||
msgid "SMTP Username"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:92
|
||||
#: Library/Modules/Builtin/Strings.cs:96
|
||||
#, csharp-format
|
||||
msgid "Failed to send email: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:93
|
||||
#: Library/Modules/Builtin/Strings.cs:97
|
||||
#, csharp-format
|
||||
msgid "Whole SMTP communication: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:94
|
||||
#: Library/Modules/Builtin/Strings.cs:98
|
||||
#, csharp-format
|
||||
msgid "Failed to send email with server: {0}, message: {1}, retrying with {2}"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:95
|
||||
#: Library/Modules/Builtin/Strings.cs:99
|
||||
#, csharp-format
|
||||
msgid "Email sent successfully using server: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:98
|
||||
#: Library/Modules/Builtin/Strings.cs:102
|
||||
msgid "XMPP recipient email"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:99
|
||||
#: Library/Modules/Builtin/Strings.cs:103
|
||||
msgid ""
|
||||
"The users who should have the messages sent, specify multiple users "
|
||||
"seperated with commas"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:100
|
||||
#: Library/Modules/Builtin/Strings.cs:104
|
||||
msgid "The message template"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:101
|
||||
#: Library/Modules/Builtin/Strings.cs:105
|
||||
msgid ""
|
||||
"This value can be a filename. If a the file exists, the file contents will "
|
||||
"be used as the message.\n"
|
||||
@@ -3279,25 +3289,25 @@ msgid ""
|
||||
"Any unknown/unset value is removed."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:110
|
||||
#: Library/Modules/Builtin/Strings.cs:114
|
||||
msgid "The XMPP username"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:111
|
||||
#: Library/Modules/Builtin/Strings.cs:115
|
||||
msgid ""
|
||||
"The username for the account that will send the message, including the "
|
||||
"hostname. I.e. \"account@jabber.org/Home\""
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:112
|
||||
#: Library/Modules/Builtin/Strings.cs:116
|
||||
msgid "The XMPP password"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:113
|
||||
#: Library/Modules/Builtin/Strings.cs:117
|
||||
msgid "The password for the account that will send the message"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:115
|
||||
#: Library/Modules/Builtin/Strings.cs:119
|
||||
#, csharp-format
|
||||
msgid ""
|
||||
"You can specify one of \"{0}\", \"{1}\", \"{2}\". \n"
|
||||
@@ -3306,30 +3316,30 @@ msgid ""
|
||||
"all backup operations to send a message."
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:117
|
||||
#: Library/Modules/Builtin/Strings.cs:121
|
||||
msgid "Send messages for all operations"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:118
|
||||
#: Library/Modules/Builtin/Strings.cs:122
|
||||
msgid ""
|
||||
"By default, messages will only be sent after a Backup operation. Use this "
|
||||
"option to send messages for all operations"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:119
|
||||
#: Library/Modules/Builtin/Strings.cs:123
|
||||
msgid "XMPP report module"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:120
|
||||
#: Library/Modules/Builtin/Strings.cs:124
|
||||
msgid ""
|
||||
"This module provides support for sending status reports via XMPP messagesß"
|
||||
"This module provides support for sending status reports via XMPP messages"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:121
|
||||
#: Library/Modules/Builtin/Strings.cs:125
|
||||
msgid "Timeout occured while logging in to jabber server"
|
||||
msgstr ""
|
||||
|
||||
#: Library/Modules/Builtin/Strings.cs:122
|
||||
#: Library/Modules/Builtin/Strings.cs:126
|
||||
#, csharp-format
|
||||
msgid "Failed to send jabber message: {0}"
|
||||
msgstr ""
|
||||
@@ -3567,7 +3577,7 @@ msgstr ""
|
||||
|
||||
#: Server/Strings.cs:18
|
||||
#, csharp-format
|
||||
msgid "A serious error occured in Duplicati: {0}"
|
||||
msgid "A serious error occurred in Duplicati: {0}"
|
||||
msgstr ""
|
||||
|
||||
#: Server/Strings.cs:19
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/bin/bash
|
||||
# transifex client in PATH necessary
|
||||
cd $( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||
tx pull --language=de
|
||||
tx pull --language=de,fr,es
|
||||
|
||||
@@ -58,7 +58,7 @@ msgstr "Zugriff auf die Benutzeroberfläche"
|
||||
msgid "Account name"
|
||||
msgstr "Account-Name"
|
||||
|
||||
#: templates/notificationarea.html:29 templates/updatechangelog.html:11
|
||||
#: templates/notificationarea.html:26 templates/updatechangelog.html:11
|
||||
msgid "Activate"
|
||||
msgstr "Aktivieren"
|
||||
|
||||
@@ -104,6 +104,10 @@ msgstr "Optionen für Profis"
|
||||
msgid "Advanced:"
|
||||
msgstr "Für Profis:"
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:403
|
||||
msgid "All Hyper-V Machines"
|
||||
msgstr "Alle Hyper-V Machinen"
|
||||
|
||||
#: templates/settings.html:106
|
||||
msgid ""
|
||||
"All usage reports are sent anonymously and do not contain any personal "
|
||||
@@ -349,6 +353,10 @@ msgstr "Vorheriges Backup fertigstellen..."
|
||||
msgid "Compression modules:"
|
||||
msgstr "Kompression:"
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:361
|
||||
msgid "Computer"
|
||||
msgstr "Computer"
|
||||
|
||||
#: templates/import.html:6
|
||||
msgid "Configuration file:"
|
||||
msgstr "Konfigurationsdatei:"
|
||||
@@ -407,7 +415,7 @@ msgstr "Fortfahren"
|
||||
msgid "Continue without encryption"
|
||||
msgstr "Ohne Verschlüsselung fortfahren"
|
||||
|
||||
#: scripts/services/AppUtils.js:560
|
||||
#: scripts/services/AppUtils.js:563
|
||||
msgid "Core options"
|
||||
msgstr "Allgemeine Optionen"
|
||||
|
||||
@@ -479,7 +487,7 @@ msgstr "Benutzerdefinierte Server-URL ({{server}})"
|
||||
msgid "Custom storage class ({{class}})"
|
||||
msgstr "Benutzerdefinierte Speicher-Klasse ({{class}})"
|
||||
|
||||
#: scripts/services/AppUtils.js:53 templates/addoredit.html:242
|
||||
#: scripts/services/AppUtils.js:56 templates/addoredit.html:242
|
||||
msgid "Days"
|
||||
msgstr "Tage"
|
||||
|
||||
@@ -545,13 +553,13 @@ msgstr ""
|
||||
msgid "Disabled"
|
||||
msgstr "Deaktiviert"
|
||||
|
||||
#: templates/notificationarea.html:13 templates/notificationarea.html:27
|
||||
#: templates/notificationarea.html:10 templates/notificationarea.html:24
|
||||
msgid "Dismiss"
|
||||
msgstr "Verwerfen"
|
||||
|
||||
#: scripts/controllers/DeleteController.js:77
|
||||
msgid "Do you really want to delete the backup: \"{{name}}\" ?"
|
||||
msgstr "Möchtest du das Backup \"{{name}}\" wirklich löschen?"
|
||||
msgstr "Backup \"{{name}}\" wirklich löschen?"
|
||||
|
||||
#: scripts/controllers/LocalDatabaseController.js:28
|
||||
msgid "Do you really want to delete the local database for: {{name}}"
|
||||
@@ -581,15 +589,15 @@ msgstr "Spenden-Links werden versteckt (jetzt anzeigen)"
|
||||
msgid "Donation messages are visible, click to hide"
|
||||
msgstr "Spendenlinks werden angezeigt (jetzt ausblenden)"
|
||||
|
||||
#: templates/export.html:48
|
||||
#: templates/export.html:45
|
||||
msgid "Done"
|
||||
msgstr "Fertig"
|
||||
|
||||
#: templates/notificationarea.html:17
|
||||
#: templates/notificationarea.html:14
|
||||
msgid "Download"
|
||||
msgstr "Herunterladen"
|
||||
|
||||
#: templates/notificationarea.html:30
|
||||
#: templates/notificationarea.html:27
|
||||
msgid "Downloading ..."
|
||||
msgstr "Herunterladen..."
|
||||
|
||||
@@ -597,11 +605,11 @@ msgstr "Herunterladen..."
|
||||
msgid "Downloading files ..."
|
||||
msgstr "Dateien herunterladen..."
|
||||
|
||||
#: templates/notificationarea.html:24
|
||||
#: templates/notificationarea.html:21
|
||||
msgid "Downloading update..."
|
||||
msgstr "Update Herunterladen..."
|
||||
|
||||
#: scripts/services/AppUtils.js:222
|
||||
#: scripts/services/AppUtils.js:225
|
||||
msgid "Duplicate option {{opt}}"
|
||||
msgstr "doppelte Option {{opt}}"
|
||||
|
||||
@@ -611,6 +619,9 @@ msgid ""
|
||||
" When deleting a backup, you can also delete the local database without affecting the ability to restore the remote files.\r\n"
|
||||
" If you are using the local database for backups from the commandline, you should keep the database."
|
||||
msgstr ""
|
||||
"Jedes Backup hat eine lokale Datenbank.\n"
|
||||
"Beim Löschen des Backups kann die lokale Datenbank, ohne die Wiederherstellung der Remote-Dateien zu beeinträchtigen.\n"
|
||||
"Wenn Sie die lokale Datenbank für Backups von der Befehlszeile aus verwenden, sollten Sie die Datenbank behalten."
|
||||
|
||||
#: templates/localdatabase.html:8
|
||||
msgid ""
|
||||
@@ -691,7 +702,7 @@ msgstr "Ausdruck hier eingeben"
|
||||
msgid "Enter folder path name"
|
||||
msgstr "Ordnerpfad eingeben"
|
||||
|
||||
#: scripts/services/AppUtils.js:78
|
||||
#: scripts/services/AppUtils.js:81
|
||||
msgid "Enter one option per line in command-line format, eg. {0}"
|
||||
msgstr "Gib eine Option pro Zeile an im Kommandozeilen-Format, z.B. {0}"
|
||||
|
||||
@@ -711,9 +722,9 @@ msgstr "Ziel-Pfad angeben"
|
||||
#: scripts/controllers/RestoreController.js:85
|
||||
#: scripts/controllers/RestoreDirectController.js:50
|
||||
#: scripts/controllers/RestoreDirectController.js:75
|
||||
#: scripts/services/AppUtils.js:222 scripts/services/AppUtils.js:268
|
||||
#: scripts/services/AppUtils.js:270 scripts/services/AppUtils.js:278
|
||||
#: scripts/services/AppUtils.js:280
|
||||
#: scripts/services/AppUtils.js:225 scripts/services/AppUtils.js:271
|
||||
#: scripts/services/AppUtils.js:273 scripts/services/AppUtils.js:281
|
||||
#: scripts/services/AppUtils.js:283
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
@@ -729,31 +740,31 @@ msgstr "Fehler und Abstürze"
|
||||
msgid "Exclude"
|
||||
msgstr "Ausschließen"
|
||||
|
||||
#: scripts/services/AppUtils.js:81
|
||||
#: scripts/services/AppUtils.js:84
|
||||
msgid "Exclude directories whose names contain"
|
||||
msgstr "Ordner ausschließen dessen Namen beinhaltet"
|
||||
|
||||
#: scripts/services/AppUtils.js:124
|
||||
#: scripts/services/AppUtils.js:127
|
||||
msgid "Exclude expression"
|
||||
msgstr "Filter (ausschließen)"
|
||||
|
||||
#: scripts/services/AppUtils.js:99
|
||||
#: scripts/services/AppUtils.js:102
|
||||
msgid "Exclude file"
|
||||
msgstr "Datei ausschließen"
|
||||
|
||||
#: scripts/services/AppUtils.js:105
|
||||
#: scripts/services/AppUtils.js:108
|
||||
msgid "Exclude file extension"
|
||||
msgstr "Dateiendung ausschließen"
|
||||
|
||||
#: scripts/services/AppUtils.js:87
|
||||
#: scripts/services/AppUtils.js:90
|
||||
msgid "Exclude files whose names contain"
|
||||
msgstr "Dateien ausschließen dessen Namen beinhaltet"
|
||||
|
||||
#: scripts/services/AppUtils.js:93
|
||||
#: scripts/services/AppUtils.js:96
|
||||
msgid "Exclude folder"
|
||||
msgstr "Ordner ausschließen"
|
||||
|
||||
#: scripts/services/AppUtils.js:110
|
||||
#: scripts/services/AppUtils.js:113
|
||||
msgid "Exclude regular expression"
|
||||
msgstr "Regulären Ausdruck (ausschließen)"
|
||||
|
||||
@@ -821,7 +832,7 @@ msgstr "Konnte Standard-Einstellungen nicht lesen:"
|
||||
msgid "Failed to restore files: {{message}}"
|
||||
msgstr "Wiederherstellung der Dateien fehlgeschlagen: {{message}}"
|
||||
|
||||
#: scripts/controllers/SystemSettingsController.js:82
|
||||
#: scripts/controllers/SystemSettingsController.js:85
|
||||
msgid "Failed to save:"
|
||||
msgstr "Fehler beim Speichern:"
|
||||
|
||||
@@ -857,15 +868,15 @@ msgstr "Ordner"
|
||||
msgid "Force stop"
|
||||
msgstr "Stoppen erzwingen"
|
||||
|
||||
#: scripts/services/AppUtils.js:64
|
||||
#: scripts/services/AppUtils.js:67
|
||||
msgid "Fri"
|
||||
msgstr "Fr"
|
||||
|
||||
#: scripts/services/AppUtils.js:46
|
||||
#: scripts/services/AppUtils.js:49
|
||||
msgid "GByte"
|
||||
msgstr "GByte"
|
||||
|
||||
#: scripts/services/AppUtils.js:73
|
||||
#: scripts/services/AppUtils.js:76
|
||||
msgid "GByte/s"
|
||||
msgstr "GByte/s"
|
||||
|
||||
@@ -901,7 +912,7 @@ msgstr "Ausblenden"
|
||||
msgid "Hide hidden folders"
|
||||
msgstr "versteckte Ordner ausblenden"
|
||||
|
||||
#: scripts/services/AppUtils.js:52 templates/settings.html:33
|
||||
#: scripts/services/AppUtils.js:55 templates/settings.html:33
|
||||
msgid "Hours"
|
||||
msgstr "Stunden"
|
||||
|
||||
@@ -909,6 +920,18 @@ msgstr "Stunden"
|
||||
msgid "How do you want to handle existing files?"
|
||||
msgstr "Wie sollen bestehende Dateien behandelt werden?"
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:418
|
||||
msgid "Hyper-V Machine:"
|
||||
msgstr "Hyper-V Machine:"
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:397
|
||||
msgid "Hyper-V Machines"
|
||||
msgstr "Hyper-V Machinen"
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:51
|
||||
msgid "ID:"
|
||||
msgstr "ID:"
|
||||
|
||||
#: templates/addoredit.html:179
|
||||
msgid "If a date was missed, the job will run as soon as possible."
|
||||
msgstr "Wurde ein Zeitpunkt verpasst, startet das Backup so bald wie möglich."
|
||||
@@ -923,10 +946,25 @@ msgstr ""
|
||||
"Datenbank repariert werden.\\nSollte die Reparatur nicht erfolgreich sein, "
|
||||
"so kann die lokale Datenbank gelöscht und neu erstellt werden."
|
||||
|
||||
#: templates/export.html:41 templates/notificationarea.html:7
|
||||
msgid "If the backup file was not downloaded automatically,"
|
||||
#: templates/export.html:41
|
||||
msgid ""
|
||||
"If the backup file was not downloaded automatically, <a "
|
||||
"href=\"{{DownloadURL}}\" target=\"_blank\">right click and choose "Save"
|
||||
" as ..."</a>"
|
||||
msgstr ""
|
||||
"Wenn die Backup-Dateien nicht automatisch heruntergeladen werden konnten,"
|
||||
"Wenn die Sicherungsdatei nicht automatisch heruntergeladen wurde, <a "
|
||||
"href=\"{{DownloadURL}}\" target=\"_blank\">klicken Sie mit der rechten "
|
||||
"Maustaste und wählen Sie \"Speichern unter...\"</a>"
|
||||
|
||||
#: templates/notificationarea.html:7
|
||||
msgid ""
|
||||
"If the backup file was not downloaded automatically, <a "
|
||||
"href=\"{{item.DownloadLink}}\" target=\"_blank\">right click and choose "
|
||||
""Save as ..."</a>"
|
||||
msgstr ""
|
||||
"Wenn die Sicherungsdatei nicht automatisch heruntergeladen wurde, <a "
|
||||
"href=\"{{item.DownloadLink}}\" target=\"_blank\">klicken Sie mit der rechten"
|
||||
" Maustaste und wählen Sie \"Speichern unter...\"</a>"
|
||||
|
||||
#: scripts/services/EditUriBackendConfig.js:99
|
||||
msgid ""
|
||||
@@ -946,6 +984,8 @@ msgid ""
|
||||
"If you want to use the backup later, you can export the configuration before"
|
||||
" deleting it"
|
||||
msgstr ""
|
||||
"Wenn Sie das Backup später verwenden möchten, kann die Konfiguration vor dem"
|
||||
" Löschen exportiert werden"
|
||||
|
||||
#: templates/import.html:19
|
||||
msgid "Import"
|
||||
@@ -967,23 +1007,23 @@ msgstr "Importieren..."
|
||||
msgid "Include a file?"
|
||||
msgstr "Datei einfügen?"
|
||||
|
||||
#: scripts/services/AppUtils.js:120
|
||||
#: scripts/services/AppUtils.js:123
|
||||
msgid "Include expression"
|
||||
msgstr "Filter (einschließen)"
|
||||
|
||||
#: scripts/services/AppUtils.js:115
|
||||
#: scripts/services/AppUtils.js:118
|
||||
msgid "Include regular expression"
|
||||
msgstr "Regulären Ausdruck (einschließen)"
|
||||
|
||||
#: templates/captcha.html:11
|
||||
msgid "Incorrect answer, try again"
|
||||
msgstr ""
|
||||
msgstr "Fehlerhafte Antwort, versuche es erneut"
|
||||
|
||||
#: templates/settings.html:83
|
||||
msgid "Individual builds for developers only."
|
||||
msgstr "Individuelle Versionen für Entwickler."
|
||||
|
||||
#: templates/notificationarea.html:28 templates/updatechangelog.html:10
|
||||
#: templates/notificationarea.html:25 templates/updatechangelog.html:10
|
||||
msgid "Install"
|
||||
msgstr "Installieren"
|
||||
|
||||
@@ -994,7 +1034,7 @@ msgstr "Installation fehlgeschlagen:"
|
||||
#: scripts/controllers/EditBackupController.js:235
|
||||
#: scripts/controllers/EditBackupController.js:242
|
||||
msgid "Invalid retention time"
|
||||
msgstr ""
|
||||
msgstr "Ungültige Aufbewahrungszeit"
|
||||
|
||||
#: scripts/services/EditUriBuiltins.js:535
|
||||
msgid ""
|
||||
@@ -1004,11 +1044,11 @@ msgstr ""
|
||||
"Manche FTP-Server erlauben einen Login ohne Passwort.\n"
|
||||
"Bist Du sicher, dass Dein FTP-Server dazu gehört?"
|
||||
|
||||
#: scripts/services/AppUtils.js:44
|
||||
#: scripts/services/AppUtils.js:47
|
||||
msgid "KByte"
|
||||
msgstr "KByte"
|
||||
|
||||
#: scripts/services/AppUtils.js:71
|
||||
#: scripts/services/AppUtils.js:74
|
||||
msgid "KByte/s"
|
||||
msgstr "KByte/s"
|
||||
|
||||
@@ -1042,7 +1082,7 @@ msgstr "Backups werden aufgelistet..."
|
||||
|
||||
#: scripts/services/ServerStatus.js:60
|
||||
msgid "Listing remote files ..."
|
||||
msgstr ""
|
||||
msgstr "Auflisten von Remote-Dateien..."
|
||||
|
||||
#: templates/log.html:7
|
||||
msgid "Live"
|
||||
@@ -1061,7 +1101,7 @@ msgstr "Laden..."
|
||||
|
||||
#: templates/delete.html:40
|
||||
msgid "Loading remote storage usage ..."
|
||||
msgstr ""
|
||||
msgstr "Remote-Speicherplatznutzung abfragen..."
|
||||
|
||||
#: templates/localdatabase.html:2
|
||||
msgid "Local database for"
|
||||
@@ -1087,11 +1127,11 @@ msgstr "Speicherort, wo die Buckets erstellt werden"
|
||||
msgid "Log data"
|
||||
msgstr "Log-Meldungen"
|
||||
|
||||
#: scripts/services/AppUtils.js:45
|
||||
#: scripts/services/AppUtils.js:48
|
||||
msgid "MByte"
|
||||
msgstr "MByte"
|
||||
|
||||
#: scripts/services/AppUtils.js:72
|
||||
#: scripts/services/AppUtils.js:75
|
||||
msgid "MByte/s"
|
||||
msgstr "MByte/s"
|
||||
|
||||
@@ -1111,7 +1151,7 @@ msgstr "Pfad eingeben"
|
||||
msgid "Menu"
|
||||
msgstr "Menü"
|
||||
|
||||
#: scripts/services/AppUtils.js:51 templates/settings.html:32
|
||||
#: scripts/services/AppUtils.js:54 templates/settings.html:32
|
||||
msgid "Minutes"
|
||||
msgstr "Minuten"
|
||||
|
||||
@@ -1131,11 +1171,11 @@ msgstr "Passwort fehlt"
|
||||
msgid "Missing sources"
|
||||
msgstr "Quelle fehlt"
|
||||
|
||||
#: scripts/services/AppUtils.js:60
|
||||
#: scripts/services/AppUtils.js:63
|
||||
msgid "Mon"
|
||||
msgstr "Mo"
|
||||
|
||||
#: scripts/services/AppUtils.js:55 templates/addoredit.html:244
|
||||
#: scripts/services/AppUtils.js:58 templates/addoredit.html:244
|
||||
msgid "Months"
|
||||
msgstr "Monate"
|
||||
|
||||
@@ -1159,7 +1199,7 @@ msgstr "Name"
|
||||
msgid "Never"
|
||||
msgstr "Nie"
|
||||
|
||||
#: templates/notificationarea.html:22
|
||||
#: templates/notificationarea.html:19
|
||||
msgid "New update found: {{message}}"
|
||||
msgstr "Neues Update verfügbar: {{message}}"
|
||||
|
||||
@@ -1256,8 +1296,8 @@ msgstr "OpenStack AuthURI"
|
||||
msgid "OpenStack Object Storage / Swift"
|
||||
msgstr "OpenStack Object Storage / Swift"
|
||||
|
||||
#: scripts/controllers/SystemSettingsController.js:104
|
||||
#: scripts/controllers/SystemSettingsController.js:93
|
||||
#: scripts/controllers/SystemSettingsController.js:107
|
||||
#: scripts/controllers/SystemSettingsController.js:96
|
||||
msgid "Operation failed:"
|
||||
msgstr "Operation fehlgeschlagen:"
|
||||
|
||||
@@ -1454,7 +1494,7 @@ msgstr "Wiederherstellungsoptionen"
|
||||
|
||||
#: templates/restore.html:87
|
||||
msgid "Restore read/write permissions"
|
||||
msgstr "Scheib- und Leserechter wiederherstellen"
|
||||
msgstr "Schreib- und Leserechte wiederherstellen"
|
||||
|
||||
#: scripts/controllers/RestoreController.js:344
|
||||
#: scripts/controllers/RestoreController.js:365
|
||||
@@ -1493,7 +1533,7 @@ msgstr "S3 Kompatibel"
|
||||
msgid "Same as the base install version: {{channelname}}"
|
||||
msgstr "Wie die zuerst installierte Version: {{channelname}}"
|
||||
|
||||
#: scripts/services/AppUtils.js:65
|
||||
#: scripts/services/AppUtils.js:68
|
||||
msgid "Sat"
|
||||
msgstr "Sa"
|
||||
|
||||
@@ -1555,7 +1595,7 @@ msgstr "Server ist pausiert,"
|
||||
|
||||
#: scripts/controllers/HomeController.js:7
|
||||
msgid "Server is currently paused, do you want to resume now?"
|
||||
msgstr "Server ist pausiert, wollen Sie jetzt wieder aufnehmen?"
|
||||
msgstr "Server ist zurzeit pausiert, Server starten?"
|
||||
|
||||
#: scripts/controllers/HomeController.js:7
|
||||
msgid "Server paused"
|
||||
@@ -1569,8 +1609,8 @@ msgstr "Server Zustandseigenschaften"
|
||||
msgid "Settings"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: templates/addoredit.html:71 templates/notificationarea.html:15
|
||||
#: templates/notificationarea.html:32
|
||||
#: templates/addoredit.html:71 templates/notificationarea.html:12
|
||||
#: templates/notificationarea.html:29
|
||||
msgid "Show"
|
||||
msgstr "Zeigen"
|
||||
|
||||
@@ -1603,6 +1643,10 @@ msgstr ""
|
||||
msgid "Source Data"
|
||||
msgstr "Quell-Daten"
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:367
|
||||
msgid "Source data"
|
||||
msgstr "Quell-Daten"
|
||||
|
||||
#: templates/addoredit.html:104
|
||||
msgid "Source folders"
|
||||
msgstr "Quell-Verzeichnisse"
|
||||
@@ -1652,7 +1696,7 @@ msgstr "Gespeichert"
|
||||
msgid "Strong"
|
||||
msgstr "Stark"
|
||||
|
||||
#: scripts/services/AppUtils.js:66
|
||||
#: scripts/services/AppUtils.js:69
|
||||
msgid "Sun"
|
||||
msgstr "So"
|
||||
|
||||
@@ -1672,11 +1716,11 @@ msgstr "System-Informationen"
|
||||
msgid "System properties"
|
||||
msgstr "System-Eigenschaften"
|
||||
|
||||
#: scripts/services/AppUtils.js:47
|
||||
#: scripts/services/AppUtils.js:50
|
||||
msgid "TByte"
|
||||
msgstr "TByte"
|
||||
|
||||
#: scripts/services/AppUtils.js:74
|
||||
#: scripts/services/AppUtils.js:77
|
||||
msgid "TByte/s"
|
||||
msgstr "TByte/s"
|
||||
|
||||
@@ -1731,11 +1775,11 @@ msgstr ""
|
||||
|
||||
#: scripts/controllers/EditBackupController.js:131
|
||||
msgid ""
|
||||
"The path does not end with a '{0}' character, which means that you include a file, not a folder.\n"
|
||||
"The path does not end with a '{{dirsep}}' character, which means that you include a file, not a folder.\n"
|
||||
"\n"
|
||||
"Do you want to include the specified file?"
|
||||
msgstr ""
|
||||
"Ohne das abschließende '{0}' fügst du eine Datei hinzu und kein Verzeichnis.\n"
|
||||
"Ohne das abschließende '{{dirsep}}' fügst du eine Datei hinzu und kein Verzeichnis.\n"
|
||||
"\n"
|
||||
"Möchtest du diese Datei hinzufügen?"
|
||||
|
||||
@@ -1770,7 +1814,8 @@ msgstr ""
|
||||
#: templates/backends/s3.html:40
|
||||
msgid "The storage class affects the availability and price for a stored file"
|
||||
msgstr ""
|
||||
"The storage class affects the availability and price for a stored file"
|
||||
"Die Speicherklasse wirkt sich auf die Verfügbarkeit und den Preis einer "
|
||||
"gespeicherten Datei aus"
|
||||
|
||||
#: scripts/controllers/RestoreDirectController.js:71
|
||||
msgid ""
|
||||
@@ -1793,7 +1838,7 @@ msgstr "Dieser Monat"
|
||||
msgid "This week"
|
||||
msgstr "Diese Woche"
|
||||
|
||||
#: scripts/services/AppUtils.js:63
|
||||
#: scripts/services/AppUtils.js:66
|
||||
msgid "Thu"
|
||||
msgstr "Do"
|
||||
|
||||
@@ -1806,6 +1851,8 @@ msgid ""
|
||||
"To confirm you want to delete all remote files for \"{{name}}\", please "
|
||||
"enter the word you see below"
|
||||
msgstr ""
|
||||
"Zum Bestätigen für das Löschen der Remote-Dateien für \"{{name}}\", bitte "
|
||||
"das unten angegebene Wort eingeben"
|
||||
|
||||
#: scripts/controllers/ExportController.js:10
|
||||
msgid "To export without a passphrase, uncheck the \"Encrypt file\" box"
|
||||
@@ -1823,7 +1870,7 @@ msgstr ""
|
||||
"Neue Funktionen ausprobieren. Nutze diese Versionen nicht mit wichtigen "
|
||||
"Backups!"
|
||||
|
||||
#: scripts/services/AppUtils.js:61
|
||||
#: scripts/services/AppUtils.js:64
|
||||
msgid "Tue"
|
||||
msgstr "Di"
|
||||
|
||||
@@ -1892,6 +1939,10 @@ msgstr "Schwaches Passwort nutzen"
|
||||
msgid "Useless"
|
||||
msgstr "Nutzlos"
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:354
|
||||
msgid "User data"
|
||||
msgstr "Benutzer Daten"
|
||||
|
||||
#: scripts/services/EditUriBuiltins.js:45
|
||||
msgid "User has too many permissions"
|
||||
msgstr "Nutzer hat zu viele Rechte"
|
||||
@@ -1921,13 +1972,13 @@ msgid "Verify files"
|
||||
msgstr "Backup prüfen"
|
||||
|
||||
#: scripts/services/CaptchaService.js:32 scripts/services/ServerStatus.js:58
|
||||
#: templates/notificationarea.html:31
|
||||
#: templates/notificationarea.html:28
|
||||
msgid "Verifying ..."
|
||||
msgstr "Prüfen..."
|
||||
|
||||
#: scripts/services/CaptchaService.js:32
|
||||
msgid "Verifying answer"
|
||||
msgstr ""
|
||||
msgstr "Antwort verifizieren"
|
||||
|
||||
#: scripts/services/ServerStatus.js:34 scripts/services/ServerStatus.js:43
|
||||
msgid "Verifying backend data ..."
|
||||
@@ -1958,10 +2009,13 @@ msgid ""
|
||||
"WARNING: The remote database is found to be in use by the commandline "
|
||||
"library"
|
||||
msgstr ""
|
||||
"WARNUNG: Die Remote-Datenbank wird bereits von der Kommandozeilen Bibliothek"
|
||||
" verwendet"
|
||||
|
||||
#: templates/delete.html:44
|
||||
msgid "WARNING: This will prevent you from restoring the data in the future."
|
||||
msgstr ""
|
||||
"WARNUNG: Dadurch können Sie die Daten in Zukunft nicht wiederherstellen."
|
||||
|
||||
#: templates/waitarea.html:2
|
||||
msgid "Waiting for task to begin"
|
||||
@@ -1987,11 +2041,11 @@ msgstr "Schwach"
|
||||
msgid "Weak passphrase"
|
||||
msgstr "Schwaches Passwort"
|
||||
|
||||
#: scripts/services/AppUtils.js:62
|
||||
#: scripts/services/AppUtils.js:65
|
||||
msgid "Wed"
|
||||
msgstr "Mi"
|
||||
|
||||
#: scripts/services/AppUtils.js:54 templates/addoredit.html:243
|
||||
#: scripts/services/AppUtils.js:57 templates/addoredit.html:243
|
||||
msgid "Weeks"
|
||||
msgstr "Wochen"
|
||||
|
||||
@@ -1999,7 +2053,7 @@ msgstr "Wochen"
|
||||
msgid "Where do you want to restore the files to?"
|
||||
msgstr "Wohin sollen die Dateien wiederhergestellt werden?"
|
||||
|
||||
#: scripts/services/AppUtils.js:56 templates/addoredit.html:245
|
||||
#: scripts/services/AppUtils.js:59 templates/addoredit.html:245
|
||||
msgid "Years"
|
||||
msgstr "Jahre"
|
||||
|
||||
@@ -2097,7 +2151,7 @@ msgstr "Gib das Passwort ein, um die Verschlüsselung zu deaktivieren"
|
||||
|
||||
#: scripts/controllers/EditBackupController.js:242
|
||||
msgid "You must enter a positive number of backups to keep"
|
||||
msgstr ""
|
||||
msgstr "Sie müssen eine positive Nummer der zu behaltenden Backups eingeben"
|
||||
|
||||
#: scripts/services/EditUriBuiltins.js:622
|
||||
msgid "You must enter a tenant name if you do not provide an API Key"
|
||||
@@ -2106,6 +2160,7 @@ msgstr "Gib einen Kundennamen an, wenn Du keinen API-Key hast."
|
||||
#: scripts/controllers/EditBackupController.js:235
|
||||
msgid "You must enter a valid duration for the time to keep backups"
|
||||
msgstr ""
|
||||
"Sie müssen einen gültigen Zeitraum für zu behaltenden Backups eingeben"
|
||||
|
||||
#: scripts/services/EditUriBuiltins.js:619
|
||||
msgid "You must enter either a password or an API Key"
|
||||
@@ -2160,11 +2215,11 @@ msgstr "eine Anzahl"
|
||||
msgid "bucket/folder/subfolder"
|
||||
msgstr "Bucket/Ordner/Unterordner"
|
||||
|
||||
#: scripts/services/AppUtils.js:43
|
||||
#: scripts/services/AppUtils.js:46
|
||||
msgid "byte"
|
||||
msgstr "byte"
|
||||
|
||||
#: scripts/services/AppUtils.js:70
|
||||
#: scripts/services/AppUtils.js:73
|
||||
msgid "byte/s"
|
||||
msgstr "Byte/s"
|
||||
|
||||
@@ -2193,10 +2248,6 @@ msgstr "Jetzt starten"
|
||||
msgid "resuming in"
|
||||
msgstr "starte in"
|
||||
|
||||
#: templates/export.html:43 templates/notificationarea.html:9
|
||||
msgid "right click and choose "Save as ...""
|
||||
msgstr "Rechtsklick und "Speichern unter..." auswählen"
|
||||
|
||||
#: templates/about.html:11
|
||||
msgid ""
|
||||
"{{appname}} was primarily developed by <a href=\"{{mail1}}\">{{dev1}}</a> "
|
||||
|
||||
@@ -55,7 +55,7 @@ msgstr ""
|
||||
msgid "Account name"
|
||||
msgstr ""
|
||||
|
||||
#: templates/notificationarea.html:29
|
||||
#: templates/notificationarea.html:26
|
||||
#: templates/updatechangelog.html:11
|
||||
msgid "Activate"
|
||||
msgstr ""
|
||||
@@ -103,6 +103,10 @@ msgstr ""
|
||||
msgid "Advanced:"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:403
|
||||
msgid "All Hyper-V Machines"
|
||||
msgstr ""
|
||||
|
||||
#: templates/settings.html:106
|
||||
msgid "All usage reports are sent anonymously and do not contain any personal information. They contain information about hardware and operating system, the type of backend, backup duration, overall size of source data and similar data. They do not contain paths, filenames, usernames, passwords or similar sensitive information."
|
||||
msgstr ""
|
||||
@@ -347,6 +351,10 @@ msgstr ""
|
||||
msgid "Compression modules:"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:361
|
||||
msgid "Computer"
|
||||
msgstr ""
|
||||
|
||||
#: templates/import.html:6
|
||||
msgid "Configuration file:"
|
||||
msgstr ""
|
||||
@@ -406,7 +414,7 @@ msgstr ""
|
||||
msgid "Continue without encryption"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:560
|
||||
#: scripts/services/AppUtils.js:563
|
||||
msgid "Core options"
|
||||
msgstr ""
|
||||
|
||||
@@ -480,7 +488,7 @@ msgstr ""
|
||||
msgid "Custom storage class ({{class}})"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:53
|
||||
#: scripts/services/AppUtils.js:56
|
||||
#: templates/addoredit.html:242
|
||||
msgid "Days"
|
||||
msgstr ""
|
||||
@@ -543,8 +551,8 @@ msgstr ""
|
||||
msgid "Disabled"
|
||||
msgstr ""
|
||||
|
||||
#: templates/notificationarea.html:13
|
||||
#: templates/notificationarea.html:27
|
||||
#: templates/notificationarea.html:10
|
||||
#: templates/notificationarea.html:24
|
||||
msgid "Dismiss"
|
||||
msgstr ""
|
||||
|
||||
@@ -584,15 +592,15 @@ msgstr ""
|
||||
msgid "Donation messages are visible, click to hide"
|
||||
msgstr ""
|
||||
|
||||
#: templates/export.html:48
|
||||
#: templates/export.html:45
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: templates/notificationarea.html:17
|
||||
#: templates/notificationarea.html:14
|
||||
msgid "Download"
|
||||
msgstr ""
|
||||
|
||||
#: templates/notificationarea.html:30
|
||||
#: templates/notificationarea.html:27
|
||||
msgid "Downloading ..."
|
||||
msgstr ""
|
||||
|
||||
@@ -600,11 +608,11 @@ msgstr ""
|
||||
msgid "Downloading files ..."
|
||||
msgstr ""
|
||||
|
||||
#: templates/notificationarea.html:24
|
||||
#: templates/notificationarea.html:21
|
||||
msgid "Downloading update..."
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:222
|
||||
#: scripts/services/AppUtils.js:225
|
||||
msgid "Duplicate option {{opt}}"
|
||||
msgstr ""
|
||||
|
||||
@@ -692,7 +700,7 @@ msgstr ""
|
||||
msgid "Enter folder path name"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:78
|
||||
#: scripts/services/AppUtils.js:81
|
||||
msgid "Enter one option per line in command-line format, eg. {0}"
|
||||
msgstr ""
|
||||
|
||||
@@ -714,11 +722,11 @@ msgstr ""
|
||||
#: scripts/controllers/RestoreController.js:85
|
||||
#: scripts/controllers/RestoreDirectController.js:50
|
||||
#: scripts/controllers/RestoreDirectController.js:75
|
||||
#: scripts/services/AppUtils.js:222
|
||||
#: scripts/services/AppUtils.js:268
|
||||
#: scripts/services/AppUtils.js:270
|
||||
#: scripts/services/AppUtils.js:278
|
||||
#: scripts/services/AppUtils.js:280
|
||||
#: scripts/services/AppUtils.js:225
|
||||
#: scripts/services/AppUtils.js:271
|
||||
#: scripts/services/AppUtils.js:273
|
||||
#: scripts/services/AppUtils.js:281
|
||||
#: scripts/services/AppUtils.js:283
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
@@ -734,31 +742,31 @@ msgstr ""
|
||||
msgid "Exclude"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:81
|
||||
#: scripts/services/AppUtils.js:84
|
||||
msgid "Exclude directories whose names contain"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:124
|
||||
#: scripts/services/AppUtils.js:127
|
||||
msgid "Exclude expression"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:99
|
||||
#: scripts/services/AppUtils.js:102
|
||||
msgid "Exclude file"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:105
|
||||
#: scripts/services/AppUtils.js:108
|
||||
msgid "Exclude file extension"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:87
|
||||
#: scripts/services/AppUtils.js:90
|
||||
msgid "Exclude files whose names contain"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:93
|
||||
#: scripts/services/AppUtils.js:96
|
||||
msgid "Exclude folder"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:110
|
||||
#: scripts/services/AppUtils.js:113
|
||||
msgid "Exclude regular expression"
|
||||
msgstr ""
|
||||
|
||||
@@ -827,7 +835,7 @@ msgstr ""
|
||||
msgid "Failed to restore files: {{message}}"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/controllers/SystemSettingsController.js:82
|
||||
#: scripts/controllers/SystemSettingsController.js:85
|
||||
msgid "Failed to save:"
|
||||
msgstr ""
|
||||
|
||||
@@ -868,15 +876,15 @@ msgstr ""
|
||||
msgid "Force stop"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:64
|
||||
#: scripts/services/AppUtils.js:67
|
||||
msgid "Fri"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:46
|
||||
#: scripts/services/AppUtils.js:49
|
||||
msgid "GByte"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:73
|
||||
#: scripts/services/AppUtils.js:76
|
||||
msgid "GByte/s"
|
||||
msgstr ""
|
||||
|
||||
@@ -915,7 +923,7 @@ msgstr ""
|
||||
msgid "Hide hidden folders"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:52
|
||||
#: scripts/services/AppUtils.js:55
|
||||
#: templates/settings.html:33
|
||||
msgid "Hours"
|
||||
msgstr ""
|
||||
@@ -924,6 +932,18 @@ msgstr ""
|
||||
msgid "How do you want to handle existing files?"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:418
|
||||
msgid "Hyper-V Machine:"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:397
|
||||
msgid "Hyper-V Machines"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:51
|
||||
msgid "ID:"
|
||||
msgstr ""
|
||||
|
||||
#: templates/addoredit.html:179
|
||||
msgid "If a date was missed, the job will run as soon as possible."
|
||||
msgstr ""
|
||||
@@ -933,8 +953,11 @@ msgid "If the backup and the remote storage is out of sync, Duplicati will requi
|
||||
msgstr ""
|
||||
|
||||
#: templates/export.html:41
|
||||
msgid "If the backup file was not downloaded automatically, <a href=\"{{DownloadURL}}\" target=\"_blank\">right click and choose "Save as ..."</a>"
|
||||
msgstr ""
|
||||
|
||||
#: templates/notificationarea.html:7
|
||||
msgid "If the backup file was not downloaded automatically,"
|
||||
msgid "If the backup file was not downloaded automatically, <a href=\"{{item.DownloadLink}}\" target=\"_blank\">right click and choose "Save as ..."</a>"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/EditUriBackendConfig.js:99
|
||||
@@ -971,11 +994,11 @@ msgstr ""
|
||||
msgid "Include a file?"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:120
|
||||
#: scripts/services/AppUtils.js:123
|
||||
msgid "Include expression"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:115
|
||||
#: scripts/services/AppUtils.js:118
|
||||
msgid "Include regular expression"
|
||||
msgstr ""
|
||||
|
||||
@@ -987,7 +1010,7 @@ msgstr ""
|
||||
msgid "Individual builds for developers only."
|
||||
msgstr ""
|
||||
|
||||
#: templates/notificationarea.html:28
|
||||
#: templates/notificationarea.html:25
|
||||
#: templates/updatechangelog.html:10
|
||||
msgid "Install"
|
||||
msgstr ""
|
||||
@@ -1007,11 +1030,11 @@ msgid ""
|
||||
"Are you sure your FTP server supports password-less logins?"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:44
|
||||
#: scripts/services/AppUtils.js:47
|
||||
msgid "KByte"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:71
|
||||
#: scripts/services/AppUtils.js:74
|
||||
msgid "KByte/s"
|
||||
msgstr ""
|
||||
|
||||
@@ -1099,11 +1122,11 @@ msgstr ""
|
||||
msgid "Log data"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:45
|
||||
#: scripts/services/AppUtils.js:48
|
||||
msgid "MByte"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:72
|
||||
#: scripts/services/AppUtils.js:75
|
||||
msgid "MByte/s"
|
||||
msgstr ""
|
||||
|
||||
@@ -1124,7 +1147,7 @@ msgstr ""
|
||||
msgid "Menu"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:51
|
||||
#: scripts/services/AppUtils.js:54
|
||||
#: templates/settings.html:32
|
||||
msgid "Minutes"
|
||||
msgstr ""
|
||||
@@ -1145,11 +1168,11 @@ msgstr ""
|
||||
msgid "Missing sources"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:60
|
||||
#: scripts/services/AppUtils.js:63
|
||||
msgid "Mon"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:55
|
||||
#: scripts/services/AppUtils.js:58
|
||||
#: templates/addoredit.html:244
|
||||
msgid "Months"
|
||||
msgstr ""
|
||||
@@ -1174,7 +1197,7 @@ msgstr ""
|
||||
msgid "Never"
|
||||
msgstr ""
|
||||
|
||||
#: templates/notificationarea.html:22
|
||||
#: templates/notificationarea.html:19
|
||||
msgid "New update found: {{message}}"
|
||||
msgstr ""
|
||||
|
||||
@@ -1271,8 +1294,8 @@ msgstr ""
|
||||
msgid "OpenStack Object Storage / Swift"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/controllers/SystemSettingsController.js:104
|
||||
#: scripts/controllers/SystemSettingsController.js:93
|
||||
#: scripts/controllers/SystemSettingsController.js:107
|
||||
#: scripts/controllers/SystemSettingsController.js:96
|
||||
msgid "Operation failed:"
|
||||
msgstr ""
|
||||
|
||||
@@ -1520,7 +1543,7 @@ msgstr ""
|
||||
msgid "Same as the base install version: {{channelname}}"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:65
|
||||
#: scripts/services/AppUtils.js:68
|
||||
msgid "Sat"
|
||||
msgstr ""
|
||||
|
||||
@@ -1600,8 +1623,8 @@ msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: templates/addoredit.html:71
|
||||
#: templates/notificationarea.html:15
|
||||
#: templates/notificationarea.html:32
|
||||
#: templates/notificationarea.html:12
|
||||
#: templates/notificationarea.html:29
|
||||
msgid "Show"
|
||||
msgstr ""
|
||||
|
||||
@@ -1632,6 +1655,10 @@ msgstr ""
|
||||
msgid "Source Data"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:367
|
||||
msgid "Source data"
|
||||
msgstr ""
|
||||
|
||||
#: templates/addoredit.html:104
|
||||
msgid "Source folders"
|
||||
msgstr ""
|
||||
@@ -1683,7 +1710,7 @@ msgstr ""
|
||||
msgid "Strong"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:66
|
||||
#: scripts/services/AppUtils.js:69
|
||||
msgid "Sun"
|
||||
msgstr ""
|
||||
|
||||
@@ -1703,11 +1730,11 @@ msgstr ""
|
||||
msgid "System properties"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:47
|
||||
#: scripts/services/AppUtils.js:50
|
||||
msgid "TByte"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:74
|
||||
#: scripts/services/AppUtils.js:77
|
||||
msgid "TByte/s"
|
||||
msgstr ""
|
||||
|
||||
@@ -1757,7 +1784,7 @@ msgstr ""
|
||||
|
||||
#: scripts/controllers/EditBackupController.js:131
|
||||
msgid ""
|
||||
"The path does not end with a '{0}' character, which means that you include a file, not a folder.\n"
|
||||
"The path does not end with a '{{dirsep}}' character, which means that you include a file, not a folder.\n"
|
||||
"\n"
|
||||
"Do you want to include the specified file?"
|
||||
msgstr ""
|
||||
@@ -1801,7 +1828,7 @@ msgstr ""
|
||||
msgid "This week"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:63
|
||||
#: scripts/services/AppUtils.js:66
|
||||
msgid "Thu"
|
||||
msgstr ""
|
||||
|
||||
@@ -1825,7 +1852,7 @@ msgstr ""
|
||||
msgid "Try out the new features we are working on. Don't use with important data."
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:61
|
||||
#: scripts/services/AppUtils.js:64
|
||||
msgid "Tue"
|
||||
msgstr ""
|
||||
|
||||
@@ -1890,6 +1917,10 @@ msgstr ""
|
||||
msgid "Useless"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/directives/sourceFolderPicker.js:354
|
||||
msgid "User data"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/EditUriBuiltins.js:45
|
||||
msgid "User has too many permissions"
|
||||
msgstr ""
|
||||
@@ -1923,7 +1954,7 @@ msgstr ""
|
||||
|
||||
#: scripts/services/CaptchaService.js:32
|
||||
#: scripts/services/ServerStatus.js:58
|
||||
#: templates/notificationarea.html:31
|
||||
#: templates/notificationarea.html:28
|
||||
msgid "Verifying ..."
|
||||
msgstr ""
|
||||
|
||||
@@ -1989,11 +2020,11 @@ msgstr ""
|
||||
msgid "Weak passphrase"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:62
|
||||
#: scripts/services/AppUtils.js:65
|
||||
msgid "Wed"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:54
|
||||
#: scripts/services/AppUtils.js:57
|
||||
#: templates/addoredit.html:243
|
||||
msgid "Weeks"
|
||||
msgstr ""
|
||||
@@ -2002,7 +2033,7 @@ msgstr ""
|
||||
msgid "Where do you want to restore the files to?"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:56
|
||||
#: scripts/services/AppUtils.js:59
|
||||
#: templates/addoredit.html:245
|
||||
msgid "Years"
|
||||
msgstr ""
|
||||
@@ -2146,11 +2177,11 @@ msgstr ""
|
||||
msgid "bucket/folder/subfolder"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:43
|
||||
#: scripts/services/AppUtils.js:46
|
||||
msgid "byte"
|
||||
msgstr ""
|
||||
|
||||
#: scripts/services/AppUtils.js:70
|
||||
#: scripts/services/AppUtils.js:73
|
||||
msgid "byte/s"
|
||||
msgstr ""
|
||||
|
||||
@@ -2181,11 +2212,6 @@ msgstr ""
|
||||
msgid "resuming in"
|
||||
msgstr ""
|
||||
|
||||
#: templates/export.html:43
|
||||
#: templates/notificationarea.html:9
|
||||
msgid "right click and choose "Save as ...""
|
||||
msgstr ""
|
||||
|
||||
#: templates/about.html:11
|
||||
msgid "{{appname}} was primarily developed by <a href=\"{{mail1}}\">{{dev1}}</a> and <a href=\"{{mail2}}\">{{dev2}}</a>. {{appname}} can be downloaded from <a href=\"{{websitelink}}\">{{websitename}}</a>. {{appname}} is licensed under the <a href=\"{{licenselink}}\">{{licensename}}</a>."
|
||||
msgstr ""
|
||||
|
||||
@@ -1 +1 @@
|
||||
28
|
||||
29
|
||||
|
||||
@@ -1,3 +1,16 @@
|
||||
2016-10-27 - 2.0.1.29_canary_2016-10-27
|
||||
==========
|
||||
* Better support for LVM snapshots, thanks @a1ezzz
|
||||
* Fixed additional Debian dependencies, thanks @a1ezzz
|
||||
* Additional translation files, Spanish and French
|
||||
* Improved HyperV support from CLI and UI, thanks @mnaiman and @agrajaghh
|
||||
* Fixed a bug with log-spam from Windows Service, thanks @mnaiman
|
||||
* Fixed issue with backup metadata and user that do not exist locally, thanks @gerco
|
||||
* Improved screen reading support
|
||||
* Fixed OSX icon on dark statusbar
|
||||
* Fixed crashes on Linux related to icon format
|
||||
* Updated GTK support and switched to SVG icons
|
||||
|
||||
2016-10-19
|
||||
==========
|
||||
* Some additions to the translation system
|
||||
|
||||
@@ -238,8 +238,26 @@ namespace UnixSupport
|
||||
UID = fse.OwnerUserId;
|
||||
GID = fse.OwnerGroupId;
|
||||
Permissions = (long)fse.FileAccessPermissions;
|
||||
OwnerName = fse.OwnerUser.UserName;
|
||||
GroupName = fse.OwnerGroup.GroupName;
|
||||
|
||||
try
|
||||
{
|
||||
OwnerName = fse.OwnerUser.UserName;
|
||||
}
|
||||
catch (ArgumentException)
|
||||
{
|
||||
// Could not retrieve user name, possibly the user is not defined on the local system
|
||||
OwnerName = null;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
GroupName = fse.OwnerGroup.GroupName;
|
||||
}
|
||||
catch (ArgumentException)
|
||||
{
|
||||
// Could not retrieve group name, possibly the group is not defined on the local system
|
||||
GroupName = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||