mirror of
https://github.com/bitwarden/mobile
synced 2025-12-17 08:43:21 +00:00
Merge branch 'master' into EC-295-swipe-to-copy-logins
This commit is contained in:
@@ -15,7 +15,7 @@ using Bit.Core.Utilities;
|
|||||||
|
|
||||||
namespace Bit.Droid.Accessibility
|
namespace Bit.Droid.Accessibility
|
||||||
{
|
{
|
||||||
[Service(Permission = Android.Manifest.Permission.BindAccessibilityService, Label = "Bitwarden")]
|
[Service(Permission = Android.Manifest.Permission.BindAccessibilityService, Label = "Bitwarden", Exported = true)]
|
||||||
[IntentFilter(new string[] { "android.accessibilityservice.AccessibilityService" })]
|
[IntentFilter(new string[] { "android.accessibilityservice.AccessibilityService" })]
|
||||||
[MetaData("android.accessibilityservice", Resource = "@xml/accessibilityservice")]
|
[MetaData("android.accessibilityservice", Resource = "@xml/accessibilityservice")]
|
||||||
[Register("com.x8bit.bitwarden.Accessibility.AccessibilityService")]
|
[Register("com.x8bit.bitwarden.Accessibility.AccessibilityService")]
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||||
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
|
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
|
||||||
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
|
<MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
|
||||||
<TargetFrameworkVersion>v11.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v12.1</TargetFrameworkVersion>
|
||||||
<AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
|
<AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
|
||||||
<NuGetPackageImportStamp>
|
<NuGetPackageImportStamp>
|
||||||
</NuGetPackageImportStamp>
|
</NuGetPackageImportStamp>
|
||||||
@@ -75,24 +75,24 @@
|
|||||||
<Version>2.1.0.4</Version>
|
<Version>2.1.0.4</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Portable.BouncyCastle">
|
<PackageReference Include="Portable.BouncyCastle">
|
||||||
<Version>1.8.10</Version>
|
<Version>1.9.0</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.3.1.3" />
|
<PackageReference Include="Xamarin.AndroidX.AppCompat" Version="1.5.1" />
|
||||||
<PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.9" />
|
<PackageReference Include="Xamarin.AndroidX.AutoFill" Version="1.1.0.13" />
|
||||||
<PackageReference Include="Xamarin.AndroidX.CardView" Version="1.0.0.11" />
|
<PackageReference Include="Xamarin.AndroidX.CardView" Version="1.0.0.16" />
|
||||||
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4" Version="1.0.0.10" />
|
<PackageReference Include="Xamarin.AndroidX.Core" Version="1.9.0" />
|
||||||
<PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.2.5.2" />
|
<PackageReference Include="Xamarin.AndroidX.Legacy.Support.V4" Version="1.0.0.14" />
|
||||||
<PackageReference Include="Xamarin.AndroidX.Migration" Version="1.0.8" />
|
<PackageReference Include="Xamarin.AndroidX.MediaRouter" Version="1.3.1" />
|
||||||
<PackageReference Include="Xamarin.Essentials">
|
<PackageReference Include="Xamarin.Essentials">
|
||||||
<Version>1.7.3</Version>
|
<Version>1.7.3</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Xamarin.Firebase.Messaging">
|
<PackageReference Include="Xamarin.Firebase.Messaging">
|
||||||
<Version>122.0.0</Version>
|
<Version>123.0.8</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.4.0.4" />
|
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.6.1.1" />
|
||||||
<PackageReference Include="Xamarin.Google.Dagger" Version="2.37.0" />
|
<PackageReference Include="Xamarin.Google.Dagger" Version="2.41.0.2" />
|
||||||
<PackageReference Include="Xamarin.GooglePlayServices.SafetyNet">
|
<PackageReference Include="Xamarin.GooglePlayServices.SafetyNet">
|
||||||
<Version>117.0.1</Version>
|
<Version>118.0.1.2</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -176,6 +176,7 @@
|
|||||||
<AndroidResource Include="Resources\drawable\cog_settings.xml" />
|
<AndroidResource Include="Resources\drawable\cog_settings.xml" />
|
||||||
<AndroidResource Include="Resources\drawable\icon.xml" />
|
<AndroidResource Include="Resources\drawable\icon.xml" />
|
||||||
<AndroidResource Include="Resources\drawable\ic_launcher_foreground.xml" />
|
<AndroidResource Include="Resources\drawable\ic_launcher_foreground.xml" />
|
||||||
|
<AndroidResource Include="Resources\drawable\ic_launcher_monochrome.xml" />
|
||||||
<AndroidResource Include="Resources\drawable\ic_warning.xml" />
|
<AndroidResource Include="Resources\drawable\ic_warning.xml" />
|
||||||
<AndroidResource Include="Resources\drawable\id.xml" />
|
<AndroidResource Include="Resources\drawable\id.xml" />
|
||||||
<AndroidResource Include="Resources\drawable\info.xml" />
|
<AndroidResource Include="Resources\drawable\info.xml" />
|
||||||
@@ -213,6 +214,9 @@
|
|||||||
<AndroidResource Include="Resources\values\colors.xml" />
|
<AndroidResource Include="Resources\values\colors.xml" />
|
||||||
<AndroidResource Include="Resources\values\manifest.xml" />
|
<AndroidResource Include="Resources\values\manifest.xml" />
|
||||||
<AndroidResource Include="Resources\values-v30\manifest.xml" />
|
<AndroidResource Include="Resources\values-v30\manifest.xml" />
|
||||||
|
<AndroidResource Include="Resources\drawable-v26\splash_screen_round.xml" />
|
||||||
|
<AndroidResource Include="Resources\drawable\logo_rounded.xml" />
|
||||||
|
<AndroidResource Include="Resources\drawable-night-v26\splash_screen_round.xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AndroidResource Include="Resources\drawable\splash_screen.xml" />
|
<AndroidResource Include="Resources\drawable\splash_screen.xml" />
|
||||||
@@ -280,6 +284,8 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Resources\values-v30\" />
|
<Folder Include="Resources\values-v30\" />
|
||||||
|
<Folder Include="Resources\drawable-v26\" />
|
||||||
|
<Folder Include="Resources\drawable-night-v26\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
|
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
||||||
@@ -19,6 +19,7 @@ using AndroidX.AutoFill.Inline;
|
|||||||
using AndroidX.AutoFill.Inline.V1;
|
using AndroidX.AutoFill.Inline.V1;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using SaveFlags = Android.Service.Autofill.SaveFlags;
|
using SaveFlags = Android.Service.Autofill.SaveFlags;
|
||||||
|
using Bit.Droid.Utilities;
|
||||||
|
|
||||||
namespace Bit.Droid.Autofill
|
namespace Bit.Droid.Autofill
|
||||||
{
|
{
|
||||||
@@ -270,8 +271,7 @@ namespace Bit.Droid.Autofill
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
intent.PutExtra("autofillFrameworkUri", uri);
|
intent.PutExtra("autofillFrameworkUri", uri);
|
||||||
var pendingIntent = PendingIntent.GetActivity(context, ++_pendingIntentId, intent,
|
var pendingIntent = PendingIntent.GetActivity(context, ++_pendingIntentId, intent, AndroidHelpers.AddPendingIntentMutabilityFlag(PendingIntentFlags.CancelCurrent, true));
|
||||||
PendingIntentFlags.CancelCurrent);
|
|
||||||
|
|
||||||
var overlayPresentation = BuildOverlayPresentation(
|
var overlayPresentation = BuildOverlayPresentation(
|
||||||
AppResources.AutofillWithBitwarden,
|
AppResources.AutofillWithBitwarden,
|
||||||
@@ -324,7 +324,7 @@ namespace Bit.Droid.Autofill
|
|||||||
// InlinePresentation requires nonNull pending intent (even though we only utilize one for the
|
// InlinePresentation requires nonNull pending intent (even though we only utilize one for the
|
||||||
// "my vault" presentation) so we're including an empty one here
|
// "my vault" presentation) so we're including an empty one here
|
||||||
pendingIntent = PendingIntent.GetService(context, 0, new Intent(),
|
pendingIntent = PendingIntent.GetService(context, 0, new Intent(),
|
||||||
PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent);
|
AndroidHelpers.AddPendingIntentMutabilityFlag(PendingIntentFlags.OneShot | PendingIntentFlags.UpdateCurrent, true));
|
||||||
}
|
}
|
||||||
var slice = CreateInlinePresentationSlice(
|
var slice = CreateInlinePresentationSlice(
|
||||||
inlinePresentationSpec,
|
inlinePresentationSpec,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ using Bit.Core.Utilities;
|
|||||||
|
|
||||||
namespace Bit.Droid.Autofill
|
namespace Bit.Droid.Autofill
|
||||||
{
|
{
|
||||||
[Service(Permission = Manifest.Permission.BindAutofillService, Label = "Bitwarden")]
|
[Service(Permission = Manifest.Permission.BindAutofillService, Label = "Bitwarden", Exported = true)]
|
||||||
[IntentFilter(new string[] { "android.service.autofill.AutofillService" })]
|
[IntentFilter(new string[] { "android.service.autofill.AutofillService" })]
|
||||||
[MetaData("android.autofill", Resource = "@xml/autofillservice")]
|
[MetaData("android.autofill", Resource = "@xml/autofillservice")]
|
||||||
[Register("com.x8bit.bitwarden.Autofill.AutofillService")]
|
[Register("com.x8bit.bitwarden.Autofill.AutofillService")]
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ using Android.Content.Res;
|
|||||||
using Android.Nfc;
|
using Android.Nfc;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Runtime;
|
using Android.Runtime;
|
||||||
using AndroidX.Core.Content;
|
using Android.Views;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
using Bit.App.Models;
|
using Bit.App.Models;
|
||||||
using Bit.App.Utilities;
|
using Bit.App.Utilities;
|
||||||
@@ -49,7 +49,7 @@ namespace Bit.Droid
|
|||||||
{
|
{
|
||||||
var eventUploadIntent = new Intent(this, typeof(EventUploadReceiver));
|
var eventUploadIntent = new Intent(this, typeof(EventUploadReceiver));
|
||||||
_eventUploadPendingIntent = PendingIntent.GetBroadcast(this, 0, eventUploadIntent,
|
_eventUploadPendingIntent = PendingIntent.GetBroadcast(this, 0, eventUploadIntent,
|
||||||
PendingIntentFlags.UpdateCurrent);
|
AndroidHelpers.AddPendingIntentMutabilityFlag(PendingIntentFlags.UpdateCurrent, false));
|
||||||
|
|
||||||
var policy = new StrictMode.ThreadPolicy.Builder().PermitAll().Build();
|
var policy = new StrictMode.ThreadPolicy.Builder().PermitAll().Build();
|
||||||
StrictMode.SetThreadPolicy(policy);
|
StrictMode.SetThreadPolicy(policy);
|
||||||
@@ -278,7 +278,7 @@ namespace Bit.Droid
|
|||||||
{
|
{
|
||||||
var intent = new Intent(this, Class);
|
var intent = new Intent(this, Class);
|
||||||
intent.AddFlags(ActivityFlags.SingleTop);
|
intent.AddFlags(ActivityFlags.SingleTop);
|
||||||
var pendingIntent = PendingIntent.GetActivity(this, 0, intent, 0);
|
var pendingIntent = PendingIntent.GetActivity(this, 0, intent, AndroidHelpers.AddPendingIntentMutabilityFlag(0, true));
|
||||||
// register for all NDEF tags starting with http och https
|
// register for all NDEF tags starting with http och https
|
||||||
var ndef = new IntentFilter(NfcAdapter.ActionNdefDiscovered);
|
var ndef = new IntentFilter(NfcAdapter.ActionNdefDiscovered);
|
||||||
ndef.AddDataScheme("http");
|
ndef.AddDataScheme("http");
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:versionCode="1" android:versionName="2022.8.1" android:installLocation="internalOnly" package="com.x8bit.bitwarden">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:versionCode="1" android:versionName="2022.9.2" android:installLocation="internalOnly" package="com.x8bit.bitwarden">
|
||||||
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30" />
|
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="32" />
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.NFC" />
|
<uses-permission android:name="android.permission.NFC" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<background android:drawable="@color/darkgray"/>
|
||||||
|
<foreground android:drawable="@drawable/logo_rounded"/>
|
||||||
|
</adaptive-icon>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<background android:drawable="@color/ic_launcher_background"/>
|
||||||
|
<foreground android:drawable="@drawable/logo_rounded"/>
|
||||||
|
</adaptive-icon>
|
||||||
15
src/Android/Resources/drawable/ic_launcher_monochrome.xml
Normal file
15
src/Android/Resources/drawable/ic_launcher_monochrome.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="108dp"
|
||||||
|
android:height="108dp"
|
||||||
|
android:viewportWidth="108"
|
||||||
|
android:viewportHeight="108">
|
||||||
|
<group
|
||||||
|
android:scaleX="0.099"
|
||||||
|
android:scaleY="0.099"
|
||||||
|
android:translateX="24.3"
|
||||||
|
android:translateY="24.3">
|
||||||
|
<path
|
||||||
|
android:fillColor="#ffffff"
|
||||||
|
android:pathData="M481.4,102.2c-3.7,-3.7 -8.1,-5.6 -13.1,-5.6L131.7,96.6c-5.1,0 -9.4,1.9 -13.1,5.6C114.9,105.9 113,110.2 113,115.3v224.4c0,16.7 3.3,33.4 9.8,49.8c6.5,16.5 14.6,31.1 24.3,43.8c9.6,12.8 21.1,25.2 34.5,37.2c13.3,12.1 25.7,22.1 37,30.1c11.3,8 23.1,15.5 35.4,22.6c12.3,7.1 21,11.9 26.2,14.5c5.2,2.5 9.3,4.5 12.4,5.8c2.3,1.2 4.9,1.8 7.6,1.8c2.7,0 5.3,-0.6 7.6,-1.8c3.1,-1.4 7.3,-3.3 12.4,-5.8c5.2,-2.5 13.9,-7.4 26.2,-14.5c12.3,-7.1 24.1,-14.7 35.4,-22.6c11.3,-8 23.6,-18 37,-30.1c13.3,-12.1 24.8,-24.5 34.5,-37.2c9.6,-12.8 17.7,-27.4 24.2,-43.8c6.5,-16.5 9.8,-33.1 9.8,-49.8L487.3,115.3C487,110.2 485.1,105.9 481.4,102.2zM438,341.8C438,423 300,493 300,493L300,144.6h138C438,144.6 438,260.6 438,341.8z" />
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
14
src/Android/Resources/drawable/logo_rounded.xml
Normal file
14
src/Android/Resources/drawable/logo_rounded.xml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:width="108dp"
|
||||||
|
android:height="108dp"
|
||||||
|
android:viewportWidth="108"
|
||||||
|
android:viewportHeight="108">
|
||||||
|
<group android:scaleX="0.11454546"
|
||||||
|
android:scaleY="0.11454546"
|
||||||
|
android:translateX="31.663637"
|
||||||
|
android:translateY="27.54">
|
||||||
|
<path
|
||||||
|
android:pathData="M376.4,12.2c-3.7,-3.7 -8.1,-5.6 -13.1,-5.6H26.7c-5.1,0 -9.4,1.9 -13.1,5.6C9.9,15.9 8,20.2 8,25.3v224.4c0,16.7 3.3,33.4 9.8,49.8c6.5,16.5 14.6,31.1 24.3,43.8c9.6,12.8 21.1,25.2 34.5,37.2c13.3,12.1 25.7,22.1 37,30.1c11.3,8 23.1,15.5 35.4,22.6c12.3,7.1 21,11.9 26.2,14.5c5.2,2.5 9.3,4.5 12.4,5.8c2.3,1.2 4.9,1.8 7.6,1.8c2.7,0 5.3,-0.6 7.6,-1.8c3.1,-1.4 7.3,-3.3 12.4,-5.8c5.2,-2.5 13.9,-7.4 26.2,-14.5c12.3,-7.1 24.1,-14.7 35.4,-22.6c11.3,-8 23.6,-18 37,-30.1c13.3,-12.1 24.8,-24.5 34.5,-37.2c9.6,-12.8 17.7,-27.4 24.2,-43.8c6.5,-16.5 9.8,-33.1 9.8,-49.8V25.3C382,20.2 380.1,15.9 376.4,12.2zM333,251.8C333,333 195,403 195,403V54.6h138C333,54.6 333,170.6 333,251.8z"
|
||||||
|
android:fillColor="#FFFFFF"/>
|
||||||
|
</group>
|
||||||
|
</vector>
|
||||||
@@ -2,5 +2,5 @@
|
|||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<background android:drawable="@color/ic_launcher_background"/>
|
<background android:drawable="@color/ic_launcher_background"/>
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||||
<monochrome android:drawable="@drawable/ic_launcher_foreground"/>
|
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
|
||||||
</adaptive-icon>
|
</adaptive-icon>
|
||||||
@@ -2,5 +2,5 @@
|
|||||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<background android:drawable="@color/ic_launcher_background"/>
|
<background android:drawable="@color/ic_launcher_background"/>
|
||||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||||
<monochrome android:drawable="@drawable/ic_launcher_foreground"/>
|
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
|
||||||
</adaptive-icon>
|
</adaptive-icon>
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
<style name="LaunchTheme" parent="BaseTheme">
|
<style name="LaunchTheme" parent="BaseTheme">
|
||||||
<item name="android:windowBackground">@drawable/splash_screen_dark</item>
|
<item name="android:windowBackground">@drawable/splash_screen_dark</item>
|
||||||
<item name="android:windowNoTitle">true</item>
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_screen_round</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="BaseTheme" parent="Theme.AppCompat">
|
<style name="BaseTheme" parent="Theme.AppCompat">
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
<style name="LaunchTheme" parent="BaseTheme">
|
<style name="LaunchTheme" parent="BaseTheme">
|
||||||
<item name="android:windowBackground">@drawable/splash_screen</item>
|
<item name="android:windowBackground">@drawable/splash_screen</item>
|
||||||
<item name="android:windowNoTitle">true</item>
|
<item name="android:windowNoTitle">true</item>
|
||||||
|
<item name="android:windowSplashScreenBackground">@color/ic_launcher_background</item>
|
||||||
|
<item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_screen_round</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="BaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
<style name="BaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Android.Content;
|
|||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Droid.Receivers;
|
using Bit.Droid.Receivers;
|
||||||
|
using Bit.Droid.Utilities;
|
||||||
using Plugin.CurrentActivity;
|
using Plugin.CurrentActivity;
|
||||||
using Xamarin.Essentials;
|
using Xamarin.Essentials;
|
||||||
|
|
||||||
@@ -23,7 +24,7 @@ namespace Bit.Droid.Services
|
|||||||
PendingIntent.GetBroadcast(CrossCurrentActivity.Current.Activity,
|
PendingIntent.GetBroadcast(CrossCurrentActivity.Current.Activity,
|
||||||
0,
|
0,
|
||||||
new Intent(CrossCurrentActivity.Current.Activity, typeof(ClearClipboardAlarmReceiver)),
|
new Intent(CrossCurrentActivity.Current.Activity, typeof(ClearClipboardAlarmReceiver)),
|
||||||
PendingIntentFlags.UpdateCurrent));
|
AndroidHelpers.AddPendingIntentMutabilityFlag(PendingIntentFlags.UpdateCurrent, false)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task CopyTextAsync(string text, int expiresInMs = -1, bool isSensitive = true)
|
public async Task CopyTextAsync(string text, int expiresInMs = -1, bool isSensitive = true)
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ using Java.Lang;
|
|||||||
namespace Bit.Droid.Tile
|
namespace Bit.Droid.Tile
|
||||||
{
|
{
|
||||||
[Service(Permission = Manifest.Permission.BindQuickSettingsTile, Label = "@string/AutoFillTile",
|
[Service(Permission = Manifest.Permission.BindQuickSettingsTile, Label = "@string/AutoFillTile",
|
||||||
Icon = "@drawable/shield")]
|
Icon = "@drawable/shield", Exported = true)]
|
||||||
[IntentFilter(new string[] { ActionQsTile })]
|
[IntentFilter(new string[] { ActionQsTile })]
|
||||||
[Register("com.x8bit.bitwarden.AutofillTileService")]
|
[Register("com.x8bit.bitwarden.AutofillTileService")]
|
||||||
public class AutofillTileService : TileService
|
public class AutofillTileService : TileService
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ using Java.Lang;
|
|||||||
|
|
||||||
namespace Bit.Droid.Tile
|
namespace Bit.Droid.Tile
|
||||||
{
|
{
|
||||||
[Service(Permission = Android.Manifest.Permission.BindQuickSettingsTile, Label = "@string/PasswordGenerator",
|
[Service(Permission = Android.Manifest.Permission.BindQuickSettingsTile, Exported = true, Label = "@string/PasswordGenerator",
|
||||||
Icon = "@drawable/generate")]
|
Icon = "@drawable/generate")]
|
||||||
[IntentFilter(new string[] { ActionQsTile })]
|
[IntentFilter(new string[] { ActionQsTile })]
|
||||||
[Register("com.x8bit.bitwarden.GeneratorTileService")]
|
[Register("com.x8bit.bitwarden.GeneratorTileService")]
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ using Java.Lang;
|
|||||||
namespace Bit.Droid.Tile
|
namespace Bit.Droid.Tile
|
||||||
{
|
{
|
||||||
[Service(Permission = Android.Manifest.Permission.BindQuickSettingsTile, Label = "@string/MyVault",
|
[Service(Permission = Android.Manifest.Permission.BindQuickSettingsTile, Label = "@string/MyVault",
|
||||||
Icon = "@drawable/shield")]
|
Icon = "@drawable/shield",
|
||||||
|
Exported = true)]
|
||||||
[IntentFilter(new string[] { ActionQsTile })]
|
[IntentFilter(new string[] { ActionQsTile })]
|
||||||
[Register("com.x8bit.bitwarden.MyVaultTileService")]
|
[Register("com.x8bit.bitwarden.MyVaultTileService")]
|
||||||
public class MyVaultTileService : TileService
|
public class MyVaultTileService : TileService
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Android.App;
|
||||||
using Android.Content;
|
using Android.Content;
|
||||||
|
using Android.OS;
|
||||||
using Android.Provider;
|
using Android.Provider;
|
||||||
using Bit.App.Utilities;
|
using Bit.App.Utilities;
|
||||||
|
|
||||||
@@ -47,5 +49,22 @@ namespace Bit.Droid.Utilities
|
|||||||
await AppHelpers.SetPreconfiguredSettingsAsync(dict);
|
await AppHelpers.SetPreconfiguredSettingsAsync(dict);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static PendingIntentFlags AddPendingIntentMutabilityFlag(PendingIntentFlags pendingIntentFlags, bool isMutable)
|
||||||
|
{
|
||||||
|
//Mutable flag was added on API level 31
|
||||||
|
if (isMutable && Build.VERSION.SdkInt >= BuildVersionCodes.S)
|
||||||
|
{
|
||||||
|
return pendingIntentFlags | PendingIntentFlags.Mutable;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Immutable flag was added on API level 23
|
||||||
|
if (!isMutable && Build.VERSION.SdkInt >= BuildVersionCodes.M)
|
||||||
|
{
|
||||||
|
return pendingIntentFlags | PendingIntentFlags.Immutable;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pendingIntentFlags;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ namespace Bit.Droid
|
|||||||
{
|
{
|
||||||
[Activity(
|
[Activity(
|
||||||
NoHistory = true,
|
NoHistory = true,
|
||||||
LaunchMode = LaunchMode.SingleTop)]
|
LaunchMode = LaunchMode.SingleTop,
|
||||||
|
Exported = true)]
|
||||||
[IntentFilter(new[] { Android.Content.Intent.ActionView },
|
[IntentFilter(new[] { Android.Content.Intent.ActionView },
|
||||||
Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable },
|
Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable },
|
||||||
DataScheme = "bitwarden")]
|
DataScheme = "bitwarden")]
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netstandard2.1</TargetFramework>
|
||||||
<RootNamespace>Bit.App</RootNamespace>
|
<RootNamespace>Bit.App</RootNamespace>
|
||||||
<AssemblyName>BitwardenApp</AssemblyName>
|
<AssemblyName>BitwardenApp</AssemblyName>
|
||||||
<Configurations>Debug;Release;FDroid</Configurations>
|
<Configurations>Debug;Release;FDroid</Configurations>
|
||||||
@@ -14,11 +14,11 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Plugin.Fingerprint" Version="2.1.5" />
|
<PackageReference Include="Plugin.Fingerprint" Version="2.1.5" />
|
||||||
<PackageReference Include="SkiaSharp.Views.Forms" Version="2.80.3" />
|
<PackageReference Include="SkiaSharp.Views.Forms" Version="2.88.2" />
|
||||||
<PackageReference Include="Xamarin.CommunityToolkit" Version="2.0.2" />
|
<PackageReference Include="Xamarin.CommunityToolkit" Version="2.0.5" />
|
||||||
<PackageReference Include="Xamarin.Essentials" Version="1.7.3" />
|
<PackageReference Include="Xamarin.Essentials" Version="1.7.3" />
|
||||||
<PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.4.11.982" />
|
<PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.4.11.982" />
|
||||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2478" />
|
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2515" />
|
||||||
<PackageReference Include="ZXing.Net.Mobile" Version="2.4.1" />
|
<PackageReference Include="ZXing.Net.Mobile" Version="2.4.1" />
|
||||||
<PackageReference Include="ZXing.Net.Mobile.Forms" Version="2.4.1" />
|
<PackageReference Include="ZXing.Net.Mobile.Forms" Version="2.4.1" />
|
||||||
<PackageReference Include="Xamarin.CommunityToolkit" Version="1.3.0" />
|
<PackageReference Include="Xamarin.CommunityToolkit" Version="1.3.0" />
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
<ContentPage.ToolbarItems>
|
<ContentPage.ToolbarItems>
|
||||||
<ToolbarItem Text="{u:I18n Close}" Clicked="Close_Clicked" Order="Primary" Priority="-1" />
|
<ToolbarItem Text="{u:I18n Close}" Clicked="Close_Clicked" Order="Primary" Priority="-1" />
|
||||||
<ToolbarItem Text="{u:I18n Save}" Clicked="Save_Clicked" />
|
<ToolbarItem Text="{u:I18n Save}" Command="{Binding SubmitAsyncCommand}" />
|
||||||
</ContentPage.ToolbarItems>
|
</ContentPage.ToolbarItems>
|
||||||
|
|
||||||
<ContentPage.Resources>
|
<ContentPage.Resources>
|
||||||
|
|||||||
@@ -51,14 +51,6 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void Save_Clicked(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (DoOnce())
|
|
||||||
{
|
|
||||||
await _vm.SubmitAsync();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private async void ChooseFile_Clicked(object sender, EventArgs e)
|
private async void ChooseFile_Clicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (DoOnce())
|
if (DoOnce())
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Input;
|
||||||
using Bit.App.Abstractions;
|
using Bit.App.Abstractions;
|
||||||
using Bit.App.Resources;
|
using Bit.App.Resources;
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
@@ -8,6 +10,7 @@ using Bit.Core.Exceptions;
|
|||||||
using Bit.Core.Models.Domain;
|
using Bit.Core.Models.Domain;
|
||||||
using Bit.Core.Models.View;
|
using Bit.Core.Models.View;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
|
using Xamarin.CommunityToolkit.ObjectModel;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
|
|
||||||
namespace Bit.App.Pages
|
namespace Bit.App.Pages
|
||||||
@@ -20,6 +23,7 @@ namespace Bit.App.Pages
|
|||||||
private readonly IStateService _stateService;
|
private readonly IStateService _stateService;
|
||||||
private readonly IVaultTimeoutService _vaultTimeoutService;
|
private readonly IVaultTimeoutService _vaultTimeoutService;
|
||||||
private readonly IPlatformUtilsService _platformUtilsService;
|
private readonly IPlatformUtilsService _platformUtilsService;
|
||||||
|
private readonly ILogger _logger;
|
||||||
private CipherView _cipher;
|
private CipherView _cipher;
|
||||||
private Cipher _cipherDomain;
|
private Cipher _cipherDomain;
|
||||||
private bool _hasAttachments;
|
private bool _hasAttachments;
|
||||||
@@ -35,8 +39,10 @@ namespace Bit.App.Pages
|
|||||||
_platformUtilsService = ServiceContainer.Resolve<IPlatformUtilsService>("platformUtilsService");
|
_platformUtilsService = ServiceContainer.Resolve<IPlatformUtilsService>("platformUtilsService");
|
||||||
_stateService = ServiceContainer.Resolve<IStateService>("stateService");
|
_stateService = ServiceContainer.Resolve<IStateService>("stateService");
|
||||||
_vaultTimeoutService = ServiceContainer.Resolve<IVaultTimeoutService>("vaultTimeoutService");
|
_vaultTimeoutService = ServiceContainer.Resolve<IVaultTimeoutService>("vaultTimeoutService");
|
||||||
|
_logger = ServiceContainer.Resolve<ILogger>();
|
||||||
Attachments = new ExtendedObservableCollection<AttachmentView>();
|
Attachments = new ExtendedObservableCollection<AttachmentView>();
|
||||||
DeleteAttachmentCommand = new Command<AttachmentView>(DeleteAsync);
|
DeleteAttachmentCommand = new Command<AttachmentView>(DeleteAsync);
|
||||||
|
SubmitAsyncCommand = new AsyncCommand(SubmitAsync, allowsMultipleExecutions: false);
|
||||||
PageTitle = AppResources.Attachments;
|
PageTitle = AppResources.Attachments;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,6 +65,7 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
public byte[] FileData { get; set; }
|
public byte[] FileData { get; set; }
|
||||||
public Command DeleteAttachmentCommand { get; set; }
|
public Command DeleteAttachmentCommand { get; set; }
|
||||||
|
public ICommand SubmitAsyncCommand { get; }
|
||||||
|
|
||||||
public async Task InitAsync()
|
public async Task InitAsync()
|
||||||
{
|
{
|
||||||
@@ -125,6 +132,7 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
catch (ApiException e)
|
catch (ApiException e)
|
||||||
{
|
{
|
||||||
|
_logger.Exception(e);
|
||||||
await _deviceActionService.HideLoadingAsync();
|
await _deviceActionService.HideLoadingAsync();
|
||||||
if (e?.Error != null)
|
if (e?.Error != null)
|
||||||
{
|
{
|
||||||
@@ -132,6 +140,12 @@ namespace Bit.App.Pages
|
|||||||
AppResources.AnErrorHasOccurred);
|
AppResources.AnErrorHasOccurred);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_logger.Exception(e);
|
||||||
|
await _deviceActionService.HideLoadingAsync();
|
||||||
|
await _platformUtilsService.ShowDialogAsync(AppResources.GenericErrorMessage, AppResources.AnErrorHasOccurred);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool ShowUpgradePremiumTotpText => !CanAccessPremium && ShowTotp;
|
public bool ShowUpgradePremiumTotpText => !CanAccessPremium && !Cipher.OrganizationUseTotp && ShowTotp;
|
||||||
public bool ShowUris => IsLogin && Cipher.Login.HasUris;
|
public bool ShowUris => IsLogin && Cipher.Login.HasUris;
|
||||||
public bool ShowIdentityAddress => IsIdentity && (
|
public bool ShowIdentityAddress => IsIdentity && (
|
||||||
!string.IsNullOrWhiteSpace(Cipher.Identity.Address1) ||
|
!string.IsNullOrWhiteSpace(Cipher.Identity.Address1) ||
|
||||||
@@ -216,7 +216,7 @@ namespace Bit.App.Pages
|
|||||||
public string PasswordVisibilityAccessibilityText => ShowPassword ? AppResources.PasswordIsVisibleTapToHide : AppResources.PasswordIsNotVisibleTapToShow;
|
public string PasswordVisibilityAccessibilityText => ShowPassword ? AppResources.PasswordIsVisibleTapToHide : AppResources.PasswordIsNotVisibleTapToShow;
|
||||||
public string TotpCodeFormatted
|
public string TotpCodeFormatted
|
||||||
{
|
{
|
||||||
get => _canAccessPremium ? _totpCodeFormatted : string.Empty;
|
get => ShowUpgradePremiumTotpText ? string.Empty : _totpCodeFormatted;
|
||||||
set => SetProperty(ref _totpCodeFormatted, value,
|
set => SetProperty(ref _totpCodeFormatted, value,
|
||||||
additionalPropertyNames: new string[]
|
additionalPropertyNames: new string[]
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -204,7 +204,6 @@ namespace Bit.App.Pages
|
|||||||
{
|
{
|
||||||
PageTitle = ShowVaultFilter ? AppResources.Vaults : AppResources.MyVault;
|
PageTitle = ShowVaultFilter ? AppResources.Vaults : AppResources.MyVault;
|
||||||
}
|
}
|
||||||
var canAccessPremium = await _stateService.CanAccessPremiumAsync();
|
|
||||||
_doingLoad = true;
|
_doingLoad = true;
|
||||||
LoadedOnce = true;
|
LoadedOnce = true;
|
||||||
ShowNoData = false;
|
ShowNoData = false;
|
||||||
@@ -235,7 +234,7 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
if (MainPage)
|
if (MainPage)
|
||||||
{
|
{
|
||||||
AddTotpGroupItem(canAccessPremium, groupedItems, uppercaseGroupNames);
|
AddTotpGroupItem(groupedItems, uppercaseGroupNames);
|
||||||
|
|
||||||
groupedItems.Add(new GroupingsPageListGroup(
|
groupedItems.Add(new GroupingsPageListGroup(
|
||||||
AppResources.Types, 4, uppercaseGroupNames, !hasFavorites)
|
AppResources.Types, 4, uppercaseGroupNames, !hasFavorites)
|
||||||
@@ -386,9 +385,9 @@ namespace Bit.App.Pages
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddTotpGroupItem(bool canAccessPremium, List<GroupingsPageListGroup> groupedItems, bool uppercaseGroupNames)
|
private void AddTotpGroupItem(List<GroupingsPageListGroup> groupedItems, bool uppercaseGroupNames)
|
||||||
{
|
{
|
||||||
if (canAccessPremium && TOTPCiphers?.Any() == true)
|
if (TOTPCiphers?.Any() == true)
|
||||||
{
|
{
|
||||||
groupedItems.Insert(0, new GroupingsPageListGroup(
|
groupedItems.Insert(0, new GroupingsPageListGroup(
|
||||||
AppResources.Totp, 1, uppercaseGroupNames, false)
|
AppResources.Totp, 1, uppercaseGroupNames, false)
|
||||||
@@ -541,10 +540,11 @@ namespace Bit.App.Pages
|
|||||||
|
|
||||||
private async Task LoadDataAsync()
|
private async Task LoadDataAsync()
|
||||||
{
|
{
|
||||||
|
var canAccessPremium = await _stateService.CanAccessPremiumAsync();
|
||||||
NoDataText = AppResources.NoItems;
|
NoDataText = AppResources.NoItems;
|
||||||
_allCiphers = await GetAllCiphersAsync();
|
_allCiphers = await GetAllCiphersAsync();
|
||||||
HasCiphers = _allCiphers.Any();
|
HasCiphers = _allCiphers.Any();
|
||||||
TOTPCiphers = _allCiphers.Where(c => c.IsDeleted == Deleted && c.Type == CipherType.Login && !string.IsNullOrEmpty(c.Login?.Totp)).ToList();
|
TOTPCiphers = _allCiphers.Where(c => c.IsDeleted == Deleted && c.Type == CipherType.Login && !string.IsNullOrEmpty(c.Login?.Totp) && (c.OrganizationUseTotp || canAccessPremium)).ToList();
|
||||||
FavoriteCiphers?.Clear();
|
FavoriteCiphers?.Clear();
|
||||||
NoFolderCiphers?.Clear();
|
NoFolderCiphers?.Clear();
|
||||||
_folderCounts.Clear();
|
_folderCounts.Clear();
|
||||||
|
|||||||
@@ -2315,44 +2315,44 @@
|
|||||||
<value>هل أنت متأكد من أنك تريد تمكين التقاط الشاشة؟</value>
|
<value>هل أنت متأكد من أنك تريد تمكين التقاط الشاشة؟</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordType" xml:space="preserve">
|
<data name="PasswordType" xml:space="preserve">
|
||||||
<value>Password Type</value>
|
<value>نوع كلمة المرور</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WhatWouldYouLikeToGenerate" xml:space="preserve">
|
<data name="WhatWouldYouLikeToGenerate" xml:space="preserve">
|
||||||
<value>What would you like to generate?</value>
|
<value>ما الذي ترغب في توليده؟</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UsernameType" xml:space="preserve">
|
<data name="UsernameType" xml:space="preserve">
|
||||||
<value>Username Type</value>
|
<value>نوع اسم المستخدم</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlusAddressedEmail" xml:space="preserve">
|
<data name="PlusAddressedEmail" xml:space="preserve">
|
||||||
<value>Plus Addressed Email</value>
|
<value>بريد إلكتروني موجه أكثر</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CatchAllEmail" xml:space="preserve">
|
<data name="CatchAllEmail" xml:space="preserve">
|
||||||
<value>Catch-all Email</value>
|
<value>تجميع كل البريد</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForwardedEmailAlias" xml:space="preserve">
|
<data name="ForwardedEmailAlias" xml:space="preserve">
|
||||||
<value>Forwarded Email Alias</value>
|
<value>إعادة توجيه الاسم المستعار للبريد الإلكتروني</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RandomWord" xml:space="preserve">
|
<data name="RandomWord" xml:space="preserve">
|
||||||
<value>Random Word</value>
|
<value>كلمة عشوائية</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailRequiredParenthesis" xml:space="preserve">
|
<data name="EmailRequiredParenthesis" xml:space="preserve">
|
||||||
<value>Email (required)</value>
|
<value>البريد الإلكتروني (مطلوب)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DomainNameRequiredParenthesis" xml:space="preserve">
|
<data name="DomainNameRequiredParenthesis" xml:space="preserve">
|
||||||
<value>Domain Name (required)</value>
|
<value>اسم المجال (مطلوب)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="APIKeyRequiredParenthesis" xml:space="preserve">
|
<data name="APIKeyRequiredParenthesis" xml:space="preserve">
|
||||||
<value>API Key (required)</value>
|
<value>مفتاح API (مطلوب)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>الخدمة</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnonAddy" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>AnonAddy</value>
|
<value>AnonAddy</value>
|
||||||
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
<comment>"AnonAddy" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FirefoxRelay" xml:space="preserve">
|
<data name="FirefoxRelay" xml:space="preserve">
|
||||||
<value>Firefox Relay</value>
|
<value>FirefoxRelay</value>
|
||||||
<comment>"Firefox Relay" is the product name and should not be translated.</comment>
|
<comment>"Firefox Relay" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="SimpleLogin" xml:space="preserve">
|
<data name="SimpleLogin" xml:space="preserve">
|
||||||
@@ -2360,33 +2360,33 @@
|
|||||||
<comment>"SimpleLogin" is the product name and should not be translated.</comment>
|
<comment>"SimpleLogin" is the product name and should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="APIAccessToken" xml:space="preserve">
|
<data name="APIAccessToken" xml:space="preserve">
|
||||||
<value>API Access Token</value>
|
<value>رمز الوصول API</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureYouWantToOverwriteTheCurrentUsername" xml:space="preserve">
|
<data name="AreYouSureYouWantToOverwriteTheCurrentUsername" xml:space="preserve">
|
||||||
<value>Are you sure you want to overwrite the current username?</value>
|
<value>هل أنت متأكد من أنك تريد الكتابة فوق اسم المستخدم الحالي؟</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GenerateUsername" xml:space="preserve">
|
<data name="GenerateUsername" xml:space="preserve">
|
||||||
<value>Generate Username</value>
|
<value>إنشاء اسم المستخدم</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailType" xml:space="preserve">
|
<data name="EmailType" xml:space="preserve">
|
||||||
<value>Email Type</value>
|
<value>نوع البريد الإلكتروني</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WebsiteRequired" xml:space="preserve">
|
<data name="WebsiteRequired" xml:space="preserve">
|
||||||
<value>Website (required)</value>
|
<value>الموقع (مطلوب)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnknownXErrorMessage" xml:space="preserve">
|
<data name="UnknownXErrorMessage" xml:space="preserve">
|
||||||
<value>Unknown {0} error occurred.</value>
|
<value>حدث خطأ {0} غير معروف.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
||||||
<value>Use your email provider's subaddress capabilities</value>
|
<value>استخدم قدرات العنوان الفرعي لمقدم البريد الإلكتروني الخاص بك</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CatchAllEmailDescription" xml:space="preserve">
|
<data name="CatchAllEmailDescription" xml:space="preserve">
|
||||||
<value>Use your domain's configured catch-all inbox.</value>
|
<value>استخدم علبة البريد الإلكتروني الشاملة التي تم تكوينها في نطاقك.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForwardedEmailDescription" xml:space="preserve">
|
<data name="ForwardedEmailDescription" xml:space="preserve">
|
||||||
<value>Generate an email alias with an external forwarding service.</value>
|
<value>إنشاء بريد إلكتروني مستعار مع خدمة إعادة توجيه خارجية.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Random" xml:space="preserve">
|
<data name="Random" xml:space="preserve">
|
||||||
<value>Random</value>
|
<value>عشوائي</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1553,7 +1553,7 @@
|
|||||||
<value>Προεπιλεγμένο σκοτεινό θέμα</value>
|
<value>Προεπιλεγμένο σκοτεινό θέμα</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DefaultDarkThemeDescription" xml:space="preserve">
|
<data name="DefaultDarkThemeDescription" xml:space="preserve">
|
||||||
<value>Choose the dark theme to use when using Default (System) theme while your device's dark mode is enabled.</value>
|
<value>Επιλέξτε το σκούρο θέμα που θα χρησιμοποιηθεί όταν χρησιμοποιείτε το προεπιλεγμένο (System) θέμα ενώ η σκοτεινή λειτουργία της συσκευής σας είναι ενεργοποιημένη.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CopyNotes" xml:space="preserve">
|
<data name="CopyNotes" xml:space="preserve">
|
||||||
<value>Αντιγραφή Σημειώσεων</value>
|
<value>Αντιγραφή Σημειώσεων</value>
|
||||||
@@ -1576,16 +1576,16 @@
|
|||||||
<comment>'Nord' is the name of a specific color scheme. It should not be translated.</comment>
|
<comment>'Nord' is the name of a specific color scheme. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillBlockedUris" xml:space="preserve">
|
<data name="AutofillBlockedUris" xml:space="preserve">
|
||||||
<value>Auto-fill blocked URIs</value>
|
<value>Αυτόματη συμπλήρωση μπλοκαρισμένων URIs</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillBlockedUrisDescription" xml:space="preserve">
|
<data name="AutofillBlockedUrisDescription" xml:space="preserve">
|
||||||
<value>Auto-fill will not be offered for blocked URIs. Separate multiple URIs with a comma. For example: "https://twitter.com, androidapp://com.twitter.android".</value>
|
<value>Η αυτόματη συμπλήρωση δεν θα προσφερθεί για μπλοκαρισμένα URI. Ξεχωρίστε πολλαπλά URI με κόμμα. Για παράδειγμα: "https://twitter.com, androidapp://com.twitter.android".</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AskToAddLogin" xml:space="preserve">
|
<data name="AskToAddLogin" xml:space="preserve">
|
||||||
<value>Ask to add login</value>
|
<value>Ζητήστε να προσθέστε σύνδεση</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AskToAddLoginDescription" xml:space="preserve">
|
<data name="AskToAddLoginDescription" xml:space="preserve">
|
||||||
<value>Ask to add an item if one isn't found in your vault.</value>
|
<value>Ζητήστε να προσθέσετε ένα αντικείμενο αν δε βρεθεί στην κρύπτη σας.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OnRestart" xml:space="preserve">
|
<data name="OnRestart" xml:space="preserve">
|
||||||
<value>Κατά την Επανεκκίνηση Εφαρμογής</value>
|
<value>Κατά την Επανεκκίνηση Εφαρμογής</value>
|
||||||
@@ -1898,16 +1898,16 @@
|
|||||||
<value>Το αρχείο που θέλετε να στείλετε.</value>
|
<value>Το αρχείο που θέλετε να στείλετε.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FileTypeIsSelected" xml:space="preserve">
|
<data name="FileTypeIsSelected" xml:space="preserve">
|
||||||
<value>File type is selected.</value>
|
<value>Ο τύπος αρχείου είναι επιλεγμένος.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FileTypeIsNotSelected" xml:space="preserve">
|
<data name="FileTypeIsNotSelected" xml:space="preserve">
|
||||||
<value>File type is not selected, tap to select.</value>
|
<value>Ο τύπος αρχείου δεν είναι επιλεγμένος, πατήστε για επιλογή.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TextTypeIsSelected" xml:space="preserve">
|
<data name="TextTypeIsSelected" xml:space="preserve">
|
||||||
<value>Text type is selected.</value>
|
<value>Ο τύπος κειμένου είναι επιλεγμένος.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TextTypeIsNotSelected" xml:space="preserve">
|
<data name="TextTypeIsNotSelected" xml:space="preserve">
|
||||||
<value>Text type is not selected, tap to select.</value>
|
<value>Ο τύπος κειμένου δεν είναι επιλεγμένος, πατήστε για επιλογή.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DeletionDate" xml:space="preserve">
|
<data name="DeletionDate" xml:space="preserve">
|
||||||
<value>Ημερομηνία διαγραφής</value>
|
<value>Ημερομηνία διαγραφής</value>
|
||||||
@@ -2214,40 +2214,40 @@
|
|||||||
<value>Εισάγετε τον κωδικό επαλήθευσης που έχει σταλεί στο email σας</value>
|
<value>Εισάγετε τον κωδικό επαλήθευσης που έχει σταλεί στο email σας</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SubmitCrashLogs" xml:space="preserve">
|
<data name="SubmitCrashLogs" xml:space="preserve">
|
||||||
<value>Submit crash logs</value>
|
<value>Υποβολή αρχείου καταγραφής σφαλμάτων</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SubmitCrashLogsDescription" xml:space="preserve">
|
<data name="SubmitCrashLogsDescription" xml:space="preserve">
|
||||||
<value>Help Bitwarden improve app stability by submitting crash reports.</value>
|
<value>Βοηθήστε το Bitwarden να βελτιώσει τη σταθερότητα της εφαρμογής υποβάλλοντας αναφορές κολλημάτων.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OptionsExpanded" xml:space="preserve">
|
<data name="OptionsExpanded" xml:space="preserve">
|
||||||
<value>Options are expanded, tap to collapse.</value>
|
<value>Οι επιλογές έχουν επεκταθεί, πατήστε για κατάρρευση.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OptionsCollapsed" xml:space="preserve">
|
<data name="OptionsCollapsed" xml:space="preserve">
|
||||||
<value>Options are collapsed, tap to expand.</value>
|
<value>Οι επιλογές έχουν συμπτυχθεί, πατήστε για επέκταση.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UppercaseAtoZ" xml:space="preserve">
|
<data name="UppercaseAtoZ" xml:space="preserve">
|
||||||
<value>Uppercase (A to Z)</value>
|
<value>Κεφαλαία (A-Z)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LowercaseAtoZ" xml:space="preserve">
|
<data name="LowercaseAtoZ" xml:space="preserve">
|
||||||
<value>Lowercase (A to Z)</value>
|
<value>Πεζά (A-Z)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NumbersZeroToNine" xml:space="preserve">
|
<data name="NumbersZeroToNine" xml:space="preserve">
|
||||||
<value>Numbers (0 to 9)</value>
|
<value>Αριθμοί (0-9)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SpecialCharacters" xml:space="preserve">
|
<data name="SpecialCharacters" xml:space="preserve">
|
||||||
<value>Special Characters (!@#$%^&*)</value>
|
<value>Ειδικοί Χαρακτήρες (!@#$%^&*)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TapToGoBack" xml:space="preserve">
|
<data name="TapToGoBack" xml:space="preserve">
|
||||||
<value>Tap to go back</value>
|
<value>Πατήστε για να πάτε πίσω</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordIsVisibleTapToHide" xml:space="preserve">
|
<data name="PasswordIsVisibleTapToHide" xml:space="preserve">
|
||||||
<value>Password is visible, tap to hide.</value>
|
<value>Ο κωδικός πρόσβασης είναι ορατός, πατήστε για απόκρυψη.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordIsNotVisibleTapToShow" xml:space="preserve">
|
<data name="PasswordIsNotVisibleTapToShow" xml:space="preserve">
|
||||||
<value>Password is not visible, tap to show.</value>
|
<value>Ο κωδικός πρόσβασης δεν είναι ορατός, πατήστε για εμφάνιση.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FilterByVault" xml:space="preserve">
|
<data name="FilterByVault" xml:space="preserve">
|
||||||
<value>Filter items by vault</value>
|
<value>Φιλτράρισμα αντικειμένων ανά κρύπτη</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllVaults" xml:space="preserve">
|
<data name="AllVaults" xml:space="preserve">
|
||||||
<value>Όλα τα Vaults</value>
|
<value>Όλα τα Vaults</value>
|
||||||
@@ -2265,86 +2265,86 @@
|
|||||||
<value>TOTP</value>
|
<value>TOTP</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="VerificationCodes" xml:space="preserve">
|
<data name="VerificationCodes" xml:space="preserve">
|
||||||
<value>Verification Codes</value>
|
<value>Κωδικοί Επαλήθευσης</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PremiumSubscriptionRequired" xml:space="preserve">
|
<data name="PremiumSubscriptionRequired" xml:space="preserve">
|
||||||
<value>Premium subscription required</value>
|
<value>Απαιτείται συνδρομή Premium</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotAddAuthenticatorKey" xml:space="preserve">
|
<data name="CannotAddAuthenticatorKey" xml:space="preserve">
|
||||||
<value>Cannot add authenticator key? </value>
|
<value>Αδυναμία προσθήκης κλειδιού ταυτοποίησης; </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ScanQRCode" xml:space="preserve">
|
<data name="ScanQRCode" xml:space="preserve">
|
||||||
<value>Scan QR Code</value>
|
<value>Σάρωση κωδικού QR</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CannotScanQRCode" xml:space="preserve">
|
<data name="CannotScanQRCode" xml:space="preserve">
|
||||||
<value>Cannot scan QR Code? </value>
|
<value>Αδυναμία σάρωσης κωδικού QR; </value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AuthenticatorKeyScanner" xml:space="preserve">
|
<data name="AuthenticatorKeyScanner" xml:space="preserve">
|
||||||
<value>Authenticator Key</value>
|
<value>Κλειδί επαλήθευσης</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterKeyManually" xml:space="preserve">
|
<data name="EnterKeyManually" xml:space="preserve">
|
||||||
<value>Enter Key Manually</value>
|
<value>Χειροκίνητη Εισαγωγή Κλειδιού</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AddTotp" xml:space="preserve">
|
<data name="AddTotp" xml:space="preserve">
|
||||||
<value>Add TOTP</value>
|
<value>Προσθήκη TOTP</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SetupTotp" xml:space="preserve">
|
<data name="SetupTotp" xml:space="preserve">
|
||||||
<value>Set up TOTP</value>
|
<value>Ρύθμιση TOTP</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="OnceTheKeyIsSuccessfullyEntered" xml:space="preserve">
|
<data name="OnceTheKeyIsSuccessfullyEntered" xml:space="preserve">
|
||||||
<value>Once the key is successfully entered,
|
<value>Μόλις το κλειδί εισαχθεί με επιτυχία,
|
||||||
select Add TOTP to store the key safely</value>
|
επιλέξτε Προσθήκη TOTP για να αποθηκεύσετε το κλειδί με ασφάλεια</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SelectAddTotpToStoreTheKeySafely" xml:space="preserve">
|
<data name="SelectAddTotpToStoreTheKeySafely" xml:space="preserve">
|
||||||
<value></value>
|
<value></value>
|
||||||
</data>
|
</data>
|
||||||
<data name="NeverLockWarning" xml:space="preserve">
|
<data name="NeverLockWarning" xml:space="preserve">
|
||||||
<value>Setting your lock options to “Never” keeps your vault available to anyone with access to your device. If you use this option, you should ensure that you keep your device properly protected.</value>
|
<value>Ρυθμίζοντας τις επιλογές κλειδώματος σε “Ποτέ” κρατά τη κρύπτη σας διαθέσιμη σε οποιονδήποτε με πρόσβαση στη συσκευή σας. Εάν χρησιμοποιείτε αυτήν την επιλογή, θα πρέπει να διασφαλίσετε ότι διατηρείτε τη συσκευή σας σωστά προστατευμένη.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnvironmentPageUrlsError" xml:space="preserve">
|
<data name="EnvironmentPageUrlsError" xml:space="preserve">
|
||||||
<value>One or more of the URLs entered are invalid. Please revise it and try to save again.</value>
|
<value>Ένα ή περισσότερα από τα καταχωρημένα URL δεν είναι έγκυρα. Παρακαλώ αναθεωρήστε το και προσπαθήστε να αποθηκεύσετε ξανά.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GenericErrorMessage" xml:space="preserve">
|
<data name="GenericErrorMessage" xml:space="preserve">
|
||||||
<value>We were unable to process your request. Please try again or contact us.</value>
|
<value>Δεν μπορούμε να επεξεργαστούμε το αίτημά σας τώρα. Παρακαλούμε προσπαθήστε ξανά ή επικοινωνήστε με την υποστήριξη.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AllowScreenCapture" xml:space="preserve">
|
<data name="AllowScreenCapture" xml:space="preserve">
|
||||||
<value>Allow screen capture</value>
|
<value>Να επιτρέπεται η καταγραφή οθόνης</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureYouWantToEnableScreenCapture" xml:space="preserve">
|
<data name="AreYouSureYouWantToEnableScreenCapture" xml:space="preserve">
|
||||||
<value>Are you sure you want to enable Screen Capture?</value>
|
<value>Είστε βέβαιοι ότι θέλετε να ενεργοποιήσετε την καταγραφή οθόνης;</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordType" xml:space="preserve">
|
<data name="PasswordType" xml:space="preserve">
|
||||||
<value>Password Type</value>
|
<value>Τύπος Κωδικού</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WhatWouldYouLikeToGenerate" xml:space="preserve">
|
<data name="WhatWouldYouLikeToGenerate" xml:space="preserve">
|
||||||
<value>What would you like to generate?</value>
|
<value>Τι θα θέλατε να δημιουργήσετε;</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UsernameType" xml:space="preserve">
|
<data name="UsernameType" xml:space="preserve">
|
||||||
<value>Username Type</value>
|
<value>Τύπος Ονόματος Χρήστη</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlusAddressedEmail" xml:space="preserve">
|
<data name="PlusAddressedEmail" xml:space="preserve">
|
||||||
<value>Plus Addressed Email</value>
|
<value>Συν Διεύθυνση Email</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CatchAllEmail" xml:space="preserve">
|
<data name="CatchAllEmail" xml:space="preserve">
|
||||||
<value>Catch-all Email</value>
|
<value>Catch-all Email</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForwardedEmailAlias" xml:space="preserve">
|
<data name="ForwardedEmailAlias" xml:space="preserve">
|
||||||
<value>Forwarded Email Alias</value>
|
<value>Προωθημένο Ψευδώνυμο Email</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RandomWord" xml:space="preserve">
|
<data name="RandomWord" xml:space="preserve">
|
||||||
<value>Random Word</value>
|
<value>Τυχαία Λέξη</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailRequiredParenthesis" xml:space="preserve">
|
<data name="EmailRequiredParenthesis" xml:space="preserve">
|
||||||
<value>Email (required)</value>
|
<value>Email (απαιτείται)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="DomainNameRequiredParenthesis" xml:space="preserve">
|
<data name="DomainNameRequiredParenthesis" xml:space="preserve">
|
||||||
<value>Domain Name (required)</value>
|
<value>Όνομα Τομέα (απαιτείται)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="APIKeyRequiredParenthesis" xml:space="preserve">
|
<data name="APIKeyRequiredParenthesis" xml:space="preserve">
|
||||||
<value>API Key (required)</value>
|
<value>Κλειδί API (απαιτείται)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Service</value>
|
<value>Υπηρεσία</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AnonAddy" xml:space="preserve">
|
<data name="AnonAddy" xml:space="preserve">
|
||||||
<value>AnonAddy</value>
|
<value>AnonAddy</value>
|
||||||
@@ -2362,30 +2362,30 @@ select Add TOTP to store the key safely</value>
|
|||||||
<value>API Access Token</value>
|
<value>API Access Token</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureYouWantToOverwriteTheCurrentUsername" xml:space="preserve">
|
<data name="AreYouSureYouWantToOverwriteTheCurrentUsername" xml:space="preserve">
|
||||||
<value>Are you sure you want to overwrite the current username?</value>
|
<value>Είστε βέβαιοι ότι θέλετε να αντικαταστήσετε το τρέχον όνομα χρήστη;</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GenerateUsername" xml:space="preserve">
|
<data name="GenerateUsername" xml:space="preserve">
|
||||||
<value>Generate Username</value>
|
<value>Δημιουργία Ονόματος Χρήστη</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="EmailType" xml:space="preserve">
|
<data name="EmailType" xml:space="preserve">
|
||||||
<value>Email Type</value>
|
<value>Τύπος Email</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WebsiteRequired" xml:space="preserve">
|
<data name="WebsiteRequired" xml:space="preserve">
|
||||||
<value>Website (required)</value>
|
<value>Ιστοσελίδα (απαιτείται)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnknownXErrorMessage" xml:space="preserve">
|
<data name="UnknownXErrorMessage" xml:space="preserve">
|
||||||
<value>Unknown {0} error occurred.</value>
|
<value>Παρουσιάστηκε άγνωστο {0} σφάλμα.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
||||||
<value>Use your email provider's subaddress capabilities</value>
|
<value>Χρησιμοποιήστε τις δυνατότητες δευτερεύουσας διεύθυνσης του παρόχου email σας</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CatchAllEmailDescription" xml:space="preserve">
|
<data name="CatchAllEmailDescription" xml:space="preserve">
|
||||||
<value>Use your domain's configured catch-all inbox.</value>
|
<value>Χρησιμοποιήστε τα διαμορφωμένα εισερχόμενα catch-all του domain σας.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForwardedEmailDescription" xml:space="preserve">
|
<data name="ForwardedEmailDescription" xml:space="preserve">
|
||||||
<value>Generate an email alias with an external forwarding service.</value>
|
<value>Δημιουργήστε ένα ψευδώνυμο email με μια εξωτερική υπηρεσία προώθησης.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Random" xml:space="preserve">
|
<data name="Random" xml:space="preserve">
|
||||||
<value>Random</value>
|
<value>Τυχαίο</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -296,7 +296,7 @@
|
|||||||
<comment>Text to define that there are more options things to see.</comment>
|
<comment>Text to define that there are more options things to see.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="MyVault" xml:space="preserve">
|
<data name="MyVault" xml:space="preserve">
|
||||||
<value>Nire Kutxa Gotorra</value>
|
<value>Kutxa Gotorra</value>
|
||||||
<comment>The title for the vault page.</comment>
|
<comment>The title for the vault page.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Authenticator" xml:space="preserve">
|
<data name="Authenticator" xml:space="preserve">
|
||||||
@@ -371,7 +371,7 @@
|
|||||||
<comment>Label for a username.</comment>
|
<comment>Label for a username.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="ValidationFieldRequired" xml:space="preserve">
|
<data name="ValidationFieldRequired" xml:space="preserve">
|
||||||
<value>{0} eremua ezinbestekoa da.</value>
|
<value>{0} ezinbestekoa da.</value>
|
||||||
<comment>Validation message for when a form field is left blank and is required to be entered.</comment>
|
<comment>Validation message for when a form field is left blank and is required to be entered.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="ValueHasBeenCopied" xml:space="preserve">
|
<data name="ValueHasBeenCopied" xml:space="preserve">
|
||||||
@@ -1016,7 +1016,7 @@
|
|||||||
<value>Saio-hasiera</value>
|
<value>Saio-hasiera</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TypeSecureNote" xml:space="preserve">
|
<data name="TypeSecureNote" xml:space="preserve">
|
||||||
<value>Ohar segurua</value>
|
<value>Ohar seguruak</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Address1" xml:space="preserve">
|
<data name="Address1" xml:space="preserve">
|
||||||
<value>1go helbidea</value>
|
<value>1go helbidea</value>
|
||||||
@@ -1151,7 +1151,7 @@
|
|||||||
<value>Kutxa gotorra blokeatuta dago</value>
|
<value>Kutxa gotorra blokeatuta dago</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GoToMyVault" xml:space="preserve">
|
<data name="GoToMyVault" xml:space="preserve">
|
||||||
<value>Joan nire kutxa gotorrera</value>
|
<value>Joan kutxa gotorrera</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Collections" xml:space="preserve">
|
<data name="Collections" xml:space="preserve">
|
||||||
<value>Bildumak</value>
|
<value>Bildumak</value>
|
||||||
@@ -1952,7 +1952,7 @@
|
|||||||
<value>Pasahitz berria</value>
|
<value>Pasahitz berria</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordInfo" xml:space="preserve">
|
<data name="PasswordInfo" xml:space="preserve">
|
||||||
<value>Nahi izanez gero, pasahitza eskatu erabiltzaileak bidalketa honetara sar daitezen.</value>
|
<value>Nahi izanez gero, pasahitza eskatu erabiltzaileak Send honetara sar daitezen.</value>
|
||||||
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="RemovePassword" xml:space="preserve">
|
<data name="RemovePassword" xml:space="preserve">
|
||||||
|
|||||||
@@ -705,7 +705,7 @@
|
|||||||
<comment>What Apple calls their fingerprint reader.</comment>
|
<comment>What Apple calls their fingerprint reader.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="TwoStepLogin" xml:space="preserve">
|
<data name="TwoStepLogin" xml:space="preserve">
|
||||||
<value>Identification à double facteurs</value>
|
<value>Identification en deux étapes</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TwoStepLoginConfirmation" xml:space="preserve">
|
<data name="TwoStepLoginConfirmation" xml:space="preserve">
|
||||||
<value>L'authentification en deux étapes sécurise davantage votre compte en exigeant que chaque connexion soit confirmée par un autre dispositif tel qu'une clé de sécurité, une application d'authentification, un SMS, un appel téléphonique ou un courriel. Cette option peut être activée depuis le coffre web sur bitwarden.com. Voulez-vous y accéder maintenant ?</value>
|
<value>L'authentification en deux étapes sécurise davantage votre compte en exigeant que chaque connexion soit confirmée par un autre dispositif tel qu'une clé de sécurité, une application d'authentification, un SMS, un appel téléphonique ou un courriel. Cette option peut être activée depuis le coffre web sur bitwarden.com. Voulez-vous y accéder maintenant ?</value>
|
||||||
@@ -727,7 +727,7 @@
|
|||||||
<value>Afficher l'élément</value>
|
<value>Afficher l'élément</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="WebVault" xml:space="preserve">
|
<data name="WebVault" xml:space="preserve">
|
||||||
<value>Coffre web bitwarden</value>
|
<value>Coffre web Bitwarden</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Lost2FAApp" xml:space="preserve">
|
<data name="Lost2FAApp" xml:space="preserve">
|
||||||
<value>Application d'authentification perdue ?</value>
|
<value>Application d'authentification perdue ?</value>
|
||||||
@@ -1170,7 +1170,7 @@ La numérisation se fera automatiquement.</value>
|
|||||||
<value>Service d'accessibilité pour le remplissage automatique</value>
|
<value>Service d'accessibilité pour le remplissage automatique</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillServiceDescription" xml:space="preserve">
|
<data name="AutofillServiceDescription" xml:space="preserve">
|
||||||
<value>Le service de saisie automatique de Bitwarden utilise l'outil de saisie automatique d'Android pour aider à saisir les identifiants, les cartes de crédit et les informations d'identité dans d'autres applis sur votre appareil.</value>
|
<value>Le service de remplissage automatique de Bitwarden utilise l'outil de remplissage automatique d'Android pour aider à saisir les identifiants, les cartes de crédit et les informations d'identité dans d'autres applications sur votre appareil.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BitwardenAutofillServiceDescription" xml:space="preserve">
|
<data name="BitwardenAutofillServiceDescription" xml:space="preserve">
|
||||||
<value>Utilisez le service de remplissage automatique de Bitwarden pour remplir les informations de connexion dans d'autres applications.</value>
|
<value>Utilisez le service de remplissage automatique de Bitwarden pour remplir les informations de connexion dans d'autres applications.</value>
|
||||||
@@ -1307,7 +1307,7 @@ La numérisation se fera automatiquement.</value>
|
|||||||
<value>1. Allez dans l'application "Réglages" d'iOS</value>
|
<value>1. Allez dans l'application "Réglages" d'iOS</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||||
<value>2. Appuyez sur "Mots de passes et comptes"</value>
|
<value>2. Appuyez sur "Mots de passe et comptes"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||||
<value>3. Appuyez sur "Préremplir mots de passe"</value>
|
<value>3. Appuyez sur "Préremplir mots de passe"</value>
|
||||||
@@ -2323,7 +2323,7 @@ sélectionnez Ajouter TOTP pour stocker la clé en toute sécurité</value>
|
|||||||
<value>Type de Nom d'Utilisateur</value>
|
<value>Type de Nom d'Utilisateur</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlusAddressedEmail" xml:space="preserve">
|
<data name="PlusAddressedEmail" xml:space="preserve">
|
||||||
<value>Plus Addressed Email</value>
|
<value>Email prenant en charge le "plus-addressing"</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CatchAllEmail" xml:space="preserve">
|
<data name="CatchAllEmail" xml:space="preserve">
|
||||||
<value>Collecteur d'e-mail</value>
|
<value>Collecteur d'e-mail</value>
|
||||||
@@ -2362,7 +2362,7 @@ sélectionnez Ajouter TOTP pour stocker la clé en toute sécurité</value>
|
|||||||
<value>Jeton d'accès API</value>
|
<value>Jeton d'accès API</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="AreYouSureYouWantToOverwriteTheCurrentUsername" xml:space="preserve">
|
<data name="AreYouSureYouWantToOverwriteTheCurrentUsername" xml:space="preserve">
|
||||||
<value>Are you sure you want to overwrite the current username?</value>
|
<value>Êtes-vous sûr(e) de vouloir remplacer le nom d'utilisateur actuel ?</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GenerateUsername" xml:space="preserve">
|
<data name="GenerateUsername" xml:space="preserve">
|
||||||
<value>Générer un nom d'utilisateur</value>
|
<value>Générer un nom d'utilisateur</value>
|
||||||
@@ -2377,10 +2377,10 @@ sélectionnez Ajouter TOTP pour stocker la clé en toute sécurité</value>
|
|||||||
<value>L'erreur {0} inconnue est survenue.</value>
|
<value>L'erreur {0} inconnue est survenue.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
||||||
<value>Use your email provider's subaddress capabilities</value>
|
<value>Utilisez les capacités de sous-adressage de votre fournisseur de messagerie</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CatchAllEmailDescription" xml:space="preserve">
|
<data name="CatchAllEmailDescription" xml:space="preserve">
|
||||||
<value>Use your domain's configured catch-all inbox.</value>
|
<value>Utilisez la boîte de réception de votre email collecteur/attrape-tout (catch-all).</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForwardedEmailDescription" xml:space="preserve">
|
<data name="ForwardedEmailDescription" xml:space="preserve">
|
||||||
<value>Générer un alias d'email avec un service de transfert externe.</value>
|
<value>Générer un alias d'email avec un service de transfert externe.</value>
|
||||||
|
|||||||
@@ -819,11 +819,11 @@
|
|||||||
<comment>For 2FA</comment>
|
<comment>For 2FA</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterVerificationCodeApp" xml:space="preserve">
|
<data name="EnterVerificationCodeApp" xml:space="preserve">
|
||||||
<value>Ievadi 6 ciparu apstiprinājuma kodu no autentificētāja lietotnes!</value>
|
<value>Jāievada 6 ciparu apstiprinājuma kods no autentificētāja lietotnes.</value>
|
||||||
<comment>For 2FA</comment>
|
<comment>For 2FA</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="EnterVerificationCodeEmail" xml:space="preserve">
|
<data name="EnterVerificationCodeEmail" xml:space="preserve">
|
||||||
<value>Ievadi 6 ciparu apstiprinājuma kodu, kas tika nosūtīts uz $EMAIL$!</value>
|
<value>Jāievada 6 ciparu apstiprinājuma kods, kas tika nosūtīts uz {0}.</value>
|
||||||
<comment>For 2FA</comment>
|
<comment>For 2FA</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="LoginUnavailable" xml:space="preserve">
|
<data name="LoginUnavailable" xml:space="preserve">
|
||||||
|
|||||||
@@ -2386,6 +2386,6 @@ wybierz Dodaj TOTP, aby bezpiecznie przechowywać klucz</value>
|
|||||||
<value>Wygeneruj alias adresu e-mail z zewnętrznej usługi przekazywania.</value>
|
<value>Wygeneruj alias adresu e-mail z zewnętrznej usługi przekazywania.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Random" xml:space="preserve">
|
<data name="Random" xml:space="preserve">
|
||||||
<value>Losowa</value>
|
<value>Losowy</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|||||||
@@ -2324,13 +2324,13 @@ selecione Adicionar TOTP para armazenar a chave de forma segura</value>
|
|||||||
<value>Tipo de Nome de Usuário</value>
|
<value>Tipo de Nome de Usuário</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlusAddressedEmail" xml:space="preserve">
|
<data name="PlusAddressedEmail" xml:space="preserve">
|
||||||
<value>Plus Addressed Email</value>
|
<value>E-mail endereçado mais</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CatchAllEmail" xml:space="preserve">
|
<data name="CatchAllEmail" xml:space="preserve">
|
||||||
<value>Catch-all Email</value>
|
<value>E-mail pega-tudo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForwardedEmailAlias" xml:space="preserve">
|
<data name="ForwardedEmailAlias" xml:space="preserve">
|
||||||
<value>Forwarded Email Alias</value>
|
<value>Alias de E-mail Encaminhado</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RandomWord" xml:space="preserve">
|
<data name="RandomWord" xml:space="preserve">
|
||||||
<value>Palavra Aleatória</value>
|
<value>Palavra Aleatória</value>
|
||||||
@@ -2342,7 +2342,7 @@ selecione Adicionar TOTP para armazenar a chave de forma segura</value>
|
|||||||
<value>Nome do Domínio (obrigatório)</value>
|
<value>Nome do Domínio (obrigatório)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="APIKeyRequiredParenthesis" xml:space="preserve">
|
<data name="APIKeyRequiredParenthesis" xml:space="preserve">
|
||||||
<value>API Key (required)</value>
|
<value>Chave de API (obrigatória)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Service" xml:space="preserve">
|
<data name="Service" xml:space="preserve">
|
||||||
<value>Serviço</value>
|
<value>Serviço</value>
|
||||||
@@ -2375,16 +2375,16 @@ selecione Adicionar TOTP para armazenar a chave de forma segura</value>
|
|||||||
<value>Website (obrigatório)</value>
|
<value>Website (obrigatório)</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="UnknownXErrorMessage" xml:space="preserve">
|
<data name="UnknownXErrorMessage" xml:space="preserve">
|
||||||
<value>Unknown {0} error occurred.</value>
|
<value>Ocorreu um erro desconhecido {0}.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
<data name="PlusAddressedEmailDescription" xml:space="preserve">
|
||||||
<value>Use your email provider's subaddress capabilities</value>
|
<value>Use os recursos de subendereço do seu provedor de e-mail</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="CatchAllEmailDescription" xml:space="preserve">
|
<data name="CatchAllEmailDescription" xml:space="preserve">
|
||||||
<value>Use your domain's configured catch-all inbox.</value>
|
<value>Use a caixa de entrada "pega-tudo" configurada do seu domínio.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="ForwardedEmailDescription" xml:space="preserve">
|
<data name="ForwardedEmailDescription" xml:space="preserve">
|
||||||
<value>Generate an email alias with an external forwarding service.</value>
|
<value>Gere um alias de e-mail com um serviço de encaminhamento externo.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Random" xml:space="preserve">
|
<data name="Random" xml:space="preserve">
|
||||||
<value>Aleatória</value>
|
<value>Aleatória</value>
|
||||||
|
|||||||
@@ -222,7 +222,7 @@
|
|||||||
<value>文件夹已删除。</value>
|
<value>文件夹已删除。</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="FolderNone" xml:space="preserve">
|
<data name="FolderNone" xml:space="preserve">
|
||||||
<value>默认文件夹</value>
|
<value>无文件夹</value>
|
||||||
<comment>Items that have no folder specified go in this special "catch-all" folder.</comment>
|
<comment>Items that have no folder specified go in this special "catch-all" folder.</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Folders" xml:space="preserve">
|
<data name="Folders" xml:space="preserve">
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netstandard2.1</TargetFramework>
|
||||||
<RootNamespace>Bit.Core</RootNamespace>
|
<RootNamespace>Bit.Core</RootNamespace>
|
||||||
<AssemblyName>BitwardenCore</AssemblyName>
|
<AssemblyName>BitwardenCore</AssemblyName>
|
||||||
<Configurations>Debug;Release;FDroid</Configurations>
|
<Configurations>Debug;Release;FDroid</Configurations>
|
||||||
@@ -26,12 +26,12 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CsvHelper" Version="27.1.1" />
|
<PackageReference Include="CsvHelper" Version="28.0.1" />
|
||||||
<PackageReference Include="LiteDB" Version="5.0.11" />
|
<PackageReference Include="LiteDB" Version="5.0.12" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||||
<PackageReference Include="PCLCrypto" Version="2.0.147" />
|
<PackageReference Include="PCLCrypto" Version="2.0.147" />
|
||||||
<PackageReference Include="zxcvbn-core" Version="7.0.92" />
|
<PackageReference Include="zxcvbn-core" Version="7.0.92" />
|
||||||
<PackageReference Include="Microsoft.AppCenter.Crashes" Version="4.4.0" />
|
<PackageReference Include="Microsoft.AppCenter.Crashes" Version="4.5.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.8bit.bitwarden.autofill</string>
|
<string>com.8bit.bitwarden.autofill</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2022.8.1</string>
|
<string>2022.9.2</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>1</string>
|
||||||
<key>CFBundleLocalizations</key>
|
<key>CFBundleLocalizations</key>
|
||||||
|
|||||||
@@ -266,7 +266,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AppCenter.Crashes">
|
<PackageReference Include="Microsoft.AppCenter.Crashes">
|
||||||
<Version>4.4.0</Version>
|
<Version>4.5.3</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.8bit.bitwarden.find-login-action-extension</string>
|
<string>com.8bit.bitwarden.find-login-action-extension</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2022.8.1</string>
|
<string>2022.9.2</string>
|
||||||
<key>CFBundleLocalizations</key>
|
<key>CFBundleLocalizations</key>
|
||||||
<array>
|
<array>
|
||||||
<string>en</string>
|
<string>en</string>
|
||||||
|
|||||||
@@ -242,7 +242,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AppCenter.Crashes">
|
<PackageReference Include="Microsoft.AppCenter.Crashes">
|
||||||
<Version>4.4.0</Version>
|
<Version>4.5.3</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.AppExtension.CSharp.targets" />
|
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.AppExtension.CSharp.targets" />
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>XPC!</string>
|
<string>XPC!</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2022.8.1</string>
|
<string>2022.9.2</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>1</string>
|
||||||
<key>MinimumOSVersion</key>
|
<key>MinimumOSVersion</key>
|
||||||
|
|||||||
@@ -166,9 +166,9 @@
|
|||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2478" />
|
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2515" />
|
||||||
<PackageReference Include="Microsoft.AppCenter.Crashes">
|
<PackageReference Include="Microsoft.AppCenter.Crashes">
|
||||||
<Version>4.4.0</Version>
|
<Version>4.5.3</Version>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.8bit.bitwarden</string>
|
<string>com.8bit.bitwarden</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2022.8.1</string>
|
<string>2022.9.2</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>1</string>
|
||||||
<key>CFBundleIconName</key>
|
<key>CFBundleIconName</key>
|
||||||
|
|||||||
@@ -122,46 +122,46 @@
|
|||||||
<comment>Max 30 characters</comment>
|
<comment>Max 30 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Description" xml:space="preserve">
|
<data name="Description" xml:space="preserve">
|
||||||
<value>Bitwarden, Inc. is the parent company of 8bit Solutions LLC.
|
<value>Bitwarden, Inc. - гэта мацярынская кампанія 8bit Solutions LLC.
|
||||||
|
|
||||||
NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE.
|
НАЗВАНЫ ЛЕПШЫМ МЕНЕДЖАРАМ ПАРОЛЯЎ VERGE, U.S. NEWS & WORLD REPORT, CNET І ІНШЫМІ АРГАНІЗАЦЫЯМІ.
|
||||||
|
|
||||||
Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go.
|
Кіруйце, захоўвайце, абараняйце і дзяліцеся неабмежаванай колькасцю пароляў на неабмежаванай колькасці прылад з любога месца. Bitwarden прапануе праграмныя рашэнні менеджара пароляў з адкрытым зыходным кодам для кожнага, калі вы на працы, дома або падарожнічаеце.
|
||||||
|
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
Генерыруйце надзейныя, унікальныя і выпадковыя паролі на падставе патрабаванняў бяспекі для кожнага вэб-сайта, які вы наведваеце.
|
||||||
|
|
||||||
Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone.
|
Функцыя Send ад Bitwarden дазваляе хутка перадаць інфармацыю (файлы і нефарматаваны тэкст) у зашыфраваным выглядзе любому карыстальніку.
|
||||||
|
|
||||||
Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues.
|
Bitwarden прапануе для кампаній тарыфныя планы Teams і Enterprise, каб вы маглі абменьвацца паролямі з вашымі калегамі.
|
||||||
|
|
||||||
Why Choose Bitwarden:
|
Чаму варта выбраць менавіта Bitwarden:
|
||||||
|
|
||||||
World-Class Encryption
|
Шыфраванне сусветнага класа
|
||||||
Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private.
|
Паролі абаронены прасунутым скразным шыфраваннем (AES-256 bit, salted hashtag і PBKDF2 SHA-256). Такім чынам, вашы паролі заўсёды будуць у бяспецы.
|
||||||
|
|
||||||
Built-in Password Generator
|
Убудаваны генератар пароляў
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
Генерыруйце надзейныя, унікальныя і выпадковыя паролі на падставе патрабаванняў бяспекі для кожнага вэб-сайта, які вы наведваеце.
|
||||||
|
|
||||||
Global Translations
|
Шматмоўная падтрымка
|
||||||
Bitwarden translations exist in 40 languages and are growing, thanks to our global community.
|
Bitwarden перакладзены на 40 моў свету (прысутнічае беларуская) і іх колькасць працягвае расці дзякуючы нашай глабальнай супольнасці.
|
||||||
|
|
||||||
Cross-Platform Applications
|
Кросплатформенныя праграмы
|
||||||
Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more.
|
Абараняйце і дзяліцеся канфідэнцыяльнымі данымі ў вашым сховішчы Bitwarden з любога браўзера, мабільнай прылады або аперацыйнай сістэмы для камп'ютара.
|
||||||
</value>
|
</value>
|
||||||
<comment>Max 4000 characters</comment>
|
<comment>Max 4000 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Keywords" xml:space="preserve">
|
<data name="Keywords" xml:space="preserve">
|
||||||
<value>bit warden,8bit,пароль,бясплатны менеджэр паролей,менеджэр паролей,менеджэр лагінаў</value>
|
<value>bit warden,8bit,пароль,бясплатны менеджар пароляў,менеджар пароляў,менеджар лагінаў</value>
|
||||||
<comment>Max 100 characters</comment>
|
<comment>Max 100 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Screenshot1" xml:space="preserve">
|
<data name="Screenshot1" xml:space="preserve">
|
||||||
<value>Кіруйце ўсімі вашымі імёнамі карыстальніка і паролямі з бяспечнага сховішча</value>
|
<value>Кіруйце ўсімі вашымі лагінамі і паролямі з бяспечнага сховішча</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Screenshot2" xml:space="preserve">
|
<data name="Screenshot2" xml:space="preserve">
|
||||||
<value>Аўтаматычна генерыруйце моцныя, выпадковыя і бяспечныя паролі</value>
|
<value>Аўтаматычна генерыруйце надзейныя, выпадковыя і бяспечныя паролі</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Screenshot3" xml:space="preserve">
|
<data name="Screenshot3" xml:space="preserve">
|
||||||
<value>Абараніце ваша сховішча з дапамогай Touch ID, PIN-кода ці асноўнага пароля.</value>
|
<value>Абараніце ваша сховішча з дапамогай Touch ID, PIN-кода або асноўнага пароля</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Screenshot4" xml:space="preserve">
|
<data name="Screenshot4" xml:space="preserve">
|
||||||
<value>Аўтазапаўненне падтрымлівае Safari, Chrome і сотні другіх праграм</value>
|
<value>Аўтазапаўненне падтрымлівае Safari, Chrome і сотні другіх праграм</value>
|
||||||
|
|||||||
@@ -122,31 +122,31 @@
|
|||||||
<comment>Max 30 characters</comment>
|
<comment>Max 30 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="Description" xml:space="preserve">
|
<data name="Description" xml:space="preserve">
|
||||||
<value>Bitwarden, Inc. is the parent company of 8bit Solutions LLC.
|
<value>Η Bitwarden, Inc. είναι η μητρική εταιρεία της 8bit Solutions LLC.
|
||||||
|
|
||||||
NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE.
|
ΑΠΟΚΑΛΕΙΤΑΙ ΩΣ Ο ΚΑΛΎΤΕΡΟΣ ΔΙΑΧΕΙΡΙΣΤΉΣ ΚΩΔΙΚΩΝ ΑΠΟ ΤΑ VERGE, U.S. NEWS & WORLD REPORT, CNET ΚΑΙ ΑΛΛΑ.
|
||||||
|
|
||||||
Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go.
|
Διαχειριστείτε, αποθηκεύστε, ασφαλίστε και κοινοποιήστε απεριόριστους κωδικούς μεταξύ απεριόριστων συσκευών από οπουδήποτε. Το Bitwarden παρέχει λύση ανοιχτού κώδικα διαχείρισης κωδικών σε όλους, είτε είστε σπίτι είτε στην εργασία είτε εν κινησει.
|
||||||
|
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
Δημιουργήστε ισχυρούς, μοναδικούς και τυχαίους κωδικούς βασισμένους σε απαιτήσεις ασφαλείας για κάθε ιστοσελίδα που επισκέπτεστε συχνά.
|
||||||
|
|
||||||
Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone.
|
Το Bitwarden Send μεταδίδει γρήγορα κρυπτογραφημένες πληροφορίες --- αρχεία και απλό κείμενο -- απευθείας σε όλους.
|
||||||
|
|
||||||
Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues.
|
Το Bitwarden προσφέρει πλάνα για Ομάδες και Οργανισμούς για εταιρείες ώστε να μοιράζεστε με ασφάλεια κωδικούς με τους συναδέλφους σας.
|
||||||
|
|
||||||
Why Choose Bitwarden:
|
Γιατί να επιλέξετε το Bitwarden:
|
||||||
|
|
||||||
World-Class Encryption
|
Κρυπτογράφηση Παγκόσμιου Επιπέδου
|
||||||
Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private.
|
Οι κωδικοί προστατεύονται με προηγμένη κρυπτογράφηση από άκρη σε άκρη (AES-256 bit, salted hashtag, και PBKDF2 SHA-256) ώστε τα δεδομένα σας να παραμένουν ασφαλή και ιδιωτικά.
|
||||||
|
|
||||||
Built-in Password Generator
|
Ενσωματωμένη Γεννήτρια Κωδικών
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
Δημιουργήστε ισχυρούς, μοναδικούς και τυχαίους κωδικούς βασισμένους σε απαιτήσεις ασφαλείας για κάθε ιστοσελίδα που επισκέπτεστε συχνά.
|
||||||
|
|
||||||
Global Translations
|
Παγκοσμίως Μεταφρασμένο
|
||||||
Bitwarden translations exist in 40 languages and are growing, thanks to our global community.
|
Το Bitwarden έχει μεταφραστεί σε 40 γλώσσες και αυξάνονται, χάρη στη παγκόσμια κοινότητα μας.
|
||||||
|
|
||||||
Cross-Platform Applications
|
Εφαρμογές Σε Κάθε Πλατφόρμα
|
||||||
Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more.
|
Ασφαλίστε και κοινοποιήστε ευαίσθητα δεδομένα μέσα από το Bitwarden Vault από κάθε φυλλομετρητή, κινητή συσκευή ή υπολογιστή και αλλα.
|
||||||
</value>
|
</value>
|
||||||
<comment>Max 4000 characters</comment>
|
<comment>Max 4000 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -126,31 +126,32 @@
|
|||||||
<comment>Max 80 characters</comment>
|
<comment>Max 80 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FullDesciption" xml:space="preserve">
|
<data name="FullDesciption" xml:space="preserve">
|
||||||
<value>Bitwarden, Inc. is the parent company of 8bit Solutions LLC.
|
<value>شركة Bitwarden, Inc هي الشركة الأم لشركة 8bit Solutions LLC.
|
||||||
|
|
||||||
NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE.
|
تم تصنيف Bitwarden كأفصل مدير كلمات مرور بواسطة كل من The Verge، U.S News & World Report، CNET، وغيرهم.
|
||||||
|
|
||||||
Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go.
|
قم بإدارة وحفظ وتأمين كلمات المرور الخاصة بك، ومشاركتها بين أجهزتك من أي مكان.
|
||||||
|
يوفر Bitwarden حل مفتوح المصدر لإدارة كلمات المرور للجميع، سواء في المنزل، في العمل أو في أي مكان.
|
||||||
|
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
قم بإنشاء كلمات مرور قوية وفريدة وعشوائية حسب متطلبات الأمان للصفحات التي تزورها.
|
||||||
|
|
||||||
Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone.
|
يوفر Bitwarden Send إمكانية إرسال البيانات --- النصوص والملفات --- بطريقة مشفرة وسريعة لأي شخص.
|
||||||
|
|
||||||
Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues.
|
يوفر Bitwarden خطط خاصة للفرق والشركات والمؤسسات لتمكنك من مشاركة كلمات المرور مع زملائك في العمل.
|
||||||
|
|
||||||
Why Choose Bitwarden:
|
لماذا قد تختار Bitwarden:
|
||||||
|
|
||||||
World-Class Encryption
|
تشفير على مستوى عالمي
|
||||||
Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private.
|
كلمات المرور محمية بتشفير متقدم تام (end-to-end encryption) من نوعية AES-256 bit، مع salted hashing، و PBKDF2 SHA-256. كل هذا لإبقاء بياناتك محمية وخاصة.
|
||||||
|
|
||||||
Built-in Password Generator
|
مولد كلمات المرور المدمج
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
قم بإنشاء كلمات مرور قوية وفريدة وعشوائية حسب متطلبات الأمان للصفحات التي تزورها.
|
||||||
|
|
||||||
Global Translations
|
الترجمات العالمية
|
||||||
Bitwarden translations exist in 40 languages and are growing, thanks to our global community.
|
يتوفر Bitwarden بأكثر من 40 لغة، وتتنامى الترجمات بفضل مجتمعنا العالمي.
|
||||||
|
|
||||||
Cross-Platform Applications
|
تطبيقات متعددة المنصات
|
||||||
Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more.
|
قم بحماية ومشاركة بياناتك الحساسة عبر خزنة Bitwarden من أي متصفح ويب، أو هاتف ذكي، أو جهاز كمبيوتر، وغيرها.
|
||||||
</value>
|
</value>
|
||||||
<comment>Max 4000 characters</comment>
|
<comment>Max 4000 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -122,35 +122,35 @@
|
|||||||
<comment>Max 30 characters</comment>
|
<comment>Max 30 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="ShortDescription" xml:space="preserve">
|
<data name="ShortDescription" xml:space="preserve">
|
||||||
<value>Bitwarden — гэта менеджар імён карыстальніка і паролей, які дапамагае вам захаваць вашу бяспеку у анлайн-прасторы</value>
|
<value>Bitwarden — гэта менеджар лагінаў і пароляў, які дапамагае вам захаваць бяспеку ў інтэрнэце.</value>
|
||||||
<comment>Max 80 characters</comment>
|
<comment>Max 80 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FullDesciption" xml:space="preserve">
|
<data name="FullDesciption" xml:space="preserve">
|
||||||
<value>Bitwarden, Inc. is the parent company of 8bit Solutions LLC.
|
<value>Bitwarden, Inc. - гэта мацярынская кампанія 8bit Solutions LLC.
|
||||||
|
|
||||||
NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE.
|
НАЗВАНЫ ЛЕПШЫМ МЕНЕДЖАРАМ ПАРОЛЯЎ VERGE, U.S. NEWS & WORLD REPORT, CNET І ІНШЫМІ АРГАНІЗАЦЫЯМІ.
|
||||||
|
|
||||||
Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go.
|
Кіруйце, захоўвайце, абараняйце і дзяліцеся неабмежаванай колькасцю пароляў на неабмежаванай колькасці прылад з любога месца. Bitwarden прапануе праграмныя рашэнні менеджара пароляў з адкрытым зыходным кодам для кожнага, калі вы на працы, дома або падарожнічаеце.
|
||||||
|
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
Генерыруйце надзейныя, унікальныя і выпадковыя паролі на падставе патрабаванняў бяспекі для кожнага вэб-сайта, які вы наведваеце.
|
||||||
|
|
||||||
Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone.
|
Функцыя Send ад Bitwarden дазваляе хутка перадаць інфармацыю (файлы і нефарматаваны тэкст) у зашыфраваным выглядзе любому карыстальніку.
|
||||||
|
|
||||||
Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues.
|
Bitwarden прапануе для кампаній тарыфныя планы Teams і Enterprise, каб вы маглі абменьвацца паролямі з вашымі калегамі.
|
||||||
|
|
||||||
Why Choose Bitwarden:
|
Чаму варта выбраць менавіта Bitwarden:
|
||||||
|
|
||||||
World-Class Encryption
|
Шыфраванне сусветнага класа
|
||||||
Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private.
|
Паролі абаронены прасунутым скразным шыфраваннем (AES-256 bit, salted hashtag і PBKDF2 SHA-256). Такім чынам, вашы паролі заўсёды будуць у бяспецы.
|
||||||
|
|
||||||
Built-in Password Generator
|
Убудаваны генератар пароляў
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
Генерыруйце надзейныя, унікальныя і выпадковыя паролі на падставе патрабаванняў бяспекі для кожнага вэб-сайта, які вы наведваеце.
|
||||||
|
|
||||||
Global Translations
|
Шматмоўная падтрымка
|
||||||
Bitwarden translations exist in 40 languages and are growing, thanks to our global community.
|
Bitwarden перакладзены на 40 моў свету (прысутнічае беларуская) і іх колькасць працягвае расці дзякуючы нашай глабальнай супольнасці.
|
||||||
|
|
||||||
Cross-Platform Applications
|
Кросплатформенныя праграмы
|
||||||
Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more.
|
Абараняйце і дзяліцеся канфідэнцыяльнымі данымі ў вашым сховішчы Bitwarden з любога браўзера, мабільнай прылады або аперацыйнай сістэмы для камп'ютара.
|
||||||
</value>
|
</value>
|
||||||
<comment>Max 4000 characters</comment>
|
<comment>Max 4000 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
@@ -158,16 +158,16 @@ Secure and share sensitive data within your Bitwarden Vault from any browser, mo
|
|||||||
<value>Бяспечны і бясплатны менеджар пароляў для ўсіх вашых прылад</value>
|
<value>Бяспечны і бясплатны менеджар пароляў для ўсіх вашых прылад</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Screenshot1" xml:space="preserve">
|
<data name="Screenshot1" xml:space="preserve">
|
||||||
<value>Кіруйце ўсімі вашымі імёнамі карыстальніка і паролямі з бяспечнага сховішча</value>
|
<value>Кіруйце ўсімі вашымі лагінамі і паролямі з бяспечнага сховішча</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Screenshot2" xml:space="preserve">
|
<data name="Screenshot2" xml:space="preserve">
|
||||||
<value>Аўтаматычна генерыруйце моцныя, выпадковыя і бяспечныя паролі</value>
|
<value>Аўтаматычна генерыруйце надзейныя, выпадковыя і бяспечныя паролі</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Screenshot3" xml:space="preserve">
|
<data name="Screenshot3" xml:space="preserve">
|
||||||
<value>Абараніце ваша сховішча з дапамогай вашага адбітка пальца, PIN-кода ці асноўнага пароля.</value>
|
<value>Абараніце ваша сховішча з дапамогай адбітка вашага пальца, PIN-кода або асноўнага пароля</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Screenshot4" xml:space="preserve">
|
<data name="Screenshot4" xml:space="preserve">
|
||||||
<value>Хуткае аўтазапаўненне ўліковых даных з браузера або іншых праграм</value>
|
<value>Хуткае аўтазапаўненне лагінаў у браўзеры і іншых праграмах</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Screenshot5" xml:space="preserve">
|
<data name="Screenshot5" xml:space="preserve">
|
||||||
<value>Сінхранізацыя і доступ да сховішча з некалькіх прылад
|
<value>Сінхранізацыя і доступ да сховішча з некалькіх прылад
|
||||||
|
|||||||
@@ -126,31 +126,31 @@
|
|||||||
<comment>Max 80 characters</comment>
|
<comment>Max 80 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
<data name="FullDesciption" xml:space="preserve">
|
<data name="FullDesciption" xml:space="preserve">
|
||||||
<value>Bitwarden, Inc. is the parent company of 8bit Solutions LLC.
|
<value>Η Bitwarden, Inc. είναι η μητρική εταιρεία της 8bit Solutions LLC.
|
||||||
|
|
||||||
NAMED BEST PASSWORD MANAGER BY THE VERGE, U.S. NEWS & WORLD REPORT, CNET, AND MORE.
|
ΑΠΟΚΑΛΕΙΤΑΙ ΩΣ Ο ΚΑΛΎΤΕΡΟΣ ΔΙΑΧΕΙΡΙΣΤΉΣ ΚΩΔΙΚΩΝ ΑΠΟ ΤΑ VERGE, U.S. NEWS & WORLD REPORT, CNET ΚΑΙ ΑΛΛΑ.
|
||||||
|
|
||||||
Manage, store, secure, and share unlimited passwords across unlimited devices from anywhere. Bitwarden delivers open source password management solutions to everyone, whether at home, at work, or on the go.
|
Διαχειριστείτε, αποθηκεύστε, ασφαλίστε και κοινοποιήστε απεριόριστους κωδικούς μεταξύ απεριόριστων συσκευών από οπουδήποτε. Το Bitwarden παρέχει λύση ανοιχτού κώδικα διαχείρισης κωδικών σε όλους, είτε είστε σπίτι είτε στην εργασία είτε εν κινησει.
|
||||||
|
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
Δημιουργήστε ισχυρούς, μοναδικούς και τυχαίους κωδικούς βασισμένους σε απαιτήσεις ασφαλείας για κάθε ιστοσελίδα που επισκέπτεστε συχνά.
|
||||||
|
|
||||||
Bitwarden Send quickly transmits encrypted information --- files and plaintext -- directly to anyone.
|
Το Bitwarden Send μεταδίδει γρήγορα κρυπτογραφημένες πληροφορίες --- αρχεία και απλό κείμενο -- απευθείας σε όλους.
|
||||||
|
|
||||||
Bitwarden offers Teams and Enterprise plans for companies so you can securely share passwords with colleagues.
|
Το Bitwarden προσφέρει πλάνα για Ομάδες και Οργανισμούς για εταιρείες ώστε να μοιράζεστε με ασφάλεια κωδικούς με τους συναδέλφους σας.
|
||||||
|
|
||||||
Why Choose Bitwarden:
|
Γιατί να επιλέξετε το Bitwarden:
|
||||||
|
|
||||||
World-Class Encryption
|
Κρυπτογράφηση Παγκόσμιου Επιπέδου
|
||||||
Passwords are protected with advanced end-to-end encryption (AES-256 bit, salted hashtag, and PBKDF2 SHA-256) so your data stays secure and private.
|
Οι κωδικοί προστατεύονται με προηγμένη κρυπτογράφηση από άκρη σε άκρη (AES-256 bit, salted hashtag, και PBKDF2 SHA-256) ώστε τα δεδομένα σας να παραμένουν ασφαλή και ιδιωτικά.
|
||||||
|
|
||||||
Built-in Password Generator
|
Ενσωματωμένη Γεννήτρια Κωδικών
|
||||||
Generate strong, unique, and random passwords based on security requirements for every website you frequent.
|
Δημιουργήστε ισχυρούς, μοναδικούς και τυχαίους κωδικούς βασισμένους σε απαιτήσεις ασφαλείας για κάθε ιστοσελίδα που επισκέπτεστε συχνά.
|
||||||
|
|
||||||
Global Translations
|
Παγκοσμίως Μεταφρασμένο
|
||||||
Bitwarden translations exist in 40 languages and are growing, thanks to our global community.
|
Το Bitwarden έχει μεταφραστεί σε 40 γλώσσες και αυξάνονται, χάρη στη παγκόσμια κοινότητα μας.
|
||||||
|
|
||||||
Cross-Platform Applications
|
Εφαρμογές Σε Κάθε Πλατφόρμα
|
||||||
Secure and share sensitive data within your Bitwarden Vault from any browser, mobile device, or desktop OS, and more.
|
Ασφαλίστε και κοινοποιήστε ευαίσθητα δεδομένα μέσα από το Bitwarden Vault από κάθε φυλλομετρητή, κινητή συσκευή ή υπολογιστή και αλλα.
|
||||||
</value>
|
</value>
|
||||||
<comment>Max 4000 characters</comment>
|
<comment>Max 4000 characters</comment>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -7,15 +7,15 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="NSubstitute" Version="4.2.2" />
|
<PackageReference Include="NSubstitute" Version="4.4.0" />
|
||||||
<PackageReference Include="xunit" Version="2.4.1" />
|
<PackageReference Include="xunit" Version="2.4.1" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.2">
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="AutoFixture.Xunit2" Version="4.17.0" />
|
<PackageReference Include="AutoFixture.Xunit2" Version="4.17.0" />
|
||||||
<PackageReference Include="AutoFixture.AutoNSubstitute" Version="4.17.0" />
|
<PackageReference Include="AutoFixture.AutoNSubstitute" Version="4.17.0" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -7,10 +7,10 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.3.1" />
|
||||||
<PackageReference Include="NSubstitute" Version="4.2.2" />
|
<PackageReference Include="NSubstitute" Version="4.4.0" />
|
||||||
<PackageReference Include="xunit" Version="2.4.1" />
|
<PackageReference Include="xunit" Version="2.4.1" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||||
<AssemblyName>BitwardenPlayground</AssemblyName>
|
<AssemblyName>BitwardenPlayground</AssemblyName>
|
||||||
<RootNamespace>Bit.Playground</RootNamespace>
|
<RootNamespace>Bit.Playground</RootNamespace>
|
||||||
<Configurations>Debug;Release;FDroid</Configurations>
|
<Configurations>Debug;Release;FDroid</Configurations>
|
||||||
|
|||||||
Reference in New Issue
Block a user