129 Commits

Author SHA1 Message Date
Burak Kaan Köse
52923ed35b Bump some more nugets, remove redundant events, and fix Outlook profile sync permission issue. 2024-08-26 22:09:00 +02:00
Burak Kaan Köse
b64cc44531 Bumping some nugets. 2024-08-26 11:30:29 +02:00
Burak Kaan Köse
1b51982551 Merge pull request #335 from bkaankose/code-quality/tabbed-commandbar
Code Quality: TabbedCommandBar
2024-08-26 01:14:29 +02:00
Aleh Khantsevich
10c94efa57 Fix priority button size 2024-08-26 00:58:41 +02:00
Aleh Khantsevich
c84316e974 Added translations for discard/send buttons in composer 2024-08-26 00:31:12 +02:00
Aleh Khantsevich
7e4d1fbf49 Replace custom pivot + command bar with tabbed commandbar 2024-08-25 23:52:55 +02:00
Burak Kaan Köse
31c7c8b46f Remove unused namespace. 2024-08-25 21:45:13 +02:00
Burak Kaan Köse
8cdb6646c4 Fixed account re-ordering issues with merged accounts. 2024-08-25 19:51:19 +02:00
Burak Kaan Köse
43a51e5f2f Per-session ImapSynchronizer protocol log based on accounts. 2024-08-25 10:32:07 +02:00
Burak Kaan Köse
d0b54ea44b Prevent delay between mail addings and better folder init cancellation. 2024-08-25 02:01:08 +02:00
Burak Kaan Köse
c8fce82dc1 Fix merged accounts report progress for incorrect account during synchronization. 2024-08-24 21:09:20 +02:00
Burak Kaan Köse
3ffccaa7e5 Fixed non-updating UI for thread items. 2024-08-24 18:12:20 +02:00
Burak Kaan Köse
3f7e7a1474 Generalized sender-from name for IMAP synchronizer. 2024-08-24 17:35:46 +02:00
Burak Kaan Köse
d30c15464b Fix account folder layout is not updated if there is a change after the synchronization. 2024-08-24 17:22:47 +02:00
Burak Kaan Köse
2a1f748469 Fix for to,cc and bcc fields are cut out in rendering page. 2024-08-24 17:22:03 +02:00
Burak Kaan Köse
74b429b1bf Applying default xaml styler configs. 2024-08-24 16:16:56 +02:00
Burak Kaan Köse
7afe1b517c Ignore task bar pinning errors. 2024-08-24 16:10:14 +02:00
Burak Kaan Köse
fcdcf5692f Fix indentation. 2024-08-24 16:06:36 +02:00
Burak Kaan Köse
735baa67ed Default XamlStyler config for the solution. 2024-08-24 16:06:14 +02:00
Burak Kaan Köse
ac00caf83e AccountContact comments. 2024-08-24 16:06:06 +02:00
Burak Kaan Köse
2ccda353e9 Debug log messages on updating flag changes. 2024-08-24 15:54:35 +02:00
Burak Kaan Köse
4257ca54b7 Fix updating folder on name changes for imap. 2024-08-24 15:54:12 +02:00
Burak Kaan Köse
20dd2ef98d Min log level to Debug for debug builds. 2024-08-24 15:53:46 +02:00
Burak Kaan Köse
8be52c9ddd Capitilize first letter of folder names if all capital for IMAP. 2024-08-24 15:38:52 +02:00
Burak Kaan Köse
3bea6619fa Enable all folder sync for gmail. 2024-08-24 15:38:23 +02:00
Burak Kaan Köse
0e5fb11c52 Fix for missing folder update changes for gmail. 2024-08-24 15:26:08 +02:00
Burak Kaan Köse
fc47f7701d Always focus to first line on editor focus. 2024-08-24 15:13:02 +02:00
Burak Kaan Köse
3e4ccf8de4 Merge pull request #331 from bkaankose/feature/ContactPictures
Account contact pictures
2024-08-24 12:55:04 +02:00
Burak Kaan Köse
8abb3c709b More logging for App.xaml.cs 2024-08-24 12:54:39 +02:00
Burak Kaan Köse
5263900620 Async cancellation support for contact picture loading. 2024-08-24 01:57:36 +02:00
Burak Kaan Köse
54ee9e5072 Remove redundant IsKnown property. 2024-08-24 01:57:19 +02:00
Burak Kaan Köse
20f4857405 Root contact concept. 2024-08-24 00:14:32 +02:00
Burak Kaan Köse
55110dd39d Merge pull request #333 from bkaankose/l10n_main
New Crowdin updates
2024-08-23 15:04:04 +02:00
Burak Kaan Köse
07d8111df9 New translations resources.json (Indonesian) 2024-08-23 15:03:46 +02:00
Burak Kaan Köse
a701b97f1e New translations resources.json (Portuguese, Brazilian) 2024-08-23 15:03:45 +02:00
Burak Kaan Köse
b025537d62 New translations resources.json (Galician) 2024-08-23 15:03:44 +02:00
Burak Kaan Köse
e68bc2de65 New translations resources.json (Chinese Simplified) 2024-08-23 15:03:43 +02:00
Burak Kaan Köse
d0b1c93382 New translations resources.json (Ukrainian) 2024-08-23 15:03:42 +02:00
Burak Kaan Köse
a08fa9eabf New translations resources.json (Turkish) 2024-08-23 15:03:40 +02:00
Burak Kaan Köse
65ef130bda New translations resources.json (Russian) 2024-08-23 15:03:39 +02:00
Burak Kaan Köse
32471a71e5 New translations resources.json (Polish) 2024-08-23 15:03:38 +02:00
Burak Kaan Köse
ca80f01907 New translations resources.json (Dutch) 2024-08-23 15:03:37 +02:00
Burak Kaan Köse
b1fae57922 New translations resources.json (Japanese) 2024-08-23 15:03:36 +02:00
Burak Kaan Köse
dea01dda2d New translations resources.json (Italian) 2024-08-23 15:03:35 +02:00
Burak Kaan Köse
9777619259 New translations resources.json (Finnish) 2024-08-23 15:03:34 +02:00
Burak Kaan Köse
6db0f84f8f New translations resources.json (Greek) 2024-08-23 15:03:32 +02:00
Burak Kaan Köse
84e382fcc5 New translations resources.json (German) 2024-08-23 15:03:31 +02:00
Burak Kaan Köse
eceed1b934 New translations resources.json (Danish) 2024-08-23 15:03:30 +02:00
Burak Kaan Köse
e7b5cd74a4 New translations resources.json (Czech) 2024-08-23 15:03:29 +02:00
Burak Kaan Köse
a98930791c New translations resources.json (Catalan) 2024-08-23 15:03:28 +02:00
Burak Kaan Köse
67b0389097 New translations resources.json (Spanish) 2024-08-23 15:03:27 +02:00
Burak Kaan Köse
ff30595fb4 New translations resources.json (French) 2024-08-23 15:03:26 +02:00
Burak Kaan Köse
d272b62c45 Remove commented code. 2024-08-23 14:54:30 +02:00
Burak Kaan Köse
c1973023d0 Fix for webview2 not focusing properly issue. 2024-08-23 03:00:22 +02:00
Burak Kaan Köse
ef4689619e Displaying contact picture for rendering page and small adjustments for addresses UI. 2024-08-23 02:23:52 +02:00
Burak Kaan Köse
9ed297a49d New contact picture display for address fields. 2024-08-23 02:23:27 +02:00
Burak Kaan Köse
9950729080 New contact retrival method. 2024-08-23 02:07:50 +02:00
Burak Kaan Köse
36eec9d061 Remove obsolete code. 2024-08-23 02:07:32 +02:00
Burak Kaan Köse
fd3a977009 Creating contract on profile update. 2024-08-23 02:07:25 +02:00
Burak Kaan Köse
ff88832cca Asynchronously load correct contact data for composer. 2024-08-23 02:06:58 +02:00
Burak Kaan Köse
d69b72b77d Fixed not-scrollable address infos for to,cc and bcc fields. 2024-08-23 02:06:28 +02:00
Burak Kaan Köse
d9bd9e996b Fix for duplicating incorrect address info in rendering page. 2024-08-23 02:05:15 +02:00
Burak Kaan Köse
f45580be70 Adding contact details for loaded mails and fixing background notification actions. 2024-08-23 01:07:00 +02:00
Burak Kaan Köse
0fbeb11304 Merge pull request #329 from bkaankose/feature/NewStartup
Handling app termination and reworked dialog messages.
2024-08-22 18:41:38 +02:00
Burak Kaan Köse
6a70c13b57 Merge pull request #330 from bkaankose/fix/editor-full-height
Make Jodit fill all available height of webview
2024-08-22 14:01:25 +02:00
Aleh Khantsevich
f797520e56 Make Jodit fill all available height of webview 2024-08-22 01:59:09 +02:00
Burak Kaan Köse
d060db3c96 Fixing an issue where doing folder config on account does not refresh the folder list. 2024-08-22 01:20:08 +02:00
Burak Kaan Köse
298344c2ab Remove async from adding attachments. 2024-08-22 00:57:46 +02:00
Burak Kaan Köse
53dbeadabb Prevent asking users for startup launch if they already did that. 2024-08-22 00:52:41 +02:00
Burak Kaan Köse
93087d7aa7 Ask for enable startup on first launch. 2024-08-22 00:51:10 +02:00
Burak Kaan Köse
c304517fc2 Revert debug code. 2024-08-21 23:30:57 +02:00
Burak Kaan Köse
af13e034c3 New resource strings for app closing handlers. 2024-08-21 23:22:32 +02:00
Burak Kaan Köse
e6b9d59160 Potential crash for imap. 2024-08-21 23:16:46 +02:00
Burak Kaan Köse
bd9cbe30c5 Fixed crashing issue with disposing composing page. 2024-08-21 23:14:59 +02:00
Burak Kaan Köse
f627226da9 Server termination and refactoring message dialogs. 2024-08-21 22:42:52 +02:00
Burak Kaan Köse
bab3272970 Fix couple potential crash issues due to unsupported APIs. 2024-08-21 19:50:14 +02:00
Burak Kaan Köse
003085db7e Merge pull request #328 from bkaankose/hotfix/LogsArchive
Fixing sharing logs
2024-08-21 13:58:39 +02:00
Burak Kaan Köse
8f98bd37c7 Implemented log archive. 2024-08-21 13:54:24 +02:00
Burak Kaan Köse
6971ef1ede Remove imap protocol log sharing since it's already moved to a separate dialog when error occurs during setup. 2024-08-21 13:49:38 +02:00
Burak Kaan Köse
0baac3dc49 Addressing some Outlook sending issues due to API delay. 2024-08-21 13:15:50 +02:00
Burak Kaan Köse
16feb8602d Getting rid of ARM32 and preperation for beta 1.8.3. 2024-08-21 03:54:36 +02:00
Burak Kaan Köse
d623129d56 Merge pull request #325 from bkaankose/features/mail-list-splitter
Mail List splitter
2024-08-19 21:21:28 +02:00
Aleh Khantsevich
9cc4c33bb1 Fix multiselect and hide sizer 2024-08-19 21:16:58 +02:00
Burak Kaan Köse
c087b40d4a Renaming event handlers and fixing the search box margin issue. 2024-08-19 21:07:21 +02:00
Aleh Khantsevich
a82e074bd4 Fix merge conflicts 2024-08-19 20:50:14 +02:00
Burak Kaan Köse
3365c099bb Missing comments. 2024-08-19 20:43:26 +02:00
Aleh Khantsevich
d8705de26f Replaced setting with reset button 2024-08-19 20:41:55 +02:00
Burak Kaan Köse
3af181e736 Merge pull request #324 from bkaankose/feature/Aliases
E-mail Aliases Support
2024-08-19 20:37:58 +02:00
Burak Kaan Köse
ba6c01b7c6 Missing comments. 2024-08-19 19:16:54 +02:00
Burak Kaan Köse
7a7cdcb041 Remove json.net dependency to STJson 2024-08-19 19:16:47 +02:00
Burak Kaan Köse
09e52bf199 Remove not implemented comment. 2024-08-19 19:05:54 +02:00
Burak Kaan Köse
a8c39a1587 Fixing send draft issue with OutlookSynchronizer. 2024-08-19 19:02:33 +02:00
Aleh Khantsevich
68536d6c34 Fix padding in narrow state 2024-08-19 18:49:35 +02:00
Aleh Khantsevich
f57c27e755 Fix multiple items selected 2024-08-19 17:15:59 +02:00
Aleh Khantsevich
9a97a27c8a Init 2024-08-19 16:26:15 +02:00
Burak Kaan Köse
07bb90dda9 Refactoring outlook draft creation and sending. 2024-08-19 03:44:16 +02:00
Burak Kaan Köse
3bb156f4da Handling of OutlookSynchronizer alias. 2024-08-18 22:45:23 +02:00
Burak Kaan Köse
e13e0efcc6 Bump some nugets. 2024-08-18 22:44:55 +02:00
Burak Kaan Köse
3ae0a94159 Remove folder init progress bar in mail list page. 2024-08-18 22:27:31 +02:00
Burak Kaan Köse
eec67ec7dc Fixed an issue where re-loading messages with attachments break the included attachment encodings. 2024-08-18 22:25:29 +02:00
Burak Kaan Köse
cf51853eec Removed non-mandatory reply-to validation. 2024-08-18 01:11:23 +02:00
Burak Kaan Köse
67838b28a4 Syntactic sugar. 2024-08-18 01:06:21 +02:00
Burak Kaan Köse
bf68e3b7d5 Fix sending draft issue. 2024-08-18 01:05:43 +02:00
Burak Kaan Köse
91ed0bb8bd Ability to select alias in composer page. 2024-08-17 22:55:58 +02:00
Burak Kaan Köse
55fe791c2a Handling of missing mime downloads and mail processed messages. 2024-08-17 20:19:01 +02:00
Burak Kaan Köse
747efac2ec Reworked aliases. 2024-08-17 19:54:52 +02:00
Burak Kaan Köse
a87df2e9f6 Fixed an issue where deleting account navigates back to mail list of the next account. 2024-08-17 19:54:44 +02:00
Burak Kaan Köse
2e4a664744 More detailed ImapImplementation for ID extension. 2024-08-17 19:53:50 +02:00
Tiktack
579a22ea45 Remove self from reply all when no other recepients (#319) 2024-08-17 15:00:25 +02:00
Burak Kaan Köse
abff850427 Managing account aliases and profile synchronization for outlook and gmail. 2024-08-17 03:43:37 +02:00
Burak Kaan Köse
f1154058ba Fix ascending download for messages. QQ server issue will be handled later. 2024-08-17 00:03:45 +02:00
Burak Kaan Köse
cf9f308b7f Updating aliases during profile sync for Gmail. 2024-08-16 01:29:31 +02:00
Burak Kaan Köse
1791df236c Remove unused extension class. 2024-08-16 01:03:00 +02:00
Burak Kaan Köse
7211f94f08 Try - catch for outlook profile sync. 2024-08-16 00:40:10 +02:00
Burak Kaan Köse
7b0343c87f Added sender name comment for gmail. 2024-08-16 00:37:50 +02:00
Burak Kaan Köse
b80f0276b4 Sender Name and Profile Picture synchronization for Outlook 2024-08-16 00:37:38 +02:00
Burak Kaan Köse
8f66fcbb00 Activated contact service for Gmail to retrieve profile picture and sender name. 2024-08-15 23:57:45 +02:00
Burak Kaan Köse
fe449ee1f3 Comments for alias entity. 2024-08-15 16:13:18 +02:00
Burak Kaan Köse
34d6d95186 Including ReplyToAddress for alias. 2024-08-15 16:11:12 +02:00
Burak Kaan Köse
05ddc0660a Creating MailAccountAlias entity. 2024-08-15 16:02:02 +02:00
Burak Kaan Köse
c6047a8428 Version bump 2024-08-13 23:40:09 +02:00
Burak Kaan Köse
bc4838578e Handling null client connection while sending server response. 2024-08-13 22:57:36 +02:00
Burak Kaan Köse
548996405a Fix incorrect accounts' mails are going to different accounts. 2024-08-13 22:54:36 +02:00
Burak Kaan Köse
a9a5f0bd14 Ascending downloading of mails since some servers require it. 2024-08-13 22:54:14 +02:00
Burak Kaan Köse
ec05ff6123 Optional splash screen. 2024-08-13 19:26:24 +02:00
Burak Kaan Köse
10c7ab421b Setting exception on connection failure. 2024-08-13 16:14:25 +02:00
Burak Kaan Köse
a8a5cc53ea Merge branch 'main' of https://github.com/bkaankose/Wino-Mail 2024-08-13 16:13:25 +02:00
Burak Kaan Köse
8fe48ca438 Fixed an issue where reconnecting doesn't await the handle in the second attempt. 2024-08-13 16:12:34 +02:00
Tiktack
cbd5a515a9 Fix account signature preferences during draft creation (#314)
* Pass account ID instead of account to draft creation method, since account object can be stale.

* Configure await
2024-08-12 00:56:26 +02:00
175 changed files with 6292 additions and 3863 deletions

42
Settings.XamlStyler Normal file
View File

@@ -0,0 +1,42 @@
{
"AttributesTolerance": 2,
"KeepFirstAttributeOnSameLine": false,
"MaxAttributeCharactersPerLine": 0,
"MaxAttributesPerLine": 1,
"NewlineExemptionElements": "RadialGradientBrush, GradientStop, LinearGradientBrush, ScaleTransform, SkewTransform, RotateTransform, TranslateTransform, Trigger, Condition, Setter",
"SeparateByGroups": false,
"AttributeIndentation": 0,
"AttributeIndentationStyle": 1,
"RemoveDesignTimeReferences": false,
"IgnoreDesignTimeReferencePrefix": false,
"EnableAttributeReordering": true,
"AttributeOrderingRuleGroups": [
"x:Class",
"xmlns, xmlns:x",
"xmlns:*",
"x:Key, Key, x:Name, Name, x:Uid, Uid, Title",
"Grid.Row, Grid.RowSpan, Grid.Column, Grid.ColumnSpan, Canvas.Left, Canvas.Top, Canvas.Right, Canvas.Bottom",
"Width, Height, MinWidth, MinHeight, MaxWidth, MaxHeight",
"Margin, Padding, HorizontalAlignment, VerticalAlignment, HorizontalContentAlignment, VerticalContentAlignment, Panel.ZIndex",
"*:*, *",
"PageSource, PageIndex, Offset, Color, TargetName, Property, Value, StartPoint, EndPoint",
"mc:Ignorable, d:IsDataSource, d:LayoutOverrides, d:IsStaticText",
"Storyboard.*, From, To, Duration"
],
"FirstLineAttributes": "",
"OrderAttributesByName": true,
"PutEndingBracketOnNewLine": false,
"RemoveEndingTagOfEmptyElement": true,
"SpaceBeforeClosingSlash": true,
"RootElementLineBreakRule": 0,
"ReorderVSM": 2,
"ReorderGridChildren": false,
"ReorderCanvasChildren": false,
"ReorderSetters": 0,
"FormatMarkupExtension": true,
"NoNewLineMarkupExtensions": "x:Bind, Binding",
"ThicknessSeparator": 2,
"ThicknessAttributes": "Margin, Padding, BorderThickness, ThumbnailClipMargin",
"FormatOnSave": true,
"CommentPadding": 2,
}

View File

@@ -38,26 +38,6 @@
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
<PlatformTarget>ARM</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\ARM\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
<PlatformTarget>ARM</PlatformTarget>
<OutputPath>bin\ARM\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM64'">
<PlatformTarget>ARM64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>

View File

@@ -13,5 +13,6 @@
public const string ClientLogFile = "Client_.log";
public const string ServerLogFile = "Server_.log";
public const string LogArchiveFileName = "WinoLogs.zip";
}
}

View File

@@ -1,6 +1,6 @@
using SQLite;
using System;
using System;
using System.Collections.Generic;
using SQLite;
namespace Wino.Core.Domain.Entities
{
@@ -9,23 +9,41 @@ namespace Wino.Core.Domain.Entities
/// These values will be inserted during MIME fetch.
/// </summary>
// TODO: This can easily evolve to Contact store, just like People app in Windows 10/11.
// Do it.
public class AddressInformation : IEquatable<AddressInformation>
public class AccountContact : IEquatable<AccountContact>
{
/// <summary>
/// E-mail address of the contact.
/// </summary>
[PrimaryKey]
public string Address { get; set; }
/// <summary>
/// Display name of the contact.
/// </summary>
public string Name { get; set; }
/// <summary>
/// Base64 encoded profile image of the contact.
/// </summary>
public string Base64ContactPicture { get; set; }
/// <summary>
/// All registered accounts have their contacts registered as root.
/// Root contacts must not be overridden by any configuration.
/// They are created on account creation.
/// </summary>
public bool IsRootContact { get; set; }
public string DisplayName => Address == Name ? Address : $"{Name} <{Address}>";
public override bool Equals(object obj)
{
return Equals(obj as AddressInformation);
return Equals(obj as AccountContact);
}
public bool Equals(AddressInformation other)
public bool Equals(AccountContact other)
{
return !(other is null) &&
Address == other.Address &&
@@ -40,12 +58,12 @@ namespace Wino.Core.Domain.Entities
return hashCode;
}
public static bool operator ==(AddressInformation left, AddressInformation right)
public static bool operator ==(AccountContact left, AccountContact right)
{
return EqualityComparer<AddressInformation>.Default.Equals(left, right);
return EqualityComparer<AccountContact>.Default.Equals(left, right);
}
public static bool operator !=(AddressInformation left, AddressInformation right)
public static bool operator !=(AccountContact left, AccountContact right)
{
return !(left == right);
}

View File

@@ -44,6 +44,11 @@ namespace Wino.Core.Domain.Entities
/// </summary>
public string AccountColorHex { get; set; }
/// <summary>
/// Base64 encoded profile picture of the account.
/// </summary>
public string Base64ProfilePictureData { get; set; }
/// <summary>
/// Gets or sets the listing order of the account in the accounts list.
/// </summary>
@@ -78,5 +83,15 @@ namespace Wino.Core.Domain.Entities
/// </summary>
[Ignore]
public MailAccountPreferences Preferences { get; set; }
/// <summary>
/// Gets whether the account can perform ProfileInformation sync type.
/// </summary>
public bool IsProfileInfoSyncSupported => ProviderType == MailProviderType.Outlook || ProviderType == MailProviderType.Office365 || ProviderType == MailProviderType.Gmail;
/// <summary>
/// Gets whether the account can perform AliasInformation sync type.
/// </summary>
public bool IsAliasSyncSupported => ProviderType == MailProviderType.Gmail;
}
}

View File

@@ -0,0 +1,56 @@
using System;
using SQLite;
namespace Wino.Core.Domain.Entities
{
public class RemoteAccountAlias
{
/// <summary>
/// Display address of the alias.
/// </summary>
public string AliasAddress { get; set; }
/// <summary>
/// Address to be included in Reply-To header when alias is used for sending messages.
/// </summary>
public string ReplyToAddress { get; set; }
/// <summary>
/// Whether this alias is the primary alias for the account.
/// </summary>
public bool IsPrimary { get; set; }
/// <summary>
/// Whether the alias is verified by the server.
/// Only Gmail aliases are verified for now.
/// Non-verified alias messages might be rejected by SMTP server.
/// </summary>
public bool IsVerified { get; set; }
/// <summary>
/// Whether this alias is the root alias for the account.
/// Root alias means the first alias that was created for the account.
/// It can't be deleted or changed.
/// </summary>
public bool IsRootAlias { get; set; }
}
public class MailAccountAlias : RemoteAccountAlias
{
/// <summary>
/// Unique Id for the alias.
/// </summary>
[PrimaryKey]
public Guid Id { get; set; }
/// <summary>
/// Account id that this alias is attached to.
/// </summary>
public Guid AccountId { get; set; }
/// <summary>
/// Root aliases can't be deleted.
/// </summary>
public bool CanDelete => !IsRootAlias;
}
}

View File

@@ -141,7 +141,16 @@ namespace Wino.Core.Domain.Entities
/// </summary>
[Ignore]
public MailAccount AssignedAccount { get; set; }
public IEnumerable<Guid> GetContainingIds() => new[] { UniqueId };
/// <summary>
/// Contact information of the sender if exists.
/// Warning: This field is not populated by queries.
/// Services or View Models are responsible for populating this field.
/// </summary>
[Ignore]
public AccountContact SenderContact { get; set; }
public IEnumerable<Guid> GetContainingIds() => [UniqueId];
public override string ToString() => $"{Subject} <-> {Id}";
}
}

View File

@@ -9,6 +9,7 @@
ManuelSetupWaiting,
TestingConnection,
AutoDiscoverySetup,
AutoDiscoveryInProgress
AutoDiscoveryInProgress,
FetchingProfileInformation
}
}

View File

@@ -1,11 +0,0 @@
namespace Wino.Core.Domain.Enums
{
public enum EditorToolbarSectionType
{
None,
Format,
Insert,
Draw,
Options
}
}

View File

@@ -1,8 +0,0 @@
namespace Wino.Core.Domain.Enums
{
public enum MenuPaneMode
{
Visible,
Hidden
}
}

View File

@@ -4,8 +4,10 @@
{
FoldersOnly, // Only synchronize folder metadata.
ExecuteRequests, // Run the queued requests, and then synchronize if needed.
Inbox, // Only Inbox
Inbox, // Only Inbox, Sent and Draft folders.
Custom, // Only sync folders that are specified in the options.
Full, // Synchronize everything
Full, // Synchronize all folders. This won't update profile or alias information.
UpdateProfile, // Only update profile information
Alias, // Only update alias information
}
}

View File

@@ -0,0 +1,10 @@
namespace Wino.Core.Domain.Enums
{
public enum WinoCustomMessageDialogIcon
{
Information,
Warning,
Error,
Question
}
}

View File

@@ -23,5 +23,6 @@
LanguageTimePage,
AppPreferencesPage,
SettingOptionsPage,
AliasManagementPage
}
}

View File

@@ -0,0 +1,7 @@
namespace Wino.Core.Domain.Exceptions
{
public class MissingAliasException : System.Exception
{
public MissingAliasException() : base(Translator.Exception_MissingAlias) { }
}
}

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Models.Accounts;
namespace Wino.Core.Domain.Interfaces
{
@@ -100,5 +101,59 @@ namespace Wino.Core.Domain.Interfaces
/// </summary>
/// <param name="accountIdOrderPair">AccountId-OrderNumber pair for all accounts.</param>
Task UpdateAccountOrdersAsync(Dictionary<Guid, int> accountIdOrderPair);
/// <summary>
/// Returns the account aliases.
/// </summary>
/// <param name="accountId">Account id.</param>
/// <returns>A list of MailAccountAlias that has e-mail aliases.</returns>
Task<List<MailAccountAlias>> GetAccountAliasesAsync(Guid accountId);
/// <summary>
/// Updated account's aliases.
/// </summary>
/// <param name="accountId">Account id to update aliases for.</param>
/// <param name="aliases">Full list of updated aliases.</param>
/// <returns></returns>
Task UpdateAccountAliasesAsync(Guid accountId, List<MailAccountAlias> aliases);
/// <summary>
/// Delete account alias.
/// </summary>
/// <param name="aliasId">Alias to remove.</param>
Task DeleteAccountAliasAsync(Guid aliasId);
/// <summary>
/// Updated profile information of the account.
/// </summary>
/// <param name="accountId">Account id to update info for.</param>
/// <param name="profileInformation">Info data.</param>
/// <returns></returns>
Task UpdateProfileInformationAsync(Guid accountId, ProfileInformation profileInformation);
/// <summary>
/// Creates a root + primary alias for the account.
/// This is only called when the account is created.
/// </summary>
/// <param name="accountId">Account id.</param>
/// <param name="address">Address to create root primary alias from.</param>
Task CreateRootAliasAsync(Guid accountId, string address);
/// <summary>
/// Will compare local-remote aliases and update the local ones or add/delete new ones.
/// </summary>
/// <param name="remoteAccountAliases">Remotely fetched basic alias info from synchronizer.</param>
/// <param name="account">Account to update remote aliases for..</param>
Task UpdateRemoteAliasInformationAsync(MailAccount account, List<RemoteAccountAlias> remoteAccountAliases);
/// <summary>
/// Gets the primary account alias for the given account id.
/// Used when creating draft messages.
/// </summary>
/// <param name="accountId">Account id.</param>
/// <returns>Primary alias for the account.</returns>
Task<MailAccountAlias> GetPrimaryAccountAliasAsync(Guid accountId);
}
}

View File

@@ -1,10 +1,18 @@
namespace Wino.Core.Domain.Interfaces
using System.Threading.Tasks;
namespace Wino.Core.Domain.Interfaces
{
public interface IBackgroundTaskService
{
/// <summary>
/// Unregisters all existing background tasks. Useful for migrations.
/// Unregisters all background tasks once.
/// This is used to clean up the background tasks when the app is updated.
/// </summary>
void UnregisterAllBackgroundTask();
/// <summary>
/// Registers required background tasks.
/// </summary>
Task RegisterBackgroundTasksAsync();
}
}

View File

@@ -3,6 +3,7 @@ using System.Threading.Tasks;
using MailKit;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Accounts;
using Wino.Core.Domain.Models.MailItem;
using Wino.Core.Domain.Models.Synchronization;
@@ -43,6 +44,13 @@ namespace Wino.Core.Domain.Interfaces
/// <returns>Result summary of synchronization.</returns>
Task<SynchronizationResult> SynchronizeAsync(SynchronizationOptions options, CancellationToken cancellationToken = default);
/// <summary>
/// Synchronizes profile information with the server.
/// Sender name and Profile picture are updated.
/// </summary>
/// <returns>Profile information model that holds the values.</returns>
Task<ProfileInformation> GetProfileInformationAsync();
/// <summary>
/// Downloads a single MIME message from the server and saves it to disk.
/// </summary>

View File

@@ -1,9 +0,0 @@
using System.Threading.Tasks;
namespace Wino.Core.Domain.Interfaces
{
public interface IConfirmationDialog
{
Task<bool> ShowDialogAsync(string title, string message, string approveButtonTitle);
}
}

View File

@@ -0,0 +1,9 @@
using Wino.Core.Domain.Entities;
namespace Wino.Core.Domain.Interfaces
{
public interface ICreateAccountAliasDialog
{
public MailAccountAlias CreatedAccountAlias { get; set; }
}
}

View File

@@ -15,11 +15,10 @@ namespace Wino.Core.Domain.Interfaces
Task<byte[]> PickWindowsFileContentAsync(params object[] typeFilters);
Task<bool> ShowConfirmationDialogAsync(string question, string title, string confirmationButtonTitle);
Task<bool> ShowHardDeleteConfirmationAsync();
Task<IStoreRatingDialog> ShowRatingDialogAsync();
Task HandleSystemFolderConfigurationDialogAsync(Guid accountId, IFolderService folderService);
Task<bool> ShowCustomThemeBuilderDialogAsync();
Task ShowMessageAsync(string message, string title);
Task ShowMessageAsync(string message, string title, WinoCustomMessageDialogIcon icon);
void InfoBarMessage(string title, string message, InfoBarMessageType messageType);
void InfoBarMessage(string title, string message, InfoBarMessageType messageType, string actionButtonText, Action action);
@@ -53,5 +52,17 @@ namespace Wino.Core.Domain.Interfaces
/// </summary>
/// <returns>Signature information. Null if canceled.</returns>
Task<AccountSignature> ShowSignatureEditorDialog(AccountSignature signatureModel = null);
/// <summary>
/// Presents a dialog to the user for account alias creation/modification.
/// </summary>
/// <returns>Created alias model if not canceled.</returns>
Task<ICreateAccountAliasDialog> ShowCreateAccountAliasDialogAsync();
Task<bool> ShowWinoCustomMessageDialogAsync(string title,
string description,
string approveButtonText,
WinoCustomMessageDialogIcon? icon,
string cancelButtonText = "",
string dontAskAgainConfigurationKey = "");
}
}

View File

@@ -8,5 +8,13 @@ namespace Wino.Core.Domain.Interfaces
Task<string> CopyFileAsync(string sourceFilePath, string destinationFolderPath);
Task<Stream> GetFileStreamAsync(string folderPath, string fileName);
Task<string> GetFileContentByApplicationUriAsync(string resourcePath);
/// <summary>
/// Zips all existing logs and saves to picked destination folder.
/// </summary>
/// <param name="logsFolder">Folder path where logs are stored.</param>
/// <param name="destinationFolder">Target path to save the archive file.</param>
/// <returns>True if zip is created with at least one item, false if logs are not found.</returns>
Task<bool> SaveLogsToFolderAsync(string logsFolder, string destinationFolder);
}
}

View File

@@ -1,7 +1,7 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MimeKit;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Models.MailItem;
@@ -11,7 +11,7 @@ namespace Wino.Core.Domain.Interfaces
{
Task<MailCopy> GetSingleMailItemAsync(string mailCopyId, string remoteFolderId);
Task<MailCopy> GetSingleMailItemAsync(Guid uniqueMailId);
Task<List<IMailItem>> FetchMailsAsync(MailListInitializationOptions options);
Task<List<IMailItem>> FetchMailsAsync(MailListInitializationOptions options, CancellationToken cancellationToken = default);
/// <summary>
/// Deletes all mail copies for all folders.
@@ -103,9 +103,9 @@ namespace Wino.Core.Domain.Interfaces
/// Creates a draft MailCopy and MimeMessage based on the given options.
/// For forward/reply it would include the referenced message.
/// </summary>
/// <param name="composerAccount">Account which should have new draft.</param>
/// <param name="accountId">AccountId which should have new draft.</param>
/// <param name="draftCreationOptions">Options like new email/forward/draft.</param>
/// <returns>Draft MailCopy and Draft MimeMessage as base64.</returns>
Task<(MailCopy draftMailCopy, string draftBase64MimeMessage)> CreateDraftAsync(MailAccount composerAccount, DraftCreationOptions draftCreationOptions);
Task<(MailCopy draftMailCopy, string draftBase64MimeMessage)> CreateDraftAsync(Guid accountId, DraftCreationOptions draftCreationOptions);
}
}

View File

@@ -48,7 +48,7 @@ namespace Wino.Core.Domain.Interfaces
/// We add small delay for the following synchronization after executing current requests to overcome this issue.
/// Default is false.
/// </summary>
bool DelayExecution { get; }
int ResynchronizationDelay { get; }
}
public interface IRequest : IRequestBase

View File

@@ -1,8 +0,0 @@
namespace Wino.Core.Domain.Interfaces
{
public interface IStoreRatingDialog
{
bool DontAskAgain { get; }
bool RateWinoClicked { get; }
}
}

View File

@@ -9,7 +9,6 @@ namespace Wino.Core.Domain.Interfaces
public interface IThemeService : IInitializeAsync
{
event EventHandler<ApplicationElementTheme> ElementThemeChanged;
event EventHandler<string> AccentColorChangedBySystem;
event EventHandler<string> AccentColorChanged;
Task<List<AppThemeBase>> GetAvailableThemesAsync();

View File

@@ -2,5 +2,5 @@
namespace Wino.Core.Domain.Models.Accounts
{
public record AccountCreationDialogResult(MailProviderType ProviderType, string AccountName, string SenderName, string AccountColorHex = "");
public record AccountCreationDialogResult(MailProviderType ProviderType, string AccountName, string AccountColorHex = "");
}

View File

@@ -0,0 +1,9 @@
namespace Wino.Core.Domain.Models.Accounts
{
/// <summary>
/// Encapsulates the profile information of an account.
/// </summary>
/// <param name="SenderName">Display sender name for the account.</param>
/// <param name="Base64ProfilePictureData">Base 64 encoded profile picture data of the account. Thumbnail size.</param>
public record ProfileInformation(string SenderName, string Base64ProfilePictureData);
}

View File

@@ -14,7 +14,6 @@ namespace Wino.Core.Domain.Models.Accounts
public string ProviderImage => $"ms-appx:///Assets/Providers/{Type}.png";
public bool IsSupported => Type == MailProviderType.Outlook || Type == MailProviderType.Gmail || Type == MailProviderType.IMAP4;
public bool RequireSenderNameOnCreationDialog => Type != MailProviderType.IMAP4;
public ProviderDetail(MailProviderType type)
{

View File

@@ -33,7 +33,7 @@ namespace Wino.Core.Domain.Models.Authorization
ClientId = clientId;
// Creates the OAuth 2.0 authorization request.
return string.Format("{0}?response_type=code&scope=https://mail.google.com/ https://www.googleapis.com/auth/gmail.labels&redirect_uri={1}&client_id={2}&state={3}&code_challenge={4}&code_challenge_method={5}",
return string.Format("{0}?response_type=code&scope=https://mail.google.com/ https://www.googleapis.com/auth/gmail.labels https://www.googleapis.com/auth/userinfo.profile&redirect_uri={1}&client_id={2}&state={3}&code_challenge={4}&code_challenge_method={5}",
authorizationEndpoint,
Uri.EscapeDataString(RedirectUri),
ClientId,

View File

@@ -2,13 +2,18 @@
using System.Text.Json.Serialization;
using MimeKit;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Extensions;
namespace Wino.Core.Domain.Models.MailItem;
public class DraftPreparationRequest
{
public DraftPreparationRequest(MailAccount account, MailCopy createdLocalDraftCopy, string base64EncodedMimeMessage, MailCopy referenceMailCopy = null)
public DraftPreparationRequest(MailAccount account,
MailCopy createdLocalDraftCopy,
string base64EncodedMimeMessage,
DraftCreationReason reason,
MailCopy referenceMailCopy = null)
{
Account = account ?? throw new ArgumentNullException(nameof(account));
@@ -19,6 +24,7 @@ public class DraftPreparationRequest
// This is additional work when deserialization needed, but not much to do atm.
Base64LocalDraftMimeMessage = base64EncodedMimeMessage;
Reason = reason;
}
[JsonConstructor]
@@ -29,6 +35,7 @@ public class DraftPreparationRequest
public MailCopy ReferenceMailCopy { get; set; }
public string Base64LocalDraftMimeMessage { get; set; }
public DraftCreationReason Reason { get; set; }
[JsonIgnore]
private MimeMessage createdLocalDraftMimeMessage;
@@ -44,5 +51,5 @@ public class DraftPreparationRequest
}
}
public MailAccount Account { get; }
public MailAccount Account { get; set; }
}

View File

@@ -29,5 +29,6 @@ namespace Wino.Core.Domain.Models.MailItem
MailItemFolder AssignedFolder { get; }
MailAccount AssignedAccount { get; }
AccountContact SenderContact { get; }
}
}

View File

@@ -5,45 +5,17 @@ using Wino.Core.Domain.Extensions;
namespace Wino.Core.Domain.Models.MailItem
{
public class SendDraftPreparationRequest
public record SendDraftPreparationRequest(MailCopy MailItem,
MailAccountAlias SendingAlias,
MailItemFolder SentFolder,
MailItemFolder DraftFolder,
MailAccountPreferences AccountPreferences,
string Base64MimeMessage)
{
public MailCopy MailItem { get; set; }
public string Base64MimeMessage { get; set; }
public MailItemFolder SentFolder { get; set; }
public MailItemFolder DraftFolder { get; set; }
public MailAccountPreferences AccountPreferences { get; set; }
public SendDraftPreparationRequest(MailCopy mailItem,
MailItemFolder sentFolder,
MailItemFolder draftFolder,
MailAccountPreferences accountPreferences,
string base64MimeMessage)
{
MailItem = mailItem;
SentFolder = sentFolder;
DraftFolder = draftFolder;
AccountPreferences = accountPreferences;
Base64MimeMessage = base64MimeMessage;
}
[JsonConstructor]
private SendDraftPreparationRequest() { }
[JsonIgnore]
private MimeMessage mime;
[JsonIgnore]
public MimeMessage Mime
{
get
{
if (mime == null)
{
mime = Base64MimeMessage.GetMimeMessageFromBase64();
}
return mime;
}
}
public MimeMessage Mime => mime ??= Base64MimeMessage.GetMimeMessageFromBase64();
}
}

View File

@@ -85,6 +85,8 @@ namespace Wino.Core.Domain.Models.MailItem
public Guid FileId => LatestMailItem?.FileId ?? Guid.Empty;
public AccountContact SenderContact => LatestMailItem?.SenderContact;
#endregion
}
}

View File

@@ -1,4 +0,0 @@
namespace Wino.Core.Domain.Models.Personalization
{
public record MailListPaneLengthPreferences(string Title, double Length);
}

View File

@@ -1,30 +0,0 @@
using Wino.Core.Domain.Enums;
namespace Wino.Core.Domain.Models.Reader
{
public class EditorToolbarSection
{
public EditorToolbarSectionType SectionType { get; set; }
public string Title
{
get
{
switch (SectionType)
{
case EditorToolbarSectionType.None:
return Translator.EditorToolbarOption_None;
case EditorToolbarSectionType.Format:
return Translator.EditorToolbarOption_Format;
case EditorToolbarSectionType.Insert:
return Translator.EditorToolbarOption_Insert;
case EditorToolbarSectionType.Draw:
return Translator.EditorToolbarOption_Draw;
case EditorToolbarSectionType.Options:
return Translator.EditorToolbarOption_Options;
default:
return "Unknown Editor Option";
}
}
}
}
}

View File

@@ -12,7 +12,7 @@ namespace Wino.Core.Domain.Models.Requests
public abstract void ApplyUIChanges();
public abstract void RevertUIChanges();
public virtual bool DelayExecution => false;
public virtual int ResynchronizationDelay => 0;
}
public abstract record FolderRequestBase(MailItemFolder Folder, MailSynchronizerOperation Operation) : IFolderRequest
@@ -20,7 +20,7 @@ namespace Wino.Core.Domain.Models.Requests
public abstract void ApplyUIChanges();
public abstract void RevertUIChanges();
public virtual bool DelayExecution => false;
public virtual int ResynchronizationDelay => 0;
}
public abstract record BatchRequestBase(IEnumerable<IRequest> Items, MailSynchronizerOperation Operation) : IBatchChangeRequest
@@ -28,6 +28,7 @@ namespace Wino.Core.Domain.Models.Requests
public abstract void ApplyUIChanges();
public abstract void RevertUIChanges();
public virtual bool DelayExecution => false;
public virtual int ResynchronizationDelay => 0;
public virtual bool ExecuteSerialBatch => false;
}
}

View File

@@ -3,14 +3,11 @@ using Wino.Core.Domain.Interfaces;
namespace Wino.Core.Domain.Models.Requests
{
/// <summary>
/// Encapsulates request to queue and account for synchronizer.
/// </summary>
/// <param name="AccountId"><inheritdoc/></param>
/// <param name="Request"></param>
/// <param name="AccountId">Which account to execute this request for.</param>
/// <param name="Request">Prepared request for the server.</param>
/// <param name="AccountId">Whihc account to execute this request for.</param>
public record ServerRequestPackage(Guid AccountId, IRequestBase Request) : IClientMessage
{
public override string ToString() => $"Server Package: {Request.GetType().Name}";

View File

@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Models.Accounts;
using Wino.Core.Domain.Models.MailItem;
namespace Wino.Core.Domain.Models.Synchronization
@@ -15,14 +16,23 @@ namespace Wino.Core.Domain.Models.Synchronization
/// It's ignored in serialization. Client should not react to this.
/// </summary>
[JsonIgnore]
public IEnumerable<IMailItem> DownloadedMessages { get; set; } = new List<IMailItem>();
public IEnumerable<IMailItem> DownloadedMessages { get; set; } = [];
public ProfileInformation ProfileInformation { get; set; }
public SynchronizationCompletedState CompletedState { get; set; }
public static SynchronizationResult Empty => new() { CompletedState = SynchronizationCompletedState.Success };
public static SynchronizationResult Completed(IEnumerable<IMailItem> downloadedMessages)
=> new() { DownloadedMessages = downloadedMessages, CompletedState = SynchronizationCompletedState.Success };
public static SynchronizationResult Completed(IEnumerable<IMailItem> downloadedMessages, ProfileInformation profileInformation = null)
=> new()
{
DownloadedMessages = downloadedMessages,
ProfileInformation = profileInformation,
CompletedState = SynchronizationCompletedState.Success
};
public static SynchronizationResult Canceled => new() { CompletedState = SynchronizationCompletedState.Canceled };
public static SynchronizationResult Failed => new() { CompletedState = SynchronizationCompletedState.Failed };
}
}

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "initializing",
"AccountCreationDialog_PreparingFolders": "We are getting folder information at the moment.",
"AccountCreationDialog_SigninIn": "Account information is being saved.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Account Name",
"AccountEditDialog_Title": "Edit Account",
"AccountPickerDialog_Title": "Pick an account",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AddHyperlink": "Add",
"AutoDiscoveryProgressMessage": "Searching for mail settings...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Advanced Configuration",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Your credentials will only be stored locally on your computer.",
"BasicIMAPSetupDialog_Description": "Some accounts require additional steps to sign in",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Password",
"BasicIMAPSetupDialog_Title": "IMAP Account",
"Buttons_AddAccount": "Add Account",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Apply Theme",
"Buttons_Browse": "Browse",
"Buttons_Cancel": "Cancel",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Sign In",
"Buttons_TryAgain": "Try Again",
"Buttons_Yes": "Yes",
"Buttons_Reset": "Reset",
"Center": "Center",
"ComingSoon": "Coming soon...",
"ComposerFrom": "From: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Set custom wallpaper",
"DialogMessage_AccountLimitMessage": "You have reached the account creation limit.\nWould you like to purchase 'Unlimited Account' add-on to continue?",
"DialogMessage_AccountLimitTitle": "Account Limit Reached",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Do you want to permanently delete all the mails in this folder?",
"DialogMessage_CleanupFolderTitle": "Cleanup Folder",
"DialogMessage_ComposerMissingRecipientMessage": "Message has no recipient.",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "To stop getting messages from {0}, go to their website to unsubscribe.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Go to website",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Do you want to stop getting messages from {0}? Wino will unsubscribe for you by sending an email from your email account to {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Don't ask again",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino doesn't have it's own Discord server, but special 'wino-mail' channel is hosted at 'Developer Sanctuary' server.\nTo get the updates about Wino please join Developer Sanctuary server and follow 'wino-mail' channel under 'Community Projects'\n\nYou will be directed to server URL since Discord doesn't support channel invites.",
"DiscordChannelDisclaimerTitle": "Important Discord Information",
"Draft": "Draft",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Draw",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Insert",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Light mode",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool failed.",
"Exception_AuthenticationCanceled": "Authentication canceled",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "You must provide a name.",
"Exception_CustomThemeMissingWallpaper": "You must provide a custom background image.",
"Exception_FailedToSynchronizeFolders": "Failed to synchronize folders",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri is null on activation.",
"Exception_GoogleAuthCorruptedCode": "Corrupted authorization response.",
"Exception_GoogleAuthError": "OAuth authorization error: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "This unsubscribe link is invalid. Failed to unsubscribe from the list.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authentication method",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Connection security",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Center Action",
"SettingsHoverActionLeft": "Left Action",
"SettingsHoverActionRight": "Right Action",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"CategoriesFolderNameOverride": "Categories",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "More",
"SettingsOptions_Title": "Settings",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "You didn't setup any accounts yet.",
"SettingsNotifications_Description": "Turn on or off notifications for this account.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Change the width of the mail list.",
"SettingsPaneLength_Title": "Mail List Pane Length",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Show much more love ❤️ All donations are appreciated.",
"SettingsPaypal_Title": "Donate via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Compact Mode",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "inicializace",
"AccountCreationDialog_PreparingFolders": "Stahování informací o složkách.",
"AccountCreationDialog_SigninIn": "Probíhá ukládání informací o účtu.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Název účtu",
"AccountEditDialog_Title": "Upravit účet",
"AccountPickerDialog_Title": "Vybrat účet",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "např. Jan Novák",
"AddHyperlink": "Přidat",
"AutoDiscoveryProgressMessage": "Vyhledávání v nastaveních mailu...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Pokročilá nastavení",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Vaše nastavení budou uložena pouze lokálně na vašem počítači.",
"BasicIMAPSetupDialog_Description": "Některé účty vyžadují další kroky k přihlášení",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Heslo",
"BasicIMAPSetupDialog_Title": "IMAP účet",
"Buttons_AddAccount": "Přidat účet",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Použít motiv",
"Buttons_Browse": "Procházet",
"Buttons_Cancel": "Zrušit",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Přihlásit se",
"Buttons_TryAgain": "Zkusit znovu",
"Buttons_Yes": "Ano",
"Buttons_Reset": "Reset",
"Center": "Nastřed",
"ComingSoon": "Již brzy...",
"ComposerFrom": "Od: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Nastav vlastní pozadí",
"DialogMessage_AccountLimitMessage": "Dosáhli jste limitu vytvořených účtů. Chcete si zakoupit doplněk \"Neomezený účet\", aby jste mohli pokračovat?",
"DialogMessage_AccountLimitTitle": "Dosažen limit počtu účtú",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Přejete si trvale smazat všechny maily v této složce?",
"DialogMessage_CleanupFolderTitle": "Vyprázdnit složku",
"DialogMessage_ComposerMissingRecipientMessage": "Zpráva nemá žádného příjemce.",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Chcete-li přestat dostávat zprávy od {0}, přejděte na jejich webové stránky a odhlašte se.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Přejít na web",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Chcete přestat dostávat zprávy od {0}? Wino se za vás odhlásí zasláním e-mailu z Vašeho e-mailového účtu na {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Příště se neptat",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino nemá vlastní Discord server, ale speciální kanál 'wino-mail' je hostován na serveru 'Developer Sanctuary'.\nChcete-li získat informace o Winu, připojte se k vývojářskému serveru a sledujte 'wino-mail' kanál v rámci 'Community Projects'. \n\nBudete přesměrováni na stránku serveru 'Developer Sanctuary', protože Discord nepodporuje pozvánky přímo do kanálů.",
"DiscordChannelDisclaimerTitle": "Důležité Discord informace",
"Draft": "Koncept",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Nakreslit",
"EditorToolbarOption_Format": "Formátovat",
"EditorToolbarOption_Insert": "Vložit",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Světlý režim",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Nastavení poštovní schránky se nepodařilo najít.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool selhal.",
"Exception_AuthenticationCanceled": "Ověřování bylo zrušeno",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "Musíte zadat název.",
"Exception_CustomThemeMissingWallpaper": "Musíte zadat vlastní obrázek pozadí.",
"Exception_FailedToSynchronizeFolders": "Synchronizace složek se nezdařila",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri je při aktivaci null.",
"Exception_GoogleAuthCorruptedCode": "Odpověď z autorizačního serveru je chybná.",
"Exception_GoogleAuthError": "Chyba autorizace OAuth: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Tento odkaz pro odhlášení je neplatný. Nepodařilo se odhlásit automatizované zasílání e-mailu.",
"Info_UnsubscribeSuccessMessage": "Odběr {0} byl úspěšně odhlášen.",
"Info_UnsubscribeErrorMessage": "Nepodařilo se odhlásit odběr",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Způsob ověření",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Zabezpečení připojení",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Synchronizace složek",
"SettingsFolderOptions_Title": "Nastavení složky",
"SettingsFolderOptions_Description": "Změnit nastavení jednotlivých složek, například povolit/zakázat synchronizaci, nebo zobrazit/skrýt počet nepřečtených e-mailů.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Prostřední akce",
"SettingsHoverActionLeft": "Levá akce",
"SettingsHoverActionRight": "Pravá akce",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Jazyk & čas",
"SettingsLanguageTime_Description": "Jazyk aplikace Wino, preferovaný formát času.",
"CategoriesFolderNameOverride": "Kategorie",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Více",
"SettingsOptions_Title": "Nastavení",
"SettingsLinkAccounts_Description": "Sloučit více účtů do jednoho. Podívejte se na e-maily v jedné složce \"Doručená pošta\" společně.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Zatím jste nenastavili žádný účet.",
"SettingsNotifications_Description": "Zapnout nebo vypnout oznámení pro tento účet.",
"SettingsNotifications_Title": "Oznámení",
"SettingsPaneLength_Description": "Změnit šířku seznamu e-mailů.",
"SettingsPaneLength_Title": "Délka panelu e-mailů",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Ukažte mnohem více lásky ❤️ Všechny dary jsou vítany.",
"SettingsPaypal_Title": "Přispět přes PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Kompaktní režim",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "initializing",
"AccountCreationDialog_PreparingFolders": "We are getting folder information at the moment.",
"AccountCreationDialog_SigninIn": "Account information is being saved.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Account Name",
"AccountEditDialog_Title": "Edit Account",
"AccountPickerDialog_Title": "Pick an account",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AddHyperlink": "Add",
"AutoDiscoveryProgressMessage": "Searching for mail settings...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Advanced Configuration",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Your credentials will only be stored locally on your computer.",
"BasicIMAPSetupDialog_Description": "Some accounts require additional steps to sign in",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Password",
"BasicIMAPSetupDialog_Title": "IMAP Account",
"Buttons_AddAccount": "Add Account",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Apply Theme",
"Buttons_Browse": "Browse",
"Buttons_Cancel": "Cancel",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Sign In",
"Buttons_TryAgain": "Try Again",
"Buttons_Yes": "Yes",
"Buttons_Reset": "Reset",
"Center": "Center",
"ComingSoon": "Coming soon...",
"ComposerFrom": "From: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Set custom wallpaper",
"DialogMessage_AccountLimitMessage": "You have reached the account creation limit.\nWould you like to purchase 'Unlimited Account' add-on to continue?",
"DialogMessage_AccountLimitTitle": "Account Limit Reached",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Do you want to permanently delete all the mails in this folder?",
"DialogMessage_CleanupFolderTitle": "Cleanup Folder",
"DialogMessage_ComposerMissingRecipientMessage": "Message has no recipient.",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "To stop getting messages from {0}, go to their website to unsubscribe.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Go to website",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Do you want to stop getting messages from {0}? Wino will unsubscribe for you by sending an email from your email account to {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Don't ask again",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino doesn't have it's own Discord server, but special 'wino-mail' channel is hosted at 'Developer Sanctuary' server.\nTo get the updates about Wino please join Developer Sanctuary server and follow 'wino-mail' channel under 'Community Projects'\n\nYou will be directed to server URL since Discord doesn't support channel invites.",
"DiscordChannelDisclaimerTitle": "Important Discord Information",
"Draft": "Draft",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Draw",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Insert",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Light mode",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool failed.",
"Exception_AuthenticationCanceled": "Authentication canceled",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "You must provide a name.",
"Exception_CustomThemeMissingWallpaper": "You must provide a custom background image.",
"Exception_FailedToSynchronizeFolders": "Failed to synchronize folders",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri is null on activation.",
"Exception_GoogleAuthCorruptedCode": "Corrupted authorization response.",
"Exception_GoogleAuthError": "OAuth authorization error: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "This unsubscribe link is invalid. Failed to unsubscribe from the list.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authentication method",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Connection security",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Center Action",
"SettingsHoverActionLeft": "Left Action",
"SettingsHoverActionRight": "Right Action",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"CategoriesFolderNameOverride": "Categories",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "More",
"SettingsOptions_Title": "Settings",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "You didn't setup any accounts yet.",
"SettingsNotifications_Description": "Turn on or off notifications for this account.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Change the width of the mail list.",
"SettingsPaneLength_Title": "Mail List Pane Length",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Show much more love ❤️ All donations are appreciated.",
"SettingsPaypal_Title": "Donate via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Compact Mode",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "Initialisierung",
"AccountCreationDialog_PreparingFolders": "Es werden Ordner-Informationen gesammelt.",
"AccountCreationDialog_SigninIn": "Kontoinformationen wurden gespeichert.",
"AccountCreationDialog_FetchingProfileInformation": "Lade Profildetails.",
"AccountEditDialog_Message": "Konto-Name",
"AccountEditDialog_Title": "Konto bearbeiten",
"AccountPickerDialog_Title": "Konto auswählen",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "z.B. Max Mustermann",
"AddHyperlink": "Hinzufügen",
"AutoDiscoveryProgressMessage": "Es wird nach Mail-Einstellungen gesucht...",
"AppCloseBackgroundSynchronizationWarningTitle": "Hintergrundsynchronisierung",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "Sie beenden Wino Mail und das Schließungsverhalten der App ist auf \"Beenden\" gesetzt.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "Dadurch werden alle Hintergrundsynchronisierungen und Benachrichtigungen beendet.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Möchten Sie in den App-Einstellungen Wino Mail auf minimiert oder Hintergrundausführung einstellen?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Die Anwendung wird beim Start von Windows nicht gestartet.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "Dies führt dazu, dass Sie Benachrichtigungen verpassen, wenn Sie Ihren Computer neu starten.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Möchten Sie diese in den App-Einstellungen aktivieren?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Erweiterte Konfiguration",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Die Zugangsdaten werden nur lokal auf Ihrem Computer gespeichert.",
"BasicIMAPSetupDialog_Description": "Einige Konten benötigen zusätzliche Schritte zum Anmelden",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Passwort",
"BasicIMAPSetupDialog_Title": "IMAP-Konto",
"Buttons_AddAccount": "Konto hinzufügen",
"Buttons_AddNewAlias": "Neuen Alias hinzufügen",
"Buttons_SyncAliases": "Aliase synchronisieren",
"Buttons_ApplyTheme": "Thema anwenden",
"Buttons_Browse": "Durchsuchen",
"Buttons_Cancel": "Abbrechen",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Anmelden",
"Buttons_TryAgain": "Wiederholen",
"Buttons_Yes": "Ja",
"Buttons_Reset": "Zurücksetzen",
"Center": "Zentriert",
"ComingSoon": "Bald verfügbar...",
"ComposerFrom": "Von: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Eigenen Hintergrund festlegen",
"DialogMessage_AccountLimitMessage": "Sie haben das Limit für die Kontenanzahl erreicht.\nMöchten Sie die Option \"Unbegrenzte Konten\" kaufen, um fortzufahren?",
"DialogMessage_AccountLimitTitle": "Kontolimit erreicht",
"DialogMessage_AliasNotSelectedTitle": "Fehlender Alias",
"DialogMessage_AliasNotSelectedMessage": "Sie müssen einen Alias wählen, bevor Sie eine Nachricht senden.",
"DialogMessage_AliasExistsTitle": "Existierender Alias",
"DialogMessage_AliasExistsMessage": "Dieser Alias wird bereits verwendet.",
"DialogMessage_InvalidAliasTitle": "Ungültiger Alias",
"DialogMessage_InvalidAliasMessage": "Dieser Alias ist ungültig. Stellen Sie sicher, dass alle Adressen des Alias gültige E-Mail-Adressen sind.",
"DialogMessage_CantDeleteRootAliasTitle": "Alias kann nicht gelöscht werden",
"DialogMessage_CantDeleteRootAliasMessage": "Der Root-Alias kann nicht gelöscht werden. Dies ist Ihre Hauptidentität, die mit der Konfiguration Ihres Kontos verknüpft ist.",
"DialogMessage_AliasCreatedTitle": "Neuer Alias erstellt",
"DialogMessage_AliasCreatedMessage": "Ein neuer Alias wurde erfolgreich erstellt.",
"DialogMessage_CleanupFolderMessage": "Möchten Sie alle Mails in diesem Ordner dauerhaft löschen?",
"DialogMessage_CleanupFolderTitle": "Bereinigungs-Ordner",
"DialogMessage_ComposerMissingRecipientMessage": "Nachricht hat keinen Empfänger.",
@@ -82,7 +103,7 @@
"DialogMessage_RenameLinkedAccountsTitle": "Verknüpftes Konto umbenennen",
"DialogMessage_UnlinkAccountsConfirmationMessage": "Dieser Vorgang wird Ihre Konten nicht löschen, sondern nur den Link für freigegebene Ordnerverbindungen zerstören. Möchten Sie fortfahren?",
"DialogMessage_UnlinkAccountsConfirmationTitle": "Konten trennen",
"DialogMessage_EmptySubjectConfirmation": "Missing Subject",
"DialogMessage_EmptySubjectConfirmation": "Betreff fehlt",
"DialogMessage_EmptySubjectConfirmationMessage": "Nachricht hat keinen Betreff. Möchten Sie fortfahren?",
"DialogMessage_RenameFolderTitle": "Ordner umbenennen",
"DialogMessage_RenameFolderMessage": "Geben Sie einen neuen Namen für diesen Ordner ein",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Um Nachrichten von {0} nicht mehr zu erhalten, gehen Sie auf die Webseite, um sich abzumelden.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Zur Webseite",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Möchten Sie den Empfang von Nachrichten von {0} beenden? Wino wird sich für Sie abmelden, indem es eine E-Mail aus Ihrem E-Mail-Konto an {1} sendet.",
"DialogMessage_EnableStartupLaunchTitle": "Autostart aktivieren",
"DialogMessage_EnableStartupLaunchMessage": "Wino Mail kann beim Start von Windows minimiert gestartet werden, um keine Benachrichtigungen zu verpassen.\n\nMöchten Sie den Autostart aktivieren?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "Sie können den Autostart unter Einstellungen -> App-Einstellungen aktivieren.",
"Dialog_DontAskAgain": "Nicht mehr fragen",
"CreateAccountAliasDialog_Title": "Kontoalias erstellen",
"CreateAccountAliasDialog_Description": "Stellen Sie sicher, dass Ihr ausgehender Server das Senden von Mails von diesem Alias erlaubt.",
"CreateAccountAliasDialog_AliasAddress": "Adresse",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "z.B. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Antwortadresse",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino hat keinen eigenen Discord Server, aber der spezielle 'wino-mail'-Kanal wird auf dem 'Developer Sanctuary' Server gehostet (englisch).\nUm Updates über Wino zu erhalten, treten Sie gerne dem 'Developer Sactuary'-Server bei und folgen dem 'wino-mail'-Kanal unter 'Community Projects'.\n\nSie werden zur Server-URL weitergeleitet, da Discord keine Kanal-Einladungen unterstützt.",
"DiscordChannelDisclaimerTitle": "Wichtige Discord-Informationen",
"Draft": "Entwurf",
"Busy": "Beschäftigt",
"EditorToolbarOption_Draw": "Zeichnen",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Einfügen",
@@ -105,7 +136,8 @@
"ElementTheme_Default": "Systemeinstellung verwenden",
"ElementTheme_Light": "Heller Modus",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_WinoServerException": "Wino-Server ist fehlgeschlagen.",
"Exception_MailProcessing": "Diese Mail wird noch verarbeitet. Bitte versuchen Sie es in wenigen Sekunden erneut.",
"Exception_ImapAutoDiscoveryFailed": "Mailbox-Einstellungen konnten nicht gefunden werden.",
"Exception_ImapClientPoolFailed": "IMAP Client-Pool fehlgeschlagen.",
"Exception_AuthenticationCanceled": "Authentifizierung abgebrochen",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "Sie müssen einen Namen angeben.",
"Exception_CustomThemeMissingWallpaper": "Sie müssen ein eigenes Hintergrundbild angeben.",
"Exception_FailedToSynchronizeFolders": "Fehler beim Synchronisieren der Ordner",
"Exception_FailedToSynchronizeAliases": "Fehler beim Synchronisieren der Aliase",
"Exception_MissingAlias": "Der primäre Alias fehlt für dieses Konto. Erstellen des Entwurfs fehlgeschlagen.",
"Exception_FailedToSynchronizeProfileInformation": "Fehler beim Synchronisieren der Profilinformationen",
"Exception_GoogleAuthCallbackNull": "'Callback uri ist 'null' bei der Aktivierung.",
"Exception_GoogleAuthCorruptedCode": "Korrupte Autorisierungsantwort.",
"Exception_GoogleAuthError": "OAuth Autorisierungsfehler: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Dieser Abmeldelink ist ungültig. Fehler beim Abmelden der Liste.",
"Info_UnsubscribeSuccessMessage": "Erfolgreich von {0} abgemeldet.",
"Info_UnsubscribeErrorMessage": "Abmeldung fehlgeschlagen",
"Info_CantDeletePrimaryAliasMessage": "Der primäre Alias kann nicht gelöscht werden. Bitte ändern Sie Ihren Alias, bevor Sie diesen löschen.",
"Info_MailListSizeResetSuccessMessage": "Die Größe der Mailliste wurde zurückgesetzt.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authentifizierungsmethode",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Verbindungssicherheit",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -336,7 +373,7 @@
"ProtocolLogAvailable_Message": "Protokolle zur Diagnose sind verfügbar.",
"Results": "Ergebnisse",
"Right": "Rechts",
"Reader_SaveAllAttachmentButtonText": "Save all attachments",
"Reader_SaveAllAttachmentButtonText": "Alle Anhänge speichern",
"SynchronizationFolderReport_Success": "aktuell",
"SynchronizationFolderReport_Failed": "Synchronisierung fehlgeschlagen",
"SearchBarPlaceholder": "Suche",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Ordner-Synchronisierung",
"SettingsFolderOptions_Title": "Ordnerkonfiguration",
"SettingsFolderOptions_Description": "Ändern Sie einzelne Ordnereinstellungen, wie z. B. das Ein-/Ausblenden des \"Ungelesen\"-Symbols oder das (De-)Aktivieren der Synchronisierung.",
"SettingsManageAliases_Title": "Aliase",
"SettingsManageAliases_Description": "Sehen Sie die Mail-Aliase, die diesem Konto zugewiesen wurden, aktualisieren oder löschen Sie diese.",
"SettingsHoverActionCenter": "Zentrierte Aktion",
"SettingsHoverActionLeft": "Linke Aktion",
"SettingsHoverActionRight": "Rechte Aktion",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Sprache und Zeit",
"SettingsLanguageTime_Description": "Wino Anzeigesprache, bevorzugtes Zeitformat.",
"CategoriesFolderNameOverride": "Kategorien",
"AccountAlias_Column_Verified": "Verifiziert",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primär",
"AccountAlias_Disclaimer_FirstLine": "Wino kann nur Aliase für Ihre Gmail-Konten importieren.",
"AccountAlias_Disclaimer_SecondLine": "Wenn Sie Aliase für Ihr Outlook- oder IMAP-Konto verwenden möchten, fügen Sie diese bitte selbst hinzu.",
"MoreFolderNameOverride": "Mehr",
"SettingsOptions_Title": "Einstellungen",
"SettingsLinkAccounts_Description": "Mehrere Konten zu einem zusammenführen. Sehen Sie E-Mails in einem kombinierten Posteingang.",
@@ -420,19 +464,19 @@
"SettingsFolderMenuStyle_Description": "Ändern Sie, ob Kontoordner in einem Konten-Menüpunkt verschachtelt werden sollen oder nicht. Schalten Sie dies aus, wenn Sie das alte Menüsystem in Windows Mail mögen.",
"SettingsManageAccountSettings_Description": "Benachrichtigungen, Signaturen, Synchronisierung und andere Einstellungen pro Konto.",
"SettingsManageAccountSettings_Title": "Kontoeinstellungen verwalten",
"SettingsAppPreferences_Title": "App Preferences",
"SettingsAppPreferences_Description": "General settings / preferences for Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Application close behavior",
"SettingsAppPreferences_CloseBehavior_Description": "What should happen when you close the app?",
"SettingsAppPreferences_StartupBehavior_Title": "Start minimized on Windows startup",
"SettingsAppPreferences_StartupBehavior_Description": "Allow Wino Mail to launch minimized when Windows starts. Always allow it to receive notifications.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail successfully set to be launched in the background on Windows startup.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail will not be launched on Windows startup. This will cause you to miss notifications when you restart your computer.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Your administrator or group policies disabled running applications on startup. Thus, Wino Mail can't be set to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Please go to Task Manager -> Startup tab to allow Wino Mail to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Fatal error occurred while changing the startup mode for Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Enable",
"SettingsAppPreferences_StartupBehavior_Disable": "Disable",
"SettingsAppPreferences_Title": "App-Präferenzen",
"SettingsAppPreferences_Description": "Allgemeine Einstellungen / Präferenzen für Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Verhalten der App beim Schließen",
"SettingsAppPreferences_CloseBehavior_Description": "Was soll passieren, wenn Sie die App schließen?",
"SettingsAppPreferences_StartupBehavior_Title": "Beim Start von Windows minimiert starten",
"SettingsAppPreferences_StartupBehavior_Description": "Wino Mail das minimierte Starten erlauben, wenn Windows startet. Ermöglicht es, immer Benachrichtigungen zu erhalten.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail wurde es erfolgreich gestattet, beim Starten von Windows im Hintergrund zu starten.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail wird beim Start von Windows nicht gestartet. Dies führt dazu, dass Sie keine Benachrichtigungen erhalten, wenn Sie Ihren Computer neu starten.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Ihre Administrator- oder Gruppenrichtlinien gestatten den automatischen Start von Programmen nicht. Daher kann für Wino Mail der automatische Start nicht aktiviert werden.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Bitte gehen Sie zu Task-Manager -> Autostart von Apps, um Wino Mail den Autostart zu erlauben.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Ein schwerwiegender Fehler ist beim Ändern des Startmodus für Wino Mail aufgetreten.",
"SettingsAppPreferences_StartupBehavior_Enable": "Aktivieren",
"SettingsAppPreferences_StartupBehavior_Disable": "Deaktivieren",
"SettingsReorderAccounts_Title": "Konten neu ordnen",
"SettingsReorderAccounts_Description": "Ändern Sie die Konten-Reihenfolge in der Kontenliste.",
"SettingsManageLink_Description": "Elemente verschieben, um neuen Link hinzuzufügen oder bestehenden Link zu entfernen.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Sie haben noch keine Konten eingerichtet.",
"SettingsNotifications_Description": "Benachrichtigungen für dieses Konto ein- oder ausschalten.",
"SettingsNotifications_Title": "Benachrichtigungen",
"SettingsPaneLength_Description": "Ändern Sie die Breite der Mail-Liste.",
"SettingsPaneLength_Title": "Länge des Maillisten-Fensters",
"SettingsPaneLengthReset_Description": "Setzen Sie die Größe der Mailliste auf die Originaleinstellung zurück, falls sie Probleme haben.",
"SettingsPaneLengthReset_Title": "Größe der Mailliste zurücksetzen",
"SettingsPaypal_Description": "Zeigen Sie viel mehr Liebe ❤️ Alle Spenden werden wertgeschätzt.",
"SettingsPaypal_Title": "Über PayPal spenden",
"SettingsPersonalizationMailDisplayCompactMode": "Kompakter Modus",
@@ -539,14 +583,14 @@
"SettingsSignature_EditSignature_Title": "Signatur bearbeiten",
"SettingsSignature_DeleteSignature_Title": "Signatur löschen",
"SettingsSignature_NoneSignatureName": "Keine",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimize to system tray",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail will keep running on the system tray. Available to launch by clicking on an icon. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Run in the background",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail will keep running in the background. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Terminate",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail will not keep running anywhere. You will not be notified as new mails arrive. Launch Wino Mail again to continue mail synchronization.",
"TitleBarServerDisconnectedButton_Title": "no connection",
"TitleBarServerDisconnectedButton_Description": "Wino is disconnected from the network. Click reconnect to restore connection.",
"TitleBarServerReconnectButton_Title": "reconnect",
"TitleBarServerReconnectingButton_Title": "connecting"
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "In den System-Tray minimieren",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail wird weiterhin im System-Tray laufen. Startet beim Klicken des Symbols die Anwendung. Sie werden benachrichtigt, sobald neue Mails eintreffen.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Im Hintergrund ausführen",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail wird weiterhin im Hintergrund ausgeführt. Sie werden benachrichtigt, sobald neue Mails eintreffen.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Beenden",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail wird nicht weiter ausgeführt werden. Sie werden nicht benachrichtigt, wenn neue Mails eintreffen. Starten Sie Wino Mail erneut, um die Mail-Synchronisation fortzusetzen.",
"TitleBarServerDisconnectedButton_Title": "Keine Verbindung",
"TitleBarServerDisconnectedButton_Description": "Wino ist vom Netzwerk getrennt. Klicken Sie auf \"Erneut verbinden\", um die Verbindung wiederherzustellen.",
"TitleBarServerReconnectButton_Title": "Erneut verbinden",
"TitleBarServerReconnectingButton_Title": "Verbindung wird hergestellt"
}

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "αρχικοποιείται",
"AccountCreationDialog_PreparingFolders": "Προς το παρόν λαμβάνουμε πληροφορίες φακέλων.",
"AccountCreationDialog_SigninIn": "Οι πληροφορίες λογαριασμού αποθηκεύονται.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Όνομα Λογαριασμού",
"AccountEditDialog_Title": "Επεξεργασία Λογαριασμού",
"AccountPickerDialog_Title": "Επιλέξτε έναν λογαριασμό",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "πχ. Γιώργος Παπαδάκης",
"AddHyperlink": "Προσθήκη",
"AutoDiscoveryProgressMessage": "Αναζήτηση για ρυθμίσεις αλληλογραφίας...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Σύνθετη Διαμόρφωση",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Τα διαπιστευτήριά σας θα αποθηκεύονται μόνο τοπικά στον υπολογιστή σας.",
"BasicIMAPSetupDialog_Description": "Ορισμένοι λογαριασμοί απαιτούν πρόσθετα βήματα για να συνδεθούν",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Κωδικόs πρόσβασης",
"BasicIMAPSetupDialog_Title": "Λογαριασμός IMAP",
"Buttons_AddAccount": "Προσθήκη Λογαριασμού",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Εφαρμογή Θέματος",
"Buttons_Browse": "Περιήγηση",
"Buttons_Cancel": "Ακύρωση",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Σύνδεση",
"Buttons_TryAgain": "Προσπαθήστε ξανά",
"Buttons_Yes": "Ναι",
"Buttons_Reset": "Reset",
"Center": "Κέντρο",
"ComingSoon": "Έρχεται σύντομα...",
"ComposerFrom": "Από: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Ορισμός προσαρμοσμένης ταπετσαρίας",
"DialogMessage_AccountLimitMessage": "Έχετε φτάσει το όριο δημιουργίας λογαριασμού.\nΘα θέλατε να αγοράσετε το πρόσθετο 'Απεριόριστοι Λογαριασμοί' για να συνεχίσετε;",
"DialogMessage_AccountLimitTitle": "Το Όριο Λογαριασμού Επιτεύχθη",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Θέλετε να διαγράψετε μόνιμα όλα τα μηνύματα σε αυτό το φάκελο;",
"DialogMessage_CleanupFolderTitle": "Εκκαθάριση Φακέλου",
"DialogMessage_ComposerMissingRecipientMessage": "Το μήνυμα δεν έχει παραλήπτη.",
@@ -82,7 +103,7 @@
"DialogMessage_RenameLinkedAccountsTitle": "Μετονομασία Συνδεδεμένου Λογαριασμού",
"DialogMessage_UnlinkAccountsConfirmationMessage": "Αυτή η λειτουργία δεν θα διαγράψει τους λογαριασμούς σας αλλά, απλά θα διαλύσει το σύνδεσμο για συνδέσεις κοινόχρηστων φακέλων. Θέλετε να συνεχίσετε;",
"DialogMessage_UnlinkAccountsConfirmationTitle": "Αποδέσμευση Λογαριασμού",
"DialogMessage_EmptySubjectConfirmation": "Missing Subject",
"DialogMessage_EmptySubjectConfirmation": "Χωρίς Θέμα",
"DialogMessage_EmptySubjectConfirmationMessage": "Το μήνυμα δεν έχει θέμα. Θέλετε να συνεχίσετε;",
"DialogMessage_RenameFolderTitle": "Μετονομασία Φακέλου",
"DialogMessage_RenameFolderMessage": "Εισάγετε νέο όνομα για αυτόν το φάκελο",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Για να σταματήσετε να λαμβάνετε μηνύματα από το {0}, μεταβείτε στην ιστοσελίδα τους για να καταργήσετε την εγγραφή σας.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Μεταβείτε στον ιστότοπο",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Θέλετε να σταματήσετε να λαμβάνετε μηνύματα από τον{0}; Το Wino θα κάνει κατάργηση εγγραφής για εσάς στέλνοντας ένα email από τον λογαριασμό email σας στο {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Να μην ερωτηθώ ξανά",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Το Wino δεν έχει το δικό του διακομιστή στο Discord, αλλά το ειδικό κανάλι «wino-mail» φιλοξενείται στον διακομιστή «Developer Sanctuary».\nΓια να λάβετε τις ενημερώσεις σχετικά με το Wino παρακαλούμε γίνετε μέλος του διακομιστή Developer Sanctuary και ακολουθήστε το κανάλι «wino-mail» στο «Community Projects»\n\nΘα κατευθυνθείτε στο URL του διακομιστή καθώς το Discord δεν υποστηρίζει προσκλήσεις καναλιών.",
"DiscordChannelDisclaimerTitle": "Σημαντικές Πληροφορίες για το Discord",
"Draft": "Πρόχειρο",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Σχέδιο",
"EditorToolbarOption_Format": "Μορφή",
"EditorToolbarOption_Insert": "Εισαγωγή",
@@ -105,7 +136,8 @@
"ElementTheme_Default": "Χρήση ρυθμίσεων συστήματος",
"ElementTheme_Light": "Ανοιχτή λειτουργία",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_WinoServerException": "Ο διακομιστής Wino απέτυχε.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Δεν βρέθηκαν οι ρυθμίσεις γραμματοκιβωτίου.",
"Exception_ImapClientPoolFailed": "Αποτυχία συγκέντρωσης πελάτη IMAP.",
"Exception_AuthenticationCanceled": "Η ταυτοποίηση ακυρώθηκε",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "Πρέπει να δώσετε ένα όνομα.",
"Exception_CustomThemeMissingWallpaper": "Πρέπει να δώσετε μια προσαρμοσμένη εικόνα φόντου.",
"Exception_FailedToSynchronizeFolders": "Αποτυχία συγχρονισμού φακέλων",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Το Callback uri είναι κενό κατά την ενεργοποίηση.",
"Exception_GoogleAuthCorruptedCode": "Κατεστραμμένη απάντηση εξουσιοδότησης.",
"Exception_GoogleAuthError": "Σφάλμα εξουσιοδότησης OAuth: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Αυτός ο σύνδεσμος κατάργησης εγγραφής δεν είναι έγκυρος. Αποτυχία διαγραφής από τη λίστα.",
"Info_UnsubscribeSuccessMessage": "Επιτυχής κατάργηση εγγραφής από το {0}.",
"Info_UnsubscribeErrorMessage": "Αποτυχία κατάργησης εγγραφής",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Μέθοδος επαλήθευσης",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Ασφάλεια σύνδεσης",
"ImapAuthenticationMethod_Auto": "Αυτόματο",
@@ -336,7 +373,7 @@
"ProtocolLogAvailable_Message": "Τα αρχεία καταγραφής πρωτοκόλλου είναι διαθέσιμα για διαγνωστικά.",
"Results": "Αποτελέσματα",
"Right": "Δεξιά",
"Reader_SaveAllAttachmentButtonText": "Save all attachments",
"Reader_SaveAllAttachmentButtonText": "Αποθήκευση όλων των συνημμένων",
"SynchronizationFolderReport_Success": "ενημερωμένο",
"SynchronizationFolderReport_Failed": "ο συγχρονισμός απέτυχε",
"SearchBarPlaceholder": "Αναζήτηση",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Συγχρονισμός Φακέλου",
"SettingsFolderOptions_Title": "Διαμόρφωση Φακέλου",
"SettingsFolderOptions_Description": "Αλλάξτε μεμονωμένες ρυθμίσεις φακέλου, όπως ενεργοποίηση/απενεργοποίηση συγχρονισμού ή εμφάνιση/απόκρυψη σήματος ανάγνωσης.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Κεντρική Ενέργεια",
"SettingsHoverActionLeft": "Αριστερή Ενέργεια",
"SettingsHoverActionRight": "Δεξιά Ενέργεια",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Γλώσσα & Ώρα",
"SettingsLanguageTime_Description": "Εμφάνιση γλώσσας Wino, προτιμώμενη μορφή ώρας.",
"CategoriesFolderNameOverride": "Κατηγορίες",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Περισσότερα",
"SettingsOptions_Title": "Ρυθμίσεις",
"SettingsLinkAccounts_Description": "Συγχώνευση πολλαπλών λογαριασμών σε έναν. Δείτε τα μηνύματα σε ένα φάκελο Εισερχόμενα μαζί.",
@@ -420,19 +464,19 @@
"SettingsFolderMenuStyle_Description": "Επιλέξτε αν οι φάκελοι λογαριασμού θα πρέπει να είναι εμφωλευμένοι μέσα σε ένα στοιχείο μενού του λογαριασμού ή όχι. Ενεργοποιήστε αυτήν την επιλογή αν σας αρέσει το παλιό σύστημα μενού στο Windows Mail",
"SettingsManageAccountSettings_Description": "Ειδοποιήσεις, υπογραφές, συγχρονισμός και άλλες ρυθμίσεις ανά λογαριασμό.",
"SettingsManageAccountSettings_Title": "Ρυθμίσεις Διαχείρισης Λογαριασμού",
"SettingsAppPreferences_Title": "App Preferences",
"SettingsAppPreferences_Description": "General settings / preferences for Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Application close behavior",
"SettingsAppPreferences_CloseBehavior_Description": "What should happen when you close the app?",
"SettingsAppPreferences_StartupBehavior_Title": "Start minimized on Windows startup",
"SettingsAppPreferences_StartupBehavior_Description": "Allow Wino Mail to launch minimized when Windows starts. Always allow it to receive notifications.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail successfully set to be launched in the background on Windows startup.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail will not be launched on Windows startup. This will cause you to miss notifications when you restart your computer.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Your administrator or group policies disabled running applications on startup. Thus, Wino Mail can't be set to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Please go to Task Manager -> Startup tab to allow Wino Mail to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Fatal error occurred while changing the startup mode for Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Enable",
"SettingsAppPreferences_StartupBehavior_Disable": "Disable",
"SettingsAppPreferences_Title": "Προτιμήσεις Εφαρμογής",
"SettingsAppPreferences_Description": "Γενικές ρυθμίσεις / προτιμήσεις για το Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Συμπεριφορά κλεισίματος εφαρμογής",
"SettingsAppPreferences_CloseBehavior_Description": "Τί πρέπει να συμβεί όταν κλείσετε την εφαρμογή;",
"SettingsAppPreferences_StartupBehavior_Title": "Εκκίνηση σε ελαχιστοποίηση κατά την έναρξη των Windows",
"SettingsAppPreferences_StartupBehavior_Description": "Επιτρέψτε στο Wino Mail να ξεκινήσει ελαχιστοποιημένο όταν ξεκινούν τα Windows. Επιτρέπει πάντα τη λήψη ειδοποιήσεων.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Το Wino Mail ορίστηκε να ξεκινάει στο παρασκήνιο κατά την εκκίνηση των Windows.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Το Wino Mail δε θα ξεκινήσει κατά την εκκίνηση των Windows. Αυτό θα προκαλέσει απώλεια ειδοποιήσεων όταν επανεκκινήσετε τον υπολογιστή σας.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Ο διαχειριστής ή οι πολιτικές ομάδας έχουν απενεργοποιήσει την εκκίνηση εφαρμογών κατά την έναρξη. Έτσι, το Wino Mail δεν μπορεί να ρυθμιστεί για να ξεκινήσει κατά την εκκίνηση των Windows.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Μεταβείτε στη Διαχείριση Εργασιών -> Καρτέλα εκκίνησης για να επιτρέψετε στο Wino Mail να ξεκινήσει κατά την εκκίνηση των Windows.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Μοιραίο σφάλμα προέκυψε κατά την αλλαγή της λειτουργίας εκκίνησης για το Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Ενεργοποίηση",
"SettingsAppPreferences_StartupBehavior_Disable": "Απενεργοποίηση",
"SettingsReorderAccounts_Title": "Αναδιάταξη Λογαριασμών",
"SettingsReorderAccounts_Description": "Αλλάξτε τη σειρά των λογαριασμών στη λίστα λογαριασμών.",
"SettingsManageLink_Description": "Μετακίνηση αντικειμένων για προσθήκη νέου συνδέσμου ή κατάργηση υπάρχοντος συνδέσμου.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Δεν έχετε ρυθμίσει κανέναν λογαριασμό ακόμα.",
"SettingsNotifications_Description": "Ενεργοποίηση ή απενεργοποίηση ειδοποιήσεων για αυτόν τον λογαριασμό.",
"SettingsNotifications_Title": "Ειδοποιήσεις",
"SettingsPaneLength_Description": "Αλλαγή του πλάτους της λίστας αλληλογραφίας.",
"SettingsPaneLength_Title": "Μήκος Παραθύρου Λίστας Αλληλογραφίας",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Δείξτε πολύ περισσότερη αγάπη ❤️ Όλες οι δωρεές εκτιμούνται.",
"SettingsPaypal_Title": "Δωρεά μέσω PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Συμπαγής Λειτουργία",
@@ -539,14 +583,14 @@
"SettingsSignature_EditSignature_Title": "Επεξεργασία υπογραφής",
"SettingsSignature_DeleteSignature_Title": "Διαγραφή υπογραφής",
"SettingsSignature_NoneSignatureName": "Καμία",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimize to system tray",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail will keep running on the system tray. Available to launch by clicking on an icon. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Run in the background",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail will keep running in the background. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Terminate",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail will not keep running anywhere. You will not be notified as new mails arrive. Launch Wino Mail again to continue mail synchronization.",
"TitleBarServerDisconnectedButton_Title": "no connection",
"TitleBarServerDisconnectedButton_Description": "Wino is disconnected from the network. Click reconnect to restore connection.",
"TitleBarServerReconnectButton_Title": "reconnect",
"TitleBarServerReconnectingButton_Title": "connecting"
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Ελαχιστοποίηση στο συρτάρι ειδοποιήσεων συστήματος",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Το Wino Mail θα συνεχίσει να εκτελείται στο συαρτάρι συστήματος. Διαθέσιμο για εκκίνηση κάνοντας κλικ σε ένα εικονίδιο. Θα ειδοποιηθείτε καθώς φτάνουν νέα μηνύματα.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Εκτέλεση στο παρασκήνιο",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Το Wino Mail θα συνεχίσει να εκτελείται στο παρασκήνιο. Θα ειδοποιηθείτε καθώς φτάνουν νέα μηνύματα.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Τερματισμός",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Το Wino Mail δεν θα συνεχίσει να τρέχει πουθενά. Δεν θα ειδοποιηθείτε καθώς φτάνουν νέα μηνύματα. Εκκινήστε ξανά το Wino Mail για να συνεχίσετε το συγχρονισμό αλληλογραφίας.",
"TitleBarServerDisconnectedButton_Title": "χωρίς σύνδεση",
"TitleBarServerDisconnectedButton_Description": "Το Wino αποσυνδέθηκε από το δίκτυο. Κάντε κλικ στην επιλογή επανασύνδεση για επαναφορά της σύνδεσης.",
"TitleBarServerReconnectButton_Title": "επανασύνδεση",
"TitleBarServerReconnectingButton_Title": "γίνεται σύνδεση"
}

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "initializing",
"AccountCreationDialog_PreparingFolders": "We are getting folder information at the moment.",
"AccountCreationDialog_SigninIn": "Account information is being saved.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Account Name",
"AccountEditDialog_Title": "Edit Account",
"AccountPickerDialog_Title": "Pick an account",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AddHyperlink": "Add",
"AutoDiscoveryProgressMessage": "Searching for mail settings...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Advanced Configuration",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Your credentials will only be stored locally on your computer.",
"BasicIMAPSetupDialog_Description": "Some accounts require additional steps to sign in",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Password",
"BasicIMAPSetupDialog_Title": "IMAP Account",
"Buttons_AddAccount": "Add Account",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Apply Theme",
"Buttons_Browse": "Browse",
"Buttons_Cancel": "Cancel",
@@ -42,6 +52,8 @@
"Buttons_SignIn": "Sign In",
"Buttons_TryAgain": "Try Again",
"Buttons_Yes": "Yes",
"Buttons_Reset": "Reset",
"Buttons_Send": "Send",
"Center": "Center",
"ComingSoon": "Coming soon...",
"ComposerFrom": "From: ",
@@ -64,6 +76,16 @@
"CustomThemeBuilder_WallpaperTitle": "Set custom wallpaper",
"DialogMessage_AccountLimitMessage": "You have reached the account creation limit.\nWould you like to purchase 'Unlimited Account' add-on to continue?",
"DialogMessage_AccountLimitTitle": "Account Limit Reached",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Do you want to permanently delete all the mails in this folder?",
"DialogMessage_CleanupFolderTitle": "Cleanup Folder",
"DialogMessage_ComposerMissingRecipientMessage": "Message has no recipient.",
@@ -91,10 +113,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "To stop getting messages from {0}, go to their website to unsubscribe.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Go to website",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Do you want to stop getting messages from {0}? Wino will unsubscribe for you by sending an email from your email account to {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Don't ask again",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino doesn't have it's own Discord server, but special 'wino-mail' channel is hosted at 'Developer Sanctuary' server.\nTo get the updates about Wino please join Developer Sanctuary server and follow 'wino-mail' channel under 'Community Projects'\n\nYou will be directed to server URL since Discord doesn't support channel invites.",
"DiscordChannelDisclaimerTitle": "Important Discord Information",
"Draft": "Draft",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Draw",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Insert",
@@ -106,6 +138,7 @@
"ElementTheme_Light": "Light mode",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool failed.",
"Exception_AuthenticationCanceled": "Authentication canceled",
@@ -113,6 +146,9 @@
"Exception_CustomThemeMissingName": "You must provide a name.",
"Exception_CustomThemeMissingWallpaper": "You must provide a custom background image.",
"Exception_FailedToSynchronizeFolders": "Failed to synchronize folders",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri is null on activation.",
"Exception_GoogleAuthCorruptedCode": "Corrupted authorization response.",
"Exception_GoogleAuthError": "OAuth authorization error: {0}",
@@ -253,6 +289,8 @@
"Info_UnsubscribeLinkInvalidMessage": "This unsubscribe link is invalid. Failed to unsubscribe from the list.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authentication method",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Connection security",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -396,6 +434,8 @@
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Center Action",
"SettingsHoverActionLeft": "Left Action",
"SettingsHoverActionRight": "Right Action",
@@ -406,6 +446,11 @@
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"CategoriesFolderNameOverride": "Categories",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "More",
"SettingsOptions_Title": "Settings",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
@@ -448,8 +493,8 @@
"SettingsNoAccountSetupMessage": "You didn't setup any accounts yet.",
"SettingsNotifications_Description": "Turn on or off notifications for this account.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Change the width of the mail list.",
"SettingsPaneLength_Title": "Mail List Pane Length",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Show much more love ❤️ All donations are appreciated.",
"SettingsPaypal_Title": "Donate via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Compact Mode",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "inicializando",
"AccountCreationDialog_PreparingFolders": "Estamos obteniendo información de la carpeta en este momento.",
"AccountCreationDialog_SigninIn": "La información de la cuenta se está guardando.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Nombre de la Cuenta",
"AccountEditDialog_Title": "Editar cuenta",
"AccountPickerDialog_Title": "Elija una cuenta",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "por ejemplo: Juan López",
"AddHyperlink": "Añadir",
"AutoDiscoveryProgressMessage": "Buscando ajustes de correo...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Configuración avanzada",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Sus credenciales sólo se almacenarán localmente en su ordenador.",
"BasicIMAPSetupDialog_Description": "Algunas cuentas necesitan pasos adicionales para iniciar sesión",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Contraseña",
"BasicIMAPSetupDialog_Title": "Cuenta IMAP",
"Buttons_AddAccount": "Añadir Cuenta",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Aplicar Tema",
"Buttons_Browse": "Buscar",
"Buttons_Cancel": "Cancelar",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Iniciar Sesión",
"Buttons_TryAgain": "Inténtalo de nuevo",
"Buttons_Yes": "Sí",
"Buttons_Reset": "Reset",
"Center": "Centrar",
"ComingSoon": "Próximamente...",
"ComposerFrom": "De: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Establecer imagen de fondo personalizada",
"DialogMessage_AccountLimitMessage": "Has alcanzado el límite para crear cuentas.\n¿Te gustaría comprar el add-on 'Cuentas Ilimitadas' para continuar?",
"DialogMessage_AccountLimitTitle": "Límite de Cuentas Alcanzado",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "¿Quieres borrar permanentemente todos los correos en esta carpeta?",
"DialogMessage_CleanupFolderTitle": "Carpeta de Limpieza",
"DialogMessage_ComposerMissingRecipientMessage": "El mensaje no tiene destinatario.",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Para dejar de recibir mensajes de {0}, ve a su sitio web para darse de baja.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Ir al sitio web",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "¿Quieres dejar de recibir mensajes de {0}? Wino cancelará su suscripción enviando un correo electrónico desde su cuenta de correo electrónico a {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "No preguntar de nuevo",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino no tiene un servidor de Discordia propio, pero el canal especial 'wino-mail' está hospedado en servidor 'Developer Sanctuary'.\nPara obtener actualizaciones acerca de Wino únase al Santuario servidor de Desarrolladores y siga el canal 'wino-mail' en 'Community Projects'\n\nSerás redirigido a la URL del servidor cuando la Discordia no soporta canales invitados.",
"DiscordChannelDisclaimerTitle": "Información de Discord importante",
"Draft": "Borrador",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Dibujar",
"EditorToolbarOption_Format": "Formato",
"EditorToolbarOption_Insert": "Insertar",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Modo claro",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "No se pudo encontrar la configuración del buzón.",
"Exception_ImapClientPoolFailed": "Cola Cliente IMAP falló.",
"Exception_AuthenticationCanceled": "Autenticación cancelada",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "Debe proporcionar un nombre.",
"Exception_CustomThemeMissingWallpaper": "Debe proporcionar una imagen de fondo personalizada.",
"Exception_FailedToSynchronizeFolders": "Error al sincronizar carpetas",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri nulo al activarse.",
"Exception_GoogleAuthCorruptedCode": "Respuesta de autorización corrupta.",
"Exception_GoogleAuthError": "Error de autorización de OAuth: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Este enlace de baja suscripción no es válido. Error al darse de baja de la lista.",
"Info_UnsubscribeSuccessMessage": "Se ha cancelado la suscripción de {0} correctamente.",
"Info_UnsubscribeErrorMessage": "Error al anular suscripción",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Método de autenticación",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Seguridad de la conexión",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Sincronización de carpetas",
"SettingsFolderOptions_Title": "Configuración de carpeta",
"SettingsFolderOptions_Description": "Cambie los ajustes de la carpeta individual como activar/desactivar la sincronización o muestra/oculta insignias no leídas.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Centro de Acción",
"SettingsHoverActionLeft": "Acción Izquierda",
"SettingsHoverActionRight": "Acción Derecha",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Idioma y Hora",
"SettingsLanguageTime_Description": "Idioma de visualización de Wino, formato de hora preferido.",
"CategoriesFolderNameOverride": "Categorías",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Más",
"SettingsOptions_Title": "Ajustes",
"SettingsLinkAccounts_Description": "Fusionar múltiples cuentas en una. Ver correos en una bandeja de entrada común.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Aún no has configurado ninguna cuenta.",
"SettingsNotifications_Description": "Activar o desactivar notificaciones para esta cuenta.",
"SettingsNotifications_Title": "Notificaciones",
"SettingsPaneLength_Description": "Cambiar el ancho de la lista de correo.",
"SettingsPaneLength_Title": "Longitud del panel de la lista de correo",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Muestre mucho más amor ❤️ Todas las donaciones se agradecen.",
"SettingsPaypal_Title": "Dona vía PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Modo Compacto",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "valmistellaan",
"AccountCreationDialog_PreparingFolders": "Valmistellaan kansioita",
"AccountCreationDialog_SigninIn": "Tallennetaan tilin tietoja.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Tilin nimi",
"AccountEditDialog_Title": "Muokkaa tiliä",
"AccountPickerDialog_Title": "Valitse tili",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "esim. Matti Meikäläinen",
"AddHyperlink": "Lisää",
"AutoDiscoveryProgressMessage": "Haetaan sähköpostiasetuksia...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Lisäasetukset",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Käyttäjätietosi tallennetaan ainoastaan paikallisesti tietokoneellesi.",
"BasicIMAPSetupDialog_Description": "Jotkin tilit vaativat lisätoimia sisäänkirjautumista varten",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Salasana",
"BasicIMAPSetupDialog_Title": "IMAP-tili",
"Buttons_AddAccount": "Lisää tili",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Vaihda teemaa",
"Buttons_Browse": "Selaa",
"Buttons_Cancel": "Peruuta",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Kirjaudu sisään",
"Buttons_TryAgain": "Yritä uudelleen",
"Buttons_Yes": "Kyllä",
"Buttons_Reset": "Reset",
"Center": "Keskitetty",
"ComingSoon": "Tulossa pian...",
"ComposerFrom": "Lähettäjä: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Aseta mukautettu taustakuva",
"DialogMessage_AccountLimitMessage": "Sinulla on jo suurin sallittu määrä tilejä.\nHaluatko ostaa 'Rajattomat Tilit' lisäosan jatkaaksesi?",
"DialogMessage_AccountLimitTitle": "Suurin sallittu tilien määrä saavutettu",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Haluatko pysyvästi poistaa kaikki sähköpostit tästä kansiosta?",
"DialogMessage_CleanupFolderTitle": "Siivoa Kansio",
"DialogMessage_ComposerMissingRecipientMessage": "Viestillä ei ole vastaanottajaa.",
@@ -82,7 +103,7 @@
"DialogMessage_RenameLinkedAccountsTitle": "Uudelleennimeä yhdistetty tili",
"DialogMessage_UnlinkAccountsConfirmationMessage": "Tämä ei poista tilejäsi, ainoastaan yhteyden tilien jaettujen kansioiden välillä. Haluatko jatkaa?",
"DialogMessage_UnlinkAccountsConfirmationTitle": "Poista tilien yhteys",
"DialogMessage_EmptySubjectConfirmation": "Missing Subject",
"DialogMessage_EmptySubjectConfirmation": "Aihe puuttuu",
"DialogMessage_EmptySubjectConfirmationMessage": "Viestillä ei ole aihetta. Haluatko jatkaa?",
"DialogMessage_RenameFolderTitle": "Uudelleennimeä kansio",
"DialogMessage_RenameFolderMessage": "Anna uusi nimi tälle kansiolle",
@@ -91,13 +112,23 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Lopettaaksesi viestien saamisen lähettäjältä {0}, mene heidän verkkosivuilleen peruuttaaksesi tilauksesi.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Avaa verkkosivu",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Haluatko lopettaa viestien saamisen lähettäjältä {0}? Wino voi peruuttaa tilauksesi lähettämällä viestin sähköpostiosoitteestasi osoitteeseen {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Älä kysy uudelleen",
"DiscordChannelDisclaimerMessage": "Wino doesn't have it's own Discord server, but special 'wino-mail' channel is hosted at 'Developer Sanctuary' server.\nTo get the updates about Wino please join Developer Sanctuary server and follow 'wino-mail' channel under 'Community Projects'\n\nYou will be directed to server URL since Discord doesn't support channel invites.",
"DiscordChannelDisclaimerTitle": "Important Discord Information",
"Draft": "Draft",
"EditorToolbarOption_Draw": "Draw",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Insert",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Winolla ei ole omaa Discord palvelinta, mutta 'wino-mail' kanava löytyy 'Developer Sanctuary' palvelimelta.\nSaadaksesi päivityksiä Winosta, liity Developer Sanctuary palvelimelle ja seuraa 'wino-mail' kanavaa 'Community Projects' osiossa.\n\nSinut uudelleenohjataan palvelimen osoitteeseen, koska Discord ei tue kanava kutsuja.",
"DiscordChannelDisclaimerTitle": "Tärkeää tietoa Discordista",
"Draft": "Luonnos",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Piirrä",
"EditorToolbarOption_Format": "Muotoile",
"EditorToolbarOption_Insert": "Liitä",
"EditorToolbarOption_None": "Ei mitään",
"EditorToolbarOption_Options": "Asetukset",
"EditorTooltip_WebViewEditor": "Käytä selainpohjaista editoria",
@@ -105,14 +136,18 @@
"ElementTheme_Default": "Käytä järjestelmän asetuksia",
"ElementTheme_Light": "Vaalea teema",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_WinoServerException": "Wino-palvelin ei saatavilla.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Postilaatikon asetuksia ei löytynyt.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool failed.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool ei saatavilla.",
"Exception_AuthenticationCanceled": "Tunnistautuminen peruutettu",
"Exception_CustomThemeExists": "Teema on jo olemassa.",
"Exception_CustomThemeMissingName": "Sinun on annettava nimi.",
"Exception_CustomThemeMissingWallpaper": "Sinun on valittava taustakuva.",
"Exception_FailedToSynchronizeFolders": "Kansioiden synkronointi epäonnistui",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri is null on activation.",
"Exception_GoogleAuthCorruptedCode": "Corrupted authorization response.",
"Exception_GoogleAuthError": "OAuth authorization error: {0}",
@@ -130,30 +165,30 @@
"Exception_UnsupportedSynchronizerOperation": "This operation is not supported for {0}",
"Exception_UserCancelSystemFolderSetupDialog": "User canceled system folder config dialog.",
"Exception_InboxNotAvailable": "Couldn't setup account folders.",
"Files": "Files",
"FilteringOption_All": "All",
"FilteringOption_Flagged": "Flagged",
"FilteringOption_Unread": "Unread",
"FilteringOption_Files": "Has files",
"Focused": "Focused",
"FolderOperation_CreateSubFolder": "Create sub folder",
"FolderOperation_Delete": "Delete",
"FolderOperation_DontSync": "Don't sync this folder",
"FolderOperation_Empty": "Empty this folder",
"FolderOperation_MarkAllAsRead": "Mark all as read",
"FolderOperation_Move": "Move",
"DragMoveToFolderCaption": "Move to {0}",
"FolderOperation_None": "None",
"FolderOperation_Pin": "Pin",
"FolderOperation_Rename": "Rename",
"FolderOperation_Unpin": "Unpin",
"HoverActionOption_Archive": "Archive",
"HoverActionOption_Delete": "Delete",
"HoverActionOption_MoveJunk": "Move to Junk",
"HoverActionOption_ToggleFlag": "Flag / Unflag",
"HoverActionOption_ToggleRead": "Read / Unread",
"MergedAccountCommonFolderInbox": "Inbox",
"MergedAccountCommonFolderSent": "Sent",
"Files": "Tiedostot",
"FilteringOption_All": "Kaikki",
"FilteringOption_Flagged": "Merkitty",
"FilteringOption_Unread": "Lukemattomat",
"FilteringOption_Files": "Liitteelliset",
"Focused": "Keskitetyt",
"FolderOperation_CreateSubFolder": "Luo alikansio",
"FolderOperation_Delete": "Poista",
"FolderOperation_DontSync": "Älä synkronoi tätä kansiota",
"FolderOperation_Empty": "Tyhjennä kansio",
"FolderOperation_MarkAllAsRead": "Merkitse kaikki luetuksi",
"FolderOperation_Move": "Siirrä",
"DragMoveToFolderCaption": "Siirrä sijaintiin {0}",
"FolderOperation_None": "Ei mitään",
"FolderOperation_Pin": "Kiinnitä",
"FolderOperation_Rename": "Nimeä uudelleen",
"FolderOperation_Unpin": "Poista kiinnitys",
"HoverActionOption_Archive": "Arkistoi",
"HoverActionOption_Delete": "Poista",
"HoverActionOption_MoveJunk": "Siirrä roskakoriin",
"HoverActionOption_ToggleFlag": "Merkitse / Poista merkintä",
"HoverActionOption_ToggleRead": "Luettu / Lukematon",
"MergedAccountCommonFolderInbox": "Saapuneet",
"MergedAccountCommonFolderSent": "Lähetetyt",
"MergedAccountCommonFolderDraft": "Draft",
"MergedAccountCommonFolderJunk": "Junk",
"MergedAccountCommonFolderTrash": "Deleted",
@@ -187,56 +222,56 @@
"GeneralTitle_Warning": "Warning",
"GeneralTitle_Info": "Information",
"Info_AccountCreatedMessage": "{0} is created",
"Info_AccountCreatedTitle": "Account Creation",
"Info_AccountCreationFailedTitle": "Account Creation Failed",
"Info_AccountDeletedMessage": "{0} is successfuly deleted.",
"Info_AccountDeletedTitle": "Account Deleted",
"Info_AccountIssueFixFailedTitle": "Failed",
"Info_AccountIssueFixSuccessMessage": "Fixed all account issues.",
"Info_AccountIssueFixSuccessTitle": "Success",
"Info_AttachmentOpenFailedMessage": "Can't open this attachment.",
"Info_AttachmentOpenFailedTitle": "Failed",
"Info_AttachmentSaveFailedMessage": "Can't save this attachment.",
"Info_AttachmentSaveFailedTitle": "Failed",
"Info_AttachmentSaveSuccessMessage": "Attachment is saved.",
"Info_AttachmentSaveSuccessTitle": "Attachment Saved",
"Info_BackgroundExecutionDeniedMessage": "Background execution for the app is denied. This may affect background synchronization and live notifications.",
"Info_BackgroundExecutionDeniedTitle": "Denied Background Execution",
"Info_BackgroundExecutionUnknownErrorMessage": "Unknown exception occurred when registering background synchronizer.",
"Info_BackgroundExecutionUnknownErrorTitle": "Background Execution Failure",
"Info_ComposerMissingMIMEMessage": "Couldn't locate the MIME file. Synchronizing may help.",
"Info_ComposerMissingMIMETitle": "Failed",
"Info_ContactExistsMessage": "This contact is already in the recipient list.",
"Info_ContactExistsTitle": "Contact Exists",
"Info_DraftFolderMissingMessage": "Draft folder is missing for this account. Please check your account settings.",
"Info_DraftFolderMissingTitle": "Missing Draft Folder",
"Info_FileLaunchFailedTitle": "Failed to launch file",
"Info_InvalidAddressMessage": "'{0}' is not a valid e-mail address.",
"Info_InvalidAddressTitle": "Invalid Address",
"Info_InvalidMoveTargetMessage": "You can't move selected mails to this folder.",
"Info_InvalidMoveTargetTitle": "Invalid Move Target",
"Info_LogsNotFoundMessage": "There are no logs to share.",
"Info_LogsNotFoundTitle": "Logs Not Found",
"Info_LogsSavedMessage": "{0} is saved to selected folder.",
"Info_LogsSavedTitle": "Saved",
"Info_MailRenderingFailedMessage": "This mail is corrupted or can't be opened.\n{0}",
"Info_MailRenderingFailedTitle": "Render Failed",
"Info_MessageCorruptedMessage": "This message is corrupted.",
"Info_MessageCorruptedTitle": "Error",
"Info_MissingFolderMessage": "{0} doesn't exist for this account.",
"Info_MissingFolderTitle": "Missing Folder",
"Info_PDFSaveSuccessTitle": "Success",
"Info_PDFSaveFailedTitle": "Failed to save PDF file",
"Info_PDFSaveSuccessMessage": "PDF file is saved to {0}",
"Info_PurchaseExistsMessage": "Looks like this product has already been purchased before.",
"Info_PurchaseExistsTitle": "Existing Product",
"Info_PurchaseThankYouMessage": "Thank You",
"Info_PurchaseThankYouTitle": "Purchase successful",
"Info_RequestCreationFailedTitle": "Failed to Create Requests",
"Info_ReviewNetworkErrorMessage": "There was a network issue with your review.",
"Info_ReviewNetworkErrorTitle": "Network Issue",
"Info_ReviewNewMessage": "All feedbacks are appreciated. Thank you for the review!",
"Info_ReviewSuccessTitle": "Thank you",
"Info_AccountCreatedTitle": "Tilin luominen",
"Info_AccountCreationFailedTitle": "Tilin luominen epäonnistui",
"Info_AccountDeletedMessage": "{0} poistettiin onnistuneesti.",
"Info_AccountDeletedTitle": "Tili poistettu",
"Info_AccountIssueFixFailedTitle": "Epäonnistui",
"Info_AccountIssueFixSuccessMessage": "Kaikki tiliongelmat korjattu.",
"Info_AccountIssueFixSuccessTitle": "Onnistui",
"Info_AttachmentOpenFailedMessage": "Tätä liitettä ei voi avata.",
"Info_AttachmentOpenFailedTitle": "Epäonnistui",
"Info_AttachmentSaveFailedMessage": "Tätä liitettä ei voi tallentaa.",
"Info_AttachmentSaveFailedTitle": "Epäonnistui",
"Info_AttachmentSaveSuccessMessage": "Liite tallennettu.",
"Info_AttachmentSaveSuccessTitle": "Liite tallennettu",
"Info_BackgroundExecutionDeniedMessage": "Sovelluksen käyttäminen taustalla on estetty. Tämä voi vaikuttaa tausta synkronisointiin ja live-ilmoituksiin.",
"Info_BackgroundExecutionDeniedTitle": "Taustakäyttö estetty",
"Info_BackgroundExecutionUnknownErrorMessage": "Tuntematon virhe tapahtui rekisteröidessä taustasynkronisoijaa.",
"Info_BackgroundExecutionUnknownErrorTitle": "Tausta suoritus epäonnistui",
"Info_ComposerMissingMIMEMessage": "MIME tiedostoa ei löytynyt. Synkronointi voi auttaa.",
"Info_ComposerMissingMIMETitle": "Epäonnistui",
"Info_ContactExistsMessage": "Tämä yhteystieto on jo vastaanottajalistalla.",
"Info_ContactExistsTitle": "Yhteystieto olemassa",
"Info_DraftFolderMissingMessage": "Luonnos kansio puuttuu tältä tililtä. Tarkasta tilisi asetukset.",
"Info_DraftFolderMissingTitle": "Luonnos kansio puuuttuu",
"Info_FileLaunchFailedTitle": "Tiedoston avaaminen epäonnistui",
"Info_InvalidAddressMessage": "'{0}' ei ole kelvollinen sähköpostiosoite.",
"Info_InvalidAddressTitle": "Virheellinen osoite",
"Info_InvalidMoveTargetMessage": "Et voi siirtää valittuja viestejä tähän kansioon.",
"Info_InvalidMoveTargetTitle": "Virheellinen kohde",
"Info_LogsNotFoundMessage": "Ei jaettavia lokeja.",
"Info_LogsNotFoundTitle": "Lokeja ei löytynyt",
"Info_LogsSavedMessage": "{0} tallennettiin valittuun kansioon.",
"Info_LogsSavedTitle": "Tallennettu",
"Info_MailRenderingFailedMessage": "Tämä viesti on vioittunut tai sitä ei voida avata.\n{0}",
"Info_MailRenderingFailedTitle": "Renderöinti epäonnistui",
"Info_MessageCorruptedMessage": "Tämä viesti on vioittunut.",
"Info_MessageCorruptedTitle": "Virhe",
"Info_MissingFolderMessage": "{0} ei ole olemassa tällä tilillä.",
"Info_MissingFolderTitle": "Puuttuva kansio",
"Info_PDFSaveSuccessTitle": "Onnistui",
"Info_PDFSaveFailedTitle": "PDF tiedoston tallentaminen epäonnistui",
"Info_PDFSaveSuccessMessage": "PDF tiedosto tallennettiin kohteeseen {0}",
"Info_PurchaseExistsMessage": "Näyttää sille, että tämä tuote on ostettu jo aikaisemmin.",
"Info_PurchaseExistsTitle": "Tuote olemassa",
"Info_PurchaseThankYouMessage": "Kiitos",
"Info_PurchaseThankYouTitle": "Ostos onnistui",
"Info_RequestCreationFailedTitle": "Pyyntöjen luonti epäonnistui",
"Info_ReviewNetworkErrorMessage": "Arvostelusi yhteydessä tapahtui virhe.",
"Info_ReviewNetworkErrorTitle": "Verkkovirhe",
"Info_ReviewNewMessage": "Kaikki palaute on tervetullutta. Kiitos arvostelustasi!",
"Info_ReviewSuccessTitle": "Kiitos",
"Info_ReviewUnknownErrorMessage": "There was an unknown issue with your review. ({0})",
"Info_ReviewUnknownErrorTitle": "Unknown Error",
"Info_ReviewUpdatedMessage": "Thank you for the updated review.",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "This unsubscribe link is invalid. Failed to unsubscribe from the list.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authentication method",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Connection security",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -287,56 +324,56 @@
"MailOperation_MarkAsUnread": "Mark as unread",
"MailOperation_MarkNotJunk": "Mark as Not Junk",
"MailOperation_Move": "Move",
"MailOperation_MoveFocused": "Move to Focused",
"MailOperation_MoveJunk": "Move to Junk",
"MailOperation_MoveOther": "Move to Other",
"MailOperation_Navigate": "Navigate",
"MailOperation_Print": "Print",
"MailOperation_Reply": "Reply",
"MailOperation_ReplyAll": "Reply all",
"MailOperation_SaveAs": "Save As",
"MailOperation_SetFlag": "Set flag",
"MailOperation_Unarchive": "Unarchive",
"MailOperation_Zoom": "Zoom",
"MailsSelected": "{0} item(s) selected",
"MarkFlagUnflag": "Mark as flagged/unflagged",
"MarkReadUnread": "Mark as read/unread",
"MenuManageAccounts": "Manage Accounts",
"MenuNewMail": "New Mail",
"MenuMergedAccountItemAccountsSuffix": " accounts",
"MenuRate": "Rate Wino",
"MenuSettings": "Settings",
"MergedAccountsAvailableAccountsTitle": "Available Accounts",
"More": "More",
"MoveMailDialog_InvalidFolderMessage": "{0} is not a valid folder for this mail.",
"MoveMailDialog_Title": "Pick a folder",
"NewAccountDialog_AccountName": "Account Name",
"NewAccountDialog_AccountNameDefaultValue": "Personal",
"NewAccountDialog_AccountNamePlaceholder": "eg. Personal Mail",
"NewAccountDialog_Title": "Add New Account",
"NoMailSelected": "No message selected",
"NoMessageCrieteria": "No messages match your search criteria",
"NoMessageEmptyFolder": "This folder is empty",
"Notifications_MultipleNotificationsMessage": "You have {0} new mails",
"Notifications_MultipleNotificationsTitle": "New Mails",
"Notifications_WinoUpdatedMessage": "Checkout new version {0}",
"Notifications_WinoUpdatedTitle": "Wino Mail has been updated.",
"Other": "Other",
"PaneLengthOption_Default": "Default",
"PaneLengthOption_ExtraLarge": "Extra Large",
"PaneLengthOption_Large": "Large",
"PaneLengthOption_Medium": "Medium",
"MailOperation_MoveFocused": "Siirrä keskitettyihin",
"MailOperation_MoveJunk": "Siirrä roskakoriin",
"MailOperation_MoveOther": "Siirrä 'muut' kansioon",
"MailOperation_Navigate": "Navigoi",
"MailOperation_Print": "Tulosta",
"MailOperation_Reply": "Vastaa",
"MailOperation_ReplyAll": "Vastaa kaikille",
"MailOperation_SaveAs": "Tallenna nimellä",
"MailOperation_SetFlag": "Aseta merkintä",
"MailOperation_Unarchive": "Poista arkistointi",
"MailOperation_Zoom": "Zoomaa",
"MailsSelected": "{0} kohta(a) valittu",
"MarkFlagUnflag": "Merkitse tai poista merkintä",
"MarkReadUnread": "Merkitse luetuksi / lukemattomaksi",
"MenuManageAccounts": "Tilien hallinta",
"MenuNewMail": "Uusi sähköposti",
"MenuMergedAccountItemAccountsSuffix": " tilit",
"MenuRate": "Arvostele Wino",
"MenuSettings": "Asetukset",
"MergedAccountsAvailableAccountsTitle": "Saatavilla olevat tilit",
"More": "Lisää",
"MoveMailDialog_InvalidFolderMessage": "{0} ei ole kelvollinen kansio tälle viestille.",
"MoveMailDialog_Title": "Valitse kansio",
"NewAccountDialog_AccountName": "Tilin nimi",
"NewAccountDialog_AccountNameDefaultValue": "Henkilökohtainen",
"NewAccountDialog_AccountNamePlaceholder": "esim. Oma sähköposti",
"NewAccountDialog_Title": "Lisää uusi tili",
"NoMailSelected": "Ei viestiä valittuna",
"NoMessageCrieteria": "Mikään viesti ei vastaa hakuasi",
"NoMessageEmptyFolder": "Kansio tyhjä",
"Notifications_MultipleNotificationsMessage": "Sinulla on {0} uutta sähköpostia",
"Notifications_MultipleNotificationsTitle": "Uudet sähköpostit",
"Notifications_WinoUpdatedMessage": "Tarkasta uusi versio {0}",
"Notifications_WinoUpdatedTitle": "Wino Mail on päivitetty.",
"Other": "Muut",
"PaneLengthOption_Default": "Oletus",
"PaneLengthOption_ExtraLarge": "Extra suuri",
"PaneLengthOption_Large": "Suuri",
"PaneLengthOption_Medium": "Keskikokoinen",
"PaneLengthOption_Micro": "Micro",
"PaneLengthOption_Small": "Small",
"Photos": "Photos",
"PreparingFoldersMessage": "Preparing folders",
"ProviderDetail_Gmail_Description": "Google Account",
"ProviderDetail_IMAP_Description": "Custom IMAP/SMTP server",
"ProviderDetail_IMAP_Title": "IMAP Server",
"ProtocolLogAvailable_Message": "Protocol logs are available for diagnostics.",
"Results": "Results",
"Right": "Right",
"Reader_SaveAllAttachmentButtonText": "Save all attachments",
"PaneLengthOption_Small": "Pieni",
"Photos": "Kuvat",
"PreparingFoldersMessage": "Valmistellaan kansioita",
"ProviderDetail_Gmail_Description": "Google-tili",
"ProviderDetail_IMAP_Description": "Mukautettu IMAP/SMTP palvelin",
"ProviderDetail_IMAP_Title": "IMAP-palvelin",
"ProtocolLogAvailable_Message": "Protokolla lokit ovat saatavilla diagnostiikkaan.",
"Results": "Tulokset",
"Right": "Oikea",
"Reader_SaveAllAttachmentButtonText": "Tallenna kaikki liitteet",
"SynchronizationFolderReport_Success": "up to date",
"SynchronizationFolderReport_Failed": "synchronization is failed",
"SearchBarPlaceholder": "Search",
@@ -387,7 +424,7 @@
"SettingsEnableLogs_Title": "Enable Logs",
"SettingsEnableSignature": "Enable Signature",
"SettingsExpandOnStartup_Description": "Set whether Wino should expand this account's folders on startup.",
"SettingsExpandOnStartup_Title": "Expand Menu on Startup",
"SettingsExpandOnStartup_Title": "Laajenna valikko käynnistäessä",
"SettingsExternalContent_Description": "Manage external content settings when rendering mails.",
"SettingsExternalContent_Title": "External Content",
"SettingsFocusedInbox_Description": "Set whether Inbox should be split into two as Focused - Other.",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Center Action",
"SettingsHoverActionLeft": "Left Action",
"SettingsHoverActionRight": "Right Action",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"CategoriesFolderNameOverride": "Categories",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "More",
"SettingsOptions_Title": "Settings",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "You didn't setup any accounts yet.",
"SettingsNotifications_Description": "Turn on or off notifications for this account.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Change the width of the mail list.",
"SettingsPaneLength_Title": "Mail List Pane Length",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Show much more love ❤️ All donations are appreciated.",
"SettingsPaypal_Title": "Donate via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Compact Mode",

View File

@@ -3,13 +3,21 @@
"AccountCreationDialog_Initializing": "initialisation",
"AccountCreationDialog_PreparingFolders": "Réception des informations du dossier.",
"AccountCreationDialog_SigninIn": "Enregistrement des informations du compte.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Nom du compte",
"AccountEditDialog_Title": "Modifier le compte",
"AccountPickerDialog_Title": "Choisir un compte",
"AccountSettingsDialog_AccountName": "Sender Display Name",
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AccountSettingsDialog_AccountName": "Nom d'affichage de l'expéditeur",
"AccountSettingsDialog_AccountNamePlaceholder": "ex. Jean Dupont",
"AddHyperlink": "Ajouter",
"AutoDiscoveryProgressMessage": "Recherche des paramètres de messagerie...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Paramètres avancés",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Vos identifiants seront uniquement stockés sur votre ordinateur.",
"BasicIMAPSetupDialog_Description": "Certains comptes requièrent des étapes supplémentaires pour se connecter",
@@ -21,15 +29,17 @@
"BasicIMAPSetupDialog_Password": "Mot de passe",
"BasicIMAPSetupDialog_Title": "Compte IMAP",
"Buttons_AddAccount": "Ajouter un compte",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Appliquer le thème",
"Buttons_Browse": "Parcourir",
"Buttons_Cancel": "Annuler",
"Buttons_Close": "Fermer",
"Buttons_Create": "Créer",
"Buttons_CreateAccount": "Créer un compte",
"Buttons_Copy": "Copy",
"Buttons_Copy": "Copier",
"Buttons_Delete": "Supprimer",
"Buttons_Edit": "Edit",
"Buttons_Edit": "Editer",
"Buttons_Discard": "Ignorer",
"Buttons_EnableImageRendering": "Activer",
"Buttons_No": "Non",
@@ -40,20 +50,21 @@
"Buttons_SaveConfiguration": "Enregistrer la configuration",
"Buttons_Share": "Partager",
"Buttons_SignIn": "Connexion",
"Buttons_TryAgain": "Try Again",
"Buttons_TryAgain": "Réessayer",
"Buttons_Yes": "Oui",
"Buttons_Reset": "Reset",
"Center": "Centrer",
"ComingSoon": "Bientôt disponible...",
"ComposerFrom": "De : ",
"ComposerSubject": "Objet : ",
"ComposerTo": "À : ",
"ClipboardTextCopied_Message": "{0} copied to clipboard.",
"ClipboardTextCopied_Title": "Copied",
"ClipboardTextCopyFailed_Message": "Failed to copy {0} to clipboard.",
"ComposerToPlaceholder": "click enter to input addresses",
"ComposerAttachmentsDropZone_Message": "Drop your files here",
"ComposerImagesDropZone_Message": "Drop your images here",
"ComposerAttachmentsDragDropAttach_Message": "Attach",
"ClipboardTextCopied_Message": "{0} copié dans le presse-papiers.",
"ClipboardTextCopied_Title": "Copié",
"ClipboardTextCopyFailed_Message": "Échec de la copie de {0} dans le presse-papiers.",
"ComposerToPlaceholder": "cliquer sur entrée pour saisir les adresses",
"ComposerAttachmentsDropZone_Message": "Déposez vos fichiers ici",
"ComposerImagesDropZone_Message": "Déposez vos images ici",
"ComposerAttachmentsDragDropAttach_Message": "Attacher",
"CustomThemeBuilder_AccentColorDescription": "Définir une couleur d'accentuation personnalisée si vous le souhaitez. Ne pas sélectionner une couleur utilisera votre couleur d'accentuation Windows.",
"CustomThemeBuilder_AccentColorTitle": "Couleur d'accentuation",
"CustomThemeBuilder_PickColor": "Choisir",
@@ -64,12 +75,22 @@
"CustomThemeBuilder_WallpaperTitle": "Définir un fond d'écran personnalisé",
"DialogMessage_AccountLimitMessage": "Vous avez atteint la limite de création de compte.\nVoulez-vous acheter le module 'Compte illimité' pour continuer ?",
"DialogMessage_AccountLimitTitle": "Limite de compte atteinte",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Voulez-vous supprimer définitivement tous les messages de ce dossier ?",
"DialogMessage_CleanupFolderTitle": "Nettoyer le dossier",
"DialogMessage_ComposerMissingRecipientMessage": "Le message n'a pas de destinataire.",
"DialogMessage_ComposerValidationFailedTitle": "Validation échouée",
"DialogMessage_CreateLinkedAccountMessage": "Give this new link a name. Accounts will be merged under this name.",
"DialogMessage_CreateLinkedAccountTitle": "Account Link Name",
"DialogMessage_CreateLinkedAccountMessage": "Donnez un nom à ce nouveau lien. Les comptes seront fusionnés sous ce nom.",
"DialogMessage_CreateLinkedAccountTitle": "Nom du lien des comptes liés",
"DialogMessage_DeleteAccountConfirmationMessage": "Supprimer {0} ?",
"DialogMessage_DeleteAccountConfirmationTitle": "Toutes les données associées à ce compte seront définitivement supprimées du disque.",
"DialogMessage_DiscardDraftConfirmationMessage": "Ce brouillon sera supprimé. Voulez-vous continuer ?",
@@ -79,63 +100,77 @@
"DialogMessage_NoAccountsForCreateMailMessage": "Vous n'avez aucun compte pour créer un message.",
"DialogMessage_NoAccountsForCreateMailTitle": "Compte manquant",
"DialogMessage_RenameLinkedAccountsMessage": "Entrez un nouveau nom pour le compte lié",
"DialogMessage_RenameLinkedAccountsTitle": "Rename Linked Account",
"DialogMessage_RenameLinkedAccountsTitle": "Changer le nom du lien des comptes",
"DialogMessage_UnlinkAccountsConfirmationMessage": "Cette opération ne supprimera pas vos comptes mais ne supprimera que le lien pour les connexions de dossiers partagés. Voulez-vous continuer?",
"DialogMessage_UnlinkAccountsConfirmationTitle": "Dissocier les comptes",
"DialogMessage_EmptySubjectConfirmation": "Missing Subject",
"DialogMessage_EmptySubjectConfirmation": "Sujet manquant",
"DialogMessage_EmptySubjectConfirmationMessage": "Le message n'a pas d'objet. Voulez-vous continuer ?",
"DialogMessage_RenameFolderTitle": "Rename Folder",
"DialogMessage_RenameFolderMessage": "Enter new name for this folder",
"DialogMessage_UnsubscribeConfirmationTitle": "Unsubscribe",
"DialogMessage_UnsubscribeConfirmationOneClickMessage": "Do you want to stop getting messages from {0}?",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "To stop getting messages from {0}, go to their website to unsubscribe.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Go to website",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Do you want to stop getting messages from {0}? Wino will unsubscribe for you by sending an email from your email account to {1}.",
"DialogMessage_RenameFolderTitle": "Renommer le dossier",
"DialogMessage_RenameFolderMessage": "Saisir un nouveau nom pour ce dossier",
"DialogMessage_UnsubscribeConfirmationTitle": "Se désabonner",
"DialogMessage_UnsubscribeConfirmationOneClickMessage": "Voulez-vous cesser de recevoir des messages de {0} ?",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Pour ne plus recevoir de messages de {0}, rendez-vous sur leur site web pour vous désabonner.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Accéder au site Web",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Souhaitez-vous ne plus recevoir de messages de la part de {0} ? Wino se désabonnera pour vous en envoyant un e-mail de votre compte e-mail à {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Ne plus demander",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino n'a pas son propre serveur Discord, mais un canal spécial « wino-mail » est hébergé sur le serveur « Developer Sanctuary ».\nPour obtenir les mises à jour sur Wino, veuillez rejoindre le serveur Developer Sanctuary et suivre le canal « wino-mail » sous « Projets communautaires ».\n\nVous serez dirigé vers l'URL du serveur car Discord ne prend pas en charge les invitations à des chaînes.",
"DiscordChannelDisclaimerTitle": "Informations importantes sur Discord",
"Draft": "Brouillon",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Dessiner",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Insérer",
"EditorToolbarOption_None": "Aucun",
"EditorToolbarOption_Options": "Options",
"EditorTooltip_WebViewEditor": "Use web view editor",
"EditorTooltip_WebViewEditor": "Utiliser l'éditeur de vue web",
"ElementTheme_Dark": "Mode sombre",
"ElementTheme_Default": "Utiliser les paramètres du système",
"ElementTheme_Light": "Mode clair",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_WinoServerException": "Le serveur Wino a échoué.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Impossible de trouver les paramètres de la boîte de réception.",
"Exception_ImapClientPoolFailed": "Échec du groupement de clients IMAP.",
"Exception_AuthenticationCanceled": "Authentification annulée",
"Exception_CustomThemeExists": "Ce thème existe déjà.",
"Exception_CustomThemeMissingName": "Vous devez indiquer un nom.",
"Exception_CustomThemeMissingWallpaper": "Vous devez fournir une image d'arrière-plan personnalisée.",
"Exception_FailedToSynchronizeFolders": "Échec de la synchronisation des dossiers",
"Exception_GoogleAuthCallbackNull": "Callback uri is null on activation.",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "L'url de rappel est nulle lors de l'activation.",
"Exception_GoogleAuthCorruptedCode": "Réponse dautorisation corrompue.",
"Exception_GoogleAuthError": "Erreur d'autorisation OAuth : {0}",
"Exception_GoogleAuthInvalidResponse": "Received request with invalid state ({0})",
"Exception_GoogleAuthorizationCodeExchangeFailed": "Authorization code exchange failed.",
"Exception_GoogleAuthInvalidResponse": "Demande reçue avec un état invalide ({0})",
"Exception_GoogleAuthorizationCodeExchangeFailed": "L'échange de code d'autorisation a échoué.",
"Exception_InvalidSystemFolderConfiguration": "La configuration du dossier système nest pas valide. Vérifiez la configuration et réessayez.",
"Exception_NullAssignedAccount": "Assigned account is null",
"Exception_NullAssignedFolder": "Assigned folder is null",
"Exception_SynchronizerFailureHTTP": "Response handling failed with error HTTP code {0}",
"Exception_NullAssignedAccount": "Le compte assigné est null",
"Exception_NullAssignedFolder": "Le dossier assigné est null",
"Exception_SynchronizerFailureHTTP": "Le traitement de la réponse a échoué avec le code d'erreur HTTP {0}",
"Exception_TokenGenerationFailed": "Échec de la génération du jeton",
"Exception_TokenInfoRetrivalFailed": "Impossible de récupérer les informations de l'utilisateur.",
"Exception_UnknowErrorDuringAuthentication": "Unknown error occurred during authentication",
"Exception_UnsupportedAction": "Action {0} is not implemented in request processor",
"Exception_UnknowErrorDuringAuthentication": "Une erreur inconnue s'est produite lors de l'authentification",
"Exception_UnsupportedAction": "L'action {0} n'est pas mise en œuvre dans le processeur de la demande",
"Exception_UnsupportedProvider": "Ce fournisseur n'est pas pris en charge.",
"Exception_UnsupportedSynchronizerOperation": "Cette opération n'est pas supportée pour {0}",
"Exception_UserCancelSystemFolderSetupDialog": "L'utilisateur a annulé la boîte de dialogue de configuration du dossier système.",
"Exception_InboxNotAvailable": "Couldn't setup account folders.",
"Exception_InboxNotAvailable": "Impossible de configurer les dossiers du compte.",
"Files": "Fichiers",
"FilteringOption_All": "Tout",
"FilteringOption_Flagged": "Marqué",
"FilteringOption_Unread": "Non lus",
"FilteringOption_Files": "Has files",
"Focused": "Focused",
"FilteringOption_Files": "Possède des pièces jointes",
"Focused": "Focalisé",
"FolderOperation_CreateSubFolder": "Créer un sous-dossier",
"FolderOperation_Delete": "Supprimer",
"FolderOperation_DontSync": "Ne pas synchroniser ce dossier",
@@ -177,14 +212,14 @@
"IMAPSetupDialog_UseSameConfig": "Utilisez le même nom d'utilisateur et mot de passe pour envoyer un e-mail",
"IMAPSetupDialog_Username": "Nom dutilisateur",
"IMAPSetupDialog_UsernamePlaceholder": "johndoe, johndoe@fabrikam.com, domaine/johndoe",
"IMAPSetupDialog_ConnectionFailedTitle": "Connection Failed",
"IMAPSetupDialog_ConnectionFailedMessage": "IMAP connection failed.",
"IMAPSetupDialog_ConnectionFailedTitle": "Échec de la Connexion",
"IMAPSetupDialog_ConnectionFailedMessage": "Échec de la connexion IMAP.",
"ImageRenderingDisabled": "L'affichage d'image est désactivé pour ce message.",
"InfoBarAction_Enable": "Activer",
"InfoBarMessage_SynchronizationDisabledFolder": "Ce dossier est désactivé pour la synchronisation.",
"InfoBarTitle_SynchronizationDisabledFolder": "Dossier désactivé",
"GeneralTitle_Error": "Error",
"GeneralTitle_Warning": "Warning",
"GeneralTitle_Error": "Erreur",
"GeneralTitle_Warning": "Avertissement",
"GeneralTitle_Info": "Information",
"Info_AccountCreatedMessage": "{0} est créé",
"Info_AccountCreatedTitle": "Création de compte",
@@ -202,12 +237,12 @@
"Info_AttachmentSaveSuccessTitle": "Pièce jointe enregistrée",
"Info_BackgroundExecutionDeniedMessage": "L'exécution en arrière-plan de l'application est refusée. Cela peut affecter la synchronisation en arrière-plan et les notifications en direct.",
"Info_BackgroundExecutionDeniedTitle": "Exécution en arrière-plan refusée",
"Info_BackgroundExecutionUnknownErrorMessage": "Unknown exception occurred when registering background synchronizer.",
"Info_BackgroundExecutionUnknownErrorMessage": "Une exception inconnue s'est produite lors de l'enregistrement de la synchronisation en arrière-plan.",
"Info_BackgroundExecutionUnknownErrorTitle": "Échec de l'exécution en arrière-plan",
"Info_ComposerMissingMIMEMessage": "Impossible de trouver le fichier MIME. La synchronisation peut aider.",
"Info_ComposerMissingMIMETitle": "Failed",
"Info_ComposerMissingMIMETitle": "Échec",
"Info_ContactExistsMessage": "Ce contact est déjà dans la liste des destinataires.",
"Info_ContactExistsTitle": "Contact Exists",
"Info_ContactExistsTitle": "Le contact existe",
"Info_DraftFolderMissingMessage": "Le dossier Brouillon est manquant pour ce compte. Veuillez vérifier vos paramètres de compte.",
"Info_DraftFolderMissingTitle": "Dossier brouillon manquant",
"Info_FileLaunchFailedTitle": "Échec du lancement du fichier",
@@ -223,11 +258,11 @@
"Info_MailRenderingFailedTitle": "Le rendu a échoué",
"Info_MessageCorruptedMessage": "Ce message est corrompu.",
"Info_MessageCorruptedTitle": "Erreur",
"Info_MissingFolderMessage": "{0} doesn't exist for this account.",
"Info_MissingFolderMessage": "{0} n'existe pas pour ce compte.",
"Info_MissingFolderTitle": "Dossier manquant",
"Info_PDFSaveSuccessTitle": "Success",
"Info_PDFSaveFailedTitle": "Failed to save PDF file",
"Info_PDFSaveSuccessMessage": "PDF file is saved to {0}",
"Info_PDFSaveSuccessTitle": "Réussi",
"Info_PDFSaveFailedTitle": "Impossible d'enregistrer le fichier",
"Info_PDFSaveSuccessMessage": "Le fichier PDF est sauvegardé dans {0}",
"Info_PurchaseExistsMessage": "Il semble que ce produit ait déjà été acheté auparavant.",
"Info_PurchaseExistsTitle": "Produit existant",
"Info_PurchaseThankYouMessage": "Merci",
@@ -250,9 +285,11 @@
"Info_UnsupportedFunctionalityDescription": "Cette fonctionnalité nest pas encore implémentée.",
"Info_UnsupportedFunctionalityTitle": "Non supporté",
"Info_UnsubscribeLinkInvalidTitle": "Url de désinscription non valide",
"Info_UnsubscribeLinkInvalidMessage": "This unsubscribe link is invalid. Failed to unsubscribe from the list.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_UnsubscribeLinkInvalidMessage": "Ce lien de désinscription est invalide. Impossible de se désabonner de la liste.",
"Info_UnsubscribeSuccessMessage": "Désabonnement réussi de {0}.",
"Info_UnsubscribeErrorMessage": "Échec du désabonnement",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Méthode dauthentification",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Sécurité de la connexion",
"ImapAuthenticationMethod_Auto": "Automatique",
@@ -269,10 +306,10 @@
"Justify": "Justifier",
"Left": "Gauche",
"Link": "Lien",
"LinkedAccountsCreatePolicyMessage": "you must have at least 2 accounts to create link\nlink will be removed on save",
"LinkedAccountsCreatePolicyMessage": "vous devez avoir au moins 2 comptes pour créer le lien\nlien sera supprimé lors de la sauvegarde",
"LinkedAccountsTitle": "Comptes liés",
"MailOperation_AlwaysMoveFocused": "Always Move to Focused",
"MailOperation_AlwaysMoveOther": "Always Move to Other",
"MailOperation_AlwaysMoveFocused": "Toujours déplacer vers Focalisation",
"MailOperation_AlwaysMoveOther": "Toujours déplacer vers Autre",
"MailOperation_Archive": "Archiver",
"MailOperation_ClearFlag": "Enlever la balise",
"MailOperation_DarkEditor": "Sombre",
@@ -287,7 +324,7 @@
"MailOperation_MarkAsUnread": "Marquer comme non lu",
"MailOperation_MarkNotJunk": "Marquer comme non indésirable",
"MailOperation_Move": "Déplacer",
"MailOperation_MoveFocused": "Move to Focused",
"MailOperation_MoveFocused": "Déplacer vers Focalisation",
"MailOperation_MoveJunk": "Déplacer vers indésirables",
"MailOperation_MoveOther": "Déplacer vers autres",
"MailOperation_Navigate": "Naviguer",
@@ -298,7 +335,7 @@
"MailOperation_SetFlag": "Définir drapeau",
"MailOperation_Unarchive": "Désarchiver",
"MailOperation_Zoom": "Zoom",
"MailsSelected": "{0} item(s) selected",
"MailsSelected": "{0} élément(s) sélectionné(s)",
"MarkFlagUnflag": "Marquer ou Démarquer ce message",
"MarkReadUnread": "Marquer comme lu/non lu",
"MenuManageAccounts": "Gérer les comptes",
@@ -308,15 +345,15 @@
"MenuSettings": "Paramètres",
"MergedAccountsAvailableAccountsTitle": "Comptes disponibles",
"More": "Plus",
"MoveMailDialog_InvalidFolderMessage": "{0} is not a valid folder for this mail.",
"MoveMailDialog_InvalidFolderMessage": "{0} n'est pas un dossier valide pour ce courrier.",
"MoveMailDialog_Title": "Choisissez un dossier",
"NewAccountDialog_AccountName": "Nom du compte",
"NewAccountDialog_AccountNameDefaultValue": "Personnel",
"NewAccountDialog_AccountNamePlaceholder": "Ex. courrier personnel",
"NewAccountDialog_Title": "Ajouter un nouveau compte",
"NoMailSelected": "No message selected",
"NoMessageCrieteria": "No messages match your search criteria",
"NoMessageEmptyFolder": "This folder is empty",
"NoMailSelected": "Aucun message sélectionné",
"NoMessageCrieteria": "Aucuns messages ne correspond à vos critères de recherche",
"NoMessageEmptyFolder": "Ce dossier est vide",
"Notifications_MultipleNotificationsMessage": "Vous avez {0} nouveaux messages",
"Notifications_MultipleNotificationsTitle": "Nouveaux courriers",
"Notifications_WinoUpdatedMessage": "Vérifier la nouvelle version {0}",
@@ -333,21 +370,21 @@
"ProviderDetail_Gmail_Description": "Compte Google",
"ProviderDetail_IMAP_Description": "Serveur IMAP/SMTP personnalisé",
"ProviderDetail_IMAP_Title": "Serveur IMAP",
"ProtocolLogAvailable_Message": "Protocol logs are available for diagnostics.",
"ProtocolLogAvailable_Message": "Les journaux de protocole sont disponibles pour les diagnostics.",
"Results": "Résultats",
"Right": "Droite",
"Reader_SaveAllAttachmentButtonText": "Save all attachments",
"Reader_SaveAllAttachmentButtonText": "Enregistrer toutes les pièces jointes",
"SynchronizationFolderReport_Success": "À jour",
"SynchronizationFolderReport_Failed": "la synchronisation a échouée",
"SearchBarPlaceholder": "Search",
"SearchingIn": "Searching in",
"SearchPivotName": "Results",
"SearchBarPlaceholder": "Rechercher",
"SearchingIn": "Recherche dans",
"SearchPivotName": "Résultats",
"SettingsAboutGithub_Description": "Allez au dépôt GitHub du gestionnaire de tickets.",
"SettingsAboutGithub_Title": "GitHub",
"SettingsAccountManagementAppendMessage_Title": "Append messages to Sent folder",
"SettingsAccountManagementAppendMessage_Title": "Ajouter les messages au dossier Envoyé",
"SettingsAccountManagementAppendMessage_Description": "Créer une copie du message dans le dossier Envoyé après l'envoi du brouillon. Activez cette option si vous ne voyez pas vos e-mails après les avoir envoyés dans le dossier Envoyés.",
"SettingsEditLinkedInbox_Title": "Edit Linked Inbox",
"SettingsEditLinkedInbox_Description": "Add / remove accounts, rename or break the link between accounts.",
"SettingsEditLinkedInbox_Title": "Modifier la boîte de réception liée",
"SettingsEditLinkedInbox_Description": "Ajouter / supprimer des comptes, renommer ou rompre le lien entre les comptes.",
"SettingsAboutVersion": "Version ",
"SettingsAboutWinoDescription": "Client de messagerie léger pour les périphériques Windows.",
"SettingsAbout_Description": "En savoir plus sur Wino.",
@@ -359,29 +396,29 @@
"SettingsAccountName_Title": "Nom du compte",
"SettingsApplicationTheme_Description": "Personnalisez Wino avec différents thèmes d'application personnalisés pour vous.",
"SettingsApplicationTheme_Title": "Thème de l'application",
"SettingsAvailableThemes_Description": "Select a theme from Wino's own collection for your taste or apply your own themes.",
"SettingsAvailableThemes_Description": "Sélectionnez un thème de la collection de Wino selon vos goûts ou appliquez vos propres thèmes.",
"SettingsAvailableThemes_Title": "Thèmes disponibles",
"SettingsAutoSelectNextItem_Title": "Auto select next item",
"SettingsAutoSelectNextItem_Description": "Select the next item after you delete or move a mail.",
"SettingsAutoSelectNextItem_Title": "Sélection automatique de l'élément suivant",
"SettingsAutoSelectNextItem_Description": "Sélectionnez l'élément suivant après avoir supprimé ou déplacé un courrier.",
"SettingsCustomTheme_Description": "Créez votre propre thème personnalisé avec un fond d'écran personnalisé et une couleur d'accentuation.",
"SettingsCustomTheme_Title": "Thème personnalisé",
"SettingsConfigureSpecialFolders_Title": "Configure System Folders",
"SettingsConfigureSpecialFolders_Description": "Set folders with special functions. Folders such as Archive, Inbox, and Drafts are essential for Wino to function properly.",
"SettingConfigureSpecialFolders_Button": "Configure",
"Error_FailedToSetupSystemFolders_Title": "Failed to setup system folders",
"SettingsConfigureSpecialFolders_Title": "Configurer les dossiers système",
"SettingsConfigureSpecialFolders_Description": "Définir des dossiers avec des fonctions spéciales. Les dossiers tels que Archive, Boîte de réception et Brouillons sont essentiels au bon fonctionnement de Wino.",
"SettingConfigureSpecialFolders_Button": "Configurer",
"Error_FailedToSetupSystemFolders_Title": "Impossible de configurer les dossiers système",
"SettingsDeleteAccount_Description": "Supprimer tous les e-mails et identifiants associés à ce compte.",
"SettingsDeleteAccount_Title": "Supprimer ce compte",
"SettingsDeleteProtection_Description": "Wino devrait-il vous demander une comfirmation chaque fois que vous essayez de supprimer définitivement un mail en utilisant les touches Maj + Supprimer?",
"SettingsDeleteProtection_Title": "Protection contre la suppression permanente",
"SettingsDiagnostics_Description": "Pour les développeurs",
"SettingsDiagnostics_Title": "Diagnostics",
"SettingsDiscord_Description": "Get regular development updates, join roadmap discussions and provide feedback.",
"SettingsDiscord_Description": "Obtenez des mises à jour régulières sur le développement, participez aux discussions sur la feuille de route et donnez votre avis.",
"SettingsDiscord_Title": "Canal Discord",
"SettingsElementThemeSelectionDisabled": "Element theme selection is disabled when application theme is selected other than Default.",
"SettingsElementTheme_Description": "Select a Windows theme for Wino",
"SettingsElementThemeSelectionDisabled": "La sélection du thème de l'élément est désactivée lorsque le thème de l'application sélectionné n'est pas le thème par défaut.",
"SettingsElementTheme_Description": "Sélectionnez un thème Windows pour Wino",
"SettingsElementTheme_Title": "Thème de l'élément",
"SettingsEnableHoverActions_Title": "Activer les actions de survol",
"SettingsEnableIMAPLogs_Description": "Enable this to provide details about IMAP connectivity issuses you had during IMAP server setup.",
"SettingsEnableIMAPLogs_Description": "Activez cette option pour fournir des détails sur les problèmes de connectivité IMAP que vous avez rencontrés lors de la configuration du serveur IMAP.",
"SettingsEnableIMAPLogs_Title": "Activer les journaux de protocole IMAP",
"SettingsEnableLogs_Description": "Je pourrais avoir besoin de Logs pour que les tickets ouverts sur GitHub puissent être diagnostiqués. Aucun de ces journaux n'exposera vos identifiants ou vos informations sensées.",
"SettingsEnableLogs_Title": "Activer les journaux",
@@ -392,55 +429,62 @@
"SettingsExternalContent_Title": "Contenu externe",
"SettingsFocusedInbox_Description": "Définit si la boîte de réception doit être divisée en deux en Prioritaire - Autre.",
"SettingsFocusedInbox_Title": "Boîte de réception Prioritaire",
"SettingsFolderSync_Description": "Enable or disable specific folders for synchronization.",
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsHoverActionCenter": "Center Action",
"SettingsFolderSync_Description": "Activer ou désactiver des dossiers spécifiques pour la synchronisation.",
"SettingsFolderSync_Title": "Synchronisation de dossier",
"SettingsFolderOptions_Title": "Configuration dossier",
"SettingsFolderOptions_Description": "Modifier les paramètres des dossiers individuels, comme activer/désactiver la synchronisation ou afficher/masquer les badges non lus.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Action centrée",
"SettingsHoverActionLeft": "Action de gauche",
"SettingsHoverActionRight": "Action de droite",
"SettingsHoverActions_Description": "Select 3 actions to show up when you hover over the mails with cursor.",
"SettingsHoverActions_Description": "Sélectionnez 3 actions à afficher lorsque vous survolez les messages avec le curseur.",
"SettingsHoverActions_Title": "Actions de survol",
"SettingsLanguage_Description": "Changer la langue d'affichage de Wino.",
"SettingsLanguage_Title": "Langue d'affichage",
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"SettingsLanguageTime_Title": "Langue et heure",
"SettingsLanguageTime_Description": "Langue d'affichage de Wino, format d'heure préféré.",
"CategoriesFolderNameOverride": "Catégories",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Plus",
"SettingsOptions_Title": "Paramètres",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
"SettingsLinkAccounts_Title": "Create Linked Accounts",
"SettingsLinkedAccountsSave_Description": "Modify the current link with the new accounts.",
"SettingsLinkAccounts_Description": "Fusionnez plusieurs comptes en un seul. Regroupez les messages d'une même boîte de réception.",
"SettingsLinkAccounts_Title": "Créer des comptes liés",
"SettingsLinkedAccountsSave_Description": "Modifier le lien actuel avec les nouveaux comptes.",
"SettingsLinkedAccountsSave_Title": "Enregistrer les modifications",
"SettingsLoadImages_Title": "Load images automatically",
"SettingsLoadStyles_Title": "Load styles automatically",
"SettingsMailSpacing_Description": "Adjust the spacing for listing mails.",
"SettingsLoadImages_Title": "Charger les images automatiquement",
"SettingsLoadStyles_Title": "Chargement automatique des styles",
"SettingsMailSpacing_Description": "Ajuster l'espacement pour l'énumération des courriers.",
"SettingsMailSpacing_Title": "Espacement du courrier",
"SettingsFolderMenuStyle_Title": "Create Nested Folders",
"SettingsFolderMenuStyle_Description": "Change whether account folders should be nested inside an account menu item or not. Toggle this off if you like the old menu system in Windows Mail",
"SettingsFolderMenuStyle_Title": "Créer des dossiers imbriqués",
"SettingsFolderMenuStyle_Description": "Indique si les dossiers de compte doivent être imbriqués dans un élément de menu de compte ou non. Désactivez cette option si vous préférez l'ancien système de menu de Windows Mail",
"SettingsManageAccountSettings_Description": "Notifications, signatures, synchronisation et autres paramètres par compte.",
"SettingsManageAccountSettings_Title": "Manage Account Settings",
"SettingsAppPreferences_Title": "App Preferences",
"SettingsAppPreferences_Description": "General settings / preferences for Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Application close behavior",
"SettingsAppPreferences_CloseBehavior_Description": "What should happen when you close the app?",
"SettingsAppPreferences_StartupBehavior_Title": "Start minimized on Windows startup",
"SettingsAppPreferences_StartupBehavior_Description": "Allow Wino Mail to launch minimized when Windows starts. Always allow it to receive notifications.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail successfully set to be launched in the background on Windows startup.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail will not be launched on Windows startup. This will cause you to miss notifications when you restart your computer.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Your administrator or group policies disabled running applications on startup. Thus, Wino Mail can't be set to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Please go to Task Manager -> Startup tab to allow Wino Mail to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Fatal error occurred while changing the startup mode for Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Enable",
"SettingsAppPreferences_StartupBehavior_Disable": "Disable",
"SettingsReorderAccounts_Title": "Reorder Accounts",
"SettingsReorderAccounts_Description": "Change the order of accounts in the account list.",
"SettingsManageLink_Description": "Move items to add new link or remove existing link.",
"SettingsManageLink_Title": "Manage Link",
"SettingsMarkAsRead_Description": "Change what should happen to the selected item.",
"SettingsMarkAsRead_DontChange": "Don't automatically mark item as read",
"SettingsManageAccountSettings_Title": "Gérer les paramètres du compte",
"SettingsAppPreferences_Title": "Préférence de l'application",
"SettingsAppPreferences_Description": "Paramètres généraux / préférences pour Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Comportement de fermeture de l'application",
"SettingsAppPreferences_CloseBehavior_Description": "Que se passe-t-il lorsque vous fermez l'application?",
"SettingsAppPreferences_StartupBehavior_Title": "Démarrage minimisé au démarrage de Windows",
"SettingsAppPreferences_StartupBehavior_Description": "Permettre à Wino Mail de se lancer en mode réduit au démarrage de Windows. Autorisez-le toujours à recevoir des notifications.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail a été configuré avec succès pour être lancé en arrière-plan au démarrage de Windows.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail ne sera pas lancé au démarrage de Windows. Vous ne recevrez donc pas de notifications lorsque vous redémarrerez votre ordinateur.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Votre administrateur ou les stratégies de groupe ont désactivé l'exécution d'applications au démarrage. Ainsi, Wino Mail ne peut pas être lancé au démarrage de Windows.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Veuillez aller dans le Gestionnaire des tâches -> onglet Démarrage pour permettre à Wino Mail de se lancer au démarrage de Windows.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Une erreur fatale s'est produite lors de la modification du mode de démarrage de Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Activer",
"SettingsAppPreferences_StartupBehavior_Disable": "Désactiver",
"SettingsReorderAccounts_Title": "Réorganiser les comptes",
"SettingsReorderAccounts_Description": "Modifier l'ordre des comptes dans la liste des comptes.",
"SettingsManageLink_Description": "Déplacer des éléments pour ajouter un nouveau lien ou supprimer un lien existant.",
"SettingsManageLink_Title": "Gérer le lien",
"SettingsMarkAsRead_Description": "Modifier ce qui doit arriver à l'élément sélectionné.",
"SettingsMarkAsRead_DontChange": "Ne pas marquer automatiquement l'élément comme lu",
"SettingsMarkAsRead_SecondsToWait": "Secondes à attendre : ",
"SettingsMarkAsRead_Timer": "When viewed in the reading pane",
"SettingsMarkAsRead_Timer": "Lorsqu'il est affiché dans le volet de lecture",
"SettingsMarkAsRead_Title": "Marquer l'élément comme lu",
"SettingsMarkAsRead_WhenSelected": "Lorsque sélectionné",
"SettingsMessageList_Description": "Modifiez la façon dont vos messages doivent être organisés dans la liste de courriels.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Vous n'avez pas encore configuré de comptes.",
"SettingsNotifications_Description": "Activer ou désactiver les notifications pour ce compte.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Modifie la largeur de la liste de courriels.",
"SettingsPaneLength_Title": "Longueur du panneau de la liste d'emails",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Montrez-nous plus d'amour ❤️ Tous les dons sont appréciés.",
"SettingsPaypal_Title": "Faire un don via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Mode compact",
@@ -459,10 +503,10 @@
"SettingsPersonalization_Title": "Personnalisation",
"SettingsPrivacyPolicy_Description": "Examinez la politique de confidentialité.",
"SettingsPrivacyPolicy_Title": "Politique de confidentialité",
"SettingsReader_Title": "Reader",
"SettingsComposer_Title": "Composer",
"SettingsReadComposePane_Description": "Fonts, external content.",
"SettingsReadComposePane_Title": "Reader & Composer",
"SettingsReader_Title": "Lecteur",
"SettingsComposer_Title": "Éditeur",
"SettingsReadComposePane_Description": "Polices, contenu externe.",
"SettingsReadComposePane_Title": "Lecteur & Éditeur",
"SettingsReaderFont_Title": "Police par défaut du lecteur",
"SettingsReaderFontFamily_Description": "Modifier la police par défaut et la taille de police pour la lecture des messages.",
"SettingsFontFamily_Title": "Famille de polices",
@@ -472,46 +516,46 @@
"SettingsComposerFontFamily_Description": "Modifier la police et la taille par défaut lors de la composition des mails.",
"SettingsRenameMergeAccount_Description": "Changer le nom d'affichage des comptes liés.",
"SettingsRenameMergeAccount_Title": "Renommer",
"SettingsSemanticZoom_Description": "This will allow you to click on the headers in messages list and go to specific date",
"SettingsSemanticZoom_Title": "Semantic Zoom for Date Headers",
"SettingsShowPreviewText_Description": "Hide/show thepreview text.",
"SettingsShowPreviewText_Title": "Show Preview Text",
"SettingsSemanticZoom_Description": "Cela vous permettra de cliquer sur les en-têtes de la liste des messages et d'accéder à une date spécifique",
"SettingsSemanticZoom_Title": "Zoom sémantique sur les en-têtes de date",
"SettingsShowPreviewText_Description": "Masquer/afficher le texte de l'aperçu.",
"SettingsShowPreviewText_Title": "Afficher l'aperçu du texte",
"SettingsShowSenderPictures_Description": "Masquer/afficher les vignettes des images de l'expéditeur.",
"SettingsShowSenderPictures_Title": "Afficher l'avatar de l'expéditeur",
"SettingsPrefer24HourClock_Title": "Display Clock Format in 24 Hours",
"SettingsPrefer24HourClock_Title": "Afficher le format horloge en 24 heures",
"SettingsPrefer24HourClock_Description": "Les heures de réception du courrier seront affichées au format 24 heures au lieu de 12 (AM/PM)",
"SettingsSignature_Description": "Manage account signatures",
"SettingsSignature_Description": "Gérer les signatures du compte",
"SettingsSignature_Title": "Signature",
"SettingsStartupItem_Description": "Primary account item to load Inbox at startup.",
"SettingsStartupItem_Title": "Startup Item",
"SettingsStartupItem_Description": "Élément principal du compte pour charger la boîte de réception au démarrage.",
"SettingsStartupItem_Title": "Élément de démarrage",
"SettingsStore_Description": "Montrer nous un peu d'amour ❤️",
"SettingsStore_Title": "Évaluez l'application sur le store",
"SettingsThreads_Description": "Organiser les messages en fils de conversation.",
"SettingsThreads_Title": "Affichage en mode conversation",
"SettingsUnlinkAccounts_Description": "Remove the link between accounts. This will not delete your accounts.",
"SettingsUnlinkAccounts_Description": "Supprimer le lien entre les comptes. Cela ne supprimera pas vos comptes.",
"SettingsUnlinkAccounts_Title": "Dissocier les comptes",
"SortingOption_Date": "Par date",
"SortingOption_Name": "Par nom",
"StoreRatingDialog_MessageFirstLine": "All feedbacks are appreciated and they will make much Wino better in the future. Would you like to rate Wino in Microsoft Store?",
"StoreRatingDialog_MessageSecondLine": "Would you like to rate Wino Mail in Microsoft Store?",
"StoreRatingDialog_MessageFirstLine": "Tous les commentaires sont appréciés et ils permettront d'améliorer Wino à l'avenir. Souhaitez-vous donner une note à Wino dans Microsoft Store ?",
"StoreRatingDialog_MessageSecondLine": "Voulez-vous évaluer Wino Mail dans Microsoft Store ?",
"StoreRatingDialog_Title": "Vous aimez Wino ?",
"SystemFolderConfigDialog_ArchiveFolderDescription": "Archived messages will be moved to here.",
"SystemFolderConfigDialog_ArchiveFolderHeader": "Archive Folder",
"SystemFolderConfigDialog_DeletedFolderDescription": "Deleted messages will be moved to here.",
"SystemFolderConfigDialog_ArchiveFolderDescription": "Les messages archivés seront déplacés ici.",
"SystemFolderConfigDialog_ArchiveFolderHeader": "Dossier archive",
"SystemFolderConfigDialog_DeletedFolderDescription": "Les messages supprimés seront déplacés ici.",
"SystemFolderConfigDialog_DeletedFolderHeader": "Dossier supprimé",
"SystemFolderConfigDialog_DraftFolderDescription": "Les nouveaux courriels/réponses seront créés ici.",
"SystemFolderConfigDialog_DraftFolderHeader": "Dossier de brouillon",
"SystemFolderConfigDialog_JunkFolderDescription": "Tous les courriers indésirables et spam/spam seront ici.",
"SystemFolderConfigDialog_JunkFolderHeader": "Dossier indésirable/spam",
"SystemFolderConfigDialog_MessageFirstLine": "This IMAP server doesn't support SPECIAL-USE extension hence Wino couldn't setup the system folders properly.",
"SystemFolderConfigDialog_MessageSecondLine": "Please select the appropriate folders for specific functionalities.",
"SystemFolderConfigDialog_MessageFirstLine": "Ce serveur IMAP ne supporte pas l'extension SPECIAL-USE et Wino n'a donc pas pu configurer les dossiers système correctement.",
"SystemFolderConfigDialog_MessageSecondLine": "Veuillez sélectionner les dossiers appropriés pour des fonctionnalités spécifiques.",
"SystemFolderConfigDialog_SentFolderDescription": "Le dossier contenant les messages envoyés sera stocké.",
"SystemFolderConfigDialog_SentFolderHeader": "Dossier envoyé",
"SystemFolderConfigDialog_Title": "Configurer les dossiers système",
"SystemFolderConfigDialogValidation_InboxSelected": "You can't assign Inbox folder to any other system folder.",
"SystemFolderConfigDialogValidation_DuplicateSystemFolders": "Some of the system folders are used more than once in the configuration.",
"SystemFolderConfigSetupSuccess_Title": "System Folders Setup",
"SystemFolderConfigSetupSuccess_Message": "System folders are successfully configured.",
"SystemFolderConfigDialogValidation_InboxSelected": "Vous ne pouvez pas assigner de dossier de boîte de réception à un autre dossier système.",
"SystemFolderConfigDialogValidation_DuplicateSystemFolders": "Certains dossiers du système sont utilisés plusieurs fois dans la configuration.",
"SystemFolderConfigSetupSuccess_Title": "Configuration des dossiers système",
"SystemFolderConfigSetupSuccess_Message": "Les dossiers système sont configurés avec succès.",
"TestingImapConnectionMessage": "Test de la connexion au serveur...",
"Today": "Aujourd'hui",
"UnknownAddress": "Adresse inconnue",
@@ -520,33 +564,33 @@
"UnknownSender": "Expéditeur inconnu",
"Unsubscribe": "Se désabonner",
"ViewContactDetails": "Voir les détails",
"WinoUpgradeDescription": "Wino offers 3 accounts to start with for free. If you need more than 3 accounts, please upgrade",
"WinoUpgradeDescription": "Wino offre 3 comptes gratuits pour commencer. Si vous avez besoin de plus de 3 comptes, veuillez passer à la version supérieure",
"WinoUpgradeMessage": "Mettre à niveau vers des comptes illimités",
"WinoUpgradeRemainingAccountsMessage": "{0} comptes gratuits utilisés sur {1}.",
"Yesterday": "Hier",
"SignatureEditorDialog_Title": "Signature Editor",
"SignatureEditorDialog_SignatureName_Placeholder": "Name your signature",
"SignatureEditorDialog_SignatureName_TitleNew": "Signature name",
"SignatureEditorDialog_SignatureName_TitleEdit": "Current signature name: {0}",
"SignatureDeleteDialog_Title": "Delete signature",
"SignatureDeleteDialog_Message": "Are you sure you want to delete \"{0}\" signature?",
"SettingsSignature_ForNewMessages_Title": "For New Messages",
"SettingsSignature_ForFollowingMessages_Title": "For Replies/Forwards",
"SettingsSignature_SignatureDefaults": "Signature defaults",
"SignatureEditorDialog_Title": "Éditeur de signature",
"SignatureEditorDialog_SignatureName_Placeholder": "Nom de la signature",
"SignatureEditorDialog_SignatureName_TitleNew": "Nom de la signature",
"SignatureEditorDialog_SignatureName_TitleEdit": "Nom de la signature actuelle : {0}",
"SignatureDeleteDialog_Title": "Supprimer la signature",
"SignatureDeleteDialog_Message": "Êtes-vous sûr de vouloir supprimer la signature « {0} » ?",
"SettingsSignature_ForNewMessages_Title": "Pour les nouveaux messages",
"SettingsSignature_ForFollowingMessages_Title": "Pour les réponses / les transferts",
"SettingsSignature_SignatureDefaults": "Signature par défaut",
"SettingsSignature_Signatures": "Signatures",
"SettingsSignature_AddCustomSignature_Title": "Add custom signature",
"SettingsSignature_AddCustomSignature_Button": "Add signature",
"SettingsSignature_EditSignature_Title": "Edit signature",
"SettingsSignature_DeleteSignature_Title": "Delete signature",
"SettingsSignature_NoneSignatureName": "None",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimize to system tray",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail will keep running on the system tray. Available to launch by clicking on an icon. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Run in the background",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail will keep running in the background. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Terminate",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail will not keep running anywhere. You will not be notified as new mails arrive. Launch Wino Mail again to continue mail synchronization.",
"TitleBarServerDisconnectedButton_Title": "no connection",
"TitleBarServerDisconnectedButton_Description": "Wino is disconnected from the network. Click reconnect to restore connection.",
"TitleBarServerReconnectButton_Title": "reconnect",
"TitleBarServerReconnectingButton_Title": "connecting"
"SettingsSignature_AddCustomSignature_Title": "Ajouter une signature personnalisée",
"SettingsSignature_AddCustomSignature_Button": "Ajouter une signature",
"SettingsSignature_EditSignature_Title": "Modifier la signature",
"SettingsSignature_DeleteSignature_Title": "Supprimer la signature",
"SettingsSignature_NoneSignatureName": "Aucun",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Réduire dans la barre d'état système",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail fonctionne en permanence dans la barre d'état système. Il est possible de le lancer en cliquant sur une icône. Vous serez informé de l'arrivée de nouveaux messages.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Exécuter en arrière-plan",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail continuera à fonctionner en arrière-plan. Vous serez informé de l'arrivée de nouveaux courriers.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Terminer",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail ne fonctionnera nulle part. Vous ne serez pas notifié de l'arrivée de nouveaux courriers. Lancez à nouveau Wino Mail pour continuer la synchronisation des courriers.",
"TitleBarServerDisconnectedButton_Title": "pas de connexion",
"TitleBarServerDisconnectedButton_Description": "Wino est déconnecté du réseau. Cliquez sur reconnecter pour rétablir la connexion.",
"TitleBarServerReconnectButton_Title": "reconnecter",
"TitleBarServerReconnectingButton_Title": "connexion en cours"
}

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "iniciando",
"AccountCreationDialog_PreparingFolders": "Neste intre estamos a obter información dos cartafois.",
"AccountCreationDialog_SigninIn": "A información da conta estase a gardar.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Nome da conta",
"AccountEditDialog_Title": "Editar conta",
"AccountPickerDialog_Title": "Escolla unha conta",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "p.ex. Manuel Rivas",
"AddHyperlink": "Engadir",
"AutoDiscoveryProgressMessage": "Estase a buscar a configuración do correo...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Opcións avanzadas",
"BasicIMAPSetupDialog_CredentialLocalMessage": "As túas credencias so se gardarán localmente no teu ordenador.",
"BasicIMAPSetupDialog_Description": "Algunhas contas precisan pasos adicionais para iniciar sesión",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Contrasinal",
"BasicIMAPSetupDialog_Title": "Conta IMAP",
"Buttons_AddAccount": "Engadir conta",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Aplicar tema",
"Buttons_Browse": "Procurar",
"Buttons_Cancel": "Anular",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Iniciar sesión",
"Buttons_TryAgain": "Téntao de novo",
"Buttons_Yes": "Si",
"Buttons_Reset": "Reset",
"Center": "Centrar",
"ComingSoon": "Proximamente...",
"ComposerFrom": "De: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Escoller un fondo personalizado",
"DialogMessage_AccountLimitMessage": "Chegou ó límite de contas. Para seguir, queres mercar a función de contas ilimitadas?",
"DialogMessage_AccountLimitTitle": "Chegou ó límite de contas",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Queres borrar todos os correos desta carpeta permanentemente?",
"DialogMessage_CleanupFolderTitle": "Carpeta de limpeza",
"DialogMessage_ComposerMissingRecipientMessage": "A mensaxe non ten destinatario.",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Para deixar de obter mensaxes de {0}, vai ao seu sitio web para desubscribirte.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Ir á páxina web",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Queres deixar de recibir mensaxes de {0}? Wino desusbscribirate enviando un correo dende a túa conta a {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Non preguntar de novo",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino non ten o seu propio servidor de Discord, pero hai un canal chamado \"wino-mail\" dentro do servidor \"Developer Sanctuary\". Para obter novas sobre Wino, por favor entra en Developer Sanctuary e segue o canal \"wino-mail\" dentro de \"Community Projects\".\n\nSerás redirixido ó servidor xa que Discord non ten a función de invitacións de canais.",
"DiscordChannelDisclaimerTitle": "Información importante de Discord",
"Draft": "Borrador",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Debuxar",
"EditorToolbarOption_Format": "Formato",
"EditorToolbarOption_Insert": "Inserir",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Modo claro",
"Emoji": "Emoticonas",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Non se puido encontrar os axustes da bandexa de correo.",
"Exception_ImapClientPoolFailed": "Fallou a colección de conexións IMAP.",
"Exception_AuthenticationCanceled": "Cancelouse a autenticación",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "Debes proporcionar un nome.",
"Exception_CustomThemeMissingWallpaper": "Debes proporcionar unha imaxe de fondo personalizada.",
"Exception_FailedToSynchronizeFolders": "Produciuse un erro ao sincronizar as carpetas",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "A uri de retrochamada é nula na activación.",
"Exception_GoogleAuthCorruptedCode": "A resposta da autenticación corrompiuse.",
"Exception_GoogleAuthError": "Error de autorización OAuth: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "This unsubscribe link is invalid. Failed to unsubscribe from the list.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authentication method",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Connection security",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Center Action",
"SettingsHoverActionLeft": "Left Action",
"SettingsHoverActionRight": "Right Action",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"CategoriesFolderNameOverride": "Categories",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "More",
"SettingsOptions_Title": "Settings",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "You didn't setup any accounts yet.",
"SettingsNotifications_Description": "Turn on or off notifications for this account.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Change the width of the mail list.",
"SettingsPaneLength_Title": "Mail List Pane Length",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Show much more love ❤️ All donations are appreciated.",
"SettingsPaypal_Title": "Donate via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Compact Mode",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "memulai",
"AccountCreationDialog_PreparingFolders": "Kami sedang mendapatkan informasi folder.",
"AccountCreationDialog_SigninIn": "Informasi akun sedang disimpan.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Nama Akun",
"AccountEditDialog_Title": "Sunting Akun",
"AccountPickerDialog_Title": "Pilih akun",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "misal: Budi Susilo",
"AddHyperlink": "Tambahkan",
"AutoDiscoveryProgressMessage": "Mencari pengaturan surel...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Pengaturan Lanjutan",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Informasi masuk akun Anda akan disimpan hanya di perangkat.",
"BasicIMAPSetupDialog_Description": "Beberapa akun membutuhkan tahapan tambahan untuk masuk",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Kata Sandi",
"BasicIMAPSetupDialog_Title": "Akun IMAP",
"Buttons_AddAccount": "Tambahkan Akun",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Terapkan Tema",
"Buttons_Browse": "Telusuri",
"Buttons_Cancel": "Batal",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Masuk",
"Buttons_TryAgain": "Coba Lagi",
"Buttons_Yes": "Ya",
"Buttons_Reset": "Reset",
"Center": "Tengah",
"ComingSoon": "Segera datang...",
"ComposerFrom": "Dari: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Atur latar belakang khusus",
"DialogMessage_AccountLimitMessage": "Anda telah mencapai batas akun.\nApakah Anda ingin membeli tambahan 'Akun Tidak Terbatas' untuk melanjutkan?",
"DialogMessage_AccountLimitTitle": "Batas Akun Tercapai",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Apakah Anda ingin menghapus semua surel di folder ini?",
"DialogMessage_CleanupFolderTitle": "Bersihkan Folder",
"DialogMessage_ComposerMissingRecipientMessage": "Pesan tidak memiliki penerima.",
@@ -82,7 +103,7 @@
"DialogMessage_RenameLinkedAccountsTitle": "Ubah Nama Akun Tertaut",
"DialogMessage_UnlinkAccountsConfirmationMessage": "Ini tidak akan menghapus akun-akun Anda, tetapi hanya menghapus tautan folder yang digabungkan. Apakah Anda ingin melanjutkan?",
"DialogMessage_UnlinkAccountsConfirmationTitle": "Lepas Tautan Akun",
"DialogMessage_EmptySubjectConfirmation": "Missing Subject",
"DialogMessage_EmptySubjectConfirmation": "Tidak Ada Perihal",
"DialogMessage_EmptySubjectConfirmationMessage": "Pesan tidak memiliki perihal. Apakah Anda ingin melanjutkan?",
"DialogMessage_RenameFolderTitle": "Ubah nama folder",
"DialogMessage_RenameFolderMessage": "Masukkan nama baru untuk folder ini",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Untuk berhenti mendapatkan pesan dari {0}, Anda harus mengunjungi situs mereka untuk berhenti berlangganan.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Buka situs web",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Apakah Anda ingin berhenti mendapatkan pesan dari {0}? Wino akan mengirimkan surel dari akun Anda ke {1} untuk berhenti berlangganan.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Jangan tanyakan lagi",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino tidak memiliki server Discord sendiri, tapi ada saluran 'wino-mail' di server 'Developer Sanctuary'.\nUntuk mendapatkan pembaruan tentang Wino, harap bergabung dengan server Developer Sanctuary dan ikuti saluran 'wino-mail' di bawah 'Community Projects\".\n\nAnda akan diarahkan ke alamat server karena Discord tidak mendukung undangan saluran.",
"DiscordChannelDisclaimerTitle": "Informasi tentang Discord",
"Draft": "Konsep",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Gambar",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Sisipkan",
@@ -105,7 +136,8 @@
"ElementTheme_Default": "Gunakan pengaturan sistem",
"ElementTheme_Light": "Mode terang",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_WinoServerException": "Server Wino gagal.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Tidak dapat menemukan pengaturan kotak masuk.",
"Exception_ImapClientPoolFailed": "Gagal IMAP Client Pool.",
"Exception_AuthenticationCanceled": "Otentikasi dibatalkan",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "Anda harus memberikan nama.",
"Exception_CustomThemeMissingWallpaper": "Anda harus memberikan gambar latar Anda sendiri.",
"Exception_FailedToSynchronizeFolders": "Gagal menyelaraskan folder",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Alamat panggilan menghasilkan balasan kosong.",
"Exception_GoogleAuthCorruptedCode": "Balasan otorisasi rusak.",
"Exception_GoogleAuthError": "Galat otorisasi OAuth: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Tautan untuk berhenti berlangganan ini tidak valid. Gagal berhenti langganan dari daftar.",
"Info_UnsubscribeSuccessMessage": "Berhasil berhenti berlangganan dari {0}.",
"Info_UnsubscribeErrorMessage": "Gagal berhenti berlangganan",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Metode otentikasi",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Keamanan sambungan",
"ImapAuthenticationMethod_Auto": "Otomatis",
@@ -336,7 +373,7 @@
"ProtocolLogAvailable_Message": "Catatan log protokol kini tersedia untuk pengawakutuan.",
"Results": "Hasil",
"Right": "Kanan",
"Reader_SaveAllAttachmentButtonText": "Save all attachments",
"Reader_SaveAllAttachmentButtonText": "Simpan semua lampiran",
"SynchronizationFolderReport_Success": "terbaru",
"SynchronizationFolderReport_Failed": "penyelarasan gagal",
"SearchBarPlaceholder": "Cari",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Penyelarasan Folder",
"SettingsFolderOptions_Title": "Pengaturan Folder",
"SettingsFolderOptions_Description": "Ubah pengaturan folder tertentu seperti nyalakan/matikan penyelarasan atau tampilkan/sembunyikan lambang belum dibaca.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Tindakan Tengah",
"SettingsHoverActionLeft": "Tindakan Kiri",
"SettingsHoverActionRight": "Tindakan Kanan",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Bahasa & Waktu",
"SettingsLanguageTime_Description": "Bahasa tampilan Wino, format waktu.",
"CategoriesFolderNameOverride": "Kategori",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Lebih lanjut",
"SettingsOptions_Title": "Pengaturan",
"SettingsLinkAccounts_Description": "Gabungkan beberapa akun. Lihat pesan baru di satu Kotak Masuk.",
@@ -420,19 +464,19 @@
"SettingsFolderMenuStyle_Description": "Ubah apakah foldeer akun harus berada di dalam item menu akun atau tidak. Matikan jika Anda lebih suka gaya menu lama di Windows Mail.",
"SettingsManageAccountSettings_Description": "Pemberitahuan, tanda tangan, penyelarasan, dan pengaturan lain per akun.",
"SettingsManageAccountSettings_Title": "Kelole Pengaturan Akun",
"SettingsAppPreferences_Title": "App Preferences",
"SettingsAppPreferences_Description": "General settings / preferences for Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Application close behavior",
"SettingsAppPreferences_CloseBehavior_Description": "What should happen when you close the app?",
"SettingsAppPreferences_StartupBehavior_Title": "Start minimized on Windows startup",
"SettingsAppPreferences_StartupBehavior_Description": "Allow Wino Mail to launch minimized when Windows starts. Always allow it to receive notifications.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail successfully set to be launched in the background on Windows startup.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail will not be launched on Windows startup. This will cause you to miss notifications when you restart your computer.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Your administrator or group policies disabled running applications on startup. Thus, Wino Mail can't be set to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Please go to Task Manager -> Startup tab to allow Wino Mail to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Fatal error occurred while changing the startup mode for Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Enable",
"SettingsAppPreferences_StartupBehavior_Disable": "Disable",
"SettingsAppPreferences_Title": "Pengaturan Aplikasi",
"SettingsAppPreferences_Description": "Pengaturan umum untuk Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Perilaku saat menutup aplikasi",
"SettingsAppPreferences_CloseBehavior_Description": "Apa yang harus terjadi ketika Anda menutup aplikasi?",
"SettingsAppPreferences_StartupBehavior_Title": "Mulai dan minimalkan saat menyalakan Windows",
"SettingsAppPreferences_StartupBehavior_Description": "Izinkan Wino Mail untuk berjalan dan diminimalkan saat Windows menyala. Selalu izinkan untuk menerima pemberitahuan.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail berhasil diatur untuk dijalankan di latar belakang saat Windows menyala.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail tidak akan dijalankan saat Windows menyala. Ini dapat membuat Anda melewatkan pemberitahuan saat komputer dimulai ulang.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Administrator atau setelan grup tidak mengizinkan menjalankan aplikasi saat menyala. Wino Mail gagal diatur untuk berjalan saat Windows menyala.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Izinkan Wino Mail untuk berjalan saat Windows menyala di Manajer Tugas > tab Aplikasi Pengaktifan.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Galat kritis terjadi saat mengubah modus mulai untuk Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Nyalakan",
"SettingsAppPreferences_StartupBehavior_Disable": "Matikan",
"SettingsReorderAccounts_Title": "Urutkan Ulang Akun",
"SettingsReorderAccounts_Description": "Ubah urutan akun di daftar akun.",
"SettingsManageLink_Description": "Pindahkan item untuk menambahkan tautan baru atau hapus tautan yang sudah ada.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Anda belum menyiapkan akun.",
"SettingsNotifications_Description": "Nyalakan atau matikan pemberitahuan untuk akun ini.",
"SettingsNotifications_Title": "Pemberitahuan",
"SettingsPaneLength_Description": "Ubah lebar daftar email.",
"SettingsPaneLength_Title": "Panjang Panel Daftar Surel",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Berikan lebih banyak cinta ❤️ Semua sumbangan sangat kami hargai.",
"SettingsPaypal_Title": "Sumbangkan melalui PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Mode Ringkas",
@@ -459,10 +503,10 @@
"SettingsPersonalization_Title": "Ubahsuaian",
"SettingsPrivacyPolicy_Description": "Tinjau kebijakan privasi.",
"SettingsPrivacyPolicy_Title": "Kebijakan Privasi",
"SettingsReader_Title": "Reader",
"SettingsComposer_Title": "Composer",
"SettingsReadComposePane_Description": "Fonts, external content.",
"SettingsReadComposePane_Title": "Reader & Composer",
"SettingsReader_Title": "Pembaca",
"SettingsComposer_Title": "Bidang penulisan",
"SettingsReadComposePane_Description": "Fon, konten eksternal.",
"SettingsReadComposePane_Title": "Pembaca dan Bidang Penulisan",
"SettingsReaderFont_Title": "Fon Pembaca Bawaan",
"SettingsReaderFontFamily_Description": "Ubah fon bawaan dan ukuran fon saat membaca surel.",
"SettingsFontFamily_Title": "Jenis Fon",
@@ -539,14 +583,14 @@
"SettingsSignature_EditSignature_Title": "Sunting tanda tangan",
"SettingsSignature_DeleteSignature_Title": "Hapus tanda tangan",
"SettingsSignature_NoneSignatureName": "Tidak ada",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimize to system tray",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail will keep running on the system tray. Available to launch by clicking on an icon. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Run in the background",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail will keep running in the background. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Terminate",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail will not keep running anywhere. You will not be notified as new mails arrive. Launch Wino Mail again to continue mail synchronization.",
"TitleBarServerDisconnectedButton_Title": "no connection",
"TitleBarServerDisconnectedButton_Description": "Wino is disconnected from the network. Click reconnect to restore connection.",
"TitleBarServerReconnectButton_Title": "reconnect",
"TitleBarServerReconnectingButton_Title": "connecting"
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimalkan ke baki sistem",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail akan tetap berjalan di baki sistem. Anda dapat membuka Wino Mail dengan mengeklik ikon. Pemberitahuan surel baru akan tetap berfungsi.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Jalankan di latar belakang",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail akan tetap berjalan di latar belakang. Pemberitahuan surel baru akan tetap berfungsi.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Akhiri",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail tidak akan berjalan saat ditutup. Pemberitahuan surel baru tidak akan berfungsi. Jalankan Wino Mail lagi untuk melanjutkan penyelarasan.",
"TitleBarServerDisconnectedButton_Title": "tiada sambungan",
"TitleBarServerDisconnectedButton_Description": "Wino tidak tersambung ke jaringan. Klik sambungkan kembali untuk mencoba melanjutkan sambungan.",
"TitleBarServerReconnectButton_Title": "sambungkan kembali",
"TitleBarServerReconnectingButton_Title": "menyambungkan"
}

View File

@@ -1,15 +1,23 @@
{
"AccountCreationDialog_Completed": "tutto fatto",
"AccountCreationDialog_Completed": "fatto tutto",
"AccountCreationDialog_Initializing": "inizializzazione",
"AccountCreationDialog_PreparingFolders": "Stiamo ricevendo informazioni sulle cartelle al momento.",
"AccountCreationDialog_SigninIn": "Le informazioni dell'account sono in fase di salvataggio.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Nome account",
"AccountEditDialog_Title": "Modifica account",
"AccountPickerDialog_Title": "Scegli un account",
"AccountSettingsDialog_AccountName": "Sender Display Name",
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AccountSettingsDialog_AccountName": "Nome visualizzato mittente",
"AccountSettingsDialog_AccountNamePlaceholder": "es. Mario Rossi",
"AddHyperlink": "Aggiungi",
"AutoDiscoveryProgressMessage": "Ricerca delle impostazioni della posta...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Configurazione avanzata",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Le tue credenziali verranno memorizzate solo localmente sul tuo computer.",
"BasicIMAPSetupDialog_Description": "Alcuni account richiedono passaggi aggiuntivi per accedere",
@@ -21,15 +29,17 @@
"BasicIMAPSetupDialog_Password": "Password",
"BasicIMAPSetupDialog_Title": "Account IMAP",
"Buttons_AddAccount": "Aggiungi account",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Applica Tema",
"Buttons_Browse": "Sfoglia",
"Buttons_Cancel": "Annulla",
"Buttons_Close": "Chiudi",
"Buttons_Create": "Crea",
"Buttons_CreateAccount": "Crea account",
"Buttons_Copy": "Copy",
"Buttons_Copy": "Copia",
"Buttons_Delete": "Elimina",
"Buttons_Edit": "Edit",
"Buttons_Edit": "Modifica",
"Buttons_Discard": "Scarta",
"Buttons_EnableImageRendering": "Attiva",
"Buttons_No": "No",
@@ -40,8 +50,9 @@
"Buttons_SaveConfiguration": "Salva configurazione",
"Buttons_Share": "Condividi",
"Buttons_SignIn": "Accedi",
"Buttons_TryAgain": "Try Again",
"Buttons_TryAgain": "Riprova",
"Buttons_Yes": "Sì",
"Buttons_Reset": "Reset",
"Center": "Centra",
"ComingSoon": "Prossimamente...",
"ComposerFrom": "Da: ",
@@ -52,9 +63,9 @@
"ClipboardTextCopyFailed_Message": "Impossibile copiare {0} negli appunti.",
"ComposerToPlaceholder": "clicca Invio per inserire gli indirizzi",
"ComposerAttachmentsDropZone_Message": "Trascina qui i tuoi file",
"ComposerImagesDropZone_Message": "Drop your images here",
"ComposerImagesDropZone_Message": "Trascina qui le tue immagini",
"ComposerAttachmentsDragDropAttach_Message": "Allega",
"CustomThemeBuilder_AccentColorDescription": "Imposta un colore principale personalizzato, se vuoi. Non selezionare un colore userà il colore principale di Windows.",
"CustomThemeBuilder_AccentColorDescription": "Imposta un colore principale personalizzato, se vuoi. Se non si selezionerà un colore verrà usato il colore principale di Windows.",
"CustomThemeBuilder_AccentColorTitle": "Colore principale",
"CustomThemeBuilder_PickColor": "Scegli",
"CustomThemeBuilder_ThemeNameDescription": "Nome unico del tuo tema personalizzato.",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Imposta uno sfondo personalizzato",
"DialogMessage_AccountLimitMessage": "Hai raggiunto il limite di creazione degli account.\nVuoi acquistare il componente aggiuntivo 'Account Illimitati' per continuare?",
"DialogMessage_AccountLimitTitle": "Raggiunto il limite degli account",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Vuoi eliminare definitivamente tutti i messaggi in questa cartella?",
"DialogMessage_CleanupFolderTitle": "Pulisci Cartella",
"DialogMessage_ComposerMissingRecipientMessage": "Il messaggio non ha alcun destinatario.",
@@ -82,37 +103,51 @@
"DialogMessage_RenameLinkedAccountsTitle": "Rinomina l'account collegato",
"DialogMessage_UnlinkAccountsConfirmationMessage": "Questa operazione non eliminerà i tuoi account, ma interromperà solo il collegamento verso le connessioni alla cartella condivisa. Vuoi continuare?",
"DialogMessage_UnlinkAccountsConfirmationTitle": "Scollega account",
"DialogMessage_EmptySubjectConfirmation": "Missing Subject",
"DialogMessage_EmptySubjectConfirmation": "Oggetto mancante",
"DialogMessage_EmptySubjectConfirmationMessage": "Il messaggio non ha oggetto. Vuoi continuare?",
"DialogMessage_RenameFolderTitle": "Rename Folder",
"DialogMessage_RenameFolderMessage": "Enter new name for this folder",
"DialogMessage_RenameFolderTitle": "Rinomina cartella",
"DialogMessage_RenameFolderMessage": "Inserisci un nuovo nome per questa cartella",
"DialogMessage_UnsubscribeConfirmationTitle": "Disiscriviti",
"DialogMessage_UnsubscribeConfirmationOneClickMessage": "Vuoi smettere di ricevere messaggi da {0}?",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Per smettere di ricevere messaggi da {0}, vai sul loro sito web per annullare l'iscrizione.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Vai al sito",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Vuoi smettere di ricevere messaggi da {0}? Wino annullerà la tua iscrizione inviando una email dal tuo account email a {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Non chiedermelo più",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino non ha il proprio server Discord, ma il canale speciale \"wino-mail\" è ospitato presso il server \"Developer Sanctuary\".\nPer ottenere gli aggiornamenti di Wino per favore unisciti al server Developer Sanctuary e segui il canale \"wino-mail\" sotto \"Community Projects\".\n\nSarai reindirizzato all'URL del server poiché Discord non supporta gli inviti del canale.",
"DiscordChannelDisclaimerTitle": "Informazioni importanti su Discord",
"Draft": "Bozza",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Disegna",
"EditorToolbarOption_Format": "Formato",
"EditorToolbarOption_Insert": "Inserisci",
"EditorToolbarOption_None": "Vuoto",
"EditorToolbarOption_Options": "Opzioni",
"EditorTooltip_WebViewEditor": "Use web view editor",
"EditorTooltip_WebViewEditor": "Usa editor di visualizzazione web",
"ElementTheme_Dark": "Tema scuro",
"ElementTheme_Default": "Usa le impostazioni di sistema",
"ElementTheme_Light": "Tema chiaro",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_WinoServerException": "Connessione al server Wino fallita.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Impossibile trovare le impostazioni della casella postale.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool fallito.",
"Exception_AuthenticationCanceled": "Autenticazione annullata",
"Exception_CustomThemeExists": "Questo tema esiste già.",
"Exception_CustomThemeMissingName": "È necessario fornire un nome.",
"Exception_CustomThemeMissingWallpaper": "È necessario fornire un'immagine di sfondo personalizzata.",
"Exception_FailedToSynchronizeFolders": "Sincronizzazione delle cartelle non riuscita",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Il Callback uri è nullo all'attivazione.",
"Exception_GoogleAuthCorruptedCode": "Risposta all'autorizzazione corrotta.",
"Exception_GoogleAuthError": "Errore di autorizzazione OAuth: {0}",
@@ -177,8 +212,8 @@
"IMAPSetupDialog_UseSameConfig": "Usa lo stesso nome utente e la stessa password per l'invio di email",
"IMAPSetupDialog_Username": "Nome utente",
"IMAPSetupDialog_UsernamePlaceholder": "johndoe, johndoe@fabrikam.com, domain/johndoe",
"IMAPSetupDialog_ConnectionFailedTitle": "Connection Failed",
"IMAPSetupDialog_ConnectionFailedMessage": "IMAP connection failed.",
"IMAPSetupDialog_ConnectionFailedTitle": "Connessione non riuscita",
"IMAPSetupDialog_ConnectionFailedMessage": "Connessione IMAP non riuscita.",
"ImageRenderingDisabled": "La visualizzazione dell'immagine è disabilitata per questo messaggio.",
"InfoBarAction_Enable": "Attiva",
"InfoBarMessage_SynchronizationDisabledFolder": "Questa cartella è disattivata per la sincronizzazione.",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Questo link di annullamento dell'iscrizione non è valido. Impossibile annullare l'iscrizione alla lista.",
"Info_UnsubscribeSuccessMessage": "Iscrizione a {0} annullata con successo.",
"Info_UnsubscribeErrorMessage": "Impossibile annullare l'iscrizione",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Metodo di autenticazione",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Sicurezza della connessione",
"ImapAuthenticationMethod_Auto": "Automatico",
@@ -333,10 +370,10 @@
"ProviderDetail_Gmail_Description": "Account Google",
"ProviderDetail_IMAP_Description": "Server IMAP/SMTP personalizzato",
"ProviderDetail_IMAP_Title": "Server IMAP",
"ProtocolLogAvailable_Message": "Protocol logs are available for diagnostics.",
"ProtocolLogAvailable_Message": "I registri del protocollo sono disponibili per la diagnostica.",
"Results": "Risultati",
"Right": "Destra",
"Reader_SaveAllAttachmentButtonText": "Save all attachments",
"Reader_SaveAllAttachmentButtonText": "Salva tutti gli allegati",
"SynchronizationFolderReport_Success": "aggiornato",
"SynchronizationFolderReport_Failed": "sincronizzazione fallita",
"SearchBarPlaceholder": "Cerca",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Sincronizzazione della Cartella",
"SettingsFolderOptions_Title": "Configurazione della Cartella",
"SettingsFolderOptions_Description": "Cambia le impostazioni delle singole cartelle come attivare/disattivare la sincronizzazione o mostrare/nascondere l'indicatore non letto.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Azione Centrale",
"SettingsHoverActionLeft": "Azione di Sinistra",
"SettingsHoverActionRight": "Azione di Destra",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Lingua e Ora",
"SettingsLanguageTime_Description": "Lingua di visualizzazione di Wino, formato orario preferito.",
"CategoriesFolderNameOverride": "Categorie",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Di più",
"SettingsOptions_Title": "Impostazioni",
"SettingsLinkAccounts_Description": "Unisci più account in uno. Vedi i messaggi da una Posta in arrivo comune.",
@@ -420,21 +464,21 @@
"SettingsFolderMenuStyle_Description": "Cambia se le cartelle dell'account devono essere annidate o meno all'interno di una voce del menù dell'account. Disattiva questa opzione se ti piace il vecchio sistema di menù in Windows Mail",
"SettingsManageAccountSettings_Description": "Notifiche, firme, sincronizzazione e altre impostazioni per account.",
"SettingsManageAccountSettings_Title": "Gestisci Impostazioni Account",
"SettingsAppPreferences_Title": "App Preferences",
"SettingsAppPreferences_Description": "General settings / preferences for Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Application close behavior",
"SettingsAppPreferences_CloseBehavior_Description": "What should happen when you close the app?",
"SettingsAppPreferences_StartupBehavior_Title": "Start minimized on Windows startup",
"SettingsAppPreferences_StartupBehavior_Description": "Allow Wino Mail to launch minimized when Windows starts. Always allow it to receive notifications.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail successfully set to be launched in the background on Windows startup.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail will not be launched on Windows startup. This will cause you to miss notifications when you restart your computer.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Your administrator or group policies disabled running applications on startup. Thus, Wino Mail can't be set to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Please go to Task Manager -> Startup tab to allow Wino Mail to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Fatal error occurred while changing the startup mode for Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Enable",
"SettingsAppPreferences_StartupBehavior_Disable": "Disable",
"SettingsReorderAccounts_Title": "Reorder Accounts",
"SettingsReorderAccounts_Description": "Change the order of accounts in the account list.",
"SettingsAppPreferences_Title": "Preferenze dell'app",
"SettingsAppPreferences_Description": "Impostazioni generali / preferenze per Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Comportamento chiusura applicazione",
"SettingsAppPreferences_CloseBehavior_Description": "Cosa dovrebbe succedere quando chiudi l'app?",
"SettingsAppPreferences_StartupBehavior_Title": "Avvia minimizzato all'avvio di Windows",
"SettingsAppPreferences_StartupBehavior_Description": "Consenti a Wino Mail di lanciarsi minimizzato all'avvio di Windows. Consentigli sempre di ricevere notifiche.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail correttamente impostato per essere lanciato in background all'avvio di Windows.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail non sarà avviato all'avvio di Windows. Questo ti farà perdere le notifiche quando riavvii il computer.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "L'amministratore o i criteri di gruppo hanno disabilitato l'esecuzione di applicazioni all'avvio. Così, Wino Mail non può essere impostato per avviarsi all'avvio di Windows.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Vai a Task Manager -> scheda Avvio per consentire a Wino Mail di avviarsi all'avvio di Windows.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Si è verificato un errore fatale modificando la modalità di avvio per Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Abilita",
"SettingsAppPreferences_StartupBehavior_Disable": "Disabilita",
"SettingsReorderAccounts_Title": "Riordina account",
"SettingsReorderAccounts_Description": "Cambia l'ordine degli account nella lista account.",
"SettingsManageLink_Description": "Sposta gli elementi per aggiungere un nuovo collegamento o rimuovi un collegamento esistente.",
"SettingsManageLink_Title": "Gestisci Collegamenti",
"SettingsMarkAsRead_Description": "Cambia cosa dovrebbe accadere all'elemento selezionato.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Non hai ancora configurato alcun account.",
"SettingsNotifications_Description": "Attiva o disattiva le notifiche per questo account.",
"SettingsNotifications_Title": "Notifiche",
"SettingsPaneLength_Description": "Cambia la larghezza dell'elenco dei messaggi.",
"SettingsPaneLength_Title": "Lunghezza del Pannello della Lista dei Messaggi",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Mostra molto più amore ❤️ Tutte le donazioni sono apprezzate.",
"SettingsPaypal_Title": "Dona con PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Modalità Compatta",
@@ -459,10 +503,10 @@
"SettingsPersonalization_Title": "Personalizzazione",
"SettingsPrivacyPolicy_Description": "Verifica l'informativa sulla privacy.",
"SettingsPrivacyPolicy_Title": "Informativa sulla Privacy",
"SettingsReader_Title": "Reader",
"SettingsComposer_Title": "Composer",
"SettingsReadComposePane_Description": "Fonts, external content.",
"SettingsReadComposePane_Title": "Reader & Composer",
"SettingsReader_Title": "Lettore",
"SettingsComposer_Title": "Compositore",
"SettingsReadComposePane_Description": "Caratteri, contenuto esterno.",
"SettingsReadComposePane_Title": "Lettore e compositore",
"SettingsReaderFont_Title": "Carattere di Lettura Predefinito",
"SettingsReaderFontFamily_Description": "Cambia la famiglia di caratteri predefinita e la dimensione del carattere per la lettura dei nuovi messaggi.",
"SettingsFontFamily_Title": "Famiglia di Caratteri",
@@ -480,7 +524,7 @@
"SettingsShowSenderPictures_Title": "Mostra Avatar del Mittente",
"SettingsPrefer24HourClock_Title": "Visualizza orologio in formato 24 Ore",
"SettingsPrefer24HourClock_Description": "Gli orari di ricezione della posta saranno visualizzati in formato 24 ore invece di 12 (AM/PM)",
"SettingsSignature_Description": "Manage account signatures",
"SettingsSignature_Description": "Gestisci firme account",
"SettingsSignature_Title": "Firma",
"SettingsStartupItem_Description": "Elemento dell'account primario per caricare la Posta in arrivo all'avvio.",
"SettingsStartupItem_Title": "Elemento Iniziale",
@@ -524,29 +568,29 @@
"WinoUpgradeMessage": "Aggiorna a Account Illimitati",
"WinoUpgradeRemainingAccountsMessage": "{0} di {1} account gratuiti utilizzati.",
"Yesterday": "Ieri",
"SignatureEditorDialog_Title": "Signature Editor",
"SignatureEditorDialog_SignatureName_Placeholder": "Name your signature",
"SignatureEditorDialog_SignatureName_TitleNew": "Signature name",
"SignatureEditorDialog_SignatureName_TitleEdit": "Current signature name: {0}",
"SignatureDeleteDialog_Title": "Delete signature",
"SignatureDeleteDialog_Message": "Are you sure you want to delete \"{0}\" signature?",
"SettingsSignature_ForNewMessages_Title": "For New Messages",
"SettingsSignature_ForFollowingMessages_Title": "For Replies/Forwards",
"SettingsSignature_SignatureDefaults": "Signature defaults",
"SettingsSignature_Signatures": "Signatures",
"SettingsSignature_AddCustomSignature_Title": "Add custom signature",
"SettingsSignature_AddCustomSignature_Button": "Add signature",
"SettingsSignature_EditSignature_Title": "Edit signature",
"SettingsSignature_DeleteSignature_Title": "Delete signature",
"SettingsSignature_NoneSignatureName": "None",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimize to system tray",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail will keep running on the system tray. Available to launch by clicking on an icon. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Run in the background",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail will keep running in the background. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Terminate",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail will not keep running anywhere. You will not be notified as new mails arrive. Launch Wino Mail again to continue mail synchronization.",
"TitleBarServerDisconnectedButton_Title": "no connection",
"TitleBarServerDisconnectedButton_Description": "Wino is disconnected from the network. Click reconnect to restore connection.",
"TitleBarServerReconnectButton_Title": "reconnect",
"TitleBarServerReconnectingButton_Title": "connecting"
"SignatureEditorDialog_Title": "Editor di firme",
"SignatureEditorDialog_SignatureName_Placeholder": "Nomina la tua firma",
"SignatureEditorDialog_SignatureName_TitleNew": "Nome della firma",
"SignatureEditorDialog_SignatureName_TitleEdit": "Nome firma attuale: {0}",
"SignatureDeleteDialog_Title": "Elimina firma",
"SignatureDeleteDialog_Message": "Sei sicuro di voler eliminare la firma \"{0}\"?",
"SettingsSignature_ForNewMessages_Title": "Per nuovi messaggi",
"SettingsSignature_ForFollowingMessages_Title": "Per risposte/inoltri",
"SettingsSignature_SignatureDefaults": "Firme predefinite",
"SettingsSignature_Signatures": "Firme",
"SettingsSignature_AddCustomSignature_Title": "Aggiungi firma personalizzata",
"SettingsSignature_AddCustomSignature_Button": "Aggiungi firma",
"SettingsSignature_EditSignature_Title": "Modifica firma",
"SettingsSignature_DeleteSignature_Title": "Elimina firma",
"SettingsSignature_NoneSignatureName": "Nessuno",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimizza nell'area di notifica",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail continuerà a funzionare nell'area di notifica. Disponibile per il lancio facendo clic su un'icona. Sarai avvisato quando arriveranno nuovi messaggi.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Esegui in background",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail continuerà a essere in esecuzione in background. Sarai avvisato quando arriveranno nuovi messaggi.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Termina",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail non continuerà a funzionare da nessuna parte. Non sarai avvisato quando arrivano nuove e-mail. Avvia nuovamente Wino Mail per continuare la sincronizzazione della posta.",
"TitleBarServerDisconnectedButton_Title": "nessuna connessione",
"TitleBarServerDisconnectedButton_Description": "Wino è disconnesso dalla rete. Clicca di nuovo per ripristinare la connessione.",
"TitleBarServerReconnectButton_Title": "riconnetti",
"TitleBarServerReconnectingButton_Title": "in connessione"
}

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "初期化中",
"AccountCreationDialog_PreparingFolders": "現在フォルダ情報を取得中です。",
"AccountCreationDialog_SigninIn": "アカウント情報を保存しています。",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "アカウント名",
"AccountEditDialog_Title": "アカウントの編集",
"AccountPickerDialog_Title": "アカウントを選択",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AddHyperlink": "追加",
"AutoDiscoveryProgressMessage": "メール設定を検索中...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "詳細設定",
"BasicIMAPSetupDialog_CredentialLocalMessage": "認証情報はローカルにのみ保存されます。",
"BasicIMAPSetupDialog_Description": "一部のアカウントではサインインするために追加の手順が必要です。",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "パスワード",
"BasicIMAPSetupDialog_Title": "IMAPアカウント",
"Buttons_AddAccount": "アカウントを追加",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "テーマを適用",
"Buttons_Browse": "閲覧",
"Buttons_Cancel": "キャンセル",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "サインイン",
"Buttons_TryAgain": "Try Again",
"Buttons_Yes": "はい",
"Buttons_Reset": "Reset",
"Center": "中央",
"ComingSoon": "近日公開",
"ComposerFrom": "差出人: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "カスタム壁紙を設定",
"DialogMessage_AccountLimitMessage": "アカウントの作成上限に達しました。\n「無制限アカウント」アドオンを購入して続行しますか",
"DialogMessage_AccountLimitTitle": "アカウントの上限に達しました",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "このフォルダ内のすべてのメールを完全に削除しますか?",
"DialogMessage_CleanupFolderTitle": "フォルダのクリーンアップ",
"DialogMessage_ComposerMissingRecipientMessage": "メッセージに宛先がありません。",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "To stop getting messages from {0}, go to their website to unsubscribe.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Go to website",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Do you want to stop getting messages from {0}? Wino will unsubscribe for you by sending an email from your email account to {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Don't ask again",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino doesn't have it's own Discord server, but special 'wino-mail' channel is hosted at 'Developer Sanctuary' server.\nTo get the updates about Wino please join Developer Sanctuary server and follow 'wino-mail' channel under 'Community Projects'\n\nYou will be directed to server URL since Discord doesn't support channel invites.",
"DiscordChannelDisclaimerTitle": "Important Discord Information",
"Draft": "Draft",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Draw",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Insert",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Light mode",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool failed.",
"Exception_AuthenticationCanceled": "Authentication canceled",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "You must provide a name.",
"Exception_CustomThemeMissingWallpaper": "You must provide a custom background image.",
"Exception_FailedToSynchronizeFolders": "Failed to synchronize folders",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri is null on activation.",
"Exception_GoogleAuthCorruptedCode": "Corrupted authorization response.",
"Exception_GoogleAuthError": "OAuth authorization error: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "This unsubscribe link is invalid. Failed to unsubscribe from the list.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authentication method",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Connection security",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Center Action",
"SettingsHoverActionLeft": "Left Action",
"SettingsHoverActionRight": "Right Action",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"CategoriesFolderNameOverride": "Categories",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "More",
"SettingsOptions_Title": "Settings",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "You didn't setup any accounts yet.",
"SettingsNotifications_Description": "Turn on or off notifications for this account.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Change the width of the mail list.",
"SettingsPaneLength_Title": "Mail List Pane Length",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Show much more love ❤️ All donations are appreciated.",
"SettingsPaypal_Title": "Donate via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Compact Mode",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "bezig met initialiseren",
"AccountCreationDialog_PreparingFolders": "Bezig met ontvangen van mapgegevens.",
"AccountCreationDialog_SigninIn": "Accountinformatie wordt opgeslagen.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Accountnaam",
"AccountEditDialog_Title": "Bewerk account",
"AccountPickerDialog_Title": "Kies een account",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AddHyperlink": "Toevoegen",
"AutoDiscoveryProgressMessage": "Zoeken naar mailinstellingen...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Geavanceerde configuratie",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Uw inloggegevens worden alleen lokaal opgeslagen op uw computer.",
"BasicIMAPSetupDialog_Description": "Sommige accounts vereisen aanvullende stappen om in te loggen",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Wachtwoord",
"BasicIMAPSetupDialog_Title": "IMAP account",
"Buttons_AddAccount": "Account toevoegen",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Thema toepassen",
"Buttons_Browse": "Bladeren",
"Buttons_Cancel": "Annuleren",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Aanmelden",
"Buttons_TryAgain": "Try Again",
"Buttons_Yes": "Ja",
"Buttons_Reset": "Reset",
"Center": "Centreren",
"ComingSoon": "Binnenkort beschikbaar...",
"ComposerFrom": "Van: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Aangepaste achtergrond instellen",
"DialogMessage_AccountLimitMessage": "U hebt de limiet voor het aanmaken van accounts bereikt.\nWilt u de 'Onbeperkt aantal accounts' add-on kopen om door te gaan?",
"DialogMessage_AccountLimitTitle": "Limiet accounts bereikt",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Wilt u alle e-mails in deze map permanent verwijderen?",
"DialogMessage_CleanupFolderTitle": "Opschonen map",
"DialogMessage_ComposerMissingRecipientMessage": "Bericht heeft geen ontvanger.",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "To stop getting messages from {0}, go to their website to unsubscribe.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Go to website",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Do you want to stop getting messages from {0}? Wino will unsubscribe for you by sending an email from your email account to {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Niet opnieuw vragen",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino heeft geen eigen Discord server, maar het speciale 'wino-mail' kanaal is gehost op de 'Developer Sanctuary' server.\nOm updates over Wino te krijgen, sluit je je aan bij de Developer Sanctuary server en volg je 'wino-mail' kanaal onder 'Community Projects'\n\nJe wordt doorgestuurd naar de server-URL omdat Discord geen kanaaluitnodigingen ondersteunt.",
"DiscordChannelDisclaimerTitle": "Belangrijke informatie over Discord",
"Draft": "Concept",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Tekenen",
"EditorToolbarOption_Format": "Opmaak",
"EditorToolbarOption_Insert": "Invoegen",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Lichte modus",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool is mislukt.",
"Exception_AuthenticationCanceled": "Authenticatie geannuleerd",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "U moet een naam invullen.",
"Exception_CustomThemeMissingWallpaper": "U moet een aangepaste achtergrondafbeelding invoeren.",
"Exception_FailedToSynchronizeFolders": "Synchroniseren van mappen mislukt",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri is null bij het activeren.",
"Exception_GoogleAuthCorruptedCode": "Beschadigd autorisatieantwoord.",
"Exception_GoogleAuthError": "OAuth autorisatiefout: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Deze afmeldlink is ongeldig. Afmelden van de lijst is mislukt.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authenticatiemethode",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Beveiliging van verbinding",
"ImapAuthenticationMethod_Auto": "Automatisch",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Center Action",
"SettingsHoverActionLeft": "Left Action",
"SettingsHoverActionRight": "Right Action",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"CategoriesFolderNameOverride": "Categories",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "More",
"SettingsOptions_Title": "Settings",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "You didn't setup any accounts yet.",
"SettingsNotifications_Description": "Turn on or off notifications for this account.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Change the width of the mail list.",
"SettingsPaneLength_Title": "Mail List Pane Length",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Show much more love ❤️ All donations are appreciated.",
"SettingsPaypal_Title": "Donate via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Compact Mode",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "inicjowanie",
"AccountCreationDialog_PreparingFolders": "Trwa pobieranie informacji o folderach.",
"AccountCreationDialog_SigninIn": "Zapisywanie danych konta.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Nazwa konta",
"AccountEditDialog_Title": "Edytuj konto",
"AccountPickerDialog_Title": "Wybierz konto",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AddHyperlink": "Dodaj",
"AutoDiscoveryProgressMessage": "Wyszukiwanie ustawień poczty...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Konfiguracja zaawansowana",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Twoje dane logowania będą przechowywane lokalnie tylko na Twoim komputerze.",
"BasicIMAPSetupDialog_Description": "Niektóre konta wymagają dodatkowych kroków do zalogowania",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Hasło",
"BasicIMAPSetupDialog_Title": "Konto IMAP",
"Buttons_AddAccount": "Dodaj konto",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Zastosuj motyw",
"Buttons_Browse": "Przeglądaj",
"Buttons_Cancel": "Anuluj",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Zaloguj się",
"Buttons_TryAgain": "Try Again",
"Buttons_Yes": "Tak",
"Buttons_Reset": "Reset",
"Center": "Wyśrodkuj",
"ComingSoon": "Już wkrótce...",
"ComposerFrom": "Od: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Ustaw niestandardową tapetę",
"DialogMessage_AccountLimitMessage": "Osiągnąłeś limit utworzonych kont.\nCzy chcesz kupić dodatek \"Nielimitowane konto\", aby kontynuować?",
"DialogMessage_AccountLimitTitle": "Osiągnięto limit konta",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Czy chcesz trwale usunąć wszystkie wiadomości z tego folderu?",
"DialogMessage_CleanupFolderTitle": "Opróżnianie folderu",
"DialogMessage_ComposerMissingRecipientMessage": "Wiadomość nie ma odbiorcy.",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Aby przestać otrzymywać wiadomości od {0}, przejdź do strony internetowej tego serwisu, aby zrezygnować.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Przejdź na stronę",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Czy chcesz przestać otrzymywać wiadomości od {0}? Wino zrezygnuje z subskrypcji, wysyłając wiadomości z konta e-mail do {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Nie pytaj ponownie",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino nie ma własnego serwera Discorda, ale specjalny kanał \"wino-mail\" który jest hostowany na serwerze \"Developer Sanctuary\".\nAby otrzymywać najświeższe informacje o Wino dołącz do serwera Developer Sanctuary i obserwuj kanał 'wino-mail' pod 'Community Projects'\n\nZostaniesz przekierowany na adres URL serwera, ponieważ Discord nie obsługuje kanałów zaproszeń.",
"DiscordChannelDisclaimerTitle": "Ważne informacje o kanale na Discordzie",
"Draft": "Wersja robocza",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Rysowanie",
"EditorToolbarOption_Format": "Formatowanie",
"EditorToolbarOption_Insert": "Wstawianie",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Tryb jasny",
"Emoji": "Emotikony",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_ImapClientPoolFailed": "Pula klienta IMAP nie powiodła się.",
"Exception_AuthenticationCanceled": "Anulowano uwierzytelnianie",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "Musisz podać nazwę.",
"Exception_CustomThemeMissingWallpaper": "Musisz podać niestandardowy obraz tła.",
"Exception_FailedToSynchronizeFolders": "Nie udało się zsynchronizować folderów",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Adres uri wywołania zwrotnego jest pusty przy aktywacji.",
"Exception_GoogleAuthCorruptedCode": "Uszkodzona odpowiedź autoryzacji.",
"Exception_GoogleAuthError": "Błąd autoryzacji OAuth: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Link anulowania subskrypcji jest nieprawidłowy. Nie udało się wypisać z listy subskrybentów.",
"Info_UnsubscribeSuccessMessage": "Pomyślnie anulowano subskrypcję z {0}.",
"Info_UnsubscribeErrorMessage": "Anulowanie subskrypcji nie powiodło się",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Metoda autoryzacji",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Zabezpieczenia dot. połączenia",
"ImapAuthenticationMethod_Auto": "Automatyczne",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Synchronizacja folderów",
"SettingsFolderOptions_Title": "Konfiguracja folderów",
"SettingsFolderOptions_Description": "Zmień ustawienia poszczególnych folderów, takie jak wyłączenie lub włączenie synchronizacji lub pokazywanie i ukrywanie ikony nieprzeczytanych wiadomości.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Akcja ze środka",
"SettingsHoverActionLeft": "Akcja z lewej",
"SettingsHoverActionRight": "Akcja z prawej",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Język i czas",
"SettingsLanguageTime_Description": "Język wyświetlania Wino, preferowany format czasu.",
"CategoriesFolderNameOverride": "Kategorie",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Więcej",
"SettingsOptions_Title": "Ustawienia",
"SettingsLinkAccounts_Description": "Scal wiele kont w jedno. Przeglądaj wiadomości z jednej skrzynki odbiorczej razem.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Nie skonfigurowano jeszcze żadnych kont.",
"SettingsNotifications_Description": "Włącz lub wyłącz powiadomienia dla tego konta.",
"SettingsNotifications_Title": "Powiadomienia",
"SettingsPaneLength_Description": "Zmień szerokość listy wiadomości.",
"SettingsPaneLength_Title": "Długość panelu listy wiadomości",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Okaż dużo więcej miłości ❤️ Za wszystkie darowizny dziękuję.",
"SettingsPaypal_Title": "Wspomóż przez PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Tryb kompaktowy",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "iniciando",
"AccountCreationDialog_PreparingFolders": "Estamos recebendo informações sobre as pastas no momento.",
"AccountCreationDialog_SigninIn": "Informações da conta estão sendo salvas.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Nome da Conta",
"AccountEditDialog_Title": "Editar Conta",
"AccountPickerDialog_Title": "Escolha uma conta",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "Por exemplo, João Silva",
"AddHyperlink": "Adicionar",
"AutoDiscoveryProgressMessage": "Procurando por configurações de e-mail...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Configuração Avançada",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Suas credenciais só serão armazenadas localmente no seu computador.",
"BasicIMAPSetupDialog_Description": "Algumas contas requerem passos adicionais para realizar o login",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Senha",
"BasicIMAPSetupDialog_Title": "Conta IMAP",
"Buttons_AddAccount": "Adicionar Conta",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Aplicar Tema",
"Buttons_Browse": "Navegar",
"Buttons_Cancel": "Cancelar",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Entrar",
"Buttons_TryAgain": "Tentar Novamente",
"Buttons_Yes": "Sim",
"Buttons_Reset": "Reset",
"Center": "Centro",
"ComingSoon": "Em breve...",
"ComposerFrom": "De: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Definir papel de parede personalizado",
"DialogMessage_AccountLimitMessage": "Você atingiu o limite de contas criadas.\nVocê gostaria de comprar o complemento 'Acesso Ilimitado' para continuar?",
"DialogMessage_AccountLimitTitle": "Limite de Contas Alcançado",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Você quer apagar permanentemente todos os e-mails nesta pasta?",
"DialogMessage_CleanupFolderTitle": "Limpar Pasta",
"DialogMessage_ComposerMissingRecipientMessage": "A mensagem não possui destinatário.",
@@ -82,7 +103,7 @@
"DialogMessage_RenameLinkedAccountsTitle": "Renomear conta vinculada",
"DialogMessage_UnlinkAccountsConfirmationMessage": "Esta operação não apagará suas contas, mas quebrará apenas o vínculo para conexões de pastas compartilhadas. Você deseja continuar?",
"DialogMessage_UnlinkAccountsConfirmationTitle": "Desvincular Contas",
"DialogMessage_EmptySubjectConfirmation": "Missing Subject",
"DialogMessage_EmptySubjectConfirmation": "Faltando Assunto",
"DialogMessage_EmptySubjectConfirmationMessage": "Mensagem não possui assunto. Você deseja continuar?",
"DialogMessage_RenameFolderTitle": "Renomear Pasta",
"DialogMessage_RenameFolderMessage": "Escolha um novo nome para esta pasta",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Para parar de receber mensagens de {0}, vá para o site deles para cancelar a inscrição.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Ir para o site",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Você quer parar de receber mensagens de {0}? Wino cancelará a inscrição para você enviando um e-mail da sua conta para {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Não perguntar novamente",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino não possui um servidor próprio do Discord, mas o canal especial 'wino-mail' está presente no servidor 'Developer Sanctuary'. Para obter atualizações sobre o Wino, por favor se junto ao servidor Developer Sanctuary e siga o canal 'wino-mail' em 'Community Projects'\n\nVocê será direcionado para a URL do servidor, já que o Discord não tem suporte a convites a um canal.",
"DiscordChannelDisclaimerTitle": "Informações importantes do Discord",
"Draft": "Rascunho",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Desenhar",
"EditorToolbarOption_Format": "Formato",
"EditorToolbarOption_Insert": "Inserir",
@@ -105,7 +136,8 @@
"ElementTheme_Default": "Usar configurações do sistema",
"ElementTheme_Light": "Modo claro",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_WinoServerException": "O servidor do Wino falhou.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Não foi possível encontrar configurações da caixa de e-mail.",
"Exception_ImapClientPoolFailed": "Client Pool do IMAP falhou.",
"Exception_AuthenticationCanceled": "Autenticação cancelada",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "Você deve escrever um nome.",
"Exception_CustomThemeMissingWallpaper": "Você deve fornecer uma imagem de fundo personalizada.",
"Exception_FailedToSynchronizeFolders": "Erro ao sincronizar pastas",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri é 'null' na ativação.",
"Exception_GoogleAuthCorruptedCode": "Resposta de autorização corrompida.",
"Exception_GoogleAuthError": "Erro de autorização OAuth: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Este link de descadastramento é inválido. Falha ao cancelar a inscrição da lista.",
"Info_UnsubscribeSuccessMessage": "Inscrição de {0} cancelada com sucesso.",
"Info_UnsubscribeErrorMessage": "Falha ao Cancelar Inscrição",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Método de autenticação",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Segurança de Conexão",
"ImapAuthenticationMethod_Auto": "Automático",
@@ -336,7 +373,7 @@
"ProtocolLogAvailable_Message": "Os registros do protocolo estão disponíveis para diagnósticos.",
"Results": "Resultados",
"Right": "Direita",
"Reader_SaveAllAttachmentButtonText": "Save all attachments",
"Reader_SaveAllAttachmentButtonText": "Salvar todos os anexos",
"SynchronizationFolderReport_Success": "Atualizado",
"SynchronizationFolderReport_Failed": "Falha na sincronização",
"SearchBarPlaceholder": "Pesquisar",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Sincronização de pastas",
"SettingsFolderOptions_Title": "Configuração de pastas",
"SettingsFolderOptions_Description": "Altere as configurações de pastas individuais como ativar/desativar a sincronização ou exibir/ocultar como não lida.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Centralizar Ação",
"SettingsHoverActionLeft": "Ação à esquerda",
"SettingsHoverActionRight": "Ação à direita",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Idioma & Horário",
"SettingsLanguageTime_Description": "Idioma de exibição do Wino, formato de hora preferido.",
"CategoriesFolderNameOverride": "Categorias",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Mais",
"SettingsOptions_Title": "Configurações",
"SettingsLinkAccounts_Description": "Junte várias contas em uma só. Veja e-mails em uma caixa de entrada.",
@@ -420,19 +464,19 @@
"SettingsFolderMenuStyle_Description": "Alterar se as pastas da conta devem estar aninhadas dentro de um item de menu de conta ou não. Desative esta opção se você gosta do sistema de menu antigo do Windows Mail",
"SettingsManageAccountSettings_Description": "Notificações, assinaturas, sincronização e outras configurações por conta.",
"SettingsManageAccountSettings_Title": "Gerenciar configurações de conta",
"SettingsAppPreferences_Title": "App Preferences",
"SettingsAppPreferences_Description": "General settings / preferences for Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Application close behavior",
"SettingsAppPreferences_CloseBehavior_Description": "What should happen when you close the app?",
"SettingsAppPreferences_StartupBehavior_Title": "Start minimized on Windows startup",
"SettingsAppPreferences_StartupBehavior_Description": "Allow Wino Mail to launch minimized when Windows starts. Always allow it to receive notifications.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail successfully set to be launched in the background on Windows startup.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail will not be launched on Windows startup. This will cause you to miss notifications when you restart your computer.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Your administrator or group policies disabled running applications on startup. Thus, Wino Mail can't be set to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Please go to Task Manager -> Startup tab to allow Wino Mail to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Fatal error occurred while changing the startup mode for Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Enable",
"SettingsAppPreferences_StartupBehavior_Disable": "Disable",
"SettingsAppPreferences_Title": "Preferências do Aplicativo",
"SettingsAppPreferences_Description": "Configurações gerais / Preferências para o Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Comportamento do aplicativo fechado",
"SettingsAppPreferences_CloseBehavior_Description": "O que deveria acontecer quando você fecha o aplicativo?",
"SettingsAppPreferences_StartupBehavior_Title": "Iniciar minimizado na inicialização do Windows",
"SettingsAppPreferences_StartupBehavior_Description": "Permitir que o Wino inicie minimizado com o Windows. Sempre permita que ele receba notificações.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino foi definido com sucesso para ser iniciado de fundo na inicialização do Windows.",
"SettingsAppPreferences_StartupBehavior_Disabled": "O Wino Mail não será iniciado na inicialização do Windows. Isso fará com que você perca as notificações quando reiniciar o computador.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Suas políticas de administrador ou grupo desativaram a execução de aplicativos na inicialização. Assim, o Wino Mail não pode ser configurado para iniciar com o Windows na inicialização.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Por favor, vá para o Gerenciador de Tarefas -> Aplicativos de Inicialização para permitir que o Wino Mail inicie no Windows.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Ocorreu um erro fatal ao alterar o modo de inicialização do Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Habilitar",
"SettingsAppPreferences_StartupBehavior_Disable": "Desabilitar",
"SettingsReorderAccounts_Title": "Reordenar Contas",
"SettingsReorderAccounts_Description": "Altere a ordem das contas na lista de conta.",
"SettingsManageLink_Description": "Mova os itens para adicionar um novo vínculo ou remover o vínculo existente.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Você ainda não configurou nenhuma conta.",
"SettingsNotifications_Description": "Ative ou desative as notificações para esta conta.",
"SettingsNotifications_Title": "Notificações",
"SettingsPaneLength_Description": "Altere a largura da lista de e-mails.",
"SettingsPaneLength_Title": "Comprimento do painel da lista de e-mail",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Mostre muito mais amor ❤️ Todas as doações são apreciadas.",
"SettingsPaypal_Title": "Doe pelo PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Modo Compacto",
@@ -539,14 +583,14 @@
"SettingsSignature_EditSignature_Title": "Editar assinatura",
"SettingsSignature_DeleteSignature_Title": "Excluir assinatura",
"SettingsSignature_NoneSignatureName": "Nenhum",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimize to system tray",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail will keep running on the system tray. Available to launch by clicking on an icon. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Run in the background",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail will keep running in the background. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Terminate",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail will not keep running anywhere. You will not be notified as new mails arrive. Launch Wino Mail again to continue mail synchronization.",
"TitleBarServerDisconnectedButton_Title": "no connection",
"TitleBarServerDisconnectedButton_Description": "Wino is disconnected from the network. Click reconnect to restore connection.",
"TitleBarServerReconnectButton_Title": "reconnect",
"TitleBarServerReconnectingButton_Title": "connecting"
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimizar para a bandeja de sistema",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "O Wino Mail continuará em execução na bandeja do sistema. Disponível para iniciar clicando no ícone. Você será notificado assim que novos e-mails chegaram.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Executar em segundo plano",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "O Wino Mail continuará em execução em segundo plano. Você será notificado quando chegarem novos e-mails.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Encerrar",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "O Wino Mail não será executado em nenhum lugar. Você não será notificado quando chegarem novos e-mails. Inicie o Wino Mail novamente para continuar a sincronização de e-mail.",
"TitleBarServerDisconnectedButton_Title": "Sem conexão",
"TitleBarServerDisconnectedButton_Description": "Wino está desconectado da rede. Clique em reconectar para restaurar a conexão.",
"TitleBarServerReconnectButton_Title": "Reconectar",
"TitleBarServerReconnectingButton_Title": "Conectando"
}

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "инициализация",
"AccountCreationDialog_PreparingFolders": "На данный момент мы получаем информацию о папках.",
"AccountCreationDialog_SigninIn": "Данные учетной записи сохраняются.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Имя пользователя",
"AccountEditDialog_Title": "Редактировать учетную запись",
"AccountPickerDialog_Title": "Выберите учетную запись",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "напр. Иван Иванов",
"AddHyperlink": "Добавить",
"AutoDiscoveryProgressMessage": "Поиск настроек почты...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Расширенная конфигурация",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Ваши учетные данные будут храниться только локально на вашем компьютере.",
"BasicIMAPSetupDialog_Description": "Некоторые учетные записи требуют дополнительных шагов для входа",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Пароль",
"BasicIMAPSetupDialog_Title": "Учетная запись IMAP",
"Buttons_AddAccount": "Добавить учетную запись",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Применить тему",
"Buttons_Browse": "Обзор",
"Buttons_Cancel": "Отмена",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Войти",
"Buttons_TryAgain": "Повторить",
"Buttons_Yes": "Да",
"Buttons_Reset": "Reset",
"Center": "Центр",
"ComingSoon": "Скоро...",
"ComposerFrom": "От: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Установить пользовательские обои",
"DialogMessage_AccountLimitMessage": "Вы достигли предела создания учетной записи.\nХотите приобрести дополнение 'Неограниченная учетная запись', чтобы продолжить?",
"DialogMessage_AccountLimitTitle": "Достигнут лимит учетных записей",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Вы хотите навсегда удалить все письма в этой папке?",
"DialogMessage_CleanupFolderTitle": "Очистить папку",
"DialogMessage_ComposerMissingRecipientMessage": "Сообщение не имеет получателя.",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "Чтобы перестать получать сообщения от {0}, перейдите на их сайт и откажитесь от подписки.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Перейти на сайт",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Вы хотите перестать получать сообщения от {0}? Wino отпишется от рассылки за вас, отправив письмо с вашего почтового ящика на адрес {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Больше не спрашивать",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "У Wino нет собственного сервера Discord, но специальный канал 'wino-mail' размещен на сервере 'Developer Sanctuary'.\nЧтобы получать обновления о Wino, пожалуйста, присоединитесь к серверу Developer Sanctuary и следите за каналом 'wino-mail' в разделе 'Community Projects'.\n\nВы будете направлены на URL сервера, так как Discord не поддерживает приглашения на канал.",
"DiscordChannelDisclaimerTitle": "Важная информация о Discord",
"Draft": "Черновик",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Рисование",
"EditorToolbarOption_Format": "Форматирование",
"EditorToolbarOption_Insert": "Вставить",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Светлая тема",
"Emoji": "Эмодзи",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Не удалось найти настройки почтового ящика.",
"Exception_ImapClientPoolFailed": "Сбой пула клиентов IMAP.",
"Exception_AuthenticationCanceled": "Аутентификация отменена",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "Необходимо указать название.",
"Exception_CustomThemeMissingWallpaper": "Необходимо предоставить пользовательское фоновое изображение.",
"Exception_FailedToSynchronizeFolders": "Не удалось синхронизировать папки",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri пустой при активации.",
"Exception_GoogleAuthCorruptedCode": "Поврежденный ответ авторизации.",
"Exception_GoogleAuthError": "Ошибка авторизации OAuth: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "Ссылка недействительна. Не удалось отписаться от списка рассылки.",
"Info_UnsubscribeSuccessMessage": "Вы отписались от {0}.",
"Info_UnsubscribeErrorMessage": "Не удалось отменить подписку",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Метод авторизации",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Безопасность соединения",
"ImapAuthenticationMethod_Auto": "Автоматически",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Синхронизация папок",
"SettingsFolderOptions_Title": "Настройка папки",
"SettingsFolderOptions_Description": "Измените настройки отдельных папок, например включите/выключите синхронизацию или покажите/скройте значок непрочитанного.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Кнопка по центру",
"SettingsHoverActionLeft": "Левая кнопка",
"SettingsHoverActionRight": "Правая кнопка",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Язык и время",
"SettingsLanguageTime_Description": "Язык интерфейса приложения, предпочитаемый формат времени.",
"CategoriesFolderNameOverride": "Категории",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Ещё",
"SettingsOptions_Title": "Параметры",
"SettingsLinkAccounts_Description": "Объедините несколько учетных записей в одну. Просматривайте письма из одной папки \"Входящие\".",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "Вы еще не создали ни одной учетной записи.",
"SettingsNotifications_Description": "Включите или отключите уведомления для этой учетной записи.",
"SettingsNotifications_Title": "Уведомления",
"SettingsPaneLength_Description": "Измените ширину почтового списка.",
"SettingsPaneLength_Title": "Длина панели почтового списка",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Проявите больше любви ❤️ Все пожертвования высоко ценятся.",
"SettingsPaypal_Title": "Пожертвовать через PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Компактный режим",

View File

@@ -1,55 +1,66 @@
{
"AccountCreationDialog_Completed": "all done",
"AccountCreationDialog_Completed": "hepsi tamam",
"AccountCreationDialog_Initializing": "başlatılıyor",
"AccountCreationDialog_PreparingFolders": "Klasör bilgileri yükleniyor.",
"AccountCreationDialog_SigninIn": "Hesap bilgileri kaydediliyor.",
"AccountEditDialog_Message": "Account Name",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Hesap Adı",
"AccountEditDialog_Title": "Hesabı Düzenle",
"AccountPickerDialog_Title": "Pick an account",
"AccountSettingsDialog_AccountName": "Sender Display Name",
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AddHyperlink": "Add",
"AutoDiscoveryProgressMessage": "Searching for mail settings...",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Advanced Configuration",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Your credentials will only be stored locally on your computer.",
"BasicIMAPSetupDialog_Description": "Some accounts require additional steps to sign in",
"BasicIMAPSetupDialog_DisplayName": "Display Name",
"BasicIMAPSetupDialog_DisplayNamePlaceholder": "eg. John Doe",
"BasicIMAPSetupDialog_LearnMore": "Learn more",
"BasicIMAPSetupDialog_MailAddress": "E-Mail Address",
"AccountPickerDialog_Title": "Bir hesap seçiniz",
"AccountSettingsDialog_AccountName": "nderen Adı",
"AccountSettingsDialog_AccountNamePlaceholder": "örnek. Burak Köse",
"AddHyperlink": "Ekle",
"AutoDiscoveryProgressMessage": "Sunucu ayarları aranıyor...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Gelişmiş Ayarlar",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Hassas bilgileriniz yalnızca kendi bilgisayarınızda saklanacak.",
"BasicIMAPSetupDialog_Description": "Bazı hesaplar ekstra adımlar gerektirebilir",
"BasicIMAPSetupDialog_DisplayName": "Görünen Ad",
"BasicIMAPSetupDialog_DisplayNamePlaceholder": "örnek. Burak Köse",
"BasicIMAPSetupDialog_LearnMore": "Daha fazla bilgi edinin",
"BasicIMAPSetupDialog_MailAddress": "E-Posta adresi",
"BasicIMAPSetupDialog_MailAddressPlaceholder": "johndoe@fabrikam.com",
"BasicIMAPSetupDialog_Password": "Password",
"BasicIMAPSetupDialog_Title": "IMAP Account",
"Buttons_AddAccount": "Add Account",
"Buttons_ApplyTheme": "Apply Theme",
"Buttons_Browse": "Browse",
"Buttons_Cancel": "Cancel",
"Buttons_Close": "Close",
"Buttons_Create": "Create",
"Buttons_CreateAccount": "Create Account",
"Buttons_Copy": "Copy",
"Buttons_Delete": "Delete",
"Buttons_Edit": "Edit",
"Buttons_Discard": "Discard",
"Buttons_EnableImageRendering": "Enable",
"Buttons_No": "No",
"Buttons_Open": "Open",
"Buttons_Purchase": "Purchase",
"Buttons_RateWino": "Rate Wino",
"Buttons_Save": "Save",
"Buttons_SaveConfiguration": "Save Configuration",
"Buttons_Share": "Share",
"Buttons_SignIn": "Sign In",
"Buttons_TryAgain": "Try Again",
"Buttons_Yes": "Yes",
"Center": "Center",
"ComingSoon": "Coming soon...",
"ComposerFrom": "From: ",
"ComposerSubject": "Subject: ",
"ComposerTo": "To: ",
"ClipboardTextCopied_Message": "{0} copied to clipboard.",
"ClipboardTextCopied_Title": "Copied",
"ClipboardTextCopyFailed_Message": "Failed to copy {0} to clipboard.",
"BasicIMAPSetupDialog_Password": "Parola",
"BasicIMAPSetupDialog_Title": "IMAP Hesabı",
"Buttons_AddAccount": "Hesap Ekle",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Temayı Uygula",
"Buttons_Browse": "Gözat",
"Buttons_Cancel": "İptal Et",
"Buttons_Close": "Kapat",
"Buttons_Create": "Oluştur",
"Buttons_CreateAccount": "Hesap Oluştur",
"Buttons_Copy": "Kopyala",
"Buttons_Delete": "Sil",
"Buttons_Edit": "Düzenle",
"Buttons_Discard": "Vazgeç",
"Buttons_EnableImageRendering": "Etkinleştir",
"Buttons_No": "Hayır",
"Buttons_Open": "Aç",
"Buttons_Purchase": "Satın Al",
"Buttons_RateWino": "Wino'yu Puanla",
"Buttons_Save": "Kaydet",
"Buttons_SaveConfiguration": "Ayarları Kaydet",
"Buttons_Share": "Paylaş",
"Buttons_SignIn": "Oturum Aç",
"Buttons_TryAgain": "Tekrar Dene",
"Buttons_Yes": "Evet",
"Buttons_Reset": "Reset",
"Center": "Orta",
"ComingSoon": "Yakında...",
"ComposerFrom": "Gönderen: ",
"ComposerSubject": "Konu: ",
"ComposerTo": "Gönderilen: ",
"ClipboardTextCopied_Message": "\"{0}\" panoya kopyalandı.",
"ClipboardTextCopied_Title": "Kopyalandı",
"ClipboardTextCopyFailed_Message": "{0} kopyalanamadı.",
"ComposerToPlaceholder": "click enter to input addresses",
"ComposerAttachmentsDropZone_Message": "Drop your files here",
"ComposerImagesDropZone_Message": "Drop your images here",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Set custom wallpaper",
"DialogMessage_AccountLimitMessage": "You have reached the account creation limit.\nWould you like to purchase 'Unlimited Account' add-on to continue?",
"DialogMessage_AccountLimitTitle": "Account Limit Reached",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Do you want to permanently delete all the mails in this folder?",
"DialogMessage_CleanupFolderTitle": "Cleanup Folder",
"DialogMessage_ComposerMissingRecipientMessage": "Message has no recipient.",
@@ -73,8 +94,8 @@
"DialogMessage_DeleteAccountConfirmationMessage": "Delete {0}?",
"DialogMessage_DeleteAccountConfirmationTitle": "All data associated with this account will be deleted from disk permanently.",
"DialogMessage_DiscardDraftConfirmationMessage": "This draft will be discarded. Do you want to continue?",
"DialogMessage_DiscardDraftConfirmationTitle": "Discard Draft",
"DialogMessage_HardDeleteConfirmationMessage": "Permanent Delete",
"DialogMessage_DiscardDraftConfirmationTitle": "Taslağı Sil",
"DialogMessage_HardDeleteConfirmationMessage": "Kalıcı Olarak Sil",
"DialogMessage_HardDeleteConfirmationTitle": "Message(s) will be permanently deleted. Do you want to continue?",
"DialogMessage_NoAccountsForCreateMailMessage": "You don't have any accounts to create message from.",
"DialogMessage_NoAccountsForCreateMailTitle": "Account Missing",
@@ -84,17 +105,27 @@
"DialogMessage_UnlinkAccountsConfirmationTitle": "Unlink Accounts",
"DialogMessage_EmptySubjectConfirmation": "Missing Subject",
"DialogMessage_EmptySubjectConfirmationMessage": "Message has no subject. Do you want to continue?",
"DialogMessage_RenameFolderTitle": "Rename Folder",
"DialogMessage_RenameFolderTitle": "Klasörü Yeniden Adlandır",
"DialogMessage_RenameFolderMessage": "Enter new name for this folder",
"DialogMessage_UnsubscribeConfirmationTitle": "Unsubscribe",
"DialogMessage_UnsubscribeConfirmationOneClickMessage": "Do you want to stop getting messages from {0}?",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "To stop getting messages from {0}, go to their website to unsubscribe.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Go to website",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Do you want to stop getting messages from {0}? Wino will unsubscribe for you by sending an email from your email account to {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Don't ask again",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino doesn't have it's own Discord server, but special 'wino-mail' channel is hosted at 'Developer Sanctuary' server.\nTo get the updates about Wino please join Developer Sanctuary server and follow 'wino-mail' channel under 'Community Projects'\n\nYou will be directed to server URL since Discord doesn't support channel invites.",
"DiscordChannelDisclaimerTitle": "Important Discord Information",
"Draft": "Draft",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Draw",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Insert",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Light mode",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool failed.",
"Exception_AuthenticationCanceled": "Authentication canceled",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "You must provide a name.",
"Exception_CustomThemeMissingWallpaper": "You must provide a custom background image.",
"Exception_FailedToSynchronizeFolders": "Failed to synchronize folders",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri is null on activation.",
"Exception_GoogleAuthCorruptedCode": "Corrupted authorization response.",
"Exception_GoogleAuthError": "OAuth authorization error: {0}",
@@ -161,11 +196,11 @@
"IMAPSetupDialog_AccountType": "Account type",
"IMAPSetupDialog_DisplayName": "Display Name",
"IMAPSetupDialog_DisplayNamePlaceholder": "eg. John Doe",
"IMAPSetupDialog_IncomingMailServer": "Incoming mail server",
"IMAPSetupDialog_IncomingMailServer": "Gelen posta sunucusu",
"IMAPSetupDialog_IncomingMailServerPort": "Port",
"IMAPSetupDialog_MailAddress": "Email address",
"IMAPSetupDialog_MailAddressPlaceholder": "someone@example.com",
"IMAPSetupDialog_OutgoingMailServer": "Outgoing (SMTP) mail server",
"IMAPSetupDialog_MailAddress": "E-posta adresi",
"IMAPSetupDialog_MailAddressPlaceholder": "birisi@example.com",
"IMAPSetupDialog_OutgoingMailServer": "Giden Sunucu (SMTP) Adresi",
"IMAPSetupDialog_OutgoingMailServerPassword": "Outgoing server password",
"IMAPSetupDialog_OutgoingMailServerPort": "Port",
"IMAPSetupDialog_OutgoingMailServerRequireAuthentication": "Outgoing server requires authentication",
@@ -177,7 +212,7 @@
"IMAPSetupDialog_UseSameConfig": "Use the same username and password for sending email",
"IMAPSetupDialog_Username": "Username",
"IMAPSetupDialog_UsernamePlaceholder": "johndoe, johndoe@fabrikam.com, domain/johndoe",
"IMAPSetupDialog_ConnectionFailedTitle": "Connection Failed",
"IMAPSetupDialog_ConnectionFailedTitle": "Bağlantı Başarısız",
"IMAPSetupDialog_ConnectionFailedMessage": "IMAP connection failed.",
"ImageRenderingDisabled": "Image rendering is disabled for this message.",
"InfoBarAction_Enable": "Enable",
@@ -191,7 +226,7 @@
"Info_AccountCreationFailedTitle": "Account Creation Failed",
"Info_AccountDeletedMessage": "{0} is successfuly deleted.",
"Info_AccountDeletedTitle": "Account Deleted",
"Info_AccountIssueFixFailedTitle": "Failed",
"Info_AccountIssueFixFailedTitle": "Başarısız oldu",
"Info_AccountIssueFixSuccessMessage": "Fixed all account issues.",
"Info_AccountIssueFixSuccessTitle": "Success",
"Info_AttachmentOpenFailedMessage": "Can't open this attachment.",
@@ -253,68 +288,70 @@
"Info_UnsubscribeLinkInvalidMessage": "This unsubscribe link is invalid. Failed to unsubscribe from the list.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authentication method",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Connection security",
"ImapAuthenticationMethod_Auto": "Auto",
"ImapAuthenticationMethod_CramMD5": "CRAM-MD5",
"ImapAuthenticationMethod_DigestMD5": "DIGEST-MD5",
"ImapAuthenticationMethod_None": "No authentication",
"ImapAuthenticationMethod_None": "Kimlik doğrulama yok",
"ImapAuthenticationMethod_Plain": "Normal password",
"ImapAuthenticationMethod_EncryptedPassword": "Encrypted password",
"ImapAuthenticationMethod_Ntlm": "NTLM",
"ImapConnectionSecurity_None": "None",
"ImapConnectionSecurity_SslTls": "SSL/TLS",
"ImapConnectionSecurity_StartTls": "STARTTLS",
"ImapConnectionSecurity_Auto": "Auto",
"Justify": "Justify",
"Left": "Left",
"Link": "Link",
"LinkedAccountsCreatePolicyMessage": "you must have at least 2 accounts to create link\nlink will be removed on save",
"LinkedAccountsTitle": "Linked Accounts",
"MailOperation_AlwaysMoveFocused": "Always Move to Focused",
"MailOperation_AlwaysMoveOther": "Always Move to Other",
"MailOperation_Archive": "Archive",
"MailOperation_ClearFlag": "Clear flag",
"MailOperation_DarkEditor": "Dark",
"MailOperation_Delete": "Delete",
"MailOperation_ExportPDF": "Export to PDF",
"MailOperation_Find": "Find",
"MailOperation_Forward": "Forward",
"MailOperation_Ignore": "Ignore",
"MailOperation_LightEditor": "Light",
"MailOperation_MarkAsJunk": "Mark as junk",
"MailOperation_MarkAsRead": "Mark as read",
"MailOperation_MarkAsUnread": "Mark as unread",
"MailOperation_MarkNotJunk": "Mark as Not Junk",
"MailOperation_Move": "Move",
"MailOperation_MoveFocused": "Move to Focused",
"MailOperation_MoveJunk": "Move to Junk",
"MailOperation_MoveOther": "Move to Other",
"MailOperation_Navigate": "Navigate",
"MailOperation_Print": "Print",
"MailOperation_Reply": "Reply",
"MailOperation_ReplyAll": "Reply all",
"MailOperation_SaveAs": "Save As",
"MailOperation_SetFlag": "Set flag",
"MailOperation_Unarchive": "Unarchive",
"MailOperation_Zoom": "Zoom",
"MailsSelected": "{0} item(s) selected",
"MarkFlagUnflag": "Mark as flagged/unflagged",
"MarkReadUnread": "Mark as read/unread",
"MenuManageAccounts": "Manage Accounts",
"MenuNewMail": "New Mail",
"MenuMergedAccountItemAccountsSuffix": " accounts",
"MenuRate": "Rate Wino",
"MenuSettings": "Settings",
"MergedAccountsAvailableAccountsTitle": "Available Accounts",
"More": "More",
"MoveMailDialog_InvalidFolderMessage": "{0} is not a valid folder for this mail.",
"MoveMailDialog_Title": "Pick a folder",
"NewAccountDialog_AccountName": "Account Name",
"NewAccountDialog_AccountNameDefaultValue": "Personal",
"NewAccountDialog_AccountNamePlaceholder": "eg. Personal Mail",
"NewAccountDialog_Title": "Add New Account",
"NoMailSelected": "No message selected",
"ImapConnectionSecurity_Auto": "Otomatik",
"Justify": "Yasla",
"Left": "Sol",
"Link": "Bağlantı",
"LinkedAccountsCreatePolicyMessage": "hesap bağlantısı oluşturabilmeniz için en az 2 adet hesap gerekli\nkaydet'e basıldığında hesap bağlantısı silinecektir",
"LinkedAccountsTitle": "Bağlı Hesaplar",
"MailOperation_AlwaysMoveFocused": "Her Zaman Odaklanmış'a Taşı",
"MailOperation_AlwaysMoveOther": "Her Zaman Diğer'e Taşı",
"MailOperation_Archive": "Arşivle",
"MailOperation_ClearFlag": "Bayrağı sil",
"MailOperation_DarkEditor": "Koyu",
"MailOperation_Delete": "Sil",
"MailOperation_ExportPDF": "PDF'e Aktar",
"MailOperation_Find": "Bul",
"MailOperation_Forward": "İlet",
"MailOperation_Ignore": "Yoksay",
"MailOperation_LightEditor": "ık",
"MailOperation_MarkAsJunk": "Gereksiz olarak işaretle",
"MailOperation_MarkAsRead": "Okundu olarak işaretle",
"MailOperation_MarkAsUnread": "Okunmadı olarak işaretle",
"MailOperation_MarkNotJunk": "Gerekli Olarak İşaretle",
"MailOperation_Move": "Taşı",
"MailOperation_MoveFocused": "Odaklanmış'a Taşı",
"MailOperation_MoveJunk": "Spam'e Taşı",
"MailOperation_MoveOther": "Diğer'e Taşı",
"MailOperation_Navigate": "Gezin",
"MailOperation_Print": "Yazdır",
"MailOperation_Reply": "Yanıtla",
"MailOperation_ReplyAll": "Tümünü yanıtla",
"MailOperation_SaveAs": "Farklı kaydet",
"MailOperation_SetFlag": "Bayrak ekle",
"MailOperation_Unarchive": "Arşivden çıkar",
"MailOperation_Zoom": "Yakınlaştır",
"MailsSelected": "{0} seçili",
"MarkFlagUnflag": "Bayrak ekle/kaldır",
"MarkReadUnread": "Okundu/okunmadı olarak işaretle",
"MenuManageAccounts": "Hesapları Yönet",
"MenuNewMail": "Yeni Posta",
"MenuMergedAccountItemAccountsSuffix": " hesaplar",
"MenuRate": "Wino'yu Puanla",
"MenuSettings": "Ayarlar",
"MergedAccountsAvailableAccountsTitle": "Mevcut hesaplar",
"More": "Daha fazla",
"MoveMailDialog_InvalidFolderMessage": "{0} bu e-posta için geçersiz.",
"MoveMailDialog_Title": "Bir klasör seçin",
"NewAccountDialog_AccountName": "Hesap Adı",
"NewAccountDialog_AccountNameDefaultValue": "Kişisel",
"NewAccountDialog_AccountNamePlaceholder": "örnek. Kişisel Hesabım",
"NewAccountDialog_Title": "Yeni hesap ekle",
"NoMailSelected": "İleti seçilmedi",
"NoMessageCrieteria": "No messages match your search criteria",
"NoMessageEmptyFolder": "This folder is empty",
"Notifications_MultipleNotificationsMessage": "You have {0} new mails",
@@ -365,56 +402,63 @@
"SettingsAutoSelectNextItem_Description": "Select the next item after you delete or move a mail.",
"SettingsCustomTheme_Description": "Create your own custom theme with custom wallpaper and accent color.",
"SettingsCustomTheme_Title": "Custom Theme",
"SettingsConfigureSpecialFolders_Title": "Configure System Folders",
"SettingsConfigureSpecialFolders_Description": "Set folders with special functions. Folders such as Archive, Inbox, and Drafts are essential for Wino to function properly.",
"SettingConfigureSpecialFolders_Button": "Configure",
"Error_FailedToSetupSystemFolders_Title": "Failed to setup system folders",
"SettingsDeleteAccount_Description": "Delete all e-mails and credentials associated with this account.",
"SettingsDeleteAccount_Title": "Delete this account",
"SettingsDeleteProtection_Description": "Should Wino ask you for comfirmation every time you try to permanently delete a mail using Shift + Del keys?",
"SettingsDeleteProtection_Title": "Permanent Delete Protection",
"SettingsDiagnostics_Description": "For developers",
"SettingsDiagnostics_Title": "Diagnostics",
"SettingsDiscord_Description": "Get regular development updates, join roadmap discussions and provide feedback.",
"SettingsDiscord_Title": "Discord Channel",
"SettingsElementThemeSelectionDisabled": "Element theme selection is disabled when application theme is selected other than Default.",
"SettingsElementTheme_Description": "Select a Windows theme for Wino",
"SettingsElementTheme_Title": "Element Theme",
"SettingsEnableHoverActions_Title": "Enable hover actions",
"SettingsEnableIMAPLogs_Description": "Enable this to provide details about IMAP connectivity issuses you had during IMAP server setup.",
"SettingsEnableIMAPLogs_Title": "Enable IMAP Protocol Logs",
"SettingsEnableLogs_Description": "I might need logs for crashes to diagnose issues you have opened in GitHub. None of the logs will expose your credentials or sensetive information to public.",
"SettingsEnableLogs_Title": "Enable Logs",
"SettingsEnableSignature": "Enable Signature",
"SettingsExpandOnStartup_Description": "Set whether Wino should expand this account's folders on startup.",
"SettingsExpandOnStartup_Title": "Expand Menu on Startup",
"SettingsExternalContent_Description": "Manage external content settings when rendering mails.",
"SettingsExternalContent_Title": "External Content",
"SettingsFocusedInbox_Description": "Set whether Inbox should be split into two as Focused - Other.",
"SettingsFocusedInbox_Title": "Focused Inbox",
"SettingsFolderSync_Description": "Enable or disable specific folders for synchronization.",
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsHoverActionCenter": "Center Action",
"SettingsHoverActionLeft": "Left Action",
"SettingsHoverActionRight": "Right Action",
"SettingsHoverActions_Description": "Select 3 actions to show up when you hover over the mails with cursor.",
"SettingsHoverActions_Title": "Hover Actions",
"SettingsLanguage_Description": "Change display language for Wino.",
"SettingsLanguage_Title": "Display Language",
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"CategoriesFolderNameOverride": "Categories",
"MoreFolderNameOverride": "More",
"SettingsOptions_Title": "Settings",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
"SettingsLinkAccounts_Title": "Create Linked Accounts",
"SettingsLinkedAccountsSave_Description": "Modify the current link with the new accounts.",
"SettingsLinkedAccountsSave_Title": "Save Changes",
"SettingsLoadImages_Title": "Load images automatically",
"SettingsLoadStyles_Title": "Load styles automatically",
"SettingsMailSpacing_Description": "Adjust the spacing for listing mails.",
"SettingsConfigureSpecialFolders_Title": "Sistem Klasörlerini Ayarla",
"SettingsConfigureSpecialFolders_Description": "Özel işlevleri olan klasörleri belirleyin. Arşiv, Gelen Kutusu ve Taslaklar Wino'nun düzgün çalışabilmesi için önemlidir.",
"SettingConfigureSpecialFolders_Button": "Ayarla",
"Error_FailedToSetupSystemFolders_Title": "Sistem klasörleri ayarlanamadı",
"SettingsDeleteAccount_Description": "Bu hesapa bağlı bütün bilgi ve e-postaları sil.",
"SettingsDeleteAccount_Title": "Bu hesabı sil",
"SettingsDeleteProtection_Description": "Wino her seferinde Shift + Del tuşlarıyla kalıcı olarak silmek istediğiniz e-postalar için uyarı mesajı göstersin mi?",
"SettingsDeleteProtection_Title": "Kalıcı Silme Koruması",
"SettingsDiagnostics_Description": "Geliştiriciler için",
"SettingsDiagnostics_Title": "Teşhis",
"SettingsDiscord_Description": "Güncel geliştirme güncellemelerini öğrenin. Yeni fikirler sunun ve geribildirim sağlayın.",
"SettingsDiscord_Title": "Discord Kanalı",
"SettingsElementThemeSelectionDisabled": "Uygulama teması 'Varsayılan' dışında ayarlandığında element temaları aktif değildir.",
"SettingsElementTheme_Description": "Wino için bir Windows teması seçin",
"SettingsElementTheme_Title": "Element Teması",
"SettingsEnableHoverActions_Title": "Üzerine gelme eylemlerini aktifleştir",
"SettingsEnableIMAPLogs_Description": "IMAP hesap oluştururken karşılaştığınız hatalar ile ilgili detayları aktlfleştirmek için bunu açınız.",
"SettingsEnableIMAPLogs_Title": "IMAP protokol loglarını aktifleştir",
"SettingsEnableLogs_Description": "Uygulama kapanmalarını teşhis etmek için loglara ihtiyacım olabilir. Hiçbir log sizin kişisel bilgilerinizi ya da hesap parolalarınızı barındırmaz.",
"SettingsEnableLogs_Title": "Logları Aktifleştir",
"SettingsEnableSignature": "İmzayı Etkinleştir",
"SettingsExpandOnStartup_Description": "Uygulama açıldığında bu hesabın genişletilip genişletilmemesini belirleyin.",
"SettingsExpandOnStartup_Title": "ılışta Genişlet",
"SettingsExternalContent_Description": "E-posta açılırken dış içerikleri yönet.",
"SettingsExternalContent_Title": "Dış İçerikler",
"SettingsFocusedInbox_Description": "Gelen Kutusu'nu Odaklanmış ve Diğer olarak ayrıştarılmasını kontrol edin.",
"SettingsFocusedInbox_Title": "Odaklanmış Gelen Kutusu",
"SettingsFolderSync_Description": "Bazı klasörler için senkronizasyonu açın veya kapatın.",
"SettingsFolderSync_Title": "Klasör Senkronizasyonu",
"SettingsFolderOptions_Title": "Klasör Yapılandırması",
"SettingsFolderOptions_Description": "Bazı klasörler için senkronizasyon ya da okunmamış posta bildirimlerini açma/kapatma gibi ayarları kontrol edin.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Orta Aksiyon",
"SettingsHoverActionLeft": "Sol Aksiyon",
"SettingsHoverActionRight": "Sağ Aksiyon",
"SettingsHoverActions_Description": "Postaların üzerine gelilndiğinde hızlı aksiyon tuşlarını belirlemek için 3 adet aksiyon seçin.",
"SettingsHoverActions_Title": "Hızlı Aksiyonlar",
"SettingsLanguage_Description": "Dili değiştirin.",
"SettingsLanguage_Title": "Görüntüleme Dili",
"SettingsLanguageTime_Title": "Dil ve Zaman",
"SettingsLanguageTime_Description": "Uygulama dili ve tercih edilen zaman gösterimi.",
"CategoriesFolderNameOverride": "Kategoriler",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "Daha fazla",
"SettingsOptions_Title": "Ayarlar",
"SettingsLinkAccounts_Description": "Birden fazla hesabı birbirine bağlayarak beraber kullanın.",
"SettingsLinkAccounts_Title": "Bağlantılı Hesap Oluştur",
"SettingsLinkedAccountsSave_Description": "Yeni bağlantılı hesap birleştirmesini düzenleyin.",
"SettingsLinkedAccountsSave_Title": "Değişiklikleri Kaydet",
"SettingsLoadImages_Title": "Resimleri otomatik olarak yükle",
"SettingsLoadStyles_Title": "Stilleri otomatik olarak yükle",
"SettingsMailSpacing_Description": "E-postalar arasındaki boşluğu ayarlayın.",
"SettingsMailSpacing_Title": "Mail Spacing",
"SettingsFolderMenuStyle_Title": "Create Nested Folders",
"SettingsFolderMenuStyle_Description": "Change whether account folders should be nested inside an account menu item or not. Toggle this off if you like the old menu system in Windows Mail",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "You didn't setup any accounts yet.",
"SettingsNotifications_Description": "Turn on or off notifications for this account.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Change the width of the mail list.",
"SettingsPaneLength_Title": "Mail List Pane Length",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Show much more love ❤️ All donations are appreciated.",
"SettingsPaypal_Title": "Donate via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Compact Mode",
@@ -465,56 +509,56 @@
"SettingsReadComposePane_Title": "Reader & Composer",
"SettingsReaderFont_Title": "Default Reader Font",
"SettingsReaderFontFamily_Description": "Change the default font family and font size for reading mails.",
"SettingsFontFamily_Title": "Font Family",
"SettingsFontSize_Title": "Font Size",
"SettingsFontPreview_Title": "Preview",
"SettingsComposerFont_Title": "Default Composer Font",
"SettingsComposerFontFamily_Description": "Change the default font family and font size for composing mails.",
"SettingsRenameMergeAccount_Description": "Change the display name of the linked accounts.",
"SettingsRenameMergeAccount_Title": "Rename",
"SettingsSemanticZoom_Description": "This will allow you to click on the headers in messages list and go to specific date",
"SettingsSemanticZoom_Title": "Semantic Zoom for Date Headers",
"SettingsShowPreviewText_Description": "Hide/show thepreview text.",
"SettingsShowPreviewText_Title": "Show Preview Text",
"SettingsShowSenderPictures_Description": "Hide/show the thumbnail sender pictures.",
"SettingsShowSenderPictures_Title": "Show Sender Avatars",
"SettingsPrefer24HourClock_Title": "Display Clock Format in 24 Hours",
"SettingsPrefer24HourClock_Description": "Mail recieve times will be displayed in 24 hour format instead of 12 (AM/PM)",
"SettingsSignature_Description": "Manage account signatures",
"SettingsSignature_Title": "Signature",
"SettingsStartupItem_Description": "Primary account item to load Inbox at startup.",
"SettingsStartupItem_Title": "Startup Item",
"SettingsStore_Description": "Show some love ❤️",
"SettingsStore_Title": "Rate in Store",
"SettingsThreads_Description": "Organize messages into conversation threads.",
"SettingsThreads_Title": "Conversation Threading",
"SettingsUnlinkAccounts_Description": "Remove the link between accounts. This will not delete your accounts.",
"SettingsUnlinkAccounts_Title": "Unlink Accounts",
"SortingOption_Date": "by date",
"SortingOption_Name": "by name",
"StoreRatingDialog_MessageFirstLine": "All feedbacks are appreciated and they will make much Wino better in the future. Would you like to rate Wino in Microsoft Store?",
"StoreRatingDialog_MessageSecondLine": "Would you like to rate Wino Mail in Microsoft Store?",
"StoreRatingDialog_Title": "Enjoying Wino?",
"SystemFolderConfigDialog_ArchiveFolderDescription": "Archived messages will be moved to here.",
"SystemFolderConfigDialog_ArchiveFolderHeader": "Archive Folder",
"SystemFolderConfigDialog_DeletedFolderDescription": "Deleted messages will be moved to here.",
"SystemFolderConfigDialog_DeletedFolderHeader": "Deleted Folder",
"SystemFolderConfigDialog_DraftFolderDescription": "New mails/replies will be crafted in here.",
"SystemFolderConfigDialog_DraftFolderHeader": "Draft Folder",
"SystemFolderConfigDialog_JunkFolderDescription": "All spam/junk mails will be here.",
"SystemFolderConfigDialog_JunkFolderHeader": "Junk/Spam Folder",
"SystemFolderConfigDialog_MessageFirstLine": "This IMAP server doesn't support SPECIAL-USE extension hence Wino couldn't setup the system folders properly.",
"SystemFolderConfigDialog_MessageSecondLine": "Please select the appropriate folders for specific functionalities.",
"SystemFolderConfigDialog_SentFolderDescription": "Folder that sent messages will be stored.",
"SystemFolderConfigDialog_SentFolderHeader": "Sent Folder",
"SystemFolderConfigDialog_Title": "Configure System Folders",
"SystemFolderConfigDialogValidation_InboxSelected": "You can't assign Inbox folder to any other system folder.",
"SystemFolderConfigDialogValidation_DuplicateSystemFolders": "Some of the system folders are used more than once in the configuration.",
"SystemFolderConfigSetupSuccess_Title": "System Folders Setup",
"SystemFolderConfigSetupSuccess_Message": "System folders are successfully configured.",
"TestingImapConnectionMessage": "Testing server connection...",
"Today": "Today",
"UnknownAddress": "unknown address",
"SettingsFontFamily_Title": "Yazı Tipi",
"SettingsFontSize_Title": "Yazı Boyutu",
"SettingsFontPreview_Title": "Önizleme",
"SettingsComposerFont_Title": "Varsayılan Editör Yazı Tipi",
"SettingsComposerFontFamily_Description": "E-posta oluştururken kullanılan yazı tipini değiştirin.",
"SettingsRenameMergeAccount_Description": "Bağlı hesabın adını değiştirin.",
"SettingsRenameMergeAccount_Title": "Yeniden adlandır",
"SettingsSemanticZoom_Description": "Bu seçenek e-postaların tarihlerine tıklayarak o tarihe ait mesajları görüntülemenizi sağlar",
"SettingsSemanticZoom_Title": "Tarih Başlıkları için Semantik Yakınlaştırma",
"SettingsShowPreviewText_Description": "Önizlemeyi aç/kapat.",
"SettingsShowPreviewText_Title": "Önizleme",
"SettingsShowSenderPictures_Description": "Gönderen resmini göster/gösterme.",
"SettingsShowSenderPictures_Title": "Gönderen Resimleri",
"SettingsPrefer24HourClock_Title": "24 saatlik format",
"SettingsPrefer24HourClock_Description": "E-posta gönderim tarihleri 24 saatlik zaman diliminde gösterilecektir",
"SettingsSignature_Description": "Hesap imzalarını ayarla",
"SettingsSignature_Title": "İmza",
"SettingsStartupItem_Description": "Uygulama açıldığında Gelen Kutusu'na gidilecek hesap.",
"SettingsStartupItem_Title": "Başlangıç Hesabı",
"SettingsStore_Description": "Biraz sevgi gösterin ❤️",
"SettingsStore_Title": "Mağaza'da Puanla",
"SettingsThreads_Description": "Bağlı mesajları tek bir liste halinde kategorize eder.",
"SettingsThreads_Title": "Mesaj Gruplama",
"SettingsUnlinkAccounts_Description": "Hesap bağlantısını koparın. Bu işlem hesaplarınızı silmez.",
"SettingsUnlinkAccounts_Title": "Hesap Bağlantısını Kopar",
"SortingOption_Date": "tarihe göre",
"SortingOption_Name": "isme göre",
"StoreRatingDialog_MessageFirstLine": "Bütün geribildirimler benim için değerlidir. Microsoft Mağaza'da Wino'yu puanlamak ister misiniz?",
"StoreRatingDialog_MessageSecondLine": "Mıcrosoft Mağaza'da Wino'yu puanlamak ister misiniz?",
"StoreRatingDialog_Title": "Wino'dan keyif alıyor musunuz?",
"SystemFolderConfigDialog_ArchiveFolderDescription": "Arşivlenmiş postalar buraya taşınacaktır.",
"SystemFolderConfigDialog_ArchiveFolderHeader": "Arşiv Klasörü",
"SystemFolderConfigDialog_DeletedFolderDescription": "Silinmiş mesajlar buraya taşınacaktır.",
"SystemFolderConfigDialog_DeletedFolderHeader": "Silinmiş Klasörü",
"SystemFolderConfigDialog_DraftFolderDescription": "Yeni postalar burada oluşturulacaktır.",
"SystemFolderConfigDialog_DraftFolderHeader": "Taslaklar Klasörü",
"SystemFolderConfigDialog_JunkFolderDescription": "Bütün gereksiz mesajlar buraya taşınacaktır.",
"SystemFolderConfigDialog_JunkFolderHeader": "Gereksiz (Spam) Klasörü",
"SystemFolderConfigDialog_MessageFirstLine": "Bu IMAP sunucusu SPECIAL-USE eklentisini desteklemiyor. Bu nedenle Wino sistem klasörlerini otomatik olarak ayarlayamadı.",
"SystemFolderConfigDialog_MessageSecondLine": "Lütfen özel işlevler için klasörleri belirleyin.",
"SystemFolderConfigDialog_SentFolderDescription": "Gönderilmiş mesajlar burada toplanacaktır.",
"SystemFolderConfigDialog_SentFolderHeader": "Gönderilenler Klasörü",
"SystemFolderConfigDialog_Title": "Sistem Klasörlerini Ayarlayın",
"SystemFolderConfigDialogValidation_InboxSelected": "Gelen Kutusu'nu başka bir sistem klasörü olarak seçemezsiniz.",
"SystemFolderConfigDialogValidation_DuplicateSystemFolders": "Bazı sistem klasörleri birden fazla işlevle kullanılamaz.",
"SystemFolderConfigSetupSuccess_Title": "Sistem Klasörleri Ayarlaması",
"SystemFolderConfigSetupSuccess_Message": "Sistem klasörleri başarıyla ayarlandı.",
"TestingImapConnectionMessage": "Sunucu bağlantısı kontrol ediliyor...",
"Today": "Bugün",
"UnknownAddress": "bilinmeyen adres",
"UnknownDateHeader": "Unknown Date",
"UnknownGroupAddress": "unknown Mail Group Address",
"UnknownSender": "Unknown Sender",

View File

@@ -3,6 +3,7 @@
"AccountCreationDialog_Initializing": "initializing",
"AccountCreationDialog_PreparingFolders": "We are getting folder information at the moment.",
"AccountCreationDialog_SigninIn": "Account information is being saved.",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "Account Name",
"AccountEditDialog_Title": "Edit Account",
"AccountPickerDialog_Title": "Pick an account",
@@ -10,6 +11,13 @@
"AccountSettingsDialog_AccountNamePlaceholder": "eg. John Doe",
"AddHyperlink": "Add",
"AutoDiscoveryProgressMessage": "Searching for mail settings...",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "Advanced Configuration",
"BasicIMAPSetupDialog_CredentialLocalMessage": "Your credentials will only be stored locally on your computer.",
"BasicIMAPSetupDialog_Description": "Some accounts require additional steps to sign in",
@@ -21,6 +29,8 @@
"BasicIMAPSetupDialog_Password": "Password",
"BasicIMAPSetupDialog_Title": "IMAP Account",
"Buttons_AddAccount": "Add Account",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "Apply Theme",
"Buttons_Browse": "Browse",
"Buttons_Cancel": "Cancel",
@@ -42,6 +52,7 @@
"Buttons_SignIn": "Sign In",
"Buttons_TryAgain": "Try Again",
"Buttons_Yes": "Yes",
"Buttons_Reset": "Reset",
"Center": "Center",
"ComingSoon": "Coming soon...",
"ComposerFrom": "From: ",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "Set custom wallpaper",
"DialogMessage_AccountLimitMessage": "You have reached the account creation limit.\nWould you like to purchase 'Unlimited Account' add-on to continue?",
"DialogMessage_AccountLimitTitle": "Account Limit Reached",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "Do you want to permanently delete all the mails in this folder?",
"DialogMessage_CleanupFolderTitle": "Cleanup Folder",
"DialogMessage_ComposerMissingRecipientMessage": "Message has no recipient.",
@@ -91,10 +112,20 @@
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "To stop getting messages from {0}, go to their website to unsubscribe.",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "Go to website",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "Do you want to stop getting messages from {0}? Wino will unsubscribe for you by sending an email from your email account to {1}.",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "Don't ask again",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino doesn't have it's own Discord server, but special 'wino-mail' channel is hosted at 'Developer Sanctuary' server.\nTo get the updates about Wino please join Developer Sanctuary server and follow 'wino-mail' channel under 'Community Projects'\n\nYou will be directed to server URL since Discord doesn't support channel invites.",
"DiscordChannelDisclaimerTitle": "Important Discord Information",
"Draft": "Draft",
"Busy": "Busy",
"EditorToolbarOption_Draw": "Draw",
"EditorToolbarOption_Format": "Format",
"EditorToolbarOption_Insert": "Insert",
@@ -106,6 +137,7 @@
"ElementTheme_Light": "Light mode",
"Emoji": "Emoji",
"Exception_WinoServerException": "Wino server failed.",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_ImapClientPoolFailed": "IMAP Client Pool failed.",
"Exception_AuthenticationCanceled": "Authentication canceled",
@@ -113,6 +145,9 @@
"Exception_CustomThemeMissingName": "You must provide a name.",
"Exception_CustomThemeMissingWallpaper": "You must provide a custom background image.",
"Exception_FailedToSynchronizeFolders": "Failed to synchronize folders",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri is null on activation.",
"Exception_GoogleAuthCorruptedCode": "Corrupted authorization response.",
"Exception_GoogleAuthError": "OAuth authorization error: {0}",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "This unsubscribe link is invalid. Failed to unsubscribe from the list.",
"Info_UnsubscribeSuccessMessage": "Successfully unsubscribed from {0}.",
"Info_UnsubscribeErrorMessage": "Failed to unsubscribe",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "Authentication method",
"ImapAdvancedSetupDialog_ConnectionSecurity": "Connection security",
"ImapAuthenticationMethod_Auto": "Auto",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "Folder Synchronization",
"SettingsFolderOptions_Title": "Folder Configuration",
"SettingsFolderOptions_Description": "Change individual folder settings like enable/disable sync or show/hide unread badge.",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "Center Action",
"SettingsHoverActionLeft": "Left Action",
"SettingsHoverActionRight": "Right Action",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "Language & Time",
"SettingsLanguageTime_Description": "Wino display language, preferred time format.",
"CategoriesFolderNameOverride": "Categories",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "More",
"SettingsOptions_Title": "Settings",
"SettingsLinkAccounts_Description": "Merge multiple accounts into one. See mails from one Inbox together.",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "You didn't setup any accounts yet.",
"SettingsNotifications_Description": "Turn on or off notifications for this account.",
"SettingsNotifications_Title": "Notifications",
"SettingsPaneLength_Description": "Change the width of the mail list.",
"SettingsPaneLength_Title": "Mail List Pane Length",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "Show much more love ❤️ All donations are appreciated.",
"SettingsPaypal_Title": "Donate via PayPal",
"SettingsPersonalizationMailDisplayCompactMode": "Compact Mode",

View File

@@ -3,13 +3,21 @@
"AccountCreationDialog_Initializing": "正在初始化",
"AccountCreationDialog_PreparingFolders": "我们正在获取文件夹信息。",
"AccountCreationDialog_SigninIn": "正在保存账户信息。",
"AccountCreationDialog_FetchingProfileInformation": "Fetching profile details.",
"AccountEditDialog_Message": "账户名称",
"AccountEditDialog_Title": "编辑账户",
"AccountPickerDialog_Title": "选择账户",
"AccountSettingsDialog_AccountName": "Sender Display Name",
"AccountSettingsDialog_AccountName": "发件人名称",
"AccountSettingsDialog_AccountNamePlaceholder": "例如: John Doe",
"AddHyperlink": "添加",
"AutoDiscoveryProgressMessage": "正在搜索邮件设置…",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseTerminateBehaviorWarningMessageFirstLine": "You are terminating Wino Mail and your app close behavior is set to 'Terminate'.",
"AppCloseTerminateBehaviorWarningMessageSecondLine": "This will stop all background synchronizations and notifications.",
"AppCloseTerminateBehaviorWarningMessageThirdLine": "Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
"AppCloseStartupLaunchDisabledWarningMessageSecondLine": "This will cause you to miss notifications when you restart your computer.",
"AppCloseStartupLaunchDisabledWarningMessageThirdLine": "Do you want to go to App Preferences page to enable it?",
"BasicIMAPSetupDialog_AdvancedConfiguration": "高级设置",
"BasicIMAPSetupDialog_CredentialLocalMessage": "您的凭据将仅存储在您的计算机上。",
"BasicIMAPSetupDialog_Description": "部分账户需要额外的登录步骤",
@@ -21,13 +29,15 @@
"BasicIMAPSetupDialog_Password": "密码",
"BasicIMAPSetupDialog_Title": "IMAP 账户",
"Buttons_AddAccount": "添加账户",
"Buttons_AddNewAlias": "Add New Alias",
"Buttons_SyncAliases": "Synchronize Aliases",
"Buttons_ApplyTheme": "应用主题",
"Buttons_Browse": "浏览",
"Buttons_Cancel": "取消",
"Buttons_Close": "关闭",
"Buttons_Create": "创建",
"Buttons_CreateAccount": "添加账户",
"Buttons_Copy": "Copy",
"Buttons_Copy": "复制",
"Buttons_Delete": "删除",
"Buttons_Edit": "编辑",
"Buttons_Discard": "放弃",
@@ -40,8 +50,9 @@
"Buttons_SaveConfiguration": "保存设置",
"Buttons_Share": "分享",
"Buttons_SignIn": "登录",
"Buttons_TryAgain": "Try Again",
"Buttons_TryAgain": "重试",
"Buttons_Yes": "是",
"Buttons_Reset": "Reset",
"Center": "中心",
"ComingSoon": "即将到来...",
"ComposerFrom": "来自: ",
@@ -51,8 +62,8 @@
"ClipboardTextCopied_Title": "已复制",
"ClipboardTextCopyFailed_Message": "无法将 {0} 复制到剪贴板。",
"ComposerToPlaceholder": "点击输入地址",
"ComposerAttachmentsDropZone_Message": "Drop your files here",
"ComposerImagesDropZone_Message": "Drop your images here",
"ComposerAttachmentsDropZone_Message": "将文件拖放至此",
"ComposerImagesDropZone_Message": "将图片拖放至此",
"ComposerAttachmentsDragDropAttach_Message": "附件",
"CustomThemeBuilder_AccentColorDescription": "设置自定义颜色。若未选择颜色,将使用 Windows 默认颜色。",
"CustomThemeBuilder_AccentColorTitle": "主题色",
@@ -64,6 +75,16 @@
"CustomThemeBuilder_WallpaperTitle": "设置自定义壁纸",
"DialogMessage_AccountLimitMessage": "您已达到免费用户可创建账户数量上限3个。\n是否购买支持作者以“解除可创建账户数量上限”",
"DialogMessage_AccountLimitTitle": "已达到账户限制",
"DialogMessage_AliasNotSelectedTitle": "Missing Alias",
"DialogMessage_AliasNotSelectedMessage": "You must select an alias before sending a message.",
"DialogMessage_AliasExistsTitle": "Existing Alias",
"DialogMessage_AliasExistsMessage": "This alias is already in use.",
"DialogMessage_InvalidAliasTitle": "Invalid Alias",
"DialogMessage_InvalidAliasMessage": "This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.",
"DialogMessage_CantDeleteRootAliasTitle": "Can't Delete Alias",
"DialogMessage_CantDeleteRootAliasMessage": "Root alias can't be deleted. This is your main identity associated with your account setup.",
"DialogMessage_AliasCreatedTitle": "Created New Alias",
"DialogMessage_AliasCreatedMessage": "New alias is succesfully created.",
"DialogMessage_CleanupFolderMessage": "您想永久删除此文件夹中的所有邮件吗?",
"DialogMessage_CleanupFolderTitle": "清空文件夹",
"DialogMessage_ComposerMissingRecipientMessage": "邮件没有收件人。",
@@ -82,37 +103,51 @@
"DialogMessage_RenameLinkedAccountsTitle": "重命名已链接账户",
"DialogMessage_UnlinkAccountsConfirmationMessage": "此操作不会删除您的账户,只会断开共享文件夹的连接。是否继续?",
"DialogMessage_UnlinkAccountsConfirmationTitle": "取消链接账户",
"DialogMessage_EmptySubjectConfirmation": "Missing Subject",
"DialogMessage_EmptySubjectConfirmation": "缺少标题",
"DialogMessage_EmptySubjectConfirmationMessage": "邮件没有主题。您想要继续吗?",
"DialogMessage_RenameFolderTitle": "Rename Folder",
"DialogMessage_RenameFolderMessage": "Enter new name for this folder",
"DialogMessage_RenameFolderTitle": "重命名文件夹",
"DialogMessage_RenameFolderMessage": "输入新的文件夹名称",
"DialogMessage_UnsubscribeConfirmationTitle": "取消订阅",
"DialogMessage_UnsubscribeConfirmationOneClickMessage": "您想要停止从 {0} 处获取信息吗?",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteMessage": "要停止从 {0} 处获取消息,请前往他们的网站退订。",
"DialogMessage_UnsubscribeConfirmationGoToWebsiteConfirmButton": "前往网站",
"DialogMessage_UnsubscribeConfirmationMailtoMessage": "您想要停止从 {0} 处获取消息吗? Wino将通过向 {1} 发送一封电子邮件以取消订阅。",
"DialogMessage_EnableStartupLaunchTitle": "Enable Startup Launch",
"DialogMessage_EnableStartupLaunchMessage": "Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications.\n\nDo you want to enable startup launch?",
"DialogMessage_EnableStartupLaunchDeniedMessage": "You can enable startup launch from Settings -> App Preferences.",
"Dialog_DontAskAgain": "不再询问",
"CreateAccountAliasDialog_Title": "Create Account Alias",
"CreateAccountAliasDialog_Description": "Make sure your outgoing server allows sending mails from this alias.",
"CreateAccountAliasDialog_AliasAddress": "Address",
"CreateAccountAliasDialog_AliasAddressPlaceholder": "eg. support@mydomain.com",
"CreateAccountAliasDialog_ReplyToAddress": "Reply-To Address",
"CreateAccountAliasDialog_ReplyToAddressPlaceholder": "admin@mydomain.com",
"DiscordChannelDisclaimerMessage": "Wino 没有自己的 Discord 服务器,但在 Developer Sanctuary 服务器上设有专门的 wino-mail 频道。如果要获取有关 Wino 的更新,请加入 Developer Sanctuary 服务器,并关注 Community Projects下的 wino-mail 频道。\n\n因为 Discord 不支持频道邀请,所以你需要通过网页加入频道。",
"DiscordChannelDisclaimerTitle": "重要的 Discord 信息",
"Draft": "草稿",
"Busy": "Busy",
"EditorToolbarOption_Draw": "绘制",
"EditorToolbarOption_Format": "格式",
"EditorToolbarOption_Insert": "插入",
"EditorToolbarOption_None": "无",
"EditorToolbarOption_Options": "选项",
"EditorTooltip_WebViewEditor": "Use web view editor",
"EditorTooltip_WebViewEditor": "使用 WebView 编辑器",
"ElementTheme_Dark": "深色模式",
"ElementTheme_Default": "使用系统设置",
"ElementTheme_Light": "浅色模式",
"Emoji": "表情",
"Exception_WinoServerException": "Wino server failed.",
"Exception_ImapAutoDiscoveryFailed": "Couldn't find mailbox settings.",
"Exception_WinoServerException": "Wino 服务器连接失败",
"Exception_MailProcessing": "This mail is still being processed. Please try again after few seconds.",
"Exception_ImapAutoDiscoveryFailed": "找不到邮箱配置。",
"Exception_ImapClientPoolFailed": "IMAP 客户端池失败。",
"Exception_AuthenticationCanceled": "身份验证已取消",
"Exception_CustomThemeExists": "此主题已经存在。",
"Exception_CustomThemeMissingName": "您必须提供名称。",
"Exception_CustomThemeMissingWallpaper": "您必须提供自定义背景图像。",
"Exception_FailedToSynchronizeFolders": "同步文件夹失败",
"Exception_FailedToSynchronizeAliases": "Failed to synchronize aliases",
"Exception_MissingAlias": "Primary alias does not exist for this account. Creating draft failed.",
"Exception_FailedToSynchronizeProfileInformation": "Failed to synchronize profile information",
"Exception_GoogleAuthCallbackNull": "Callback uri 在激活时无效。",
"Exception_GoogleAuthCorruptedCode": "授权响应不正确。",
"Exception_GoogleAuthError": "OAuth 授权错误: {0}",
@@ -177,8 +212,8 @@
"IMAPSetupDialog_UseSameConfig": "发送电子邮件时使用同一用户名和密码",
"IMAPSetupDialog_Username": "用户名",
"IMAPSetupDialog_UsernamePlaceholder": "示例johndoe, johndoe@fabrikam.com, domain/johndoe",
"IMAPSetupDialog_ConnectionFailedTitle": "Connection Failed",
"IMAPSetupDialog_ConnectionFailedMessage": "IMAP connection failed.",
"IMAPSetupDialog_ConnectionFailedTitle": "连接失败",
"IMAPSetupDialog_ConnectionFailedMessage": "IMAP 连接失败",
"ImageRenderingDisabled": "此邮件的图像渲染已禁用。",
"InfoBarAction_Enable": "启用",
"InfoBarMessage_SynchronizationDisabledFolder": "此文件夹已禁用同步。",
@@ -253,6 +288,8 @@
"Info_UnsubscribeLinkInvalidMessage": "此退订链接无效。取消订阅列表失败。",
"Info_UnsubscribeSuccessMessage": "成功取消了来自 {0} 处的订阅!",
"Info_UnsubscribeErrorMessage": "取消订阅失败",
"Info_CantDeletePrimaryAliasMessage": "Primary alias can't be deleted. Please change your alias before deleting this one",
"Info_MailListSizeResetSuccessMessage": "The Mail List size has been reset.",
"ImapAdvancedSetupDialog_AuthenticationMethod": "身份验证方法",
"ImapAdvancedSetupDialog_ConnectionSecurity": "连接安全性",
"ImapAuthenticationMethod_Auto": "自动",
@@ -333,10 +370,10 @@
"ProviderDetail_Gmail_Description": "Google 账号",
"ProviderDetail_IMAP_Description": "自定义 IMAP/SMTP 服务器",
"ProviderDetail_IMAP_Title": "IMAP 服务器",
"ProtocolLogAvailable_Message": "Protocol logs are available for diagnostics.",
"ProtocolLogAvailable_Message": "协议诊断日志已可用。",
"Results": "结果",
"Right": "右侧",
"Reader_SaveAllAttachmentButtonText": "Save all attachments",
"Reader_SaveAllAttachmentButtonText": "保存附件",
"SynchronizationFolderReport_Success": "已是最新",
"SynchronizationFolderReport_Failed": "同步失败",
"SearchBarPlaceholder": "搜索",
@@ -396,6 +433,8 @@
"SettingsFolderSync_Title": "文件夹同步",
"SettingsFolderOptions_Title": "文件夹设置",
"SettingsFolderOptions_Description": "更改个人文件夹设置,如启用/禁用同步或显示/隐藏未读标志。",
"SettingsManageAliases_Title": "Aliases",
"SettingsManageAliases_Description": "See e-mail aliases assigned for this account, update or delete them.",
"SettingsHoverActionCenter": "中心动作",
"SettingsHoverActionLeft": "左侧动作",
"SettingsHoverActionRight": "右侧动作",
@@ -406,6 +445,11 @@
"SettingsLanguageTime_Title": "语言和时间",
"SettingsLanguageTime_Description": "Wino显示语言首选时间格式",
"CategoriesFolderNameOverride": "分类",
"AccountAlias_Column_Verified": "Verified",
"AccountAlias_Column_Alias": "Alias",
"AccountAlias_Column_IsPrimaryAlias": "Primary",
"AccountAlias_Disclaimer_FirstLine": "Wino can only import aliases for your Gmail accounts.",
"AccountAlias_Disclaimer_SecondLine": "If you want to use aliases for your Outlook or IMAP account, please add them yourself.",
"MoreFolderNameOverride": "更多",
"SettingsOptions_Title": "设置",
"SettingsLinkAccounts_Description": "将多个账户合并为一个。在同一个收件箱内查看所有邮件。",
@@ -420,21 +464,21 @@
"SettingsFolderMenuStyle_Description": "控制账户文件夹是否应嵌套在账户菜单中。 如果您喜欢Windows邮件中的旧菜单关闭此选项",
"SettingsManageAccountSettings_Description": "每个账户的通知、签名、同步等设置。",
"SettingsManageAccountSettings_Title": "管理账户设置",
"SettingsAppPreferences_Title": "App Preferences",
"SettingsAppPreferences_Description": "General settings / preferences for Wino Mail.",
"SettingsAppPreferences_CloseBehavior_Title": "Application close behavior",
"SettingsAppPreferences_CloseBehavior_Description": "What should happen when you close the app?",
"SettingsAppPreferences_StartupBehavior_Title": "Start minimized on Windows startup",
"SettingsAppPreferences_StartupBehavior_Description": "Allow Wino Mail to launch minimized when Windows starts. Always allow it to receive notifications.",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino Mail successfully set to be launched in the background on Windows startup.",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail will not be launched on Windows startup. This will cause you to miss notifications when you restart your computer.",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "Your administrator or group policies disabled running applications on startup. Thus, Wino Mail can't be set to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "Please go to Task Manager -> Startup tab to allow Wino Mail to launch on Windows startup.",
"SettingsAppPreferences_StartupBehavior_FatalError": "Fatal error occurred while changing the startup mode for Wino Mail.",
"SettingsAppPreferences_StartupBehavior_Enable": "Enable",
"SettingsAppPreferences_StartupBehavior_Disable": "Disable",
"SettingsReorderAccounts_Title": "Reorder Accounts",
"SettingsReorderAccounts_Description": "Change the order of accounts in the account list.",
"SettingsAppPreferences_Title": "应用设置",
"SettingsAppPreferences_Description": "Wino Mail 的常规 / 首选项设置",
"SettingsAppPreferences_CloseBehavior_Title": "应用关闭后行为",
"SettingsAppPreferences_CloseBehavior_Description": "当关闭应用时 Wino Mail 应该怎么做?",
"SettingsAppPreferences_StartupBehavior_Title": " Windows 启动并最小化应用",
"SettingsAppPreferences_StartupBehavior_Description": "允许 Wino Mail 随 Windows 最小化自启动。总是允许接收应用通知。",
"SettingsAppPreferences_StartupBehavior_Enabled": "Wino 成功设置为随 Windows 自启动。",
"SettingsAppPreferences_StartupBehavior_Disabled": "Wino Mail 将不会随 Windows 自动。可能会导致重启系统后错过邮件通知。",
"SettingsAppPreferences_StartupBehavior_DisabledByPolicy": "管理员或组策略禁止了应用随 Windows 自启动,因此 Wino Mail 无法随 Windows 自启动。",
"SettingsAppPreferences_StartupBehavior_DisabledByUser": "请前往「任务管理器 」-「启动应用」标签以允许 Wino Mail 随 Windows 自启动。",
"SettingsAppPreferences_StartupBehavior_FatalError": "更改 Wino Mail 启动模式发生严重错误。",
"SettingsAppPreferences_StartupBehavior_Enable": "启用",
"SettingsAppPreferences_StartupBehavior_Disable": "禁用",
"SettingsReorderAccounts_Title": "重新排列账号",
"SettingsReorderAccounts_Description": "改变账号在账号列表中的顺序。",
"SettingsManageLink_Description": "移动项目以添加新链接或删除现有链接。",
"SettingsManageLink_Title": "管理账户链接",
"SettingsMarkAsRead_Description": "更改应对选定项目进行何种操作。",
@@ -448,8 +492,8 @@
"SettingsNoAccountSetupMessage": "您尚未设置任何账户。",
"SettingsNotifications_Description": "开启或关闭此账户的通知。",
"SettingsNotifications_Title": "通知",
"SettingsPaneLength_Description": "更改邮件列表的宽度。",
"SettingsPaneLength_Title": "邮件列表视图长度",
"SettingsPaneLengthReset_Description": "Reset the size of the mail list to original if you have issues with it.",
"SettingsPaneLengthReset_Title": "Reset Mail List Size",
"SettingsPaypal_Description": "展示更多的爱吧 ❤️ 我们感激所有的捐赠。",
"SettingsPaypal_Title": "通过 PayPal 捐赠",
"SettingsPersonalizationMailDisplayCompactMode": "紧凑模式",
@@ -459,10 +503,10 @@
"SettingsPersonalization_Title": "个性化",
"SettingsPrivacyPolicy_Description": "查看隐私政策。",
"SettingsPrivacyPolicy_Title": "隐私政策",
"SettingsReader_Title": "Reader",
"SettingsComposer_Title": "Composer",
"SettingsReadComposePane_Description": "Fonts, external content.",
"SettingsReadComposePane_Title": "Reader & Composer",
"SettingsReader_Title": "阅读器",
"SettingsComposer_Title": "编辑器",
"SettingsReadComposePane_Description": "字体与外部内容。",
"SettingsReadComposePane_Title": "阅读器和编辑器",
"SettingsReaderFont_Title": "默认阅读字体",
"SettingsReaderFontFamily_Description": "更改阅读邮件的默认字体和字体大小。",
"SettingsFontFamily_Title": "字体",
@@ -480,7 +524,7 @@
"SettingsShowSenderPictures_Title": "显示发件人头像",
"SettingsPrefer24HourClock_Title": "使用 24 小时制时间格式",
"SettingsPrefer24HourClock_Description": "邮件接收时间将显示为 24 小时制,而不是 12 小时制(上午/下午)",
"SettingsSignature_Description": "Manage account signatures",
"SettingsSignature_Description": "管理账户签名",
"SettingsSignature_Title": "签名",
"SettingsStartupItem_Description": "启动时加载收件箱的主要账户项。",
"SettingsStartupItem_Title": "启动项",
@@ -524,29 +568,29 @@
"WinoUpgradeMessage": "升级为无限账户数",
"WinoUpgradeRemainingAccountsMessage": "已使用 {0} 个免费账户,共 {1} 个。",
"Yesterday": "昨天",
"SignatureEditorDialog_Title": "Signature Editor",
"SignatureEditorDialog_SignatureName_Placeholder": "Name your signature",
"SignatureEditorDialog_SignatureName_TitleNew": "Signature name",
"SignatureEditorDialog_SignatureName_TitleEdit": "Current signature name: {0}",
"SignatureDeleteDialog_Title": "Delete signature",
"SignatureDeleteDialog_Message": "Are you sure you want to delete \"{0}\" signature?",
"SettingsSignature_ForNewMessages_Title": "For New Messages",
"SettingsSignature_ForFollowingMessages_Title": "For Replies/Forwards",
"SettingsSignature_SignatureDefaults": "Signature defaults",
"SettingsSignature_Signatures": "Signatures",
"SettingsSignature_AddCustomSignature_Title": "Add custom signature",
"SettingsSignature_AddCustomSignature_Button": "Add signature",
"SettingsSignature_EditSignature_Title": "Edit signature",
"SettingsSignature_DeleteSignature_Title": "Delete signature",
"SettingsSignature_NoneSignatureName": "None",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "Minimize to system tray",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail will keep running on the system tray. Available to launch by clicking on an icon. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "Run in the background",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail will keep running in the background. You will be notified as new mails arrive.",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "Terminate",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail will not keep running anywhere. You will not be notified as new mails arrive. Launch Wino Mail again to continue mail synchronization.",
"TitleBarServerDisconnectedButton_Title": "no connection",
"TitleBarServerDisconnectedButton_Description": "Wino is disconnected from the network. Click reconnect to restore connection.",
"TitleBarServerReconnectButton_Title": "reconnect",
"TitleBarServerReconnectingButton_Title": "connecting"
"SignatureEditorDialog_Title": "签名编辑器",
"SignatureEditorDialog_SignatureName_Placeholder": "为签名命名",
"SignatureEditorDialog_SignatureName_TitleNew": "签名名称",
"SignatureEditorDialog_SignatureName_TitleEdit": "当前签名:{0}",
"SignatureDeleteDialog_Title": "删除签名",
"SignatureDeleteDialog_Message": "确定要删除签名「{0}」吗?",
"SettingsSignature_ForNewMessages_Title": "用于新邮件",
"SettingsSignature_ForFollowingMessages_Title": "用于回复和转发",
"SettingsSignature_SignatureDefaults": "默认签名",
"SettingsSignature_Signatures": "签名",
"SettingsSignature_AddCustomSignature_Title": "添加自定义签名",
"SettingsSignature_AddCustomSignature_Button": "添加签名",
"SettingsSignature_EditSignature_Title": "编辑签名",
"SettingsSignature_DeleteSignature_Title": "删除签名",
"SettingsSignature_NoneSignatureName": "",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Title": "最小化到系统托盘",
"SettingsAppPreferences_ServerBackgroundingMode_MinimizeTray_Description": "Wino Mail 将在系统托盘上继续运行。点击托盘图标时将启动应用。当收到新邮件时将推送通知。",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Title": "后台运行",
"SettingsAppPreferences_ServerBackgroundingMode_Invisible_Description": "Wino Mail 将在后台运行。当收到新邮件时将推送通知。",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Title": "终止进程",
"SettingsAppPreferences_ServerBackgroundingMode_Terminate_Description": "Wino Mail 将不会时刻保持运行。收到新邮件时不会再推送通知。当再次启动应用时才会继续同步邮件。",
"TitleBarServerDisconnectedButton_Title": "无网络连接",
"TitleBarServerDisconnectedButton_Description": "Wino 已断开网络连接。点击「重新连接」重试。",
"TitleBarServerReconnectButton_Title": "重新连接",
"TitleBarServerReconnectingButton_Title": "正在连接"
}

View File

@@ -38,6 +38,11 @@ namespace Wino.Core.Domain
/// </summary>
public static string AccountCreationDialog_SigninIn => Resources.GetTranslatedString(@"AccountCreationDialog_SigninIn");
/// <summary>
/// Fetching profile details.
/// </summary>
public static string AccountCreationDialog_FetchingProfileInformation => Resources.GetTranslatedString(@"AccountCreationDialog_FetchingProfileInformation");
/// <summary>
/// Account Name
/// </summary>
@@ -73,6 +78,41 @@ namespace Wino.Core.Domain
/// </summary>
public static string AutoDiscoveryProgressMessage => Resources.GetTranslatedString(@"AutoDiscoveryProgressMessage");
/// <summary>
/// Background Synchronization
/// </summary>
public static string AppCloseBackgroundSynchronizationWarningTitle => Resources.GetTranslatedString(@"AppCloseBackgroundSynchronizationWarningTitle");
/// <summary>
/// You are terminating Wino Mail and your app close behavior is set to 'Terminate'.
/// </summary>
public static string AppCloseTerminateBehaviorWarningMessageFirstLine => Resources.GetTranslatedString(@"AppCloseTerminateBehaviorWarningMessageFirstLine");
/// <summary>
/// This will stop all background synchronizations and notifications.
/// </summary>
public static string AppCloseTerminateBehaviorWarningMessageSecondLine => Resources.GetTranslatedString(@"AppCloseTerminateBehaviorWarningMessageSecondLine");
/// <summary>
/// Do you want to go to App Preferences to set Wino Mail to run minimized or in the background?
/// </summary>
public static string AppCloseTerminateBehaviorWarningMessageThirdLine => Resources.GetTranslatedString(@"AppCloseTerminateBehaviorWarningMessageThirdLine");
/// <summary>
/// Application has not been set to launch on Windows startup.
/// </summary>
public static string AppCloseStartupLaunchDisabledWarningMessageFirstLine => Resources.GetTranslatedString(@"AppCloseStartupLaunchDisabledWarningMessageFirstLine");
/// <summary>
/// This will cause you to miss notifications when you restart your computer.
/// </summary>
public static string AppCloseStartupLaunchDisabledWarningMessageSecondLine => Resources.GetTranslatedString(@"AppCloseStartupLaunchDisabledWarningMessageSecondLine");
/// <summary>
/// Do you want to go to App Preferences page to enable it?
/// </summary>
public static string AppCloseStartupLaunchDisabledWarningMessageThirdLine => Resources.GetTranslatedString(@"AppCloseStartupLaunchDisabledWarningMessageThirdLine");
/// <summary>
/// Advanced Configuration
/// </summary>
@@ -128,6 +168,16 @@ namespace Wino.Core.Domain
/// </summary>
public static string Buttons_AddAccount => Resources.GetTranslatedString(@"Buttons_AddAccount");
/// <summary>
/// Add New Alias
/// </summary>
public static string Buttons_AddNewAlias => Resources.GetTranslatedString(@"Buttons_AddNewAlias");
/// <summary>
/// Synchronize Aliases
/// </summary>
public static string Buttons_SyncAliases => Resources.GetTranslatedString(@"Buttons_SyncAliases");
/// <summary>
/// Apply Theme
/// </summary>
@@ -233,6 +283,16 @@ namespace Wino.Core.Domain
/// </summary>
public static string Buttons_Yes => Resources.GetTranslatedString(@"Buttons_Yes");
/// <summary>
/// Reset
/// </summary>
public static string Buttons_Reset => Resources.GetTranslatedString(@"Buttons_Reset");
/// <summary>
/// Send
/// </summary>
public static string Buttons_Send => Resources.GetTranslatedString(@"Buttons_Send");
/// <summary>
/// Center
/// </summary>
@@ -343,6 +403,56 @@ namespace Wino.Core.Domain
/// </summary>
public static string DialogMessage_AccountLimitTitle => Resources.GetTranslatedString(@"DialogMessage_AccountLimitTitle");
/// <summary>
/// Missing Alias
/// </summary>
public static string DialogMessage_AliasNotSelectedTitle => Resources.GetTranslatedString(@"DialogMessage_AliasNotSelectedTitle");
/// <summary>
/// You must select an alias before sending a message.
/// </summary>
public static string DialogMessage_AliasNotSelectedMessage => Resources.GetTranslatedString(@"DialogMessage_AliasNotSelectedMessage");
/// <summary>
/// Existing Alias
/// </summary>
public static string DialogMessage_AliasExistsTitle => Resources.GetTranslatedString(@"DialogMessage_AliasExistsTitle");
/// <summary>
/// This alias is already in use.
/// </summary>
public static string DialogMessage_AliasExistsMessage => Resources.GetTranslatedString(@"DialogMessage_AliasExistsMessage");
/// <summary>
/// Invalid Alias
/// </summary>
public static string DialogMessage_InvalidAliasTitle => Resources.GetTranslatedString(@"DialogMessage_InvalidAliasTitle");
/// <summary>
/// This alias is not valid. Make sure all addresses of the alias are valid e-mail addresses.
/// </summary>
public static string DialogMessage_InvalidAliasMessage => Resources.GetTranslatedString(@"DialogMessage_InvalidAliasMessage");
/// <summary>
/// Can't Delete Alias
/// </summary>
public static string DialogMessage_CantDeleteRootAliasTitle => Resources.GetTranslatedString(@"DialogMessage_CantDeleteRootAliasTitle");
/// <summary>
/// Root alias can't be deleted. This is your main identity associated with your account setup.
/// </summary>
public static string DialogMessage_CantDeleteRootAliasMessage => Resources.GetTranslatedString(@"DialogMessage_CantDeleteRootAliasMessage");
/// <summary>
/// Created New Alias
/// </summary>
public static string DialogMessage_AliasCreatedTitle => Resources.GetTranslatedString(@"DialogMessage_AliasCreatedTitle");
/// <summary>
/// New alias is succesfully created.
/// </summary>
public static string DialogMessage_AliasCreatedMessage => Resources.GetTranslatedString(@"DialogMessage_AliasCreatedMessage");
/// <summary>
/// Do you want to permanently delete all the mails in this folder?
/// </summary>
@@ -434,7 +544,7 @@ namespace Wino.Core.Domain
public static string DialogMessage_UnlinkAccountsConfirmationTitle => Resources.GetTranslatedString(@"DialogMessage_UnlinkAccountsConfirmationTitle");
/// <summary>
/// Missin Subject
/// Missing Subject
/// </summary>
public static string DialogMessage_EmptySubjectConfirmation => Resources.GetTranslatedString(@"DialogMessage_EmptySubjectConfirmation");
@@ -478,11 +588,56 @@ namespace Wino.Core.Domain
/// </summary>
public static string DialogMessage_UnsubscribeConfirmationMailtoMessage => Resources.GetTranslatedString(@"DialogMessage_UnsubscribeConfirmationMailtoMessage");
/// <summary>
/// Enable Startup Launch
/// </summary>
public static string DialogMessage_EnableStartupLaunchTitle => Resources.GetTranslatedString(@"DialogMessage_EnableStartupLaunchTitle");
/// <summary>
/// Let Wino Mail automatically launch minimized on Windows startup to not miss any notifications. Do you want to enable startup launch?
/// </summary>
public static string DialogMessage_EnableStartupLaunchMessage => Resources.GetTranslatedString(@"DialogMessage_EnableStartupLaunchMessage");
/// <summary>
/// You can enable startup launch from Settings -> App Preferences.
/// </summary>
public static string DialogMessage_EnableStartupLaunchDeniedMessage => Resources.GetTranslatedString(@"DialogMessage_EnableStartupLaunchDeniedMessage");
/// <summary>
/// Don't ask again
/// </summary>
public static string Dialog_DontAskAgain => Resources.GetTranslatedString(@"Dialog_DontAskAgain");
/// <summary>
/// Create Account Alias
/// </summary>
public static string CreateAccountAliasDialog_Title => Resources.GetTranslatedString(@"CreateAccountAliasDialog_Title");
/// <summary>
/// Make sure your outgoing server allows sending mails from this alias.
/// </summary>
public static string CreateAccountAliasDialog_Description => Resources.GetTranslatedString(@"CreateAccountAliasDialog_Description");
/// <summary>
/// Address
/// </summary>
public static string CreateAccountAliasDialog_AliasAddress => Resources.GetTranslatedString(@"CreateAccountAliasDialog_AliasAddress");
/// <summary>
/// eg. support@mydomain.com
/// </summary>
public static string CreateAccountAliasDialog_AliasAddressPlaceholder => Resources.GetTranslatedString(@"CreateAccountAliasDialog_AliasAddressPlaceholder");
/// <summary>
/// Reply-To Address
/// </summary>
public static string CreateAccountAliasDialog_ReplyToAddress => Resources.GetTranslatedString(@"CreateAccountAliasDialog_ReplyToAddress");
/// <summary>
/// admin@mydomain.com
/// </summary>
public static string CreateAccountAliasDialog_ReplyToAddressPlaceholder => Resources.GetTranslatedString(@"CreateAccountAliasDialog_ReplyToAddressPlaceholder");
/// <summary>
/// Wino doesn't have it's own Discord server, but special 'wino-mail' channel is hosted at 'Developer Sanctuary' server. To get the updates about Wino please join Developer Sanctuary server and follow 'wino-mail' channel under 'Community Projects' You will be directed to server URL since Discord doesn't support channel invites.
/// </summary>
@@ -498,6 +653,11 @@ namespace Wino.Core.Domain
/// </summary>
public static string Draft => Resources.GetTranslatedString(@"Draft");
/// <summary>
/// Busy
/// </summary>
public static string Busy => Resources.GetTranslatedString(@"Busy");
/// <summary>
/// Draw
/// </summary>
@@ -553,6 +713,11 @@ namespace Wino.Core.Domain
/// </summary>
public static string Exception_WinoServerException => Resources.GetTranslatedString(@"Exception_WinoServerException");
/// <summary>
/// This mail is still being processed. Please try again after few seconds.
/// </summary>
public static string Exception_MailProcessing => Resources.GetTranslatedString(@"Exception_MailProcessing");
/// <summary>
/// Couldn't find mailbox settings.
/// </summary>
@@ -588,6 +753,21 @@ namespace Wino.Core.Domain
/// </summary>
public static string Exception_FailedToSynchronizeFolders => Resources.GetTranslatedString(@"Exception_FailedToSynchronizeFolders");
/// <summary>
/// Failed to synchronize aliases
/// </summary>
public static string Exception_FailedToSynchronizeAliases => Resources.GetTranslatedString(@"Exception_FailedToSynchronizeAliases");
/// <summary>
/// Primary alias does not exist for this account. Creating draft failed.
/// </summary>
public static string Exception_MissingAlias => Resources.GetTranslatedString(@"Exception_MissingAlias");
/// <summary>
/// Failed to synchronize profile information
/// </summary>
public static string Exception_FailedToSynchronizeProfileInformation => Resources.GetTranslatedString(@"Exception_FailedToSynchronizeProfileInformation");
/// <summary>
/// Callback uri is null on activation.
/// </summary>
@@ -1288,6 +1468,16 @@ namespace Wino.Core.Domain
/// </summary>
public static string Info_UnsubscribeErrorMessage => Resources.GetTranslatedString(@"Info_UnsubscribeErrorMessage");
/// <summary>
/// Primary alias can't be deleted. Please change your alias before deleting this one
/// </summary>
public static string Info_CantDeletePrimaryAliasMessage => Resources.GetTranslatedString(@"Info_CantDeletePrimaryAliasMessage");
/// <summary>
/// The Mail List size has been reset.
/// </summary>
public static string Info_MailListSizeResetSuccessMessage => Resources.GetTranslatedString(@"Info_MailListSizeResetSuccessMessage");
/// <summary>
/// Authentication method
/// </summary>
@@ -2003,6 +2193,16 @@ namespace Wino.Core.Domain
/// </summary>
public static string SettingsFolderOptions_Description => Resources.GetTranslatedString(@"SettingsFolderOptions_Description");
/// <summary>
/// Aliases
/// </summary>
public static string SettingsManageAliases_Title => Resources.GetTranslatedString(@"SettingsManageAliases_Title");
/// <summary>
/// See e-mail aliases assigned for this account, update or delete them.
/// </summary>
public static string SettingsManageAliases_Description => Resources.GetTranslatedString(@"SettingsManageAliases_Description");
/// <summary>
/// Center Action
/// </summary>
@@ -2053,6 +2253,31 @@ namespace Wino.Core.Domain
/// </summary>
public static string CategoriesFolderNameOverride => Resources.GetTranslatedString(@"CategoriesFolderNameOverride");
/// <summary>
/// Verified
/// </summary>
public static string AccountAlias_Column_Verified => Resources.GetTranslatedString(@"AccountAlias_Column_Verified");
/// <summary>
/// Alias
/// </summary>
public static string AccountAlias_Column_Alias => Resources.GetTranslatedString(@"AccountAlias_Column_Alias");
/// <summary>
/// Primary
/// </summary>
public static string AccountAlias_Column_IsPrimaryAlias => Resources.GetTranslatedString(@"AccountAlias_Column_IsPrimaryAlias");
/// <summary>
/// Wino can only import aliases for your Gmail accounts.
/// </summary>
public static string AccountAlias_Disclaimer_FirstLine => Resources.GetTranslatedString(@"AccountAlias_Disclaimer_FirstLine");
/// <summary>
/// If you want to use aliases for your Outlook or IMAP account, please add them yourself.
/// </summary>
public static string AccountAlias_Disclaimer_SecondLine => Resources.GetTranslatedString(@"AccountAlias_Disclaimer_SecondLine");
/// <summary>
/// More
/// </summary>
@@ -2264,14 +2489,14 @@ namespace Wino.Core.Domain
public static string SettingsNotifications_Title => Resources.GetTranslatedString(@"SettingsNotifications_Title");
/// <summary>
/// Change the width of the mail list.
/// Reset the size of the mail list to original if you have issues with it.
/// </summary>
public static string SettingsPaneLength_Description => Resources.GetTranslatedString(@"SettingsPaneLength_Description");
public static string SettingsPaneLengthReset_Description => Resources.GetTranslatedString(@"SettingsPaneLengthReset_Description");
/// <summary>
/// Mail List Pane Length
/// Reset Mail List Size
/// </summary>
public static string SettingsPaneLength_Title => Resources.GetTranslatedString(@"SettingsPaneLength_Title");
public static string SettingsPaneLengthReset_Title => Resources.GetTranslatedString(@"SettingsPaneLengthReset_Title");
/// <summary>
/// Show much more love ❤️ All donations are appreciated.

View File

@@ -62,7 +62,7 @@
</PackageReference>
<PackageReference Include="MimeKit" Version="4.7.1" />
<PackageReference Include="MailKit" Version="4.7.1.1" />
<PackageReference Include="sqlite-net-pcl" Version="1.8.116" />
<PackageReference Include="sqlite-net-pcl" Version="1.9.172" />
<PackageReference Include="System.Text.Json" Version="8.0.4" />
</ItemGroup>
<ItemGroup>

View File

@@ -1,4 +1,7 @@
using Serilog;
using System;
using System.Linq;
using System.Threading.Tasks;
using Serilog;
using Windows.ApplicationModel.Background;
using Wino.Core.Domain.Interfaces;
@@ -7,6 +10,7 @@ namespace Wino.Core.UWP.Services
public class BackgroundTaskService : IBackgroundTaskService
{
private const string IsBackgroundTasksUnregisteredKey = nameof(IsBackgroundTasksUnregisteredKey);
public const string ToastNotificationActivationHandlerTaskName = "ToastNotificationActivationHandlerTask";
private readonly IConfigurationService _configurationService;
@@ -17,7 +21,7 @@ namespace Wino.Core.UWP.Services
public void UnregisterAllBackgroundTask()
{
if (!_configurationService.Get(IsBackgroundTasksUnregisteredKey, false))
if (_configurationService.Get(IsBackgroundTasksUnregisteredKey, false))
{
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
@@ -28,5 +32,32 @@ namespace Wino.Core.UWP.Services
_configurationService.Set(IsBackgroundTasksUnregisteredKey, true);
}
}
public Task RegisterBackgroundTasksAsync()
{
return RegisterToastNotificationHandlerBackgroundTaskAsync();
}
public async Task RegisterToastNotificationHandlerBackgroundTaskAsync()
{
// If background task is already registered, do nothing.
if (BackgroundTaskRegistration.AllTasks.Any(i => i.Value.Name.Equals(ToastNotificationActivationHandlerTaskName)))
return;
// Otherwise request access
BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
// Create the background task
BackgroundTaskBuilder builder = new BackgroundTaskBuilder()
{
Name = ToastNotificationActivationHandlerTaskName
};
// Assign the toast action trigger
builder.SetTrigger(new ToastNotificationActionTrigger());
// And register the task
BackgroundTaskRegistration registration = builder.Register();
}
}
}

View File

@@ -1,7 +1,9 @@
using System;
using System.IO;
using System.IO.Compression;
using System.Threading.Tasks;
using Windows.Storage;
using Wino.Core.Domain;
using Wino.Core.Domain.Interfaces;
namespace Wino.Core.UWP.Services
@@ -34,5 +36,27 @@ namespace Wino.Core.UWP.Services
return await createdFile.OpenStreamForWriteAsync();
}
public async Task<bool> SaveLogsToFolderAsync(string logsFolder, string destinationFolder)
{
var logFiles = Directory.GetFiles(logsFolder, "*.log");
if (logFiles.Length == 0) return false;
using var fileStream = await GetFileStreamAsync(destinationFolder, Constants.LogArchiveFileName);
using var archive = new ZipArchive(fileStream, ZipArchiveMode.Create, true);
foreach (var logFile in logFiles)
{
using FileStream logFileStream = File.Open(logFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
var zipArchiveEntry = archive.CreateEntry(Path.GetFileName(logFile), CompressionLevel.Fastest);
using var zipStream = zipArchiveEntry.Open();
await logFileStream.CopyToAsync(zipStream);
}
return true;
}
}
}

View File

@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CommunityToolkit.WinUI.Notifications;
using Serilog;
using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;
using Wino.Core.Domain;
@@ -38,83 +39,90 @@ namespace Wino.Core.UWP.Services
{
var mailCount = downloadedMailItems.Count();
// If there are more than 3 mails, just display 1 general toast.
if (mailCount > 3)
try
{
var builder = new ToastContentBuilder();
builder.SetToastScenario(ToastScenario.Default);
builder.AddText(Translator.Notifications_MultipleNotificationsTitle);
builder.AddText(string.Format(Translator.Notifications_MultipleNotificationsMessage, mailCount));
builder.AddButton(GetDismissButton());
builder.Show();
}
else
{
var validItems = new List<IMailItem>();
// Fetch mails again to fill up assigned folder data and latest statuses.
// They've been marked as read by executing synchronizer tasks until inital sync finishes.
foreach (var item in downloadedMailItems)
// If there are more than 3 mails, just display 1 general toast.
if (mailCount > 3)
{
var mailItem = await _mailService.GetSingleMailItemAsync(item.UniqueId);
if (mailItem != null && mailItem.AssignedFolder != null)
{
validItems.Add(mailItem);
}
}
foreach (var mailItem in validItems)
{
//if (mailItem.IsRead)
// continue;
var builder = new ToastContentBuilder();
builder.SetToastScenario(ToastScenario.Default);
var host = ThumbnailService.GetHost(mailItem.FromAddress);
builder.AddText(Translator.Notifications_MultipleNotificationsTitle);
builder.AddText(string.Format(Translator.Notifications_MultipleNotificationsMessage, mailCount));
var knownTuple = ThumbnailService.CheckIsKnown(host);
bool isKnown = knownTuple.Item1;
host = knownTuple.Item2;
if (isKnown)
builder.AddAppLogoOverride(new System.Uri(ThumbnailService.GetKnownHostImage(host)), hintCrop: ToastGenericAppLogoCrop.Default);
else
{
// TODO: https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/adaptive-interactive-toasts?tabs=toolkit
// Follow official guides for icons/theme.
bool isOSDarkTheme = _underlyingThemeService.IsUnderlyingThemeDark();
string profileLogoName = isOSDarkTheme ? "profile-dark.png" : "profile-light.png";
builder.AddAppLogoOverride(new System.Uri($"ms-appx:///Assets/NotificationIcons/{profileLogoName}"), hintCrop: ToastGenericAppLogoCrop.Circle);
}
// Override system notification timetamp with received date of the mail.
// It may create confusion for some users, but still it's the truth...
builder.AddCustomTimeStamp(mailItem.CreationDate.ToLocalTime());
builder.AddText(mailItem.FromName);
builder.AddText(mailItem.Subject);
builder.AddText(mailItem.PreviewText);
builder.AddArgument(Constants.ToastMailUniqueIdKey, mailItem.UniqueId.ToString());
builder.AddArgument(Constants.ToastActionKey, MailOperation.Navigate);
builder.AddButton(GetMarkedAsRead(mailItem.UniqueId));
builder.AddButton(GetDeleteButton(mailItem.UniqueId));
builder.AddButton(GetDismissButton());
builder.Show();
}
else
{
var validItems = new List<IMailItem>();
await UpdateTaskbarIconBadgeAsync();
// Fetch mails again to fill up assigned folder data and latest statuses.
// They've been marked as read by executing synchronizer tasks until inital sync finishes.
foreach (var item in downloadedMailItems)
{
var mailItem = await _mailService.GetSingleMailItemAsync(item.UniqueId);
if (mailItem != null && mailItem.AssignedFolder != null)
{
validItems.Add(mailItem);
}
}
foreach (var mailItem in validItems)
{
if (mailItem.IsRead)
continue;
var builder = new ToastContentBuilder();
builder.SetToastScenario(ToastScenario.Default);
var host = ThumbnailService.GetHost(mailItem.FromAddress);
var knownTuple = ThumbnailService.CheckIsKnown(host);
bool isKnown = knownTuple.Item1;
host = knownTuple.Item2;
if (isKnown)
builder.AddAppLogoOverride(new System.Uri(ThumbnailService.GetKnownHostImage(host)), hintCrop: ToastGenericAppLogoCrop.Default);
else
{
// TODO: https://learn.microsoft.com/en-us/windows/apps/design/shell/tiles-and-notifications/adaptive-interactive-toasts?tabs=toolkit
// Follow official guides for icons/theme.
bool isOSDarkTheme = _underlyingThemeService.IsUnderlyingThemeDark();
string profileLogoName = isOSDarkTheme ? "profile-dark.png" : "profile-light.png";
builder.AddAppLogoOverride(new System.Uri($"ms-appx:///Assets/NotificationIcons/{profileLogoName}"), hintCrop: ToastGenericAppLogoCrop.Circle);
}
// Override system notification timetamp with received date of the mail.
// It may create confusion for some users, but still it's the truth...
builder.AddCustomTimeStamp(mailItem.CreationDate.ToLocalTime());
builder.AddText(mailItem.FromName);
builder.AddText(mailItem.Subject);
builder.AddText(mailItem.PreviewText);
builder.AddArgument(Constants.ToastMailUniqueIdKey, mailItem.UniqueId.ToString());
builder.AddArgument(Constants.ToastActionKey, MailOperation.Navigate);
builder.AddButton(GetMarkedAsRead(mailItem.UniqueId));
builder.AddButton(GetDeleteButton(mailItem.UniqueId));
builder.AddButton(GetDismissButton());
builder.Show();
}
await UpdateTaskbarIconBadgeAsync();
}
}
catch (Exception ex)
{
Log.Error(ex, "Failed to create notifications.");
}
}
@@ -142,10 +150,10 @@ namespace Wino.Core.UWP.Services
public async Task UpdateTaskbarIconBadgeAsync()
{
int totalUnreadCount = 0;
var badgeUpdater = BadgeUpdateManager.CreateBadgeUpdaterForApplication();
try
{
var badgeUpdater = BadgeUpdateManager.CreateBadgeUpdaterForApplication();
var accounts = await _accountService.GetAccountsAsync();
foreach (var account in accounts)
@@ -178,11 +186,9 @@ namespace Wino.Core.UWP.Services
else
badgeUpdater.Clear();
}
catch (System.Exception ex)
catch (Exception ex)
{
// TODO: Log exceptions.
badgeUpdater.Clear();
Log.Error(ex, "Error while updating taskbar badge.");
}
}

View File

@@ -23,9 +23,6 @@ namespace Wino.Core.UWP.Services
_dialogService = dialogService;
}
private void SetRated()
=> _configurationService.SetRoaming(RatedStorageKey, true);
private bool IsAskingThresholdExceeded()
{
var latestAskedDate = _configurationService.Get(LatestAskedKey, DateTime.MinValue);
@@ -62,15 +59,14 @@ namespace Wino.Core.UWP.Services
{
if (!IsAskingThresholdExceeded()) return;
var ratingDialogResult = await _dialogService.ShowRatingDialogAsync();
var isRateWinoApproved = await _dialogService.ShowWinoCustomMessageDialogAsync(Translator.StoreRatingDialog_Title,
Translator.StoreRatingDialog_MessageFirstLine,
Translator.Buttons_RateWino,
Domain.Enums.WinoCustomMessageDialogIcon.Question,
Translator.Buttons_No,
RatedStorageKey);
if (ratingDialogResult == null)
return;
if (ratingDialogResult.DontAskAgain)
SetRated();
if (ratingDialogResult.RateWinoClicked)
if (isRateWinoApproved)
{
// In case of failure of this call, we will navigate users to Store page directly.
@@ -107,7 +103,7 @@ namespace Wino.Core.UWP.Services
else
_dialogService.InfoBarMessage(Translator.Info_ReviewSuccessTitle, Translator.Info_ReviewNewMessage, Domain.Enums.InfoBarMessageType.Success);
SetRated();
_configurationService.Set(RatedStorageKey, true);
break;
case StoreRateAndReviewStatus.CanceledByUser:
break;

View File

@@ -46,7 +46,6 @@ namespace Wino.Services
public event EventHandler<ApplicationElementTheme> ElementThemeChanged;
public event EventHandler<string> AccentColorChanged;
public event EventHandler<string> AccentColorChangedBySystem;
private const string AccentColorKey = nameof(AccentColorKey);
private const string CurrentApplicationThemeKey = nameof(CurrentApplicationThemeKey);

View File

@@ -109,12 +109,12 @@ namespace Wino.Core.UWP.Services
{
try
{
ConnectingHandle ??= new TaskCompletionSource<bool>();
var connectionCancellationToken = new CancellationTokenSource(TimeSpan.FromMilliseconds(ServerConnectionTimeoutMs));
ConnectingHandle = new TaskCompletionSource<bool>();
Status = WinoServerConnectionStatus.Connecting;
var connectionCancellationToken = new CancellationTokenSource(TimeSpan.FromMilliseconds(ServerConnectionTimeoutMs));
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
// Connection establishment handler is in App.xaml.cs OnBackgroundActivated.
@@ -125,10 +125,21 @@ namespace Wino.Core.UWP.Services
Log.Information("Server connection established successfully.");
}
catch (OperationCanceledException canceledException)
{
Log.Error(canceledException, $"Server process did not start in {ServerConnectionTimeoutMs} ms. Operation is canceled.");
ConnectingHandle?.TrySetException(canceledException);
Status = WinoServerConnectionStatus.Failed;
return false;
}
catch (Exception ex)
{
Log.Error(ex, "Failed to connect to the server.");
ConnectingHandle?.TrySetException(ex);
Status = WinoServerConnectionStatus.Failed;
return false;
}
@@ -239,6 +250,9 @@ namespace Wino.Core.UWP.Services
case nameof(AccountSynchronizationProgressUpdatedMessage):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<AccountSynchronizationProgressUpdatedMessage>(messageJson));
break;
case nameof(AccountFolderConfigurationUpdated):
WeakReferenceMessenger.Default.Send(JsonSerializer.Deserialize<AccountFolderConfigurationUpdated>(messageJson));
break;
default:
throw new Exception("Invalid data type name passed to client.");
}

View File

@@ -37,26 +37,6 @@
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM'">
<PlatformTarget>ARM</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\ARM\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<NoWarn>;2008</NoWarn>
<DebugType>full</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|ARM'">
<PlatformTarget>ARM</PlatformTarget>
<OutputPath>bin\ARM\Release\</OutputPath>
<DefineConstants>TRACE;NETFX_CORE;WINDOWS_UWP</DefineConstants>
<Optimize>true</Optimize>
<NoWarn>;2008</NoWarn>
<DebugType>pdbonly</DebugType>
<UseVSHostingProcess>false</UseVSHostingProcess>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|ARM64'">
<PlatformTarget>ARM64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
@@ -132,7 +112,7 @@
<Version>7.1.2</Version>
</PackageReference>
<PackageReference Include="Microsoft.AppCenter.Analytics">
<Version>5.0.4</Version>
<Version>5.0.5</Version>
</PackageReference>
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
<Version>6.2.14</Version>

View File

@@ -26,8 +26,6 @@ namespace Wino.Core.Authenticators
private readonly INativeAppService _nativeAppService;
public event EventHandler<string> InteractiveAuthenticationRequired;
public GmailAuthenticator(ITokenService tokenService, INativeAppService nativeAppService) : base(tokenService)
{
_nativeAppService = nativeAppService;

View File

@@ -28,7 +28,16 @@ namespace Wino.Core.Authenticators
public string ClientId { get; } = "b19c2035-d740-49ff-b297-de6ec561b208";
private readonly string[] MailScope = ["email", "mail.readwrite", "offline_access", "mail.send"];
private readonly string[] MailScope =
[
"email",
"mail.readwrite",
"offline_access",
"mail.send",
"Mail.Send.Shared",
"Mail.ReadWrite.Shared",
"User.Read"
];
public override MailProviderType ProviderType => MailProviderType.Outlook;

View File

@@ -1,31 +0,0 @@
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Folders;
using Wino.Core.MenuItems;
namespace Wino.Core.Extensions
{
public static class FolderTreeExtensions
{
private static MenuItemBase<IMailItemFolder, FolderMenuItem> GetMenuItemByFolderRecursive(IMailItemFolder structure, AccountMenuItem parentAccountMenuItem, IMenuItem parentFolderItem)
{
MenuItemBase<IMailItemFolder, FolderMenuItem> parentMenuItem = new FolderMenuItem(structure, parentAccountMenuItem.Parameter, parentFolderItem);
var childStructures = structure.ChildFolders;
foreach (var childFolder in childStructures)
{
if (childFolder == null) continue;
// Folder menu item.
var subChildrenFolderTree = GetMenuItemByFolderRecursive(childFolder, parentAccountMenuItem, parentMenuItem);
if (subChildrenFolderTree is FolderMenuItem folderItem)
{
parentMenuItem.SubMenuItems.Add(folderItem);
}
}
return parentMenuItem;
}
}
}

View File

@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Web;
using Google.Apis.Gmail.v1.Data;
@@ -77,9 +76,7 @@ namespace Wino.Core.Extensions
public static MailItemFolder GetLocalFolder(this Label label, ListLabelsResponse labelsResponse, Guid accountId)
{
bool isAllCapital = label.Name.All(a => char.IsUpper(a));
var normalizedLabelName = GetFolderName(label);
var normalizedLabelName = GetFolderName(label.Name);
// Even though we normalize the label name, check is done by capitalizing the label name.
var capitalNormalizedLabelName = normalizedLabelName.ToUpper();
@@ -93,10 +90,10 @@ namespace Wino.Core.Extensions
// without realizing that they are hidden in Gmail settings. Therefore, it makes more sense to ignore Gmail's configuration
// since Wino allows folder visibility configuration separately.
// Overridden hidden labels are shown in the UI, but they have their synchronization disabled.
// This is mainly because 'All Mails' label is hidden by default in Gmail, but there is no point to download all mails.
// Overridden hidden labels are shown in the UI.
// Also Gmail does not support folder sync enable/disable options due to history changes.
// By default all folders will be enabled for synchronization.
bool shouldEnableSynchronization = label.LabelListVisibility != FOLDER_HIDE_IDENTIFIER;
bool isHidden = false;
bool isChildOfCategoryFolder = label.Name.StartsWith(CATEGORY_PREFIX);
@@ -115,7 +112,7 @@ namespace Wino.Core.Extensions
RemoteFolderId = label.Id,
Id = Guid.NewGuid(),
MailAccountId = accountId,
IsSynchronizationEnabled = shouldEnableSynchronization,
IsSynchronizationEnabled = true,
SpecialFolderType = specialFolderType,
IsSystemFolder = isSystemFolder,
IsSticky = isSticky,
@@ -156,14 +153,14 @@ namespace Wino.Core.Extensions
return labelsResponse.Labels.FirstOrDefault(a => a.Name == parentLabelName)?.Id ?? string.Empty;
}
public static string GetFolderName(Label label)
public static string GetFolderName(string fullFolderName)
{
if (string.IsNullOrEmpty(label.Name)) return string.Empty;
if (string.IsNullOrEmpty(fullFolderName)) return string.Empty;
// Folders with "//" at the end has "/" as the name.
if (label.Name.EndsWith(FOLDER_SEPERATOR_STRING)) return FOLDER_SEPERATOR_STRING;
if (fullFolderName.EndsWith(FOLDER_SEPERATOR_STRING)) return FOLDER_SEPERATOR_STRING;
string[] parts = label.Name.Split(FOLDER_SEPERATOR_CHAR);
string[] parts = fullFolderName.Split(FOLDER_SEPERATOR_CHAR);
var lastPart = parts[parts.Length - 1];
@@ -205,44 +202,16 @@ namespace Wino.Core.Extensions
};
}
public static Tuple<MailCopy, MimeMessage, IEnumerable<string>> GetMailDetails(this Message message)
public static List<RemoteAccountAlias> GetRemoteAliases(this ListSendAsResponse response)
{
MimeMessage mimeMessage = message.GetGmailMimeMessage();
if (mimeMessage == null)
return response?.SendAs?.Select(a => new RemoteAccountAlias()
{
// This should never happen.
Debugger.Break();
return default;
}
bool isUnread = message.GetIsUnread();
bool isFocused = message.GetIsFocused();
bool isFlagged = message.GetIsFlagged();
bool isDraft = message.GetIsDraft();
var mailCopy = new MailCopy()
{
CreationDate = mimeMessage.Date.UtcDateTime,
Subject = HttpUtility.HtmlDecode(mimeMessage.Subject),
FromName = MailkitClientExtensions.GetActualSenderName(mimeMessage),
FromAddress = MailkitClientExtensions.GetActualSenderAddress(mimeMessage),
PreviewText = HttpUtility.HtmlDecode(message.Snippet),
ThreadId = message.ThreadId,
Importance = (MailImportance)mimeMessage.Importance,
Id = message.Id,
IsDraft = isDraft,
HasAttachments = mimeMessage.Attachments.Any(),
IsRead = !isUnread,
IsFlagged = isFlagged,
IsFocused = isFocused,
InReplyTo = mimeMessage.InReplyTo,
MessageId = mimeMessage.MessageId,
References = mimeMessage.References.GetReferences()
};
return new Tuple<MailCopy, MimeMessage, IEnumerable<string>>(mailCopy, mimeMessage, message.LabelIds);
AliasAddress = a.SendAsEmail,
IsRootAlias = a.IsDefault.GetValueOrDefault(),
IsPrimary = a.IsPrimary.GetValueOrDefault(),
ReplyToAddress = a.ReplyToAddress,
IsVerified = a.VerificationStatus == "accepted" || a.IsDefault.GetValueOrDefault(),
}).ToList();
}
}
}

View File

@@ -136,6 +136,8 @@ namespace Wino.Core.Extensions
if (message == null)
return string.Empty;
return message.From.Mailboxes.FirstOrDefault()?.Name ?? message.Sender?.Name ?? Translator.UnknownSender;
// From MimeKit
// The "From" header specifies the author(s) of the message.
@@ -145,43 +147,44 @@ namespace Wino.Core.Extensions
// Also handle: https://stackoverflow.com/questions/46474030/mailkit-from-address
if (message.Sender != null)
return string.IsNullOrEmpty(message.Sender.Name) ? message.Sender.Address : message.Sender.Name;
else if (message.From?.Mailboxes != null)
{
var firstAvailableName = message.From.Mailboxes.FirstOrDefault(a => !string.IsNullOrEmpty(a.Name))?.Name;
//if (message.Sender != null)
// return string.IsNullOrEmpty(message.Sender.Name) ? message.Sender.Address : message.Sender.Name;
//else if (message.From?.Mailboxes != null)
//{
// var firstAvailableName = message.From.Mailboxes.FirstOrDefault(a => !string.IsNullOrEmpty(a.Name))?.Name;
if (string.IsNullOrEmpty(firstAvailableName))
{
var firstAvailableAddress = message.From.Mailboxes.FirstOrDefault(a => !string.IsNullOrEmpty(a.Address))?.Address;
// if (string.IsNullOrEmpty(firstAvailableName))
// {
// var firstAvailableAddress = message.From.Mailboxes.FirstOrDefault(a => !string.IsNullOrEmpty(a.Address))?.Address;
if (!string.IsNullOrEmpty(firstAvailableAddress))
{
return firstAvailableAddress;
}
}
// if (!string.IsNullOrEmpty(firstAvailableAddress))
// {
// return firstAvailableAddress;
// }
// }
return firstAvailableName;
}
// return firstAvailableName;
//}
// No sender, no from, I don't know what to do.
return Translator.UnknownSender;
//// No sender, no from, I don't know what to do.
//return Translator.UnknownSender;
}
// TODO: This is wrong.
public static string GetActualSenderAddress(MimeMessage mime)
public static string GetActualSenderAddress(MimeMessage message)
{
if (mime == null)
return string.Empty;
return message.From.Mailboxes.FirstOrDefault()?.Address ?? message.Sender?.Address ?? Translator.UnknownSender;
//if (mime == null)
// return string.Empty;
bool hasSingleFromMailbox = mime.From.Mailboxes.Count() == 1;
//bool hasSingleFromMailbox = mime.From.Mailboxes.Count() == 1;
if (hasSingleFromMailbox)
return mime.From.Mailboxes.First().GetAddress(idnEncode: true);
else if (mime.Sender != null)
return mime.Sender.GetAddress(idnEncode: true);
else
return Translator.UnknownSender;
//if (hasSingleFromMailbox)
// return mime.From.Mailboxes.First().GetAddress(idnEncode: true);
//else if (mime.Sender != null)
// return mime.Sender.GetAddress(idnEncode: true);
//else
// return Translator.UnknownSender;
}
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Linq;
using MailKit;
using Wino.Core.Domain.Entities;
@@ -8,14 +9,28 @@ namespace Wino.Core.Extensions
{
public static MailItemFolder GetLocalFolder(this IMailFolder mailkitMailFolder)
{
bool isAllCapital = mailkitMailFolder.Name?.All(a => char.IsUpper(a)) ?? false;
return new MailItemFolder()
{
Id = Guid.NewGuid(),
FolderName = mailkitMailFolder.Name,
FolderName = isAllCapital ? mailkitMailFolder.Name.OnlyCapitilizeFirstLetter() : mailkitMailFolder.Name,
RemoteFolderId = mailkitMailFolder.FullName,
ParentRemoteFolderId = mailkitMailFolder.ParentFolder?.FullName,
SpecialFolderType = Domain.Enums.SpecialFolderType.Other
};
}
public static string OnlyCapitilizeFirstLetter(this string s)
{
if (string.IsNullOrEmpty(s))
return string.Empty;
s = s.ToLower();
char[] a = s.ToCharArray();
a[0] = char.ToUpper(a[0]);
return new string(a);
}
}
}

View File

@@ -7,8 +7,6 @@ using MimeKit;
using MimeKit.IO;
using MimeKit.IO.Filters;
using MimeKit.Utils;
using Wino.Core.Domain;
using Wino.Core.Domain.Entities;
namespace Wino.Core.Extensions
{
@@ -41,16 +39,6 @@ namespace Wino.Core.Extensions
}
}
public static AddressInformation ToAddressInformation(this MailboxAddress address)
{
if (address == null)
return new AddressInformation() { Name = Translator.UnknownSender, Address = Translator.UnknownAddress };
if (string.IsNullOrEmpty(address.Name))
address.Name = address.Address;
return new AddressInformation() { Name = address.Name, Address = address.Address };
}
/// <summary>
/// Sets html body replacing base64 images with cid linked resources.

View File

@@ -1,5 +1,9 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Microsoft.Graph.Models;
using MimeKit;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
@@ -61,5 +65,160 @@ namespace Wino.Core.Extensions
return mailCopy;
}
public static Message AsOutlookMessage(this MimeMessage mime, bool includeInternetHeaders)
{
var fromAddress = GetRecipients(mime.From).ElementAt(0);
var toAddresses = GetRecipients(mime.To).ToList();
var ccAddresses = GetRecipients(mime.Cc).ToList();
var bccAddresses = GetRecipients(mime.Bcc).ToList();
var replyToAddresses = GetRecipients(mime.ReplyTo).ToList();
var message = new Message()
{
Subject = mime.Subject,
Importance = GetImportance(mime.Importance),
Body = new ItemBody() { ContentType = BodyType.Html, Content = mime.HtmlBody },
IsDraft = false,
IsRead = true, // Sent messages are always read.
ToRecipients = toAddresses,
CcRecipients = ccAddresses,
BccRecipients = bccAddresses,
From = fromAddress,
InternetMessageId = GetProperId(mime.MessageId),
ReplyTo = replyToAddresses,
Attachments = []
};
// Headers are only included when creating the draft.
// When sending, they are not included. Graph will throw an error.
if (includeInternetHeaders)
{
message.InternetMessageHeaders = GetHeaderList(mime);
}
foreach (var part in mime.BodyParts)
{
if (part.IsAttachment)
{
// File attachment.
using var memory = new MemoryStream();
((MimePart)part).Content.DecodeTo(memory);
var bytes = memory.ToArray();
var fileAttachment = new FileAttachment()
{
ContentId = part.ContentId,
Name = part.ContentDisposition?.FileName ?? part.ContentType.Name,
ContentBytes = bytes,
};
message.Attachments.Add(fileAttachment);
}
else if (part.ContentDisposition != null && part.ContentDisposition.Disposition == "inline")
{
// Inline attachment.
using var memory = new MemoryStream();
((MimePart)part).Content.DecodeTo(memory);
var bytes = memory.ToArray();
var inlineAttachment = new FileAttachment()
{
IsInline = true,
ContentId = part.ContentId,
Name = part.ContentDisposition?.FileName ?? part.ContentType.Name,
ContentBytes = bytes
};
message.Attachments.Add(inlineAttachment);
}
}
return message;
}
#region Mime to Outlook Message Helpers
private static IEnumerable<Recipient> GetRecipients(this InternetAddressList internetAddresses)
{
foreach (var address in internetAddresses)
{
if (address is MailboxAddress mailboxAddress)
yield return new Recipient() { EmailAddress = new EmailAddress() { Address = mailboxAddress.Address, Name = mailboxAddress.Name } };
else if (address is GroupAddress groupAddress)
{
// TODO: Group addresses are not directly supported.
// It'll be individually added.
foreach (var mailbox in groupAddress.Members)
if (mailbox is MailboxAddress groupMemberMailAddress)
yield return new Recipient() { EmailAddress = new EmailAddress() { Address = groupMemberMailAddress.Address, Name = groupMemberMailAddress.Name } };
}
}
}
private static Importance? GetImportance(MessageImportance importance)
{
return importance switch
{
MessageImportance.Low => Importance.Low,
MessageImportance.Normal => Importance.Normal,
MessageImportance.High => Importance.High,
_ => null
};
}
private static List<InternetMessageHeader> GetHeaderList(this MimeMessage mime)
{
// Graph API only allows max of 5 headers.
// Here we'll try to ignore some headers that are not neccessary.
// Outlook API will generate them automatically.
// Some headers also require to start with X- or x-.
string[] headersToIgnore = ["Date", "To", "MIME-Version", "From", "Subject", "Message-Id"];
string[] headersToModify = ["In-Reply-To", "Reply-To", "References", "Thread-Topic"];
var headers = new List<InternetMessageHeader>();
int includedHeaderCount = 0;
foreach (var header in mime.Headers)
{
if (!headersToIgnore.Contains(header.Field))
{
if (headersToModify.Contains(header.Field))
{
headers.Add(new InternetMessageHeader() { Name = $"X-{header.Field}", Value = header.Value });
}
else
{
headers.Add(new InternetMessageHeader() { Name = header.Field, Value = header.Value });
}
includedHeaderCount++;
}
if (includedHeaderCount >= 5) break;
}
return headers;
}
private static string GetProperId(string id)
{
// Outlook requires some identifiers to start with "X-" or "x-".
if (string.IsNullOrEmpty(id)) return string.Empty;
if (!id.StartsWith("x-") || !id.StartsWith("X-"))
return $"X-{id}";
return id;
}
#endregion
}
}

View File

@@ -33,11 +33,13 @@ namespace Wino.Core.Integration
// Later on maybe we can make it configurable and leave it to the user with passing
// real implementation details.
private readonly ImapImplementation _implementation = new ImapImplementation()
private readonly ImapImplementation _implementation = new()
{
Version = "1.0",
Version = "1.8.0",
OS = "Windows",
Vendor = "Wino"
Vendor = "Wino",
SupportUrl = "https://www.winomail.app",
Name = "Wino Mail User",
};
private readonly int MinimumPoolSize = 5;

View File

@@ -19,6 +19,7 @@ namespace Wino.Core.Integration.Processors
/// </summary>
public interface IDefaultChangeProcessor
{
Task UpdateAccountAsync(MailAccount account);
Task<string> UpdateAccountDeltaSynchronizationIdentifierAsync(Guid accountId, string deltaSynchronizationIdentifier);
Task CreateAssignmentAsync(Guid accountId, string mailCopyId, string remoteFolderId);
Task DeleteAssignmentAsync(Guid accountId, string mailCopyId, string remoteFolderId);
@@ -39,12 +40,14 @@ namespace Wino.Core.Integration.Processors
/// <returns>All folders.</returns>
Task<List<MailItemFolder>> GetLocalFoldersAsync(Guid accountId);
Task<List<MailItemFolder>> GetSynchronizationFoldersAsync(SynchronizationOptions options);
Task<bool> MapLocalDraftAsync(Guid accountId, Guid localDraftCopyUniqueId, string newMailCopyId, string newDraftId, string newThreadId);
Task UpdateFolderLastSyncDateAsync(Guid folderId);
Task<List<MailItemFolder>> GetExistingFoldersAsync(Guid accountId);
Task UpdateRemoteAliasInformationAsync(MailAccount account, List<RemoteAccountAlias> remoteAccountAliases);
}
public interface IGmailChangeProcessor : IDefaultChangeProcessor
@@ -165,12 +168,16 @@ namespace Wino.Core.Integration.Processors
public Task<List<MailCopy>> GetDownloadedUnreadMailsAsync(Guid accountId, IEnumerable<string> downloadedMailCopyIds)
=> MailService.GetDownloadedUnreadMailsAsync(accountId, downloadedMailCopyIds);
public Task SaveMimeFileAsync(Guid fileId, MimeMessage mimeMessage, Guid accountId)
=> _mimeFileService.SaveMimeMessageAsync(fileId, mimeMessage, accountId);
public Task UpdateFolderLastSyncDateAsync(Guid folderId)
=> FolderService.UpdateFolderLastSyncDateAsync(folderId);
public Task UpdateAccountAsync(MailAccount account)
=> AccountService.UpdateAccountAsync(account);
public Task UpdateRemoteAliasInformationAsync(MailAccount account, List<RemoteAccountAlias> remoteAccountAliases)
=> AccountService.UpdateRemoteAliasInformationAsync(account, remoteAccountAliases);
}
}

View File

@@ -47,6 +47,12 @@ namespace Wino.Core.MenuItems
set => SetProperty(Parameter.Name, value, Parameter, (u, n) => u.Name = n);
}
public string Base64ProfilePicture
{
get => Parameter.Name;
set => SetProperty(Parameter.Base64ProfilePictureData, value, Parameter, (u, n) => u.Base64ProfilePictureData = n);
}
public IEnumerable<MailAccount> HoldingAccounts => new List<MailAccount> { Parameter };
public AccountMenuItem(MailAccount account, IMenuItem parent = null) : base(account, account.Id, parent)
@@ -59,6 +65,7 @@ namespace Wino.Core.MenuItems
Parameter = account;
AccountName = account.Name;
AttentionReason = account.AttentionReason;
Base64ProfilePicture = account.Base64ProfilePictureData;
if (SubMenuItems == null) return;

View File

@@ -146,20 +146,17 @@ namespace Wino.Core.MenuItems
accountMenuItem ??= this.OfType<MergedAccountMenuItem>()
.FirstOrDefault(a => a.HoldingAccounts.Any(b => b.Id == accountId))?.SubMenuItems
.OfType<AccountMenuItem>()
.FirstOrDefault();
.FirstOrDefault(a => a.AccountId == accountId);
return accountMenuItem;
}
public async Task ReplaceFoldersAsync(IEnumerable<IMenuItem> folders)
public void ReplaceFolders(IEnumerable<IMenuItem> folders)
{
await _dispatcher.ExecuteOnUIThread(() =>
{
ClearFolderAreaMenuItems();
ClearFolderAreaMenuItems();
Items.Add(new SeperatorItem());
AddRange(folders);
});
Items.Add(new SeperatorItem());
AddRange(folders);
}
/// <summary>
@@ -194,9 +191,11 @@ namespace Wino.Core.MenuItems
{
item.IsExpanded = false;
item.IsSelected = false;
Remove(item);
});
RemoveRange(itemsToRemove);
// RemoveRange(itemsToRemove);
}
}
}

View File

@@ -31,8 +31,6 @@ namespace Wino.Core.Requests
}
}
public override bool DelayExecution => false;
public List<Guid> SynchronizationFolderIds => [Folder.Id];
}
}

View File

@@ -42,5 +42,7 @@ namespace Wino.Core.Requests
{
Items.ForEach(item => WeakReferenceMessenger.Default.Send(new MailAddedMessage(item.Item)));
}
public override int ResynchronizationDelay => 3000;
}
}

View File

@@ -45,7 +45,8 @@ namespace Wino.Core.Requests
}
[EditorBrowsable(EditorBrowsableState.Never)]
public record BatchSendDraftRequestRequest(IEnumerable<IRequest> Items, SendDraftPreparationRequest Request) : BatchRequestBase(Items, MailSynchronizerOperation.Send)
public record BatchSendDraftRequestRequest(IEnumerable<IRequest> Items,
SendDraftPreparationRequest Request) : BatchRequestBase(Items, MailSynchronizerOperation.Send)
{
public override void ApplyUIChanges()
{
@@ -57,6 +58,7 @@ namespace Wino.Core.Requests
Items.ForEach(item => WeakReferenceMessenger.Default.Send(new MailAddedMessage(item.Item)));
}
public override bool DelayExecution => true;
public override int ResynchronizationDelay => 10000;
public override bool ExecuteSerialBatch => true;
}
}

View File

@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using CommunityToolkit.Diagnostics;
@@ -10,6 +9,7 @@ using SqlKata;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Accounts;
using Wino.Core.Extensions;
using Wino.Messaging.Client.Accounts;
using Wino.Messaging.UI;
@@ -233,6 +233,33 @@ namespace Wino.Core.Services
return accounts;
}
public async Task CreateRootAliasAsync(Guid accountId, string address)
{
var rootAlias = new MailAccountAlias()
{
AccountId = accountId,
AliasAddress = address,
IsPrimary = true,
IsRootAlias = true,
IsVerified = true,
ReplyToAddress = address,
Id = Guid.NewGuid()
};
await Connection.InsertAsync(rootAlias).ConfigureAwait(false);
Log.Information("Created root alias for the account {AccountId}", accountId);
}
public async Task<List<MailAccountAlias>> GetAccountAliasesAsync(Guid accountId)
{
var query = new Query(nameof(MailAccountAlias))
.Where(nameof(MailAccountAlias.AccountId), accountId)
.OrderByDesc(nameof(MailAccountAlias.IsRootAlias));
return await Connection.QueryAsync<MailAccountAlias>(query.GetRawQuery()).ConfigureAwait(false);
}
private Task<MergedInbox> GetMergedInboxInformationAsync(Guid mergedInboxId)
=> Connection.Table<MergedInbox>().FirstOrDefaultAsync(a => a.Id == mergedInboxId);
@@ -245,6 +272,7 @@ namespace Wino.Core.Services
await Connection.Table<TokenInformation>().Where(a => a.AccountId == account.Id).DeleteAsync();
await Connection.Table<MailItemFolder>().DeleteAsync(a => a.MailAccountId == account.Id);
await Connection.Table<AccountSignature>().DeleteAsync(a => a.MailAccountId == account.Id);
await Connection.Table<MailAccountAlias>().DeleteAsync(a => a.AccountId == account.Id);
// Account belongs to a merged inbox.
// In case of there'll be a single account in the merged inbox, remove the merged inbox as well.
@@ -295,6 +323,31 @@ namespace Wino.Core.Services
ReportUIChange(new AccountRemovedMessage(account));
}
public async Task UpdateProfileInformationAsync(Guid accountId, ProfileInformation profileInformation)
{
var account = await GetAccountAsync(accountId).ConfigureAwait(false);
if (account != null)
{
account.SenderName = profileInformation.SenderName;
account.Base64ProfilePictureData = profileInformation.Base64ProfilePictureData;
// Forcefully add or update a contact data with the provided information.
var accountContact = new AccountContact()
{
Address = account.Address,
Name = account.SenderName,
Base64ContactPicture = account.Base64ProfilePictureData,
IsRootContact = true
};
await Connection.InsertOrReplaceAsync(accountContact).ConfigureAwait(false);
await UpdateAccountAsync(account).ConfigureAwait(false);
}
}
public async Task<MailAccount> GetAccountAsync(Guid accountId)
{
var account = await Connection.Table<MailAccount>().FirstOrDefaultAsync(a => a.Id == accountId);
@@ -321,17 +374,98 @@ namespace Wino.Core.Services
public async Task UpdateAccountAsync(MailAccount account)
{
if (account.Preferences == null)
{
Debugger.Break();
}
await Connection.UpdateAsync(account.Preferences);
await Connection.UpdateAsync(account);
await Connection.UpdateAsync(account.Preferences).ConfigureAwait(false);
await Connection.UpdateAsync(account).ConfigureAwait(false);
ReportUIChange(new AccountUpdatedMessage(account));
}
public async Task UpdateAccountAliasesAsync(Guid accountId, List<MailAccountAlias> aliases)
{
// Delete existing ones.
await Connection.Table<MailAccountAlias>().DeleteAsync(a => a.AccountId == accountId).ConfigureAwait(false);
// Insert new ones.
foreach (var alias in aliases)
{
await Connection.InsertAsync(alias).ConfigureAwait(false);
}
}
public async Task UpdateRemoteAliasInformationAsync(MailAccount account, List<RemoteAccountAlias> remoteAccountAliases)
{
var localAliases = await GetAccountAliasesAsync(account.Id).ConfigureAwait(false);
var rootAlias = localAliases.Find(a => a.IsRootAlias);
foreach (var remoteAlias in remoteAccountAliases)
{
var existingAlias = localAliases.Find(a => a.AccountId == account.Id && a.AliasAddress == remoteAlias.AliasAddress);
if (existingAlias == null)
{
// Create new alias.
var newAlias = new MailAccountAlias()
{
AccountId = account.Id,
AliasAddress = remoteAlias.AliasAddress,
IsPrimary = remoteAlias.IsPrimary,
IsVerified = remoteAlias.IsVerified,
ReplyToAddress = remoteAlias.ReplyToAddress,
Id = Guid.NewGuid(),
IsRootAlias = remoteAlias.IsRootAlias
};
await Connection.InsertAsync(newAlias);
localAliases.Add(newAlias);
}
else
{
// Update existing alias.
existingAlias.IsPrimary = remoteAlias.IsPrimary;
existingAlias.IsVerified = remoteAlias.IsVerified;
existingAlias.ReplyToAddress = remoteAlias.ReplyToAddress;
await Connection.UpdateAsync(existingAlias);
}
}
// Make sure there is only 1 root alias and 1 primary alias selected.
bool shouldUpdatePrimary = localAliases.Count(a => a.IsPrimary) != 1;
bool shouldUpdateRoot = localAliases.Count(a => a.IsRootAlias) != 1;
if (shouldUpdatePrimary)
{
localAliases.ForEach(a => a.IsPrimary = false);
var idealPrimaryAlias = localAliases.Find(a => a.AliasAddress == account.Address) ?? localAliases.First();
idealPrimaryAlias.IsPrimary = true;
await Connection.UpdateAsync(idealPrimaryAlias).ConfigureAwait(false);
}
if (shouldUpdateRoot)
{
localAliases.ForEach(a => a.IsRootAlias = false);
var idealRootAlias = localAliases.Find(a => a.AliasAddress == account.Address) ?? localAliases.First();
idealRootAlias.IsRootAlias = true;
await Connection.UpdateAsync(idealRootAlias).ConfigureAwait(false);
}
}
public async Task DeleteAccountAliasAsync(Guid aliasId)
{
// Create query to delete alias.
var query = new Query("MailAccountAlias")
.Where("Id", aliasId)
.AsDelete();
await Connection.ExecuteAsync(query.GetRawQuery()).ConfigureAwait(false);
}
public async Task CreateAccountAsync(MailAccount account, TokenInformation tokenInformation, CustomServerInformation customServerInformation)
{
Guard.IsNotNull(account);
@@ -385,7 +519,7 @@ namespace Wino.Core.Services
// Outlook token cache is managed by MSAL.
// Don't save it to database.
if (tokenInformation != null && account.ProviderType != MailProviderType.Outlook)
if (tokenInformation != null && (account.ProviderType != MailProviderType.Outlook || account.ProviderType == MailProviderType.Office365))
await Connection.InsertAsync(tokenInformation);
}
@@ -409,7 +543,6 @@ namespace Wino.Core.Services
if (shouldUpdateIdentifier)
{
_logger.Debug("Updating synchronization identifier for {Name}. From: {SynchronizationDeltaIdentifier} To: {NewIdentifier}", account.Name, account.SynchronizationDeltaIdentifier, newIdentifier);
account.SynchronizationDeltaIdentifier = newIdentifier;
await UpdateAccountAsync(account);
@@ -437,5 +570,14 @@ namespace Wino.Core.Services
Messenger.Send(new AccountMenuItemsReordered(accountIdOrderPair));
}
public async Task<MailAccountAlias> GetPrimaryAccountAliasAsync(Guid accountId)
{
var aliases = await GetAccountAliasesAsync(accountId);
if (aliases == null || aliases.Count == 0) return null;
return aliases.FirstOrDefault(a => a.IsPrimary) ?? aliases.First();
}
}
}

View File

@@ -10,8 +10,8 @@ namespace Wino.Core.Services
{
public interface IContactService
{
Task<List<AddressInformation>> GetAddressInformationAsync(string queryText);
Task<AddressInformation> GetAddressInformationByAddressAsync(string address);
Task<List<AccountContact>> GetAddressInformationAsync(string queryText);
Task<AccountContact> GetAddressInformationByAddressAsync(string address);
Task SaveAddressInformationAsync(MimeMessage message);
}
@@ -19,25 +19,22 @@ namespace Wino.Core.Services
{
public ContactService(IDatabaseService databaseService) : base(databaseService) { }
public Task<List<AddressInformation>> GetAddressInformationAsync(string queryText)
public Task<List<AccountContact>> GetAddressInformationAsync(string queryText)
{
if (queryText == null || queryText.Length < 2)
return Task.FromResult<List<AddressInformation>>(null);
return Task.FromResult<List<AccountContact>>(null);
var query = new Query(nameof(AddressInformation));
var query = new Query(nameof(AccountContact));
query.WhereContains("Address", queryText);
query.OrWhereContains("Name", queryText);
var rawLikeQuery = query.GetRawQuery();
return Connection.QueryAsync<AddressInformation>(rawLikeQuery);
return Connection.QueryAsync<AccountContact>(rawLikeQuery);
}
public async Task<AddressInformation> GetAddressInformationByAddressAsync(string address)
{
return await Connection.Table<AddressInformation>().Where(a => a.Address == address).FirstOrDefaultAsync()
?? new AddressInformation() { Name = address, Address = address };
}
public Task<AccountContact> GetAddressInformationByAddressAsync(string address)
=> Connection.Table<AccountContact>().Where(a => a.Address == address).FirstOrDefaultAsync();
public async Task SaveAddressInformationAsync(MimeMessage message)
{
@@ -45,10 +42,21 @@ namespace Wino.Core.Services
.GetRecipients(true)
.Where(a => !string.IsNullOrEmpty(a.Name) && !string.IsNullOrEmpty(a.Address));
var addressInformations = recipients.Select(a => new AddressInformation() { Name = a.Name, Address = a.Address });
var addressInformations = recipients.Select(a => new AccountContact() { Name = a.Name, Address = a.Address });
foreach (var info in addressInformations)
await Connection.InsertOrReplaceAsync(info).ConfigureAwait(false);
{
var currentContact = await GetAddressInformationByAddressAsync(info.Address).ConfigureAwait(false);
if (currentContact == null)
{
await Connection.InsertAsync(info).ConfigureAwait(false);
}
else if (!currentContact.IsRootContact) // Don't update root contacts. They belong to accounts.
{
await Connection.InsertOrReplaceAsync(info).ConfigureAwait(false);
}
}
}
}
}

View File

@@ -14,7 +14,7 @@ namespace Wino.Core.Services
public class DatabaseService : IDatabaseService
{
private const string DatabaseName = "Wino172.db";
private const string DatabaseName = "Wino180.db";
private bool _isInitialized = false;
private readonly IApplicationConfiguration _folderConfiguration;
@@ -57,11 +57,12 @@ namespace Wino.Core.Services
typeof(MailItemFolder),
typeof(MailAccount),
typeof(TokenInformation),
typeof(AddressInformation),
typeof(AccountContact),
typeof(CustomServerInformation),
typeof(AccountSignature),
typeof(MergedInbox),
typeof(MailAccountPreferences)
typeof(MailAccountPreferences),
typeof(MailAccountAlias)
);
}
}

View File

@@ -387,11 +387,6 @@ namespace Wino.Core.Services
if (configuration == null)
throw new ArgumentNullException(nameof(configuration));
var account = await _accountService.GetAccountAsync(accountId);
if (account == null)
throw new ArgumentNullException(nameof(account));
// Update system folders for this account.
await Task.WhenAll(UpdateSystemFolderInternalAsync(configuration.SentFolder, SpecialFolderType.Sent),
@@ -400,9 +395,8 @@ namespace Wino.Core.Services
UpdateSystemFolderInternalAsync(configuration.TrashFolder, SpecialFolderType.Deleted),
UpdateSystemFolderInternalAsync(configuration.ArchiveFolder, SpecialFolderType.Archive));
await _accountService.UpdateAccountAsync(account);
return account;
return await _accountService.GetAccountAsync(accountId).ConfigureAwait(false);
}
private Task UpdateSystemFolderInternalAsync(MailItemFolder folder, SpecialFolderType assignedSpecialFolderType)
@@ -492,13 +486,6 @@ namespace Wino.Core.Services
return;
}
var account = await _accountService.GetAccountAsync(folder.MailAccountId).ConfigureAwait(false);
if (account == null)
{
_logger.Warning("Account with id {MailAccountId} does not exist. Cannot update folder.", folder.MailAccountId);
return;
}
_logger.Debug("Updating folder {FolderName}", folder.Id, folder.FolderName);
await Connection.UpdateAsync(folder).ConfigureAwait(false);
@@ -558,36 +545,11 @@ namespace Wino.Core.Services
public Task<List<MailFolderPairMetadata>> GetMailFolderPairMetadatasAsync(string mailCopyId)
=> GetMailFolderPairMetadatasAsync(new List<string>() { mailCopyId });
public async Task<List<MailItemFolder>> GetSynchronizationFoldersAsync(SynchronizationOptions options)
{
var folders = new List<MailItemFolder>();
if (options.Type == SynchronizationType.Inbox)
{
var inboxFolder = await GetSpecialFolderByAccountIdAsync(options.AccountId, SpecialFolderType.Inbox);
var sentFolder = await GetSpecialFolderByAccountIdAsync(options.AccountId, SpecialFolderType.Sent);
var draftFolder = await GetSpecialFolderByAccountIdAsync(options.AccountId, SpecialFolderType.Draft);
// For properly creating threads we need Sent and Draft to be synchronized as well.
if (sentFolder != null && sentFolder.IsSynchronizationEnabled)
{
folders.Add(sentFolder);
}
if (draftFolder != null && draftFolder.IsSynchronizationEnabled)
{
folders.Add(draftFolder);
}
// User might've disabled inbox synchronization somehow...
if (inboxFolder != null && inboxFolder.IsSynchronizationEnabled)
{
folders.Add(inboxFolder);
}
}
else if (options.Type == SynchronizationType.Full)
if (options.Type == SynchronizationType.Full)
{
// Only get sync enabled folders.
@@ -598,19 +560,75 @@ namespace Wino.Core.Services
folders.AddRange(synchronizationFolders);
}
else if (options.Type == SynchronizationType.Custom)
else
{
// Only get the specified and enabled folders.
// Inbox, Sent and Draft folders must always be synchronized regardless of whether they are enabled or not.
// Custom folder sync will add additional folders to the list if not specified.
var synchronizationFolders = await Connection.Table<MailItemFolder>()
.Where(a => a.MailAccountId == options.AccountId && a.IsSynchronizationEnabled && options.SynchronizationFolderIds.Contains(a.Id))
.ToListAsync();
var mustHaveFolders = await GetInboxSynchronizationFoldersAsync(options.AccountId);
// Order is important for moving.
// By implementation, removing mail folders must be synchronized first. Requests are made in that order for custom sync.
// eg. Moving item from Folder A to Folder B. If we start syncing Folder B first, we might miss adding assignment for Folder A.
if (options.Type == SynchronizationType.Inbox)
{
return mustHaveFolders;
}
else if (options.Type == SynchronizationType.Custom)
{
// Only get the specified and enabled folders.
folders.AddRange(synchronizationFolders.OrderBy(a => options.SynchronizationFolderIds.IndexOf(a.Id)));
var synchronizationFolders = await Connection.Table<MailItemFolder>()
.Where(a => a.MailAccountId == options.AccountId && options.SynchronizationFolderIds.Contains(a.Id))
.ToListAsync();
// Order is important for moving.
// By implementation, removing mail folders must be synchronized first. Requests are made in that order for custom sync.
// eg. Moving item from Folder A to Folder B. If we start syncing Folder B first, we might miss adding assignment for Folder A.
var orderedCustomFolders = synchronizationFolders.OrderBy(a => options.SynchronizationFolderIds.IndexOf(a.Id));
foreach (var item in orderedCustomFolders)
{
if (!mustHaveFolders.Any(a => a.Id == item.Id))
{
mustHaveFolders.Add(item);
}
}
}
return mustHaveFolders;
}
return folders;
}
private async Task<List<MailItemFolder>> GetInboxSynchronizationFoldersAsync(Guid accountId)
{
var folders = new List<MailItemFolder>();
var inboxFolder = await GetSpecialFolderByAccountIdAsync(accountId, SpecialFolderType.Inbox);
var sentFolder = await GetSpecialFolderByAccountIdAsync(accountId, SpecialFolderType.Sent);
var draftFolder = await GetSpecialFolderByAccountIdAsync(accountId, SpecialFolderType.Draft);
var deletedFolder = await GetSpecialFolderByAccountIdAsync(accountId, SpecialFolderType.Deleted);
if (deletedFolder != null)
{
folders.Add(deletedFolder);
}
if (inboxFolder != null)
{
folders.Add(inboxFolder);
}
// For properly creating threads we need Sent and Draft to be synchronized as well.
if (sentFolder != null)
{
folders.Add(sentFolder);
}
if (draftFolder != null)
{
folders.Add(draftFolder);
}
return folders;

View File

@@ -19,7 +19,11 @@ namespace Wino.Core.Services
public void RefreshLoggingLevel()
{
_levelSwitch.MinimumLevel = _preferencesService.IsLoggingEnabled ? Serilog.Events.LogEventLevel.Debug : Serilog.Events.LogEventLevel.Fatal;
#if DEBUG
_levelSwitch.MinimumLevel = Serilog.Events.LogEventLevel.Debug;
#else
_levelSwitch.MinimumLevel = _preferencesService.IsLoggingEnabled ? Serilog.Events.LogEventLevel.Information : Serilog.Events.LogEventLevel.Fatal;
#endif
}
public void SetupLogger(string fullLogFilePath)

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Kiota.Abstractions.Extensions;
using MimeKit;
@@ -10,6 +11,7 @@ using SqlKata;
using Wino.Core.Domain;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Exceptions;
using Wino.Core.Domain.Extensions;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Comparers;
@@ -51,8 +53,9 @@ namespace Wino.Core.Services
_preferencesService = preferencesService;
}
public async Task<(MailCopy draftMailCopy, string draftBase64MimeMessage)> CreateDraftAsync(MailAccount composerAccount, DraftCreationOptions draftCreationOptions)
public async Task<(MailCopy draftMailCopy, string draftBase64MimeMessage)> CreateDraftAsync(Guid accountId, DraftCreationOptions draftCreationOptions)
{
var composerAccount = await _accountService.GetAccountAsync(accountId).ConfigureAwait(false);
var createdDraftMimeMessage = await CreateDraftMimeAsync(composerAccount, draftCreationOptions);
var draftFolder = await _folderService.GetSpecialFolderByAccountIdAsync(composerAccount.Id, SpecialFolderType.Draft);
@@ -61,12 +64,14 @@ namespace Wino.Core.Services
// This header will be used to map the local draft copy with the remote draft copy.
var mimeUniqueId = createdDraftMimeMessage.Headers[Constants.WinoLocalDraftHeader];
var primaryAlias = await _accountService.GetPrimaryAccountAliasAsync(accountId).ConfigureAwait(false);
var copy = new MailCopy
{
UniqueId = Guid.Parse(mimeUniqueId),
Id = Guid.NewGuid().ToString(), // This will be replaced after network call with the remote draft id.
CreationDate = DateTime.UtcNow,
FromAddress = composerAccount.Address,
FromAddress = primaryAlias?.AliasAddress ?? composerAccount.Address,
FromName = composerAccount.SenderName,
HasAttachments = false,
Importance = MailImportance.Normal,
@@ -189,7 +194,7 @@ namespace Wino.Core.Services
return query.GetRawQuery();
}
public async Task<List<IMailItem>> FetchMailsAsync(MailListInitializationOptions options)
public async Task<List<IMailItem>> FetchMailsAsync(MailListInitializationOptions options, CancellationToken cancellationToken = default)
{
var query = BuildMailFetchQuery(options);
@@ -197,6 +202,7 @@ namespace Wino.Core.Services
Dictionary<Guid, MailItemFolder> folderCache = [];
Dictionary<Guid, MailAccount> accountCache = [];
Dictionary<string, AccountContact> contactCache = [];
// Populate Folder Assignment for each single mail, to be able later group by "MailAccountId".
// This is needed to execute threading strategy by account type.
@@ -211,6 +217,8 @@ namespace Wino.Core.Services
if (!options.CreateThreads)
{
cancellationToken.ThrowIfCancellationRequested();
// Threading is disabled. Just return everything as it is.
mails.Sort(options.SortingOptionType == SortingOptionType.ReceiveDate ? new DateComparer() : new NameComparer());
@@ -224,6 +232,8 @@ namespace Wino.Core.Services
// Each account items must be threaded separately.
foreach (var group in mails.GroupBy(a => a.AssignedAccount.Id))
{
cancellationToken.ThrowIfCancellationRequested();
var accountId = group.Key;
var groupAccount = mails.First(a => a.AssignedAccount.Id == accountId).AssignedAccount;
@@ -237,6 +247,7 @@ namespace Wino.Core.Services
// Almost everything already should be in cache from initial population.
foreach (var mail in accountThreadedItems)
{
cancellationToken.ThrowIfCancellationRequested();
await LoadAssignedPropertiesWithCacheAsync(mail, folderCache, accountCache).ConfigureAwait(false);
}
@@ -247,11 +258,14 @@ namespace Wino.Core.Services
}
threadedItems.Sort(options.SortingOptionType == SortingOptionType.ReceiveDate ? new DateComparer() : new NameComparer());
cancellationToken.ThrowIfCancellationRequested();
return threadedItems;
// Recursive function to populate folder and account assignments for each mail item.
async Task LoadAssignedPropertiesWithCacheAsync(IMailItem mail, Dictionary<Guid, MailItemFolder> folderCache, Dictionary<Guid, MailAccount> accountCache)
async Task LoadAssignedPropertiesWithCacheAsync(IMailItem mail,
Dictionary<Guid, MailItemFolder> folderCache,
Dictionary<Guid, MailAccount> accountCache)
{
if (mail is ThreadMailItem threadMailItem)
{
@@ -272,6 +286,7 @@ namespace Wino.Core.Services
folderAssignment = await _folderService.GetFolderAsync(mailCopy.FolderId).ConfigureAwait(false);
_ = folderCache.TryAdd(mailCopy.FolderId, folderAssignment);
}
if (folderAssignment != null)
{
var isAccountCached = accountCache.TryGetValue(folderAssignment.MailAccountId, out accountAssignment);
@@ -279,11 +294,25 @@ namespace Wino.Core.Services
{
accountAssignment = await _accountService.GetAccountAsync(folderAssignment.MailAccountId).ConfigureAwait(false);
_ = accountCache.TryAdd(folderAssignment.MailAccountId, accountAssignment);
}
}
bool isContactCached = contactCache.TryGetValue(mailCopy.FromAddress, out AccountContact contactAssignment);
if (!isContactCached && accountAssignment != null)
{
contactAssignment = await GetSenderContactForAccountAsync(accountAssignment, mailCopy.FromAddress).ConfigureAwait(false);
if (contactAssignment != null)
{
_ = contactCache.TryAdd(mailCopy.FromAddress, contactAssignment);
}
}
mailCopy.AssignedFolder = folderAssignment;
mailCopy.AssignedAccount = accountAssignment;
mailCopy.SenderContact = contactAssignment ?? new AccountContact() { Name = mailCopy.FromName, Address = mailCopy.FromAddress };
}
}
}
@@ -300,11 +329,24 @@ namespace Wino.Core.Services
return mailCopies;
}
private Task<AccountContact> GetSenderContactForAccountAsync(MailAccount account, string fromAddress)
{
// Make sure to return the latest up to date contact information for the original account.
if (fromAddress == account.Address)
{
return Task.FromResult(new AccountContact() { Address = account.Address, Name = account.SenderName, Base64ContactPicture = account.Base64ProfilePictureData });
}
else
{
return _contactService.GetAddressInformationByAddressAsync(fromAddress);
}
}
private async Task LoadAssignedPropertiesAsync(MailCopy mailCopy)
{
if (mailCopy == null) return;
// Load AssignedAccount and AssignedFolder.
// Load AssignedAccount, AssignedFolder and SenderContact.
var folder = await _folderService.GetFolderAsync(mailCopy.FolderId);
@@ -316,6 +358,7 @@ namespace Wino.Core.Services
mailCopy.AssignedAccount = account;
mailCopy.AssignedFolder = folder;
mailCopy.SenderContact = await GetSenderContactForAccountAsync(account, mailCopy.FromAddress).ConfigureAwait(false);
}
public async Task<MailCopy> GetSingleMailItemWithoutFolderAssignmentAsync(string mailCopyId)
@@ -391,7 +434,7 @@ namespace Wino.Core.Services
return;
}
_logger.Debug("Inserting mail {MailCopyId} to Folder {FolderId}", mailCopy.Id, mailCopy.FolderId);
_logger.Debug("Inserting mail {MailCopyId} to {FolderName}", mailCopy.Id, mailCopy.AssignedFolder.FolderName);
await Connection.InsertAsync(mailCopy).ConfigureAwait(false);
@@ -423,7 +466,7 @@ namespace Wino.Core.Services
return;
}
_logger.Debug("Deleting mail {Id} with Folder {FolderId}", mailCopy.Id, mailCopy.FolderId);
_logger.Debug("Deleting mail {Id} from folder {FolderName}", mailCopy.Id, mailCopy.AssignedFolder.FolderName);
await Connection.DeleteAsync(mailCopy).ConfigureAwait(false);
@@ -451,7 +494,7 @@ namespace Wino.Core.Services
return;
}
_logger.Information("Updating {MailCopyCount} mail copies with Id {MailCopyId}", mailCopies.Count, mailCopyId);
_logger.Debug("Updating {MailCopyCount} mail copies with Id {MailCopyId}", mailCopies.Count, mailCopyId);
foreach (var mailCopy in mailCopies)
{
@@ -462,13 +505,15 @@ namespace Wino.Core.Services
await UpdateMailAsync(mailCopy).ConfigureAwait(false);
}
else
_logger.Information("Skipped updating mail because it is already in the desired state.");
_logger.Debug("Skipped updating mail because it is already in the desired state.");
}
}
public Task ChangeReadStatusAsync(string mailCopyId, bool isRead)
=> UpdateAllMailCopiesAsync(mailCopyId, (item) =>
{
if (item.IsRead == isRead) return false;
item.IsRead = isRead;
return true;
@@ -477,6 +522,8 @@ namespace Wino.Core.Services
public Task ChangeFlagStatusAsync(string mailCopyId, bool isFlagged)
=> UpdateAllMailCopiesAsync(mailCopyId, (item) =>
{
if (item.IsFlagged == isFlagged) return false;
item.IsFlagged = isFlagged;
return true;
@@ -571,6 +618,7 @@ namespace Wino.Core.Services
mailCopy.UniqueId = Guid.NewGuid();
mailCopy.AssignedAccount = account;
mailCopy.AssignedFolder = assignedFolder;
mailCopy.SenderContact = await GetSenderContactForAccountAsync(account, mailCopy.FromAddress).ConfigureAwait(false);
mailCopy.FolderId = assignedFolder.Id;
// Only save MIME files if they don't exists.
@@ -620,12 +668,17 @@ namespace Wino.Core.Services
// This unique id is stored in mime headers for Wino to identify remote message with local copy.
// Same unique id will be used for the local copy as well.
// Synchronizer will map this unique id to the local draft copy after synchronization.
var message = new MimeMessage()
{
Headers = { { Constants.WinoLocalDraftHeader, Guid.NewGuid().ToString() } },
From = { new MailboxAddress(account.SenderName, account.Address) }
};
var primaryAlias = await _accountService.GetPrimaryAccountAliasAsync(account.Id) ?? throw new MissingAliasException();
// Set FromName and FromAddress by alias.
message.From.Add(new MailboxAddress(account.SenderName, primaryAlias.AliasAddress));
var builder = new BodyBuilder();
var signature = await GetSignature(account, draftCreationOptions.Reason);
@@ -728,6 +781,14 @@ namespace Wino.Core.Services
message.Cc.AddRange(referenceMessage.Cc.Where(x => x is MailboxAddress mailboxAddress && !mailboxAddress.Address.Equals(account.Address, StringComparison.OrdinalIgnoreCase)));
}
// Self email can be present at this step, when replying to own message. It should be removed only in case there no other recipients.
if (message.To.Count > 1)
{
var self = message.To.FirstOrDefault(x => x is MailboxAddress mailboxAddress && mailboxAddress.Address.Equals(account.Address, StringComparison.OrdinalIgnoreCase));
if (self != null)
message.To.Remove(self);
}
// Manage "ThreadId-ConversationId"
if (!string.IsNullOrEmpty(referenceMessage.MessageId))
{

View File

@@ -109,12 +109,9 @@ namespace Wino.Core.Services
var resourcePath = await GetMimeResourcePathAsync(accountId, fileId).ConfigureAwait(false);
var completeFilePath = GetEMLPath(resourcePath);
var fileStream = File.Create(completeFilePath);
using var fileStream = File.Open(completeFilePath, FileMode.OpenOrCreate);
using (fileStream)
{
await mimeMessage.WriteToAsync(fileStream).ConfigureAwait(false);
}
await mimeMessage.WriteToAsync(fileStream).ConfigureAwait(false);
return true;
}

View File

@@ -13,6 +13,7 @@ namespace Wino.Core.Services
private bool isInitialized = false;
private readonly IAccountService _accountService;
private readonly IApplicationConfiguration _applicationConfiguration;
private readonly IOutlookChangeProcessor _outlookChangeProcessor;
private readonly IGmailChangeProcessor _gmailChangeProcessor;
private readonly IImapChangeProcessor _imapChangeProcessor;
@@ -26,7 +27,8 @@ namespace Wino.Core.Services
IImapChangeProcessor imapChangeProcessor,
IOutlookAuthenticator outlookAuthenticator,
IGmailAuthenticator gmailAuthenticator,
IAccountService accountService)
IAccountService accountService,
IApplicationConfiguration applicationConfiguration)
{
_outlookChangeProcessor = outlookChangeProcessor;
_gmailChangeProcessor = gmailChangeProcessor;
@@ -34,6 +36,7 @@ namespace Wino.Core.Services
_outlookAuthenticator = outlookAuthenticator;
_gmailAuthenticator = gmailAuthenticator;
_accountService = accountService;
_applicationConfiguration = applicationConfiguration;
}
public async Task<IBaseSynchronizer> GetAccountSynchronizerAsync(Guid accountId)
@@ -67,7 +70,7 @@ namespace Wino.Core.Services
case Domain.Enums.MailProviderType.Gmail:
return new GmailSynchronizer(mailAccount, _gmailAuthenticator, _gmailChangeProcessor);
case Domain.Enums.MailProviderType.IMAP4:
return new ImapSynchronizer(mailAccount, _imapChangeProcessor);
return new ImapSynchronizer(mailAccount, _imapChangeProcessor, _applicationConfiguration);
default:
break;
}

View File

@@ -3,6 +3,7 @@ using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.Messaging;
@@ -12,6 +13,7 @@ using Wino.Core.Domain;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Accounts;
using Wino.Core.Domain.Models.MailItem;
using Wino.Core.Domain.Models.Synchronization;
using Wino.Core.Integration;
@@ -69,8 +71,65 @@ namespace Wino.Core.Synchronizers
/// <param name="cancellationToken">Cancellation token</param>
public abstract Task ExecuteNativeRequestsAsync(IEnumerable<IRequestBundle<TBaseRequest>> batchedRequests, CancellationToken cancellationToken = default);
public abstract Task<SynchronizationResult> SynchronizeInternalAsync(SynchronizationOptions options, CancellationToken cancellationToken = default);
/// <summary>
/// Refreshes remote mail account profile if possible.
/// Profile picture, sender name and mailbox settings (todo) will be handled in this step.
/// </summary>
public virtual Task<ProfileInformation> GetProfileInformationAsync() => default;
/// <summary>
/// Refreshes the aliases of the account.
/// Only available for Gmail right now.
/// </summary>
protected virtual Task SynchronizeAliasesAsync() => Task.CompletedTask;
/// <summary>
/// Returns the base64 encoded profile picture of the account from the given URL.
/// </summary>
/// <param name="url">URL to retrieve picture from.</param>
/// <returns>base64 encoded profile picture</returns>
protected async Task<string> GetProfilePictureBase64EncodedAsync(string url)
{
using var client = new HttpClient();
var response = await client.GetAsync(url).ConfigureAwait(false);
var byteContent = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
return Convert.ToBase64String(byteContent);
}
/// <summary>
/// Internally synchronizes the account with the given options.
/// Not exposed and overriden for each synchronizer.
/// </summary>
/// <param name="options">Synchronization options.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Synchronization result that contains summary of the sync.</returns>
protected abstract Task<SynchronizationResult> SynchronizeInternalAsync(SynchronizationOptions options, CancellationToken cancellationToken = default);
/// <summary>
/// Safely updates account's profile information.
/// Database changes are reflected after this call.
/// </summary>
private async Task<ProfileInformation> SynchronizeProfileInformationInternalAsync()
{
var profileInformation = await GetProfileInformationAsync();
if (profileInformation != null)
{
Account.SenderName = profileInformation.SenderName;
Account.Base64ProfilePictureData = profileInformation.Base64ProfilePictureData;
}
return profileInformation;
}
/// <summary>
/// Batches network requests, executes them, and does the needed synchronization after the batch request execution.
/// </summary>
/// <param name="options">Synchronization options.</param>
/// <param name="cancellationToken">Cancellation token.</param>
/// <returns>Synchronization result that contains summary of the sync.</returns>
public async Task<SynchronizationResult> SynchronizeAsync(SynchronizationOptions options, CancellationToken cancellationToken = default)
{
try
@@ -104,13 +163,61 @@ namespace Wino.Core.Synchronizers
await synchronizationSemaphore.WaitAsync(activeSynchronizationCancellationToken);
// Let servers to finish their job. Sometimes the servers doesn't respond immediately.
// Handle special synchronization types.
bool shouldDelayExecution = batches.Any(a => a.DelayExecution);
// Profile information sync.
if (options.Type == SynchronizationType.UpdateProfile)
{
if (!Account.IsProfileInfoSyncSupported) return SynchronizationResult.Empty;
ProfileInformation newProfileInformation = null;
try
{
newProfileInformation = await SynchronizeProfileInformationInternalAsync();
}
catch (Exception ex)
{
Log.Error(ex, "Failed to update profile information for {Name}", Account.Name);
return SynchronizationResult.Failed;
}
return SynchronizationResult.Completed(null, newProfileInformation);
}
// Alias sync.
if (options.Type == SynchronizationType.Alias)
{
if (!Account.IsAliasSyncSupported) return SynchronizationResult.Empty;
try
{
await SynchronizeAliasesAsync();
return SynchronizationResult.Empty;
}
catch (Exception ex)
{
Log.Error(ex, "Failed to update aliases for {Name}", Account.Name);
return SynchronizationResult.Failed;
}
}
// Let servers to finish their job. Sometimes the servers doesn't respond immediately.
// Bug: if Outlook can't create the message in Sent Items folder before this delay,
// message will not appear in user's inbox since it's not in the Sent Items folder.
bool shouldDelayExecution =
(Account.ProviderType == MailProviderType.Outlook || Account.ProviderType == MailProviderType.Office365)
&& batches.Any(a => a.ResynchronizationDelay > 0);
if (shouldDelayExecution)
{
await Task.Delay(2000);
var maxDelay = batches.Aggregate(0, (max, next) => Math.Max(max, next.ResynchronizationDelay));
await Task.Delay(maxDelay);
}
// Start the internal synchronization.
@@ -150,6 +257,10 @@ namespace Wino.Core.Synchronizers
private void PublishUnreadItemChanges()
=> WeakReferenceMessenger.Default.Send(new RefreshUnreadCountsMessage(Account.Id));
/// <summary>
/// Sends a message to the shell to update the synchronization progress.
/// </summary>
/// <param name="progress">Percentage of the progress.</param>
public void PublishSynchronizationProgress(double progress)
=> WeakReferenceMessenger.Default.Send(new AccountSynchronizationProgressUpdatedMessage(Account.Id, progress));

View File

@@ -4,9 +4,11 @@ using System.Linq;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.Messaging;
using Google.Apis.Gmail.v1;
using Google.Apis.Gmail.v1.Data;
using Google.Apis.Http;
using Google.Apis.PeopleService.v1;
using Google.Apis.Requests;
using Google.Apis.Services;
using MailKit;
@@ -18,6 +20,7 @@ using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Exceptions;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Accounts;
using Wino.Core.Domain.Models.MailItem;
using Wino.Core.Domain.Models.Requests;
using Wino.Core.Domain.Models.Synchronization;
@@ -25,6 +28,7 @@ using Wino.Core.Extensions;
using Wino.Core.Http;
using Wino.Core.Integration.Processors;
using Wino.Core.Requests;
using Wino.Messaging.UI;
namespace Wino.Core.Synchronizers
{
@@ -37,8 +41,10 @@ namespace Wino.Core.Synchronizers
// https://github.com/googleapis/google-api-dotnet-client/issues/2603
private const uint MaximumAllowedBatchRequestSize = 10;
private readonly ConfigurableHttpClient _gmailHttpClient;
private readonly ConfigurableHttpClient _googleHttpClient;
private readonly GmailService _gmailService;
private readonly PeopleServiceService _peopleService;
private readonly IAuthenticator _authenticator;
private readonly IGmailChangeProcessor _gmailChangeProcessor;
private readonly ILogger _logger = Log.ForContext<GmailSynchronizer>();
@@ -54,15 +60,48 @@ namespace Wino.Core.Synchronizers
HttpClientFactory = this
};
_gmailHttpClient = new ConfigurableHttpClient(messageHandler);
_googleHttpClient = new ConfigurableHttpClient(messageHandler);
_gmailService = new GmailService(initializer);
_peopleService = new PeopleServiceService(initializer);
_authenticator = authenticator;
_gmailChangeProcessor = gmailChangeProcessor;
}
public ConfigurableHttpClient CreateHttpClient(CreateHttpClientArgs args) => _gmailHttpClient;
public ConfigurableHttpClient CreateHttpClient(CreateHttpClientArgs args) => _googleHttpClient;
public override async Task<SynchronizationResult> SynchronizeInternalAsync(SynchronizationOptions options, CancellationToken cancellationToken = default)
public override async Task<ProfileInformation> GetProfileInformationAsync()
{
var profileRequest = _peopleService.People.Get("people/me");
profileRequest.PersonFields = "names,photos";
string senderName = string.Empty, base64ProfilePicture = string.Empty;
var userProfile = await profileRequest.ExecuteAsync();
senderName = userProfile.Names?.FirstOrDefault()?.DisplayName ?? Account.SenderName;
var profilePicture = userProfile.Photos?.FirstOrDefault()?.Url ?? string.Empty;
if (!string.IsNullOrEmpty(profilePicture))
{
base64ProfilePicture = await GetProfilePictureBase64EncodedAsync(profilePicture).ConfigureAwait(false);
}
return new ProfileInformation(senderName, base64ProfilePicture);
}
protected override async Task SynchronizeAliasesAsync()
{
var sendAsListRequest = _gmailService.Users.Settings.SendAs.List("me");
var sendAsListResponse = await sendAsListRequest.ExecuteAsync();
var remoteAliases = sendAsListResponse.GetRemoteAliases();
await _gmailChangeProcessor.UpdateRemoteAliasInformationAsync(Account, remoteAliases).ConfigureAwait(false);
}
protected override async Task<SynchronizationResult> SynchronizeInternalAsync(SynchronizationOptions options, CancellationToken cancellationToken = default)
{
_logger.Information("Internal synchronization started for {Name}", Account.Name);
@@ -304,6 +343,9 @@ namespace Wino.Core.Synchronizers
if (ShouldUpdateFolder(remoteFolder, existingLocalFolder))
{
existingLocalFolder.FolderName = remoteFolder.Name;
existingLocalFolder.TextColorHex = remoteFolder.Color?.TextColor;
existingLocalFolder.BackgroundColorHex = remoteFolder.Color?.BackgroundColor;
updatedFolders.Add(existingLocalFolder);
}
else
@@ -325,6 +367,11 @@ namespace Wino.Core.Synchronizers
{
await _gmailChangeProcessor.UpdateFolderAsync(folder).ConfigureAwait(false);
}
if (insertedFolders.Any() || deletedFolders.Any() || updatedFolders.Any())
{
WeakReferenceMessenger.Default.Send(new AccountFolderConfigurationUpdated(Account.Id));
}
}
catch (Exception)
{
@@ -333,7 +380,16 @@ namespace Wino.Core.Synchronizers
}
private bool ShouldUpdateFolder(Label remoteFolder, MailItemFolder existingLocalFolder)
=> existingLocalFolder.FolderName.Equals(GoogleIntegratorExtensions.GetFolderName(remoteFolder), StringComparison.OrdinalIgnoreCase) == false;
{
var remoteFolderName = GoogleIntegratorExtensions.GetFolderName(remoteFolder.Name);
var localFolderName = GoogleIntegratorExtensions.GetFolderName(existingLocalFolder.FolderName);
bool isNameChanged = !localFolderName.Equals(remoteFolderName, StringComparison.OrdinalIgnoreCase);
bool isColorChanged = existingLocalFolder.BackgroundColorHex != remoteFolder.Color?.BackgroundColor ||
existingLocalFolder.TextColorHex != remoteFolder.Color?.TextColor;
return isNameChanged || isColorChanged;
}
/// <summary>
/// Returns a single get request to retrieve the raw message with the given id

View File

@@ -1,8 +1,10 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.Messaging;
using MailKit;
using MailKit.Net.Imap;
using MailKit.Search;
@@ -21,6 +23,7 @@ using Wino.Core.Integration.Processors;
using Wino.Core.Mime;
using Wino.Core.Requests;
using Wino.Core.Requests.Bundles;
using Wino.Messaging.UI;
namespace Wino.Core.Synchronizers
{
@@ -34,6 +37,7 @@ namespace Wino.Core.Synchronizers
private readonly ILogger _logger = Log.ForContext<ImapSynchronizer>();
private readonly ImapClientPool _clientPool;
private readonly IImapChangeProcessor _imapChangeProcessor;
private readonly IApplicationConfiguration _applicationConfiguration;
// Minimum summary items to Fetch for mail synchronization from IMAP.
private readonly MessageSummaryItems mailSynchronizationFlags =
@@ -61,14 +65,30 @@ namespace Wino.Core.Synchronizers
public override uint BatchModificationSize => 1000;
public override uint InitialMessageDownloadCountPerFolder => 250;
public ImapSynchronizer(MailAccount account, IImapChangeProcessor imapChangeProcessor) : base(account)
public ImapSynchronizer(MailAccount account,
IImapChangeProcessor imapChangeProcessor,
IApplicationConfiguration applicationConfiguration) : base(account)
{
_clientPool = new ImapClientPool(Account.ServerInformation);
// Create client pool with account protocol log.
_imapChangeProcessor = imapChangeProcessor;
_applicationConfiguration = applicationConfiguration;
_clientPool = new ImapClientPool(Account.ServerInformation, CreateAccountProtocolLogFileStream());
idleDoneToken = new CancellationTokenSource();
}
private Stream CreateAccountProtocolLogFileStream()
{
if (Account == null) throw new ArgumentNullException(nameof(Account));
var logFile = Path.Combine(_applicationConfiguration.ApplicationDataFolderPath, $"Protocol_{Account.Address}.log");
// Each session should start a new log.
if (File.Exists(logFile)) File.Delete(logFile);
return new FileStream(logFile, FileMode.CreateNew);
}
// TODO
// private async void NoOpTimerTriggered(object state) => await AwaitInboxIdleAsync();
@@ -263,7 +283,6 @@ namespace Wino.Core.Synchronizers
{
return CreateTaskBundle(async (ImapClient client) =>
{
var remoteDraftFolder = await client.GetFolderAsync(request.DraftPreperationRequest.CreatedLocalDraftCopy.AssignedFolder.RemoteFolderId).ConfigureAwait(false);
await remoteDraftFolder.OpenAsync(FolderAccess.ReadWrite).ConfigureAwait(false);
@@ -405,7 +424,7 @@ namespace Wino.Core.Synchronizers
];
}
public override async Task<SynchronizationResult> SynchronizeInternalAsync(SynchronizationOptions options, CancellationToken cancellationToken = default)
protected override async Task<SynchronizationResult> SynchronizeInternalAsync(SynchronizationOptions options, CancellationToken cancellationToken = default)
{
var downloadedMessageIds = new List<string>();
@@ -717,6 +736,11 @@ namespace Wino.Core.Synchronizers
{
await _imapChangeProcessor.UpdateFolderAsync(folder).ConfigureAwait(false);
}
if (insertedFolders.Any() || deletedFolders.Any() || updatedFolders.Any())
{
WeakReferenceMessenger.Default.Send(new AccountFolderConfigurationUpdated(Account.Id));
}
}
catch (Exception ex)
{
@@ -785,6 +809,7 @@ namespace Wino.Core.Synchronizers
EventHandler<MessageFlagsChangedEventArgs> MessageFlagsChangedHandler = async (s, e) =>
{
if (imapFolder == null) return;
if (e.UniqueId == null) return;
var localMailCopyId = MailkitClientExtensions.CreateUid(folder.Id, e.UniqueId.Value.Id);
@@ -922,7 +947,7 @@ namespace Wino.Core.Synchronizers
}
// In case of the high input, we'll batch them by 50 to reflect changes quickly.
var batchedMissingMailIds = missingMailIds.Batch(50).Select(a => new UniqueIdSet(a, SortOrder.Descending));
var batchedMissingMailIds = missingMailIds.Batch(50).Select(a => new UniqueIdSet(a, SortOrder.Ascending));
foreach (var batchMissingMailIds in batchedMissingMailIds)
{
@@ -997,6 +1022,7 @@ namespace Wino.Core.Synchronizers
/// </summary>
/// <param name="remoteFolder">Remote folder</param>
/// <param name="localFolder">Local folder.</param>
public bool ShouldUpdateFolder(IMailFolder remoteFolder, MailItemFolder localFolder) => remoteFolder.Name != localFolder.FolderName;
public bool ShouldUpdateFolder(IMailFolder remoteFolder, MailItemFolder localFolder)
=> !localFolder.FolderName.Equals(remoteFolder.Name, StringComparison.OrdinalIgnoreCase);
}
}

View File

@@ -4,13 +4,15 @@ using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Graph;
using Microsoft.Graph.Models;
using Microsoft.Graph.Models.ODataErrors;
using Microsoft.Kiota.Abstractions;
using Microsoft.Kiota.Abstractions.Authentication;
using Microsoft.Kiota.Http.HttpClientLibrary.Middleware;
@@ -18,11 +20,11 @@ using Microsoft.Kiota.Http.HttpClientLibrary.Middleware.Options;
using MimeKit;
using MoreLinq.Extensions;
using Serilog;
using Wino.Core.Domain;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Exceptions;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Accounts;
using Wino.Core.Domain.Models.MailItem;
using Wino.Core.Domain.Models.Requests;
using Wino.Core.Domain.Models.Synchronization;
@@ -128,7 +130,7 @@ namespace Wino.Core.Synchronizers
#endregion
public override async Task<SynchronizationResult> SynchronizeInternalAsync(SynchronizationOptions options, CancellationToken cancellationToken = default)
protected override async Task<SynchronizationResult> SynchronizeInternalAsync(SynchronizationOptions options, CancellationToken cancellationToken = default)
{
var downloadedMessageIds = new List<string>();
@@ -145,8 +147,7 @@ namespace Wino.Core.Synchronizers
{
var synchronizationFolders = await _outlookChangeProcessor.GetSynchronizationFoldersAsync(options).ConfigureAwait(false);
_logger.Information("Found {Count} folders to synchronize.", synchronizationFolders.Count);
_logger.Information(string.Format("Folders: {0}", string.Join(",", synchronizationFolders.Select(a => a.FolderName))));
_logger.Information(string.Format("{1} Folders: {0}", string.Join(",", synchronizationFolders.Select(a => a.FolderName)), synchronizationFolders.Count));
for (int i = 0; i < synchronizationFolders.Count; i++)
{
@@ -184,8 +185,6 @@ namespace Wino.Core.Synchronizers
{
var downloadedMessageIds = new List<string>();
_logger.Debug("Started synchronization for folder {FolderName}", folder.FolderName);
cancellationToken.ThrowIfCancellationRequested();
string latestDeltaLink = string.Empty;
@@ -194,6 +193,8 @@ namespace Wino.Core.Synchronizers
Microsoft.Graph.Me.MailFolders.Item.Messages.Delta.DeltaGetResponse messageCollectionPage = null;
_logger.Debug("Synchronizing {FolderName}", folder.FolderName);
if (isInitialSync)
{
_logger.Debug("No sync identifier for Folder {FolderName}. Performing initial sync.", folder.FolderName);
@@ -211,9 +212,6 @@ namespace Wino.Core.Synchronizers
{
var currentDeltaToken = folder.DeltaToken;
_logger.Debug("Sync identifier found for Folder {FolderName}. Performing delta sync.", folder.FolderName);
_logger.Debug("Current delta token: {CurrentDeltaToken}", currentDeltaToken);
var requestInformation = _graphClient.Me.MailFolders[folder.RemoteFolderId].Messages.Delta.ToGetRequestInformation((config) =>
{
config.QueryParameters.Top = (int)InitialMessageDownloadCountPerFolder;
@@ -257,9 +255,6 @@ namespace Wino.Core.Synchronizers
_logger.Debug("Downloaded {Count} messages for folder {FolderName}", downloadedMessageIds.Count, folder.FolderName);
}
_logger.Debug("Iterator completed for folder {FolderName}", folder.FolderName);
_logger.Debug("Extracted latest delta link is {LatestDeltaLink}", latestDeltaLink);
//Store delta link for tracking new changes.
if (!string.IsNullOrEmpty(latestDeltaLink))
{
@@ -473,6 +468,75 @@ namespace Wino.Core.Synchronizers
}
}
/// <summary>
/// Get the user's profile picture
/// </summary>
/// <returns>Base64 encoded profile picture.</returns>
private async Task<string> GetUserProfilePictureAsync()
{
try
{
var photoStream = await _graphClient.Me.Photos["48x48"].Content.GetAsync();
using var memoryStream = new MemoryStream();
await photoStream.CopyToAsync(memoryStream);
var byteArray = memoryStream.ToArray();
return Convert.ToBase64String(byteArray);
}
catch (ODataError odataError) when (odataError.Error.Code == "ImageNotFound")
{
// Accounts without profile picture will throw this error.
// At this point nothing we can do. Just return empty string.
return string.Empty;
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// Get the user's display name.
/// </summary>
/// <returns>Display name of the user.</returns>
private async Task<string> GetSenderNameAsync()
{
var userInfo = await _graphClient.Users["me"].GetAsync();
return userInfo.DisplayName;
}
public override async Task<ProfileInformation> GetProfileInformationAsync()
{
var profilePictureData = await GetUserProfilePictureAsync().ConfigureAwait(false);
var senderName = await GetSenderNameAsync().ConfigureAwait(false);
return new ProfileInformation(senderName, profilePictureData);
}
/// <summary>
/// POST requests are handled differently in batches in Graph SDK.
/// Batch basically ignores the step's coontent-type and body.
/// Manually create a POST request with empty body and send it.
/// </summary>
/// <param name="requestInformation">Post request information.</param>
/// <param name="content">Content object to serialize.</param>
/// <returns>Updated post request information.</returns>
private RequestInformation PreparePostRequestInformation(RequestInformation requestInformation, object content = null)
{
requestInformation.Headers.Clear();
string contentJson = content == null ? "{}" : JsonSerializer.Serialize(content);
requestInformation.Content = new MemoryStream(Encoding.UTF8.GetBytes(contentJson));
requestInformation.HttpMethod = Method.POST;
requestInformation.Headers.Add("Content-Type", "application/json");
return requestInformation;
}
#region Mail Integration
public override bool DelaySendOperationSynchronization() => true;
@@ -486,7 +550,8 @@ namespace Wino.Core.Synchronizers
return CreateBatchedHttpBundle(request, (item) =>
{
return _graphClient.Me.Messages[item.Item.Id.ToString()].Move.ToPostRequestInformation(requestBody);
return PreparePostRequestInformation(_graphClient.Me.Messages[item.Item.Id.ToString()].Move.ToPostRequestInformation(requestBody),
requestBody);
});
}
@@ -572,22 +637,37 @@ namespace Wino.Core.Synchronizers
{
if (item is CreateDraftRequest createDraftRequest)
{
createDraftRequest.DraftPreperationRequest.CreatedLocalDraftMimeMessage.Prepare(EncodingConstraint.None);
var reason = createDraftRequest.DraftPreperationRequest.Reason;
var message = createDraftRequest.DraftPreperationRequest.CreatedLocalDraftMimeMessage.AsOutlookMessage(true);
var plainTextBytes = Encoding.UTF8.GetBytes(createDraftRequest.DraftPreperationRequest.CreatedLocalDraftMimeMessage.ToString());
var base64Encoded = Convert.ToBase64String(plainTextBytes);
var requestInformation = _graphClient.Me.Messages.ToPostRequestInformation(new Message());
requestInformation.Headers.Clear();// replace the json content header
requestInformation.Headers.Add("Content-Type", "text/plain");
requestInformation.SetStreamContent(new MemoryStream(Encoding.UTF8.GetBytes(base64Encoded)), "text/plain");
return requestInformation;
if (reason == DraftCreationReason.Empty)
{
return _graphClient.Me.Messages.ToPostRequestInformation(message);
}
else if (reason == DraftCreationReason.Reply)
{
return _graphClient.Me.Messages[createDraftRequest.DraftPreperationRequest.ReferenceMailCopy.Id].CreateReply.ToPostRequestInformation(new Microsoft.Graph.Me.Messages.Item.CreateReply.CreateReplyPostRequestBody()
{
Message = message
});
}
else if (reason == DraftCreationReason.ReplyAll)
{
return _graphClient.Me.Messages[createDraftRequest.DraftPreperationRequest.ReferenceMailCopy.Id].CreateReplyAll.ToPostRequestInformation(new Microsoft.Graph.Me.Messages.Item.CreateReplyAll.CreateReplyAllPostRequestBody()
{
Message = message
});
}
else if (reason == DraftCreationReason.Forward)
{
return _graphClient.Me.Messages[createDraftRequest.DraftPreperationRequest.ReferenceMailCopy.Id].CreateForward.ToPostRequestInformation(new Microsoft.Graph.Me.Messages.Item.CreateForward.CreateForwardPostRequestBody()
{
Message = message
});
}
}
return default;
throw new Exception("Invalid create draft request type.");
});
}
@@ -602,50 +682,31 @@ namespace Wino.Core.Synchronizers
var mailCopyId = sendDraftPreparationRequest.MailItem.Id;
var mimeMessage = sendDraftPreparationRequest.Mime;
var batchDeleteRequest = new BatchDeleteRequest(new List<IRequest>()
{
new DeleteRequest(sendDraftPreparationRequest.MailItem)
});
// Convert mime message to Outlook message.
// Outlook synchronizer does not send MIME messages directly anymore.
// Alias support is lacking with direct MIMEs.
// Therefore we convert the MIME message to Outlook message and use proper APIs.
var deleteBundle = Delete(batchDeleteRequest).ElementAt(0);
var outlookMessage = mimeMessage.AsOutlookMessage(false);
mimeMessage.Prepare(EncodingConstraint.None);
// Update draft.
var plainTextBytes = Encoding.UTF8.GetBytes(mimeMessage.ToString());
var base64Encoded = Convert.ToBase64String(plainTextBytes);
var patchDraftRequest = _graphClient.Me.Messages[mailCopyId].ToPatchRequestInformation(outlookMessage);
var patchDraftRequestBundle = new HttpRequestBundle<RequestInformation>(patchDraftRequest, request);
var outlookMessage = new Message()
{
ConversationId = sendDraftPreparationRequest.MailItem.ThreadId
};
// Send draft.
// Apply importance here as well just in case.
if (mimeMessage.Importance != MessageImportance.Normal)
outlookMessage.Importance = mimeMessage.Importance == MessageImportance.High ? Importance.High : Importance.Low;
var body = new Microsoft.Graph.Me.SendMail.SendMailPostRequestBody()
{
Message = outlookMessage
};
var sendDraftRequest = PreparePostRequestInformation(_graphClient.Me.Messages[mailCopyId].Send.ToPostRequestInformation());
var sendRequest = _graphClient.Me.SendMail.ToPostRequestInformation(body);
var sendDraftRequestBundle = new HttpRequestBundle<RequestInformation>(sendDraftRequest, request);
sendRequest.Headers.Clear();
sendRequest.Headers.Add("Content-Type", "text/plain");
var stream = new MemoryStream(Encoding.UTF8.GetBytes(base64Encoded));
sendRequest.SetStreamContent(stream, "text/plain");
var sendMailRequest = new HttpRequestBundle<RequestInformation>(sendRequest, request);
return [deleteBundle, sendMailRequest];
return [patchDraftRequestBundle, sendDraftRequestBundle];
}
public override IEnumerable<IRequestBundle<RequestInformation>> Archive(BatchArchiveRequest request)
=> Move(new BatchMoveRequest(request.Items, request.FromFolder, request.ToFolder));
public override async Task DownloadMissingMimeMessageAsync(IMailItem mailItem,
MailKit.ITransferProgress transferProgress = null,
CancellationToken cancellationToken = default)
@@ -682,6 +743,8 @@ namespace Wino.Core.Synchronizers
{
var batchRequestInformations = BatchExtension.Batch(batchedRequests, (int)MaximumAllowedBatchRequestSize);
bool serializeRequests = false;
foreach (var batch in batchRequestInformations)
{
var batchContent = new BatchRequestContentCollection(_graphClient);
@@ -692,31 +755,53 @@ namespace Wino.Core.Synchronizers
{
var bundle = batch.ElementAt(i);
if (bundle.Request is BatchRequestBase batchBundleRequest && batchBundleRequest.ExecuteSerialBatch)
{
// This bundle needs to run every request in serial.
// By default requests are executed in parallel.
serializeRequests = true;
}
var request = bundle.Request;
var nativeRequest = bundle.NativeRequest;
request.ApplyUIChanges();
await batchContent.AddBatchRequestStepAsync(nativeRequest).ConfigureAwait(false);
var batchRequestId = await batchContent.AddBatchRequestStepAsync(nativeRequest).ConfigureAwait(false);
// Map BundleId to batch request step's key.
// This is how we can identify which step succeeded or failed in the bundle.
bundle.BundleId = batchContent.BatchRequestSteps.ElementAt(i).Key;
bundle.BundleId = batchRequestId;
}
if (!batchContent.BatchRequestSteps.Any())
continue;
// Set execution type to serial instead of parallel if needed.
// Each step will depend on the previous one.
if (serializeRequests)
{
for (int i = 1; i < itemCount; i++)
{
var currentStep = batchContent.BatchRequestSteps.ElementAt(i);
var previousStep = batchContent.BatchRequestSteps.ElementAt(i - 1);
currentStep.Value.DependsOn = [previousStep.Key];
}
}
// Execute batch. This will collect responses from network call for each batch step.
var batchRequestResponse = await _graphClient.Batch.PostAsync(batchContent).ConfigureAwait(false);
var batchRequestResponse = await _graphClient.Batch.PostAsync(batchContent, cancellationToken).ConfigureAwait(false);
// Check responses for each bundle id.
// Each bundle id must return some HttpResponseMessage ideally.
var bundleIds = batchContent.BatchRequestSteps.Select(a => a.Key);
// TODO: Handling responses. They used to work in v1 core, but not in v2.
var exceptionBag = new List<string>();
foreach (var bundleId in bundleIds)
{
@@ -727,45 +812,33 @@ namespace Wino.Core.Synchronizers
var httpResponseMessage = await batchRequestResponse.GetResponseByIdAsync(bundleId);
if (httpResponseMessage == null)
continue;
using (httpResponseMessage)
{
await ProcessSingleNativeRequestResponseAsync(bundle, httpResponseMessage, cancellationToken).ConfigureAwait(false);
if (!httpResponseMessage.IsSuccessStatusCode)
{
bundle.Request.RevertUIChanges();
var content = await httpResponseMessage.Content.ReadAsStringAsync();
var errorJson = JsonObject.Parse(content);
var errorString = $"{httpResponseMessage.StatusCode} [{bundle.Request.GetType().Name}]\n{errorJson["error"]["code"]} - {errorJson["error"]["message"]}\n";
exceptionBag.Add(errorString);
}
}
}
if (exceptionBag.Any())
{
var formattedErrorString = string.Join("\n", exceptionBag.Select((item, index) => $"{index + 1}. {item}"));
throw new SynchronizerException(formattedErrorString);
}
}
}
private async Task ProcessSingleNativeRequestResponseAsync(IRequestBundle<RequestInformation> bundle,
HttpResponseMessage httpResponseMessage,
CancellationToken cancellationToken = default)
{
if (httpResponseMessage == null) return;
if (!httpResponseMessage.IsSuccessStatusCode)
{
throw new SynchronizerException(string.Format(Translator.Exception_SynchronizerFailureHTTP, httpResponseMessage.StatusCode));
}
else if (bundle is HttpRequestBundle<RequestInformation, Message> messageBundle)
{
var outlookMessage = await messageBundle.DeserializeBundleAsync(httpResponseMessage, cancellationToken);
if (outlookMessage == null) return;
// TODO: Handle new message added or updated.
}
else if (bundle is HttpRequestBundle<RequestInformation, Microsoft.Graph.Models.MailFolder> folderBundle)
{
var outlookFolder = await folderBundle.DeserializeBundleAsync(httpResponseMessage, cancellationToken);
if (outlookFolder == null) return;
// TODO: Handle new folder added or updated.
}
else if (bundle is HttpRequestBundle<RequestInformation, MimeMessage> mimeBundle)
{
// TODO: Handle mime retrieve message.
}
}
private async Task<MimeMessage> DownloadMimeMessageAsync(string messageId, CancellationToken cancellationToken = default)
{
@@ -775,12 +848,6 @@ namespace Wino.Core.Synchronizers
public override async Task<List<NewMailItemPackage>> CreateNewMailPackagesAsync(Message message, MailItemFolder assignedFolder, CancellationToken cancellationToken = default)
{
bool isMailExists = await _outlookChangeProcessor.IsMailExistsAsync(message.Id);
if (isMailExists)
{
return null;
}
var mimeMessage = await DownloadMimeMessageAsync(message.Id, cancellationToken).ConfigureAwait(false);
var mailCopy = message.AsMailCopy();

View File

@@ -17,7 +17,8 @@
<PackageReference Include="CommunityToolkit.Diagnostics" Version="8.2.2" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
<PackageReference Include="Google.Apis.Gmail.v1" Version="1.68.0.3427" />
<PackageReference Include="HtmlAgilityPack" Version="1.11.59" />
<PackageReference Include="Google.Apis.PeopleService.v1" Version="1.68.0.3359" />
<PackageReference Include="HtmlAgilityPack" Version="1.11.64" />
<PackageReference Include="HtmlKit" Version="1.1.0" />
<PackageReference Include="IsExternalInit" Version="1.0.3">
<PrivateAssets>all</PrivateAssets>
@@ -26,16 +27,16 @@
<PackageReference Include="MailKit" Version="4.7.1.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
<PackageReference Include="Microsoft.Graph" Version="5.56.0" />
<PackageReference Include="Microsoft.Identity.Client" Version="4.62.0" />
<PackageReference Include="Microsoft.Identity.Client.Broker" Version="4.62.0" />
<PackageReference Include="Microsoft.Identity.Client.Extensions.Msal" Version="4.62.0" />
<PackageReference Include="Microsoft.Identity.Client" Version="4.64.0" />
<PackageReference Include="Microsoft.Identity.Client.Broker" Version="4.64.0" />
<PackageReference Include="Microsoft.Identity.Client.Extensions.Msal" Version="4.64.0" />
<PackageReference Include="MimeKit" Version="4.7.1" />
<PackageReference Include="morelinq" Version="4.1.0" />
<PackageReference Include="morelinq" Version="4.3.0" />
<PackageReference Include="Nito.AsyncEx.Tasks" Version="5.1.2" />
<PackageReference Include="Serilog" Version="3.1.1" />
<PackageReference Include="Serilog" Version="4.0.1" />
<PackageReference Include="Serilog.Exceptions" Version="8.4.0" />
<PackageReference Include="Serilog.Sinks.Debug" Version="2.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="5.0.0" />
<PackageReference Include="Serilog.Sinks.Debug" Version="3.0.0" />
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
<PackageReference Include="SkiaSharp" Version="2.88.8" />
<PackageReference Include="SqlKata" Version="2.4.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="8.0.0" />

View File

@@ -1,14 +1,13 @@
using System;
using System.IO;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.Input;
using Wino.Core.Domain;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Services;
namespace Wino.Mail.ViewModels
{
public class AboutPageViewModel : BaseViewModel
public partial class AboutPageViewModel : BaseViewModel
{
private readonly IStoreRatingService _storeRatingService;
private readonly INativeAppService _nativeAppService;
@@ -22,9 +21,6 @@ namespace Wino.Mail.ViewModels
public string PrivacyPolicyUrl => "https://www.winomail.app/privacy_policy.html";
public string PaypalUrl => "https://paypal.me/bkaankose?country.x=PL&locale.x=en_US";
public AsyncRelayCommand<object> NavigateCommand { get; set; }
public AsyncRelayCommand ShareWinoLogCommand { get; set; }
public AsyncRelayCommand ShareProtocolLogCommand { get; set; }
public IPreferencesService PreferencesService { get; }
public AboutPageViewModel(IStoreRatingService storeRatingService,
@@ -42,9 +38,6 @@ namespace Wino.Mail.ViewModels
_fileService = fileService;
PreferencesService = preferencesService;
NavigateCommand = new AsyncRelayCommand<object>(Navigate);
ShareWinoLogCommand = new AsyncRelayCommand(ShareWinoLogAsync);
ShareProtocolLogCommand = new AsyncRelayCommand(ShareProtocolLogAsync);
}
protected override void OnActivated()
@@ -70,35 +63,28 @@ namespace Wino.Mail.ViewModels
}
}
private Task ShareProtocolLogAsync()
=> SaveLogInternalAsync(ImapTestService.ProtocolLogFileName);
private Task ShareWinoLogAsync()
=> SaveLogInternalAsync(Constants.ClientLogFile);
private async Task SaveLogInternalAsync(string sourceFileName)
[RelayCommand]
private async Task ShareWinoLogAsync()
{
var appDataFolder = _appInitializerService.ApplicationDataFolderPath;
var logFile = Path.Combine(appDataFolder, sourceFileName);
if (!File.Exists(logFile))
{
DialogService.InfoBarMessage(Translator.Info_LogsNotFoundTitle, Translator.Info_LogsNotFoundMessage, Core.Domain.Enums.InfoBarMessageType.Warning);
return;
}
var selectedFolderPath = await DialogService.PickWindowsFolderAsync();
if (string.IsNullOrEmpty(selectedFolderPath)) return;
var copiedFilePath = await _fileService.CopyFileAsync(logFile, selectedFolderPath);
var areLogsSaved = await _fileService.SaveLogsToFolderAsync(appDataFolder, selectedFolderPath).ConfigureAwait(false);
var copiedFileName = Path.GetFileName(copiedFilePath);
DialogService.InfoBarMessage(Translator.Info_LogsSavedTitle, string.Format(Translator.Info_LogsSavedMessage, copiedFileName), Core.Domain.Enums.InfoBarMessageType.Success);
if (areLogsSaved)
{
DialogService.InfoBarMessage(Translator.Info_LogsSavedTitle, string.Format(Translator.Info_LogsSavedMessage, Constants.LogArchiveFileName), InfoBarMessageType.Success);
}
else
{
DialogService.InfoBarMessage(Translator.Info_LogsNotFoundTitle, Translator.Info_LogsNotFoundMessage, InfoBarMessageType.Error);
}
}
[RelayCommand]
private async Task Navigate(object url)
{
if (url is string stringUrl)
@@ -109,7 +95,9 @@ namespace Wino.Mail.ViewModels
{
// Discord disclaimer message about server.
if (stringUrl == DiscordChannelUrl)
await DialogService.ShowMessageAsync(Translator.DiscordChannelDisclaimerMessage, Translator.DiscordChannelDisclaimerTitle);
await DialogService.ShowMessageAsync(Translator.DiscordChannelDisclaimerMessage,
Translator.DiscordChannelDisclaimerTitle,
WinoCustomMessageDialogIcon.Warning);
await _nativeAppService.LaunchUriAsync(new Uri(stringUrl));
}

View File

@@ -56,7 +56,11 @@ namespace Wino.Mail.ViewModels
[RelayCommand]
private void EditSignature()
=> Messenger.Send(new BreadcrumbNavigationRequested("Signature", WinoPage.SignatureManagementPage, Account.Id));
=> Messenger.Send(new BreadcrumbNavigationRequested(Translator.SettingsSignature_Title, WinoPage.SignatureManagementPage, Account.Id));
[RelayCommand]
private void EditAliases()
=> Messenger.Send(new BreadcrumbNavigationRequested(Translator.SettingsManageAliases_Title, WinoPage.AliasManagementPage, Account.Id));
public Task FolderSyncToggledAsync(IMailItemFolder folderStructure, bool isEnabled)
=> _folderService.ChangeFolderSynchronizationStateAsync(folderStructure.Id, isEnabled);

View File

@@ -154,15 +154,12 @@ namespace Wino.Mail.ViewModels
{
creationDialog = _dialogService.GetAccountCreationDialog(accountCreationDialogResult.ProviderType);
// _accountService.ExternalAuthenticationAuthenticator = _authenticationProvider.GetAuthenticator(accountCreationDialogResult.ProviderType);
CustomServerInformation customServerInformation = null;
createdAccount = new MailAccount()
{
ProviderType = accountCreationDialogResult.ProviderType,
Name = accountCreationDialogResult.AccountName,
SenderName = accountCreationDialogResult.SenderName,
AccountColorHex = accountCreationDialogResult.AccountColorHex,
Id = Guid.NewGuid()
};
@@ -208,30 +205,83 @@ namespace Wino.Mail.ViewModels
await _accountService.CreateAccountAsync(createdAccount, tokenInformation, customServerInformation);
// Local account has been created.
// Create new synchronizer and start synchronization.
// Sync profile information if supported.
if (createdAccount.IsProfileInfoSyncSupported)
{
// Start profile information synchronization.
// It's only available for Outlook and Gmail synchronizers.
var profileSyncOptions = new SynchronizationOptions()
{
AccountId = createdAccount.Id,
Type = SynchronizationType.UpdateProfile
};
var profileSynchronizationResponse = await _winoServerConnectionManager.GetResponseAsync<SynchronizationResult, NewSynchronizationRequested>(new NewSynchronizationRequested(profileSyncOptions, SynchronizationSource.Client));
var profileSynchronizationResult = profileSynchronizationResponse.Data;
if (profileSynchronizationResult.CompletedState != SynchronizationCompletedState.Success)
throw new Exception(Translator.Exception_FailedToSynchronizeProfileInformation);
createdAccount.SenderName = profileSynchronizationResult.ProfileInformation.SenderName;
createdAccount.Base64ProfilePictureData = profileSynchronizationResult.ProfileInformation.Base64ProfilePictureData;
await _accountService.UpdateProfileInformationAsync(createdAccount.Id, profileSynchronizationResult.ProfileInformation);
}
if (creationDialog is ICustomServerAccountCreationDialog customServerAccountCreationDialog)
customServerAccountCreationDialog.ShowPreparingFolders();
else
creationDialog.State = AccountCreationDialogState.PreparingFolders;
var options = new SynchronizationOptions()
// Start synchronizing folders.
var folderSyncOptions = new SynchronizationOptions()
{
AccountId = createdAccount.Id,
Type = SynchronizationType.FoldersOnly
};
var synchronizationResultResponse = await _winoServerConnectionManager.GetResponseAsync<SynchronizationResult, NewSynchronizationRequested>(new NewSynchronizationRequested(options, SynchronizationSource.Client));
var folderSynchronizationResponse = await _winoServerConnectionManager.GetResponseAsync<SynchronizationResult, NewSynchronizationRequested>(new NewSynchronizationRequested(folderSyncOptions, SynchronizationSource.Client));
var synchronizationResult = synchronizationResultResponse.Data;
if (synchronizationResult.CompletedState != SynchronizationCompletedState.Success)
var folderSynchronizationResult = folderSynchronizationResponse.Data;
if (folderSynchronizationResult.CompletedState != SynchronizationCompletedState.Success)
throw new Exception(Translator.Exception_FailedToSynchronizeFolders);
// Check if Inbox folder is available for the account after synchronization.
var isInboxAvailable = await _folderService.IsInboxAvailableForAccountAsync(createdAccount.Id);
// Sync aliases if supported.
if (createdAccount.IsAliasSyncSupported)
{
// Try to synchronize aliases for the account.
if (!isInboxAvailable)
throw new Exception(Translator.Exception_InboxNotAvailable);
var aliasSyncOptions = new SynchronizationOptions()
{
AccountId = createdAccount.Id,
Type = SynchronizationType.Alias
};
var aliasSyncResponse = await _winoServerConnectionManager.GetResponseAsync<SynchronizationResult, NewSynchronizationRequested>(new NewSynchronizationRequested(aliasSyncOptions, SynchronizationSource.Client));
var aliasSynchronizationResult = folderSynchronizationResponse.Data;
if (aliasSynchronizationResult.CompletedState != SynchronizationCompletedState.Success)
throw new Exception(Translator.Exception_FailedToSynchronizeAliases);
}
else
{
// Create root primary alias for the account.
// This is only available for accounts that do not support alias synchronization.
await _accountService.CreateRootAliasAsync(createdAccount.Id, createdAccount.Address);
}
// TODO: Temporary disabled. Is this even needed? Users can configure special folders manually later on if discovery fails.
// Check if Inbox folder is available for the account after synchronization.
//var isInboxAvailable = await _folderService.IsInboxAvailableForAccountAsync(createdAccount.Id);
//if (!isInboxAvailable)
// throw new Exception(Translator.Exception_InboxNotAvailable);
// Send changes to listeners.
ReportUIChange(new AccountCreatedMessage(createdAccount));

View File

@@ -0,0 +1,151 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using EmailValidation;
using Wino.Core.Domain;
using Wino.Core.Domain.Entities;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Navigation;
using Wino.Core.Domain.Models.Synchronization;
using Wino.Messaging.Server;
namespace Wino.Mail.ViewModels
{
public partial class AliasManagementPageViewModel : BaseViewModel
{
private readonly IAccountService _accountService;
private readonly IWinoServerConnectionManager _winoServerConnectionManager;
[ObservableProperty]
[NotifyPropertyChangedFor(nameof(CanSynchronizeAliases))]
private MailAccount account;
[ObservableProperty]
private List<MailAccountAlias> accountAliases = [];
public bool CanSynchronizeAliases => Account?.IsAliasSyncSupported ?? false;
public AliasManagementPageViewModel(IDialogService dialogService,
IAccountService accountService,
IWinoServerConnectionManager winoServerConnectionManager) : base(dialogService)
{
_accountService = accountService;
_winoServerConnectionManager = winoServerConnectionManager;
}
public override async void OnNavigatedTo(NavigationMode mode, object parameters)
{
base.OnNavigatedTo(mode, parameters);
if (parameters is Guid accountId)
Account = await _accountService.GetAccountAsync(accountId);
if (Account == null) return;
await LoadAliasesAsync();
}
private async Task LoadAliasesAsync()
{
AccountAliases = await _accountService.GetAccountAliasesAsync(Account.Id);
}
[RelayCommand]
private async Task SetAliasPrimaryAsync(MailAccountAlias alias)
{
if (alias.IsPrimary) return;
AccountAliases.ForEach(a =>
{
a.IsPrimary = a == alias;
});
await _accountService.UpdateAccountAliasesAsync(Account.Id, AccountAliases);
await LoadAliasesAsync();
}
[RelayCommand]
private async Task SyncAliasesAsync()
{
if (!CanSynchronizeAliases) return;
var aliasSyncOptions = new SynchronizationOptions()
{
AccountId = Account.Id,
Type = SynchronizationType.Alias
};
var aliasSyncResponse = await _winoServerConnectionManager.GetResponseAsync<SynchronizationResult, NewSynchronizationRequested>(new NewSynchronizationRequested(aliasSyncOptions, SynchronizationSource.Client));
if (aliasSyncResponse.IsSuccess)
await LoadAliasesAsync();
else
DialogService.InfoBarMessage(Translator.GeneralTitle_Error, aliasSyncResponse.Message, InfoBarMessageType.Error);
}
[RelayCommand]
private async Task AddNewAliasAsync()
{
var createdAliasDialog = await DialogService.ShowCreateAccountAliasDialogAsync();
if (createdAliasDialog.CreatedAccountAlias == null) return;
var newAlias = createdAliasDialog.CreatedAccountAlias;
// Check existence.
if (AccountAliases.Any(a => a.AliasAddress == newAlias.AliasAddress))
{
await DialogService.ShowMessageAsync(Translator.DialogMessage_AliasExistsTitle,
Translator.DialogMessage_AliasExistsMessage,
WinoCustomMessageDialogIcon.Warning);
return;
}
// Validate all addresses.
if (!EmailValidator.Validate(newAlias.AliasAddress) || (!string.IsNullOrEmpty(newAlias.ReplyToAddress) && !EmailValidator.Validate(newAlias.ReplyToAddress)))
{
await DialogService.ShowMessageAsync(Translator.DialogMessage_InvalidAliasMessage,
Translator.DialogMessage_InvalidAliasTitle,
WinoCustomMessageDialogIcon.Warning);
return;
}
newAlias.AccountId = Account.Id;
AccountAliases.Add(newAlias);
await _accountService.UpdateAccountAliasesAsync(Account.Id, AccountAliases);
DialogService.InfoBarMessage(Translator.DialogMessage_AliasCreatedTitle, Translator.DialogMessage_AliasCreatedMessage, InfoBarMessageType.Success);
await LoadAliasesAsync();
}
[RelayCommand]
private async Task DeleteAliasAsync(MailAccountAlias alias)
{
// Primary aliases can't be deleted.
if (alias.IsPrimary)
{
await DialogService.ShowMessageAsync(Translator.Info_CantDeletePrimaryAliasMessage,
Translator.GeneralTitle_Warning,
WinoCustomMessageDialogIcon.Warning);
return;
}
// Root aliases can't be deleted.
if (alias.IsRootAlias)
{
await DialogService.ShowMessageAsync(Translator.DialogMessage_CantDeleteRootAliasTitle,
Translator.DialogMessage_CantDeleteRootAliasMessage,
WinoCustomMessageDialogIcon.Warning);
return;
}
await _accountService.DeleteAccountAliasAsync(alias.Id);
await LoadAliasesAsync();
}
}
}

Some files were not shown because too many files have changed in this diff Show More