mirror of
https://github.com/bitwarden/mobile
synced 2025-12-05 23:53:33 +00:00
Compare commits
163 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ff628ea51 | ||
|
|
5792372a47 | ||
|
|
9a169251d7 | ||
|
|
2f0935dbbe | ||
|
|
5af7c7d58a | ||
|
|
9e1abb13a3 | ||
|
|
bbea5fe53c | ||
|
|
ed087b81b4 | ||
|
|
0b06c87cb7 | ||
|
|
a9d204d3fa | ||
|
|
36e263b9ff | ||
|
|
49af74729f | ||
|
|
aec0415cad | ||
|
|
8c8cec08e5 | ||
|
|
8d0ee1caba | ||
|
|
a2a6d5a57f | ||
|
|
9593f330db | ||
|
|
144d932591 | ||
|
|
726db336a8 | ||
|
|
8632f7cadc | ||
|
|
525b5fa19a | ||
|
|
b7c6b65a3d | ||
|
|
a4f93eea45 | ||
|
|
8d9a5bc08f | ||
|
|
28a93cdcb4 | ||
|
|
d32dd95e12 | ||
|
|
f19a8a3cc5 | ||
|
|
f8d5ee9d5d | ||
|
|
a98fb7d41e | ||
|
|
d2ccc5c022 | ||
|
|
3339c8b676 | ||
|
|
2cc331b136 | ||
|
|
df1a65e6a3 | ||
|
|
f416f95b77 | ||
|
|
44fe5af4fb | ||
|
|
f394eddc01 | ||
|
|
07dd9df3ec | ||
|
|
340d4ce714 | ||
|
|
2870b8331e | ||
|
|
bc79f22e22 | ||
|
|
b3e0b148a6 | ||
|
|
6131dfeb2c | ||
|
|
42fc868b68 | ||
|
|
e9ec02929d | ||
|
|
389d7d77c2 | ||
|
|
03a55d38d3 | ||
|
|
5504298251 | ||
|
|
0fff61de34 | ||
|
|
4db7311611 | ||
|
|
650d970b5e | ||
|
|
7f796963f3 | ||
|
|
9231da2f1c | ||
|
|
0d422c53d1 | ||
|
|
7bf9354e32 | ||
|
|
277fd67814 | ||
|
|
68e9cd3779 | ||
|
|
73b2ae71a9 | ||
|
|
f9028245d8 | ||
|
|
3fff0617fe | ||
|
|
d958dc6bce | ||
|
|
045ce42168 | ||
|
|
edef84a4f9 | ||
|
|
ec9b2d7f7d | ||
|
|
640beeed23 | ||
|
|
a998ee84ec | ||
|
|
bd74634201 | ||
|
|
364287028b | ||
|
|
7be8513bb5 | ||
|
|
89c2f62f11 | ||
|
|
fce2a7ba94 | ||
|
|
e613198252 | ||
|
|
3e240c4d2f | ||
|
|
eee96bf8cf | ||
|
|
471871eb2e | ||
|
|
225b8b8cd8 | ||
|
|
cb2d133eb0 | ||
|
|
d957111249 | ||
|
|
f0a701e134 | ||
|
|
0c8c216fba | ||
|
|
f153c7509c | ||
|
|
197683b722 | ||
|
|
fbce0be457 | ||
|
|
24304c2f55 | ||
|
|
b0c6c09cea | ||
|
|
2732fc93f9 | ||
|
|
cc9a4a288a | ||
|
|
f57db917d1 | ||
|
|
d32eb9c9bc | ||
|
|
219af7f288 | ||
|
|
e767b6c5be | ||
|
|
5f1a8017f1 | ||
|
|
df80122ce1 | ||
|
|
6904ea118b | ||
|
|
0baa07daa2 | ||
|
|
2abf407b36 | ||
|
|
55dc9cbfc7 | ||
|
|
fa15a10ae0 | ||
|
|
e821d8a135 | ||
|
|
cefcc14d4d | ||
|
|
a52d1e1506 | ||
|
|
42df1aecd5 | ||
|
|
920f4fc525 | ||
|
|
d57d583076 | ||
|
|
1c8cd2dcbb | ||
|
|
bb66a6c805 | ||
|
|
10ecdfbe31 | ||
|
|
43dad1df63 | ||
|
|
fdcc6b0cb8 | ||
|
|
ac82d6bc6b | ||
|
|
a8e98cfa78 | ||
|
|
fa51314639 | ||
|
|
3e0097c22c | ||
|
|
e62ff2fe36 | ||
|
|
88a13eb54f | ||
|
|
355dc151c4 | ||
|
|
4f0ea44078 | ||
|
|
9cc12fd577 | ||
|
|
960c2567bd | ||
|
|
430e4dd445 | ||
|
|
1ec31c6899 | ||
|
|
42c21ce892 | ||
|
|
d278fde5f2 | ||
|
|
2616a5f500 | ||
|
|
cc58f7730e | ||
|
|
d49e001b21 | ||
|
|
f12ceb69ce | ||
|
|
7862005055 | ||
|
|
e70dbf8d8d | ||
|
|
16ee34d7a7 | ||
|
|
2ad55e8a8c | ||
|
|
a8a1750d5c | ||
|
|
5407e20150 | ||
|
|
58aa37bf8e | ||
|
|
7c781b60c5 | ||
|
|
acdfce7e88 | ||
|
|
4e4b56d7fe | ||
|
|
a3174d7015 | ||
|
|
b595c8aeac | ||
|
|
a9a33ad71e | ||
|
|
4d08ce90cc | ||
|
|
01d9ccc110 | ||
|
|
029f069ad5 | ||
|
|
13b9e01604 | ||
|
|
19c46a472a | ||
|
|
37edfffb97 | ||
|
|
67fa653d06 | ||
|
|
366b9ddc4a | ||
|
|
c9354f79b8 | ||
|
|
d5b3bd5905 | ||
|
|
45dd240415 | ||
|
|
bf99cea004 | ||
|
|
f680b1e856 | ||
|
|
b2f40c7af0 | ||
|
|
82b17677b9 | ||
|
|
b7df2d5441 | ||
|
|
dd511ba365 | ||
|
|
d705e3c1fb | ||
|
|
4bd1322904 | ||
|
|
ac027ee3a0 | ||
|
|
e5e3ebdbba | ||
|
|
993fc2e6f4 | ||
|
|
61c480618c | ||
|
|
db7f2622c8 |
@@ -8,6 +8,6 @@ We use a translation tool called [Crowdin](https://crowdin.com) to help manage o
|
||||
|
||||
If you are interested in helping translate the Bitwarden mobile app into another language (or make a translation correction), please register an account at Crowdin and join our project here: https://crowdin.com/project/bitwarden-mobile
|
||||
|
||||
If the language that you are interested in translating is not already listed, create a new account on Crowdin, join the project, and contact the project owner (https://crowdin.com/mail/compose/kspearrin).
|
||||
If the language that you are interested in translating is not already listed, create a new account on Crowdin, join the project, and contact the project owner (https://crowdin.com/profile/kspearrin).
|
||||
|
||||
You can read Crowdin's getting started guide for translators here: https://support.crowdin.com/crowdin-intro/
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
The Bitwarden mobile application is written in C# with Xamarin Android, Xamarin iOS, UWP, and Xamarin Forms.
|
||||
|
||||
<img src="https://i.imgur.com/R7H2tkQ.png" alt="" width="300" height="533" /> <img src="https://i.imgur.com/3BO1Wcg.png" alt="" width="300" height="533" />
|
||||
<img src="https://raw.githubusercontent.com/bitwarden/brand/master/screenshots/mobile-android.png" alt="" width="300" height="533" /> <img src="https://raw.githubusercontent.com/bitwarden/brand/master/screenshots/mobile-ios.png" alt="" width="300" height="533" />
|
||||
|
||||
# Build/Run
|
||||
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
#init:
|
||||
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
#on_finish:
|
||||
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
install:
|
||||
- choco install cloc --no-progress
|
||||
- "cloc --vcs git --exclude-dir Resources,store,test,UWP,Properties --include-lang C#,JavaScript,TypeScript,PowerShell"
|
||||
- choco install cloc --no-progress
|
||||
- "cloc --vcs git --exclude-dir Resources,store,test,UWP,Properties --include-lang C#,JavaScript,TypeScript,PowerShell"
|
||||
# - appveyor DownloadFile https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
|
||||
# - appveyor DownloadFile https://aka.ms/vs/15/release/vs_community.exe
|
||||
# - vs_community.exe update --wait --quiet --norestart --installPath "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"
|
||||
# - ps: .\src\Android\update-android.ps1
|
||||
before_build:
|
||||
- nuget restore
|
||||
- IF DEFINED keystore_dec_secret nuget install secure-file -ExcludeVersion
|
||||
|
||||
@@ -34,6 +34,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
||||
SECURITY.md = SECURITY.md
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "iOS.Autofill", "src\iOS.Autofill\iOS.Autofill.csproj", "{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
|
||||
@@ -456,6 +458,50 @@ Global
|
||||
{D5D91152-CB01-4F24-A503-304D3A94408B}.Release|x64.Build.0 = Release|Any CPU
|
||||
{D5D91152-CB01-4F24-A503-304D3A94408B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{D5D91152-CB01-4F24-A503-304D3A94408B}.Release|x86.Build.0 = Release|Any CPU
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Ad-Hoc|Any CPU.ActiveCfg = Ad-Hoc|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Ad-Hoc|ARM.ActiveCfg = Ad-Hoc|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Ad-Hoc|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Ad-Hoc|iPhoneSimulator.Build.0 = Ad-Hoc|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Ad-Hoc|x64.ActiveCfg = Ad-Hoc|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Ad-Hoc|x86.ActiveCfg = Ad-Hoc|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.AppStore|Any CPU.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.AppStore|ARM.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.AppStore|iPhone.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.AppStore|iPhone.Build.0 = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.AppStore|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.AppStore|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.AppStore|x64.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.AppStore|x86.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Debug|Any CPU.ActiveCfg = Debug|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Debug|ARM.ActiveCfg = Debug|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Debug|iPhone.ActiveCfg = Debug|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Debug|iPhone.Build.0 = Debug|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Debug|x64.ActiveCfg = Debug|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Debug|x86.ActiveCfg = Debug|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|Any CPU.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|Any CPU.Build.0 = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|ARM.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|ARM.Build.0 = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|iPhone.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|iPhone.Build.0 = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|iPhoneSimulator.ActiveCfg = AppStore|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|iPhoneSimulator.Build.0 = AppStore|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|x64.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|x64.Build.0 = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|x86.ActiveCfg = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.FDroid|x86.Build.0 = AppStore|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Release|Any CPU.ActiveCfg = Release|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Release|ARM.ActiveCfg = Release|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Release|iPhone.ActiveCfg = Release|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Release|iPhone.Build.0 = Release|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Release|x64.ActiveCfg = Release|iPhone
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F}.Release|x86.ActiveCfg = Release|iPhone
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@@ -469,6 +515,7 @@ Global
|
||||
{2E399654-26A2-46F6-B9CA-1B496A3F370A} = {92470CBD-9047-4C3C-8EA3-D972D6622D84}
|
||||
{8A279EE4-4537-4656-9C93-44945E594556} = {EC730FD9-F623-4B6C-B503-95CDCFBCF277}
|
||||
{D5D91152-CB01-4F24-A503-304D3A94408B} = {2E399654-26A2-46F6-B9CA-1B496A3F370A}
|
||||
{C2B7ADCA-5964-43C5-A7C8-D3B6F8023F4F} = {EC730FD9-F623-4B6C-B503-95CDCFBCF277}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {318CB2DF-0118-43A3-AC83-56BADCF71CCD}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
|
||||
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
|
||||
<AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
|
||||
<TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v9.0</TargetFrameworkVersion>
|
||||
<AndroidSupportedAbis>armeabi,armeabi-v7a,x86</AndroidSupportedAbis>
|
||||
<AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
|
||||
<AndroidStoreUncompressedFileExtensions />
|
||||
@@ -155,6 +155,7 @@
|
||||
<ItemGroup>
|
||||
<None Include="8bit.keystore.enc" />
|
||||
<GoogleServicesJson Include="google-services.json" />
|
||||
<None Include="update-android.ps1" />
|
||||
<None Include="ci-build-apks.ps1" />
|
||||
<None Include="google-services.json.enc" />
|
||||
<None Include="Resources\AboutResources.txt" />
|
||||
@@ -858,20 +859,35 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Xamarin.Firebase.Messaging">
|
||||
<Version>42.1021.1</Version>
|
||||
<Version>60.1142.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.Analytics">
|
||||
<Version>42.1021.1</Version>
|
||||
<Version>60.1142.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="SimpleInjector">
|
||||
<Version>4.0.12</Version>
|
||||
<Version>4.4.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.Design">
|
||||
<Version>27.0.2.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.v4">
|
||||
<Version>27.0.2.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.v7.AppCompat">
|
||||
<Version>25.4.0.2</Version>
|
||||
<Version>27.0.2.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.v7.CardView">
|
||||
<Version>27.0.2.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.Android.Support.v7.MediaRouter">
|
||||
<Version>27.0.2.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Xamarin.GooglePlayServices.SafetyNet">
|
||||
<Version>60.1142.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="XLabs.IoC.SimpleInjector" Version="2.0.5782" />
|
||||
<PackageReference Include="Portable.BouncyCastle" Version="1.8.1.3" />
|
||||
<PackageReference Include="Plugin.CurrentActivity" Version="1.0.1" />
|
||||
<PackageReference Include="Portable.BouncyCastle" Version="1.8.4" />
|
||||
<PackageReference Include="Plugin.CurrentActivity" Version="2.1.0.4" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidResource Include="Resources\drawable\bottom_nav_bg.xml" />
|
||||
|
||||
@@ -17,6 +17,24 @@ namespace Bit.Android.Autofill
|
||||
{
|
||||
private static int _pendingIntentId = 0;
|
||||
|
||||
// These browser work natively with the autofill framework
|
||||
public static HashSet<string> TrustedBrowsers = new HashSet<string>
|
||||
{
|
||||
"org.mozilla.focus","org.mozilla.klar","com.duckduckgo.mobile.android"
|
||||
};
|
||||
|
||||
// These browsers work using the compatibility shim for the autofill framework
|
||||
public static HashSet<string> CompatBrowsers = new HashSet<string>
|
||||
{
|
||||
"org.mozilla.firefox","org.mozilla.firefox_beta","com.microsoft.emmx","com.android.chrome",
|
||||
"com.chrome.beta","com.android.browser","com.brave.browser","com.opera.browser",
|
||||
"com.opera.browser.beta","com.opera.mini.native","com.chrome.dev","com.chrome.canary",
|
||||
"com.google.android.apps.chrome","com.google.android.apps.chrome_dev","com.yandex.browser",
|
||||
"com.sec.android.app.sbrowser","com.sec.android.app.sbrowser.beta","org.codeaurora.swe.browser",
|
||||
"com.amazon.cloud9","mark.via.gp","org.bromite.bromite","org.chromium.chrome","com.kiwibrowser.browser",
|
||||
"com.ecosia.android", "com.opera.mini.native.beta","org.mozilla.fennec_aurora"
|
||||
};
|
||||
|
||||
public static async Task<List<FilledItem>> GetFillItemsAsync(Parser parser, ICipherService service)
|
||||
{
|
||||
var items = new List<FilledItem>();
|
||||
@@ -62,7 +80,7 @@ namespace Bit.Android.Autofill
|
||||
}
|
||||
|
||||
responseBuilder.AddDataset(BuildVaultDataset(context, parser.FieldCollection, parser.Uri, locked));
|
||||
AddSaveInfo(responseBuilder, parser.FieldCollection);
|
||||
AddSaveInfo(parser, responseBuilder, parser.FieldCollection);
|
||||
responseBuilder.SetIgnoredIds(parser.FieldCollection.IgnoreAutofillIds.ToArray());
|
||||
return responseBuilder.Build();
|
||||
}
|
||||
@@ -126,8 +144,16 @@ namespace Bit.Android.Autofill
|
||||
return view;
|
||||
}
|
||||
|
||||
public static void AddSaveInfo(FillResponse.Builder responseBuilder, FieldCollection fields)
|
||||
public static void AddSaveInfo(Parser parser, FillResponse.Builder responseBuilder, FieldCollection fields)
|
||||
{
|
||||
// Docs state that password fields cannot be reliably saved in Compat mode since they will show as
|
||||
// masked values.
|
||||
var compatBrowser = CompatBrowsers.Contains(parser.PackageName);
|
||||
if(compatBrowser && fields.SaveType == SaveDataType.Password)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var requiredIds = fields.GetRequiredSaveFields();
|
||||
if(fields.SaveType == SaveDataType.Generic || requiredIds.Length == 0)
|
||||
{
|
||||
@@ -140,6 +166,10 @@ namespace Bit.Android.Autofill
|
||||
{
|
||||
saveBuilder.SetOptionalIds(optionalIds);
|
||||
}
|
||||
if(compatBrowser)
|
||||
{
|
||||
saveBuilder.SetFlags(SaveFlags.SaveOnAllViewsInvisible);
|
||||
}
|
||||
responseBuilder.SetSaveInfo(saveBuilder.Build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,15 +7,6 @@ namespace Bit.Android.Autofill
|
||||
{
|
||||
public class Parser
|
||||
{
|
||||
public static HashSet<string> TrustedBrowsers = new HashSet<string>
|
||||
{
|
||||
"org.mozilla.focus","org.mozilla.firefox","org.mozilla.firefox_beta","com.microsoft.emmx",
|
||||
"com.android.chrome","com.chrome.beta","com.android.browser","com.brave.browser","com.opera.browser",
|
||||
"com.opera.browser.beta","com.opera.mini.native","com.chrome.dev","com.chrome.canary",
|
||||
"com.google.android.apps.chrome","com.google.android.apps.chrome_dev","com.yandex.browser",
|
||||
"com.sec.android.app.sbrowser","com.sec.android.app.sbrowser.beta","org.codeaurora.swe.browser",
|
||||
"com.amazon.cloud9","org.mozilla.klar","com.duckduckgo.mobile.android","mark.via.gp","org.bromite.bromite"
|
||||
};
|
||||
|
||||
public static HashSet<string> ExcludedPackageIds = new HashSet<string>
|
||||
{
|
||||
@@ -93,7 +84,8 @@ namespace Bit.Android.Autofill
|
||||
ParseNode(node.RootViewNode);
|
||||
}
|
||||
|
||||
if(!TrustedBrowsers.Contains(PackageName))
|
||||
if(!AutofillHelpers.TrustedBrowsers.Contains(PackageName) &&
|
||||
!AutofillHelpers.CompatBrowsers.Contains(PackageName))
|
||||
{
|
||||
WebDomain = null;
|
||||
}
|
||||
|
||||
@@ -3,12 +3,14 @@ using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using System;
|
||||
|
||||
namespace Bit.Android
|
||||
{
|
||||
[Activity(Theme = "@style/BitwardenTheme.Splash", WindowSoftInputMode = SoftInput.StateHidden)]
|
||||
public class AutofillActivity : Activity
|
||||
{
|
||||
private DateTime? _lastLaunch = null;
|
||||
private string _lastQueriedUri;
|
||||
|
||||
public static AutofillCredentials LastCredentials { get; set; }
|
||||
@@ -90,6 +92,13 @@ namespace Bit.Android
|
||||
return;
|
||||
}
|
||||
|
||||
var now = DateTime.UtcNow;
|
||||
if(_lastLaunch.HasValue && (now - _lastLaunch.Value <= TimeSpan.FromSeconds(2)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_lastLaunch = now;
|
||||
var intent = new Intent(this, typeof(MainActivity));
|
||||
if(!callingIntent.Flags.HasFlag(ActivityFlags.LaunchedFromHistory))
|
||||
{
|
||||
|
||||
@@ -29,6 +29,7 @@ namespace Bit.Android
|
||||
{
|
||||
new Browser("com.android.chrome", "url_bar"),
|
||||
new Browser("com.chrome.beta", "url_bar"),
|
||||
new Browser("org.chromium.chrome", "url_bar"),
|
||||
new Browser("com.android.browser", "url"),
|
||||
new Browser("com.brave.browser", "url_bar"),
|
||||
new Browser("com.opera.browser", "url_field"),
|
||||
@@ -46,6 +47,7 @@ namespace Bit.Android
|
||||
(s) => s.Split(new char[]{' ', '<27>'}).FirstOrDefault()), // 0 = Regular Space, 1 = No-break space (00A0)
|
||||
new Browser("org.mozilla.firefox", "url_bar_title"),
|
||||
new Browser("org.mozilla.firefox_beta", "url_bar_title"),
|
||||
new Browser("org.mozilla.fennec_aurora", "url_bar_title"),
|
||||
new Browser("org.mozilla.focus", "display_url"),
|
||||
new Browser("org.mozilla.klar", "display_url"),
|
||||
new Browser("com.ghostery.android.ghostery", "search_field"),
|
||||
@@ -65,6 +67,8 @@ namespace Bit.Android
|
||||
new Browser("com.duckduckgo.mobile.android", "omnibarTextInput"),
|
||||
new Browser("mark.via.gp", "aw"),
|
||||
new Browser("org.bromite.bromite", "url_bar"),
|
||||
new Browser("com.kiwibrowser.browser", "url_bar"),
|
||||
new Browser("com.ecosia.android", "url_bar"),
|
||||
}.ToDictionary(n => n.PackageName);
|
||||
|
||||
// Known packages to skip
|
||||
@@ -101,18 +105,18 @@ namespace Bit.Android
|
||||
|
||||
public override void OnAccessibilityEvent(AccessibilityEvent e)
|
||||
{
|
||||
var powerManager = (PowerManager)GetSystemService(PowerService);
|
||||
if(Build.VERSION.SdkInt > BuildVersionCodes.KitkatWatch && !powerManager.IsInteractive)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if(Build.VERSION.SdkInt < BuildVersionCodes.Lollipop && !powerManager.IsScreenOn)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var powerManager = (PowerManager)GetSystemService(PowerService);
|
||||
if(Build.VERSION.SdkInt > BuildVersionCodes.KitkatWatch && !powerManager.IsInteractive)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if(Build.VERSION.SdkInt < BuildVersionCodes.Lollipop && !powerManager.IsScreenOn)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(SkipPackage(e?.PackageName))
|
||||
{
|
||||
return;
|
||||
@@ -126,7 +130,6 @@ namespace Bit.Android
|
||||
|
||||
//var testNodes = GetWindowNodes(root, e, n => n.ViewIdResourceName != null && n.Text != null, false);
|
||||
//var testNodesData = testNodes.Select(n => new { id = n.ViewIdResourceName, text = n.Text });
|
||||
//testNodes.Dispose();
|
||||
|
||||
var notificationManager = (NotificationManager)GetSystemService(NotificationService);
|
||||
var cancelNotification = true;
|
||||
|
||||
@@ -112,7 +112,7 @@ namespace Bit.Android.Controls
|
||||
|
||||
private void Control_EditorAction(object sender, TextView.EditorActionEventArgs e)
|
||||
{
|
||||
if(_view.ReturnType != ReturnType.Next)
|
||||
if(_view.TargetReturnType != Bit.App.Enums.ReturnType.Next)
|
||||
{
|
||||
_view.Unfocus();
|
||||
}
|
||||
@@ -165,23 +165,23 @@ namespace Bit.Android.Controls
|
||||
|
||||
private void SetReturnType(ExtendedEntry view)
|
||||
{
|
||||
if(view.ReturnType.HasValue)
|
||||
if(view.TargetReturnType.HasValue)
|
||||
{
|
||||
switch(view.ReturnType.Value)
|
||||
switch(view.TargetReturnType.Value)
|
||||
{
|
||||
case ReturnType.Go:
|
||||
case App.Enums.ReturnType.Go:
|
||||
Control.ImeOptions = ImeAction.Go;
|
||||
Control.SetImeActionLabel("Go", ImeAction.Go);
|
||||
break;
|
||||
case ReturnType.Next:
|
||||
case App.Enums.ReturnType.Next:
|
||||
Control.ImeOptions = ImeAction.Next;
|
||||
Control.SetImeActionLabel("Next", ImeAction.Next);
|
||||
break;
|
||||
case ReturnType.Search:
|
||||
case App.Enums.ReturnType.Search:
|
||||
Control.ImeOptions = ImeAction.Search;
|
||||
Control.SetImeActionLabel("Search", ImeAction.Search);
|
||||
break;
|
||||
case ReturnType.Send:
|
||||
case App.Enums.ReturnType.Send:
|
||||
Control.ImeOptions = ImeAction.Send;
|
||||
Control.SetImeActionLabel("Send", ImeAction.Send);
|
||||
break;
|
||||
@@ -206,7 +206,7 @@ namespace Bit.Android.Controls
|
||||
|
||||
private void SetMaxLength(ExtendedEntry view)
|
||||
{
|
||||
Control.SetFilters(new IInputFilter[] { new InputFilterLengthFilter(view.MaxLength) });
|
||||
Control.SetFilters(new IInputFilter[] { new InputFilterLengthFilter(view.TargetMaxLength) });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ using Android.Webkit;
|
||||
using AWebkit = Android.Webkit;
|
||||
using Java.Interop;
|
||||
using Android.Content;
|
||||
using Plugin.CurrentActivity;
|
||||
|
||||
[assembly: ExportRenderer(typeof(HybridWebView), typeof(HybridWebViewRenderer))]
|
||||
namespace Bit.Android.Controls
|
||||
@@ -16,9 +15,13 @@ namespace Bit.Android.Controls
|
||||
{
|
||||
private const string JSFunction = "function invokeCSharpAction(data){jsBridge.invokeAction(data);}";
|
||||
|
||||
private readonly Context _context;
|
||||
|
||||
public HybridWebViewRenderer(Context context)
|
||||
: base(context)
|
||||
{ }
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e)
|
||||
{
|
||||
@@ -26,8 +29,9 @@ namespace Bit.Android.Controls
|
||||
|
||||
if(Control == null)
|
||||
{
|
||||
var webView = new AWebkit.WebView(CrossCurrentActivity.Current.Activity);
|
||||
var webView = new AWebkit.WebView(_context);
|
||||
webView.Settings.JavaScriptEnabled = true;
|
||||
webView.SetWebViewClient(new JSWebViewClient(string.Format("javascript: {0}", JSFunction)));
|
||||
SetNativeControl(webView);
|
||||
}
|
||||
|
||||
@@ -42,15 +46,6 @@ namespace Bit.Android.Controls
|
||||
{
|
||||
Control.AddJavascriptInterface(new JSBridge(this), "jsBridge");
|
||||
Control.LoadUrl(Element.Uri);
|
||||
InjectJS(JSFunction);
|
||||
}
|
||||
}
|
||||
|
||||
private void InjectJS(string script)
|
||||
{
|
||||
if(Control != null)
|
||||
{
|
||||
Control.LoadUrl(string.Format("javascript: {0}", script));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -74,5 +69,21 @@ namespace Bit.Android.Controls
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class JSWebViewClient : WebViewClient
|
||||
{
|
||||
private readonly string _javascript;
|
||||
|
||||
public JSWebViewClient(string javascript)
|
||||
{
|
||||
_javascript = javascript;
|
||||
|
||||
}
|
||||
public override void OnPageFinished(AWebkit.WebView view, string url)
|
||||
{
|
||||
base.OnPageFinished(view, url);
|
||||
view.EvaluateJavascript(_javascript, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -233,8 +233,12 @@ namespace Bit.Android
|
||||
ndef.AddDataScheme("https");
|
||||
var filters = new IntentFilter[] { ndef };
|
||||
|
||||
// register for foreground dispatch so we'll receive tags according to our intent filters
|
||||
adapter.EnableForegroundDispatch(this, pendingIntent, filters, null);
|
||||
try
|
||||
{
|
||||
// register for foreground dispatch so we'll receive tags according to our intent filters
|
||||
adapter.EnableForegroundDispatch(this, pendingIntent, filters, null);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -13,9 +13,9 @@ using Plugin.Fingerprint;
|
||||
using Plugin.Settings;
|
||||
using XLabs.Ioc;
|
||||
using System.Threading.Tasks;
|
||||
using FFImageLoading.Forms.Droid;
|
||||
using XLabs.Ioc.SimpleInjectorContainer;
|
||||
using SimpleInjector;
|
||||
using Android.Gms.Security;
|
||||
|
||||
namespace Bit.Android
|
||||
{
|
||||
@@ -24,13 +24,8 @@ namespace Bit.Android
|
||||
#else
|
||||
[Application(Debuggable = false)]
|
||||
#endif
|
||||
public class MainApplication : Application, Application.IActivityLifecycleCallbacks
|
||||
public class MainApplication : Application, ProviderInstaller.IProviderInstallListener
|
||||
{
|
||||
private const string FirstLaunchKey = "firstLaunch";
|
||||
private const string LastVersionCodeKey = "lastVersionCode";
|
||||
|
||||
public static Context AppContext;
|
||||
|
||||
public MainApplication(IntPtr handle, JniHandleOwnership transer)
|
||||
: base(handle, transer)
|
||||
{
|
||||
@@ -40,6 +35,11 @@ namespace Bit.Android
|
||||
{
|
||||
SetIoc(this);
|
||||
}
|
||||
|
||||
if(Build.VERSION.SdkInt <= BuildVersionCodes.Kitkat)
|
||||
{
|
||||
ProviderInstaller.InstallIfNeededAsync(ApplicationContext, this);
|
||||
}
|
||||
}
|
||||
|
||||
private void AndroidEnvironment_UnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs e)
|
||||
@@ -56,52 +56,13 @@ namespace Bit.Android
|
||||
// workaround for app compat bug
|
||||
// ref https://forums.xamarin.com/discussion/62414/app-resuming-results-in-crash-with-formsappcompatactivity
|
||||
Task.Delay(10).Wait();
|
||||
|
||||
RegisterActivityLifecycleCallbacks(this);
|
||||
AppContext = ApplicationContext;
|
||||
}
|
||||
|
||||
public override void OnTerminate()
|
||||
{
|
||||
base.OnTerminate();
|
||||
UnregisterActivityLifecycleCallbacks(this);
|
||||
}
|
||||
|
||||
public void OnActivityCreated(Activity activity, Bundle savedInstanceState)
|
||||
{
|
||||
CrossCurrentActivity.Current.Activity = activity;
|
||||
}
|
||||
|
||||
public void OnActivityDestroyed(Activity activity)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnActivityPaused(Activity activity)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnActivityResumed(Activity activity)
|
||||
{
|
||||
CrossCurrentActivity.Current.Activity = activity;
|
||||
}
|
||||
|
||||
public void OnActivitySaveInstanceState(Activity activity, Bundle outState)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnActivityStarted(Activity activity)
|
||||
{
|
||||
CrossCurrentActivity.Current.Activity = activity;
|
||||
}
|
||||
|
||||
public void OnActivityStopped(Activity activity)
|
||||
{
|
||||
CrossCurrentActivity.Current.Init(this);
|
||||
}
|
||||
|
||||
public static void SetIoc(Application application)
|
||||
{
|
||||
Refractored.FabControl.Droid.FloatingActionButtonViewRenderer.Init();
|
||||
CachedImageRenderer.Init(true);
|
||||
FFImageLoading.Forms.Platform.CachedImageRenderer.Init(true);
|
||||
ZXing.Net.Mobile.Forms.Android.Platform.Init();
|
||||
CrossFingerprint.SetCurrentActivityResolver(() => CrossCurrentActivity.Current.Activity);
|
||||
|
||||
@@ -109,8 +70,8 @@ namespace Bit.Android
|
||||
var container = new Container();
|
||||
|
||||
// Android Stuff
|
||||
container.RegisterSingleton(application.ApplicationContext);
|
||||
container.RegisterSingleton<Application>(application);
|
||||
container.RegisterInstance(application.ApplicationContext);
|
||||
container.RegisterInstance<Application>(application);
|
||||
|
||||
// Services
|
||||
container.RegisterSingleton<IDatabaseService, DatabaseService>();
|
||||
@@ -158,9 +119,9 @@ namespace Bit.Android
|
||||
container.RegisterSingleton<ICipherCollectionRepository, CipherCollectionRepository>();
|
||||
|
||||
// Other
|
||||
container.RegisterSingleton(CrossSettings.Current);
|
||||
container.RegisterSingleton(CrossConnectivity.Current);
|
||||
container.RegisterSingleton(CrossFingerprint.Current);
|
||||
container.RegisterInstance(CrossSettings.Current);
|
||||
container.RegisterInstance(CrossConnectivity.Current);
|
||||
container.RegisterInstance(CrossFingerprint.Current);
|
||||
|
||||
// Push
|
||||
#if FDROID
|
||||
@@ -174,5 +135,13 @@ namespace Bit.Android
|
||||
container.Verify();
|
||||
Resolver.SetResolver(new SimpleInjectorResolver(container));
|
||||
}
|
||||
|
||||
public void OnProviderInstallFailed(int errorCode, Intent recoveryIntent)
|
||||
{
|
||||
}
|
||||
|
||||
public void OnProviderInstalled()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.x8bit.bitwarden" android:versionName="1.17.0" android:installLocation="auto" android:versionCode="502" xmlns:tools="http://schemas.android.com/tools">
|
||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.x8bit.bitwarden" android:versionName="1.20.0" android:installLocation="auto" android:versionCode="502" xmlns:tools="http://schemas.android.com/tools">
|
||||
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="26" />
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.NFC" />
|
||||
@@ -31,7 +31,7 @@
|
||||
<intent-filter>
|
||||
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
||||
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
|
||||
<category android:name="${applicationId}" />
|
||||
<category android:name="com.x8bit.bitwarden" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
|
||||
7588
src/Android/Resources/Resource.Designer.cs
generated
7588
src/Android/Resources/Resource.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,78 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<autofill-service
|
||||
xmlns:android="http://schemas.android.com/apk/res/android" />
|
||||
<autofill-service xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<compatibility-package
|
||||
android:name="com.android.chrome"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.chrome.beta"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.chrome.dev"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.chrome.canary"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.microsoft.emmx"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.opera.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.opera.browser.beta"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.opera.mini.native"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.opera.mini.native.beta"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.sec.android.app.sbrowser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.sec.android.app.sbrowser.beta"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="org.mozilla.fennec_aurora"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="org.mozilla.firefox"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="org.mozilla.firefox_beta"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.brave.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.google.android.apps.chrome"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.google.android.apps.chrome_dev"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.yandex.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="org.codeaurora.swe.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.amazon.cloud9"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="mark.via.gp"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="org.bromite.bromite"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="org.chromium.chrome"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.kiwibrowser.browser"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
<compatibility-package
|
||||
android:name="com.ecosia.android"
|
||||
android:maxLongVersionCode="10000000000"/>
|
||||
</autofill-service>
|
||||
|
||||
@@ -44,7 +44,15 @@ namespace Bit.Android.Services
|
||||
_keyStore = KeyStore.GetInstance(AndroidKeyStore);
|
||||
_keyStore.Load(null);
|
||||
|
||||
GenerateStoreKey();
|
||||
try
|
||||
{
|
||||
GenerateStoreKey(true);
|
||||
}
|
||||
catch
|
||||
{
|
||||
GenerateStoreKey(false);
|
||||
}
|
||||
|
||||
GenerateAesKey();
|
||||
}
|
||||
|
||||
@@ -128,7 +136,7 @@ namespace Bit.Android.Services
|
||||
}
|
||||
}
|
||||
|
||||
private void GenerateStoreKey()
|
||||
private void GenerateStoreKey(bool withDate)
|
||||
{
|
||||
if(_keyStore.ContainsAlias(KeyAlias))
|
||||
{
|
||||
@@ -144,27 +152,33 @@ namespace Bit.Android.Services
|
||||
{
|
||||
var subject = new X500Principal($"CN={KeyAlias}");
|
||||
|
||||
var spec = new KeyPairGeneratorSpec.Builder(Application.Context)
|
||||
var builder = new KeyPairGeneratorSpec.Builder(Application.Context)
|
||||
.SetAlias(KeyAlias)
|
||||
.SetSubject(subject)
|
||||
.SetSerialNumber(BigInteger.Ten)
|
||||
//.SetStartDate(new Date(0))
|
||||
//.SetEndDate(end.Time)
|
||||
.Build();
|
||||
.SetSerialNumber(BigInteger.Ten);
|
||||
|
||||
if(withDate)
|
||||
{
|
||||
builder.SetStartDate(new Date(0)).SetEndDate(end.Time);
|
||||
}
|
||||
|
||||
var spec = builder.Build();
|
||||
var gen = KeyPairGenerator.GetInstance(KeyProperties.KeyAlgorithmRsa, AndroidKeyStore);
|
||||
gen.Initialize(spec);
|
||||
gen.GenerateKeyPair();
|
||||
}
|
||||
else
|
||||
{
|
||||
var spec = new KeyGenParameterSpec.Builder(KeyAlias, KeyStorePurpose.Decrypt | KeyStorePurpose.Encrypt)
|
||||
var builder = new KeyGenParameterSpec.Builder(KeyAlias, KeyStorePurpose.Decrypt | KeyStorePurpose.Encrypt)
|
||||
.SetBlockModes(KeyProperties.BlockModeGcm)
|
||||
.SetEncryptionPaddings(KeyProperties.EncryptionPaddingNone)
|
||||
//.SetKeyValidityStart(new Date(0))
|
||||
//.SetKeyValidityEnd(end.Time)
|
||||
.Build();
|
||||
.SetEncryptionPaddings(KeyProperties.EncryptionPaddingNone);
|
||||
|
||||
if(withDate)
|
||||
{
|
||||
builder.SetKeyValidityStart(new Date(0)).SetKeyValidityEnd(end.Time);
|
||||
}
|
||||
|
||||
var spec = builder.Build();
|
||||
var gen = KeyGenerator.GetInstance(KeyProperties.KeyAlgorithmAes, AndroidKeyStore);
|
||||
gen.Init(spec);
|
||||
gen.GenerateKey();
|
||||
|
||||
@@ -25,6 +25,7 @@ using System.Linq;
|
||||
using Plugin.Settings.Abstractions;
|
||||
using Android.Views.InputMethods;
|
||||
using Android.Widget;
|
||||
using Bit.App.Utilities;
|
||||
|
||||
namespace Bit.Android.Services
|
||||
{
|
||||
@@ -240,10 +241,9 @@ namespace Bit.Android.Services
|
||||
}
|
||||
else
|
||||
{
|
||||
var isPremium = Resolver.Resolve<ITokenService>()?.TokenPremium ?? false;
|
||||
var settings = Resolver.Resolve<ISettings>();
|
||||
var autoCopyEnabled = !settings.GetValueOrDefault(Constants.SettingDisableTotpCopy, false);
|
||||
if(isPremium && autoCopyEnabled && cipher.LoginTotp?.Value != null)
|
||||
if(Helpers.CanAccessPremium() && autoCopyEnabled && cipher.LoginTotp?.Value != null)
|
||||
{
|
||||
CopyToClipboard(App.Utilities.Crypto.Totp(cipher.LoginTotp.Value));
|
||||
}
|
||||
|
||||
@@ -41,6 +41,11 @@ namespace Bit.Android.Services
|
||||
TrackEvent("AutofillService", eventName, label);
|
||||
}
|
||||
|
||||
public void TrackAutofillExtensionEvent(string eventName, string label = null)
|
||||
{
|
||||
TrackExtensionEvent(eventName, label);
|
||||
}
|
||||
|
||||
public void TrackEvent(string category, string eventName, string label = null)
|
||||
{
|
||||
var builder = new HitBuilders.EventBuilder();
|
||||
|
||||
@@ -54,7 +54,8 @@ namespace Bit.Android.Services
|
||||
|
||||
if(androidLanguage.StartsWith("zh"))
|
||||
{
|
||||
if(androidLanguage.Contains("Hant") || androidLanguage.Contains("TW"))
|
||||
if(androidLanguage.Contains("Hant") || androidLanguage.Contains("TW") ||
|
||||
androidLanguage.Contains("HK") || androidLanguage.Contains("MO"))
|
||||
{
|
||||
netLanguage = "zh-Hant";
|
||||
}
|
||||
|
||||
13
src/Android/update-android.ps1
Normal file
13
src/Android/update-android.ps1
Normal file
@@ -0,0 +1,13 @@
|
||||
dir "${env:ProgramFiles(x86)}\Android\android-sdk\platforms"
|
||||
dir "${env:ProgramFiles(x86)}\Android\android-sdk\build-tools"
|
||||
|
||||
$pwd = Get-Location
|
||||
cd "${env:ProgramFiles(x86)}\Android\android-sdk\tools\bin"
|
||||
.\sdkmanager --list
|
||||
Echo 'y' | .\sdkmanager "platforms;android-28" "build-tools;28.0.2" | Out-Null
|
||||
Echo 'y' | .\sdkmanager --update | Out-Null
|
||||
|
||||
dir "${env:ProgramFiles(x86)}\Android\android-sdk\platforms"
|
||||
dir "${env:ProgramFiles(x86)}\Android\android-sdk\build-tools"
|
||||
|
||||
cd $pwd
|
||||
@@ -6,6 +6,7 @@ namespace Bit.App.Abstractions
|
||||
{
|
||||
public interface IAccountsApiRepository
|
||||
{
|
||||
Task<ApiResult<PreloginResponse>> PostPreloginAsync(PreloginRequest requestObj);
|
||||
Task<ApiResult> PostRegisterAsync(RegisterRequest requestObj);
|
||||
Task<ApiResult> PostPasswordHintAsync(PasswordHintRequest requestObj);
|
||||
Task<ApiResult<DateTime?>> GetAccountRevisionDateAsync();
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace Bit.App.Abstractions
|
||||
{
|
||||
public interface ICipherApiRepository : IApiRepository<CipherRequest, CipherResponse, string>
|
||||
{
|
||||
Task<ApiResult<CipherResponse>> PostAttachmentAsync(string cipherId, byte[] data, string fileName);
|
||||
Task<ApiResult<CipherResponse>> PostAttachmentAsync(string cipherId, byte[] data, string key, string fileName);
|
||||
Task<ApiResult> DeleteAttachmentAsync(string cipherId, string attachmentId);
|
||||
}
|
||||
}
|
||||
@@ -18,5 +18,6 @@ namespace Bit.App.Abstractions
|
||||
string IdentityUrl { get; set; }
|
||||
string IconsUrl { get; set; }
|
||||
bool ClearCiphersCache { get; set; }
|
||||
bool OrganizationGivesPremium { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,8 @@ namespace Bit.App.Abstractions
|
||||
string PreviousUserId { get; }
|
||||
bool UserIdChanged { get; }
|
||||
string Email { get; set; }
|
||||
KdfType Kdf { get; set; }
|
||||
int KdfIterations { get; set; }
|
||||
string PIN { get; set; }
|
||||
bool BelongsToOrganization(string orgId);
|
||||
void LogOut(string logoutMessage = null);
|
||||
|
||||
@@ -16,10 +16,10 @@ namespace Bit.App.Abstractions
|
||||
Task<IEnumerable<Cipher>> GetAllByCollectionAsync(string collectionId);
|
||||
Task<Tuple<IEnumerable<Cipher>, IEnumerable<Cipher>, IEnumerable<Cipher>>> GetAllAsync(string uriString);
|
||||
Task<ApiResult<CipherResponse>> SaveAsync(Cipher cipher);
|
||||
Task UpsertDataAsync(CipherData cipher);
|
||||
Task UpsertDataAsync(CipherData cipher, bool sendMessage, bool created);
|
||||
Task<ApiResult> DeleteAsync(string id);
|
||||
Task DeleteDataAsync(string id);
|
||||
Task<byte[]> DownloadAndDecryptAttachmentAsync(string url, string orgId = null);
|
||||
Task DeleteDataAsync(string id, bool sendMessage);
|
||||
Task<byte[]> DownloadAndDecryptAttachmentAsync(string url, CipherString key, string orgId = null);
|
||||
Task<ApiResult<CipherResponse>> EncryptAndSaveAttachmentAsync(Cipher cipher, byte[] data, string fileName);
|
||||
Task UpsertAttachmentDataAsync(IEnumerable<AttachmentData> attachments);
|
||||
Task<ApiResult> DeleteAttachmentAsync(Cipher cipher, string attachmentId);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Bit.App.Models;
|
||||
using Bit.App.Enums;
|
||||
using Bit.App.Models;
|
||||
using Bit.App.Models.Api;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -23,10 +24,9 @@ namespace Bit.App.Abstractions
|
||||
byte[] RsaDecryptToBytes(CipherString encyptedValue, byte[] privateKey);
|
||||
CipherString Encrypt(string plaintextValue, SymmetricCryptoKey key = null);
|
||||
byte[] EncryptToBytes(byte[] plainBytes, SymmetricCryptoKey key = null);
|
||||
SymmetricCryptoKey MakeKeyFromPassword(string password, string salt);
|
||||
string MakeKeyFromPasswordBase64(string password, string salt);
|
||||
SymmetricCryptoKey MakeKeyFromPassword(string password, string salt, KdfType kdf, int kdfIterations);
|
||||
byte[] HashPassword(SymmetricCryptoKey key, string password);
|
||||
string HashPasswordBase64(SymmetricCryptoKey key, string password);
|
||||
CipherString MakeEncKey(SymmetricCryptoKey key);
|
||||
Tuple<SymmetricCryptoKey, CipherString> MakeEncKey(SymmetricCryptoKey key);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ namespace Bit.App.Abstractions
|
||||
void TrackPage(string pageName);
|
||||
void TrackAppEvent(string eventName, string label = null);
|
||||
void TrackExtensionEvent(string eventName, string label = null);
|
||||
void TrackAutofillExtensionEvent(string eventName, string label = null);
|
||||
void TrackEvent(string category, string eventName, string label = null);
|
||||
void TrackException(string message, bool fatal);
|
||||
void Dispatch(Action completionHandler = null);
|
||||
|
||||
@@ -7,8 +7,8 @@ namespace Bit.App.Abstractions
|
||||
public interface ILockService
|
||||
{
|
||||
void UpdateLastActivity();
|
||||
Task<LockType> GetLockTypeAsync(bool forceLock);
|
||||
Task CheckLockAsync(bool forceLock);
|
||||
Task<LockType> GetLockTypeAsync(bool forceLock, bool onlyIfAlreadyLocked = false);
|
||||
Task CheckLockAsync(bool forceLock, bool onlyIfAlreadyLocked = false);
|
||||
bool TopPageIsLock();
|
||||
}
|
||||
}
|
||||
@@ -317,6 +317,11 @@ namespace Bit.App
|
||||
AppResources.Culture = ci;
|
||||
_localizeService.SetLocale(ci);
|
||||
}
|
||||
|
||||
// Calendars are removed by linker. ref https://bugzilla.xamarin.com/show_bug.cgi?id=59077
|
||||
new System.Globalization.ThaiBuddhistCalendar();
|
||||
new System.Globalization.HijriCalendar();
|
||||
new System.Globalization.UmAlQuraCalendar();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,17 +25,17 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="HockeySDK.Xamarin" Version="5.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
|
||||
<PackageReference Include="HockeySDK.Xamarin" Version="5.1.2" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
|
||||
<PackageReference Include="PCLCrypto" Version="2.0.147" />
|
||||
<PackageReference Include="Plugin.Fingerprint" Version="1.4.7" />
|
||||
<PackageReference Include="Refractored.FloatingActionButtonForms" Version="2.1.0" />
|
||||
<PackageReference Include="sqlite-net-pcl" Version="1.5.166-beta" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.3" />
|
||||
<PackageReference Include="Xam.Plugin.Connectivity" Version="3.0.3" />
|
||||
<PackageReference Include="sqlite-net-pcl" Version="1.5.231" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageReference Include="Xam.Plugin.Connectivity" Version="3.2.0" />
|
||||
<PackageReference Include="Xam.Plugins.Settings" Version="3.1.1" />
|
||||
<PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.3.4" />
|
||||
<PackageReference Include="Xamarin.Forms" Version="2.5.0.122203" />
|
||||
<PackageReference Include="Xamarin.FFImageLoading.Forms" Version="2.4.4.859" />
|
||||
<PackageReference Include="Xamarin.Forms" Version="3.4.0.1008975" />
|
||||
<PackageReference Include="XLabs.IoC" Version="2.0.5782" />
|
||||
<PackageReference Include="ZXing.Net.Mobile.Forms" Version="2.1.47" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
public const string IconsUrl = "other:iconsUrl";
|
||||
public const string FailedPinAttempts = "other:failedPinAttempts";
|
||||
public const string ClearCiphersCache = "other:clearCiphersCache";
|
||||
public const string OrgGivesPremium = "other:orgGivesPremium";
|
||||
|
||||
public const int SelectFileRequestCode = 42;
|
||||
public const int SelectFilePermissionRequestCode = 43;
|
||||
|
||||
@@ -30,7 +30,7 @@ namespace Bit.App.Controls
|
||||
BackgroundColor = Color.FromHex("efeff4");
|
||||
}
|
||||
|
||||
protected override void OnAppearing()
|
||||
protected async override void OnAppearing()
|
||||
{
|
||||
if(_requireAuth && !_authService.IsAuthenticated)
|
||||
{
|
||||
@@ -52,6 +52,7 @@ namespace Bit.App.Controls
|
||||
}
|
||||
|
||||
_googleAnalyticsService.TrackPage(GetType().Name);
|
||||
await _lockService.CheckLockAsync(false, true);
|
||||
base.OnAppearing();
|
||||
}
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@ namespace Bit.App.Controls
|
||||
public static readonly BindableProperty BottomBorderColorProperty =
|
||||
BindableProperty.Create(nameof(BottomBorderColor), typeof(Color), typeof(ExtendedEntry), Color.Default);
|
||||
|
||||
public static readonly BindableProperty MaxLengthProperty =
|
||||
BindableProperty.Create(nameof(MaxLength), typeof(int), typeof(ExtendedEntry), int.MaxValue);
|
||||
public static readonly BindableProperty TargetMaxLengthProperty =
|
||||
BindableProperty.Create(nameof(TargetMaxLength), typeof(int), typeof(ExtendedEntry), int.MaxValue);
|
||||
|
||||
public bool HasBorder
|
||||
{
|
||||
@@ -46,13 +46,13 @@ namespace Bit.App.Controls
|
||||
set { SetValue(BottomBorderColorProperty, value); }
|
||||
}
|
||||
|
||||
public int MaxLength
|
||||
public int TargetMaxLength
|
||||
{
|
||||
get { return (int)GetValue(MaxLengthProperty); }
|
||||
set { SetValue(MaxLengthProperty, value); }
|
||||
get { return (int)GetValue(TargetMaxLengthProperty); }
|
||||
set { SetValue(TargetMaxLengthProperty, value); }
|
||||
}
|
||||
|
||||
public ReturnType? ReturnType { get; set; }
|
||||
public Enums.ReturnType? TargetReturnType { get; set; }
|
||||
public bool? Autocorrect { get; set; }
|
||||
public bool DisableAutocapitalize { get; set; }
|
||||
public bool AllowClear { get; set; }
|
||||
|
||||
@@ -171,11 +171,11 @@ namespace Bit.App.Controls
|
||||
_nextElement = value;
|
||||
if(_nextElement != null && Entry != null)
|
||||
{
|
||||
Entry.ReturnType = Enums.ReturnType.Next;
|
||||
Entry.TargetReturnType = Enums.ReturnType.Next;
|
||||
}
|
||||
else if(Entry != null)
|
||||
{
|
||||
Entry.ReturnType = null;
|
||||
Entry.TargetReturnType = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace Bit.App.Controls
|
||||
Entry = new ExtendedEntry
|
||||
{
|
||||
Keyboard = Keyboard.Numeric,
|
||||
MaxLength = 4,
|
||||
TargetMaxLength = 4,
|
||||
HideCursor = true
|
||||
};
|
||||
|
||||
|
||||
7
src/App/Enums/KdfType.cs
Normal file
7
src/App/Enums/KdfType.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Bit.App.Enums
|
||||
{
|
||||
public enum KdfType : short
|
||||
{
|
||||
PBKDF2_SHA256 = 0
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,8 @@
|
||||
SyncFolderCreate = 7,
|
||||
SyncFolderUpdate = 8,
|
||||
SyncCipherDelete = 9,
|
||||
SyncSettings = 10
|
||||
SyncSettings = 10,
|
||||
|
||||
LogOut = 11,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,12 +13,14 @@ namespace Bit.App.Models.Api
|
||||
Uris = cipher.Login.Uris?.Select(u => new LoginUriType(u));
|
||||
Username = cipher.Login.Username?.EncryptedString;
|
||||
Password = cipher.Login.Password?.EncryptedString;
|
||||
PasswordRevisionDate = cipher.Login.PasswordRevisionDate;
|
||||
Totp = cipher.Login.Totp?.EncryptedString;
|
||||
}
|
||||
|
||||
public IEnumerable<LoginUriType> Uris { get; set; }
|
||||
public string Username { get; set; }
|
||||
public string Password { get; set; }
|
||||
public System.DateTime? PasswordRevisionDate { get; set; }
|
||||
public string Totp { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,11 @@ namespace Bit.App.Models.Api
|
||||
Fields = cipher.Fields.Select(f => new FieldType(f));
|
||||
}
|
||||
|
||||
if(cipher.PasswordHistory != null)
|
||||
{
|
||||
PasswordHistory = cipher.PasswordHistory.Select(h => new PasswordHistoryRequest(h));
|
||||
}
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
case CipherType.Login:
|
||||
@@ -46,6 +51,7 @@ namespace Bit.App.Models.Api
|
||||
public string Name { get; set; }
|
||||
public string Notes { get; set; }
|
||||
public IEnumerable<FieldType> Fields { get; set; }
|
||||
public IEnumerable<PasswordHistoryRequest> PasswordHistory { get; set; }
|
||||
|
||||
public LoginType Login { get; set; }
|
||||
public CardType Card { get; set; }
|
||||
|
||||
14
src/App/Models/Api/Request/PasswordHistoryRequest.cs
Normal file
14
src/App/Models/Api/Request/PasswordHistoryRequest.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace Bit.App.Models.Api
|
||||
{
|
||||
public class PasswordHistoryRequest
|
||||
{
|
||||
public PasswordHistoryRequest(PasswordHistory ph)
|
||||
{
|
||||
Password = ph.Password?.EncryptedString;
|
||||
LastUsedDate = ph.LastUsedDate;
|
||||
}
|
||||
|
||||
public string Password { get; set; }
|
||||
public System.DateTime LastUsedDate { get; set; }
|
||||
}
|
||||
}
|
||||
7
src/App/Models/Api/Request/PreloginRequest.cs
Normal file
7
src/App/Models/Api/Request/PreloginRequest.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Bit.App.Models.Api
|
||||
{
|
||||
public class PreloginRequest
|
||||
{
|
||||
public string Email { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
namespace Bit.App.Models.Api
|
||||
using Bit.App.Enums;
|
||||
|
||||
namespace Bit.App.Models.Api
|
||||
{
|
||||
public class RegisterRequest
|
||||
{
|
||||
@@ -7,5 +9,7 @@
|
||||
public string MasterPasswordHash { get; set; }
|
||||
public string MasterPasswordHint { get; set; }
|
||||
public string Key { get; set; }
|
||||
public KdfType Kdf { get; set; }
|
||||
public int KdfIterations { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
public string Id { get; set; }
|
||||
public string Url { get; set; }
|
||||
public string FileName { get; set; }
|
||||
public string Key { get; set; }
|
||||
public string Size { get; set; }
|
||||
public string SizeName { get; set; }
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ namespace Bit.App.Models.Api
|
||||
public SecureNoteType SecureNote { get; set; }
|
||||
public IEnumerable<FieldType> Fields { get; set; }
|
||||
public IEnumerable<AttachmentResponse> Attachments { get; set; }
|
||||
public IEnumerable<PasswordHistoryResponse> PasswordHistory { get; set; }
|
||||
public IEnumerable<string> CollectionIds { get; set; }
|
||||
public DateTime RevisionDate { get; set; }
|
||||
}
|
||||
|
||||
8
src/App/Models/Api/Response/PasswordHistoryResponse.cs
Normal file
8
src/App/Models/Api/Response/PasswordHistoryResponse.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
namespace Bit.App.Models.Api
|
||||
{
|
||||
public class PasswordHistoryResponse
|
||||
{
|
||||
public string Password { get; set; }
|
||||
public System.DateTime LastUsedDate { get; set; }
|
||||
}
|
||||
}
|
||||
10
src/App/Models/Api/Response/PreloginResponse.cs
Normal file
10
src/App/Models/Api/Response/PreloginResponse.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Bit.App.Enums;
|
||||
|
||||
namespace Bit.App.Models.Api
|
||||
{
|
||||
public class PreloginResponse
|
||||
{
|
||||
public KdfType Kdf { get; set; }
|
||||
public int KdfIterations { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,10 @@ namespace Bit.App.Models.Api
|
||||
public string Name { get; set; }
|
||||
public bool UseGroups { get; set; }
|
||||
public bool UseDirectory { get; set; }
|
||||
public bool UseEvents { get; set; }
|
||||
public bool UseTotp { get; set; }
|
||||
public bool Use2fa { get; set; }
|
||||
public bool UsersGetPremium { get; set; }
|
||||
public int Seats { get; set; }
|
||||
public int MaxCollections { get; set; }
|
||||
public short? MaxStorageGb { get; set; }
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Bit.App.Models
|
||||
Id = data.Id;
|
||||
Url = data.Url;
|
||||
FileName = data.FileName != null ? new CipherString(data.FileName) : null;
|
||||
Key = data.Key != null ? new CipherString(data.Key) : null;
|
||||
SetSize(data.Size);
|
||||
SizeName = data.SizeName;
|
||||
}
|
||||
@@ -22,6 +23,7 @@ namespace Bit.App.Models
|
||||
Id = response.Id;
|
||||
Url = response.Url;
|
||||
FileName = response.FileName != null ? new CipherString(response.FileName) : null;
|
||||
Key = response.Key != null ? new CipherString(response.Key) : null;
|
||||
SetSize(response.Size);
|
||||
SizeName = response.SizeName;
|
||||
}
|
||||
@@ -29,6 +31,7 @@ namespace Bit.App.Models
|
||||
public string Id { get; set; }
|
||||
public string Url { get; set; }
|
||||
public CipherString FileName { get; set; }
|
||||
public CipherString Key { get; set; }
|
||||
public long Size { get; set; }
|
||||
public string SizeName { get; set; }
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@ namespace Bit.App.Models
|
||||
Edit = data.Edit;
|
||||
OrganizationUseTotp = data.OrganizationUseTotp;
|
||||
Attachments = attachments?.Select(a => new Attachment(a));
|
||||
RevisionDate = data.RevisionDateTime;
|
||||
|
||||
switch(Type)
|
||||
{
|
||||
@@ -52,6 +53,17 @@ namespace Bit.App.Models
|
||||
}
|
||||
catch(JsonSerializationException) { }
|
||||
}
|
||||
|
||||
if(!string.IsNullOrWhiteSpace(data.PasswordHistory))
|
||||
{
|
||||
try
|
||||
{
|
||||
var phModels = JsonConvert.DeserializeObject<IEnumerable<PasswordHistoryDataModel>>(
|
||||
data.PasswordHistory);
|
||||
PasswordHistory = phModels?.Select(f => new PasswordHistory(f));
|
||||
}
|
||||
catch(JsonSerializationException) { }
|
||||
}
|
||||
}
|
||||
|
||||
public string Id { get; set; }
|
||||
@@ -62,14 +74,19 @@ namespace Bit.App.Models
|
||||
public CipherString Name { get; set; }
|
||||
public CipherString Notes { get; set; }
|
||||
public IEnumerable<Field> Fields { get; set; }
|
||||
public IEnumerable<PasswordHistory> PasswordHistory { get; set; }
|
||||
public bool Favorite { get; set; }
|
||||
public bool Edit { get; set; }
|
||||
public bool OrganizationUseTotp { get; set; }
|
||||
public IEnumerable<Attachment> Attachments { get; set; }
|
||||
public System.DateTime RevisionDate { get; set; }
|
||||
|
||||
public Login Login { get; set; }
|
||||
public Identity Identity { get; set; }
|
||||
public Card Card { get; set; }
|
||||
public SecureNote SecureNote { get; set; }
|
||||
|
||||
public System.DateTime? PasswordRevisionDisplayDate =>
|
||||
Login?.Password == null ? null : Login.PasswordRevisionDate;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace Bit.App.Models.Data
|
||||
LoginId = cipherId;
|
||||
Url = attachment.Url;
|
||||
FileName = attachment.FileName?.EncryptedString;
|
||||
Key = attachment.Key?.EncryptedString;
|
||||
Size = attachment.Size.ToString();
|
||||
SizeName = attachment.SizeName;
|
||||
}
|
||||
@@ -26,6 +27,7 @@ namespace Bit.App.Models.Data
|
||||
LoginId = cipherId;
|
||||
Url = response.Url;
|
||||
FileName = response.FileName;
|
||||
Key = response.Key;
|
||||
Size = response.Size;
|
||||
SizeName = response.SizeName;
|
||||
}
|
||||
@@ -37,6 +39,7 @@ namespace Bit.App.Models.Data
|
||||
public string LoginId { get; set; }
|
||||
public string Url { get; set; }
|
||||
public string FileName { get; set; }
|
||||
public string Key { get; set; }
|
||||
public string Size { get; set; }
|
||||
public string SizeName { get; set; }
|
||||
|
||||
|
||||
@@ -64,6 +64,16 @@ namespace Bit.App.Models.Data
|
||||
}
|
||||
catch(JsonSerializationException) { }
|
||||
}
|
||||
|
||||
if(cipher.PasswordHistory != null && cipher.PasswordHistory.Any())
|
||||
{
|
||||
try
|
||||
{
|
||||
PasswordHistory = JsonConvert.SerializeObject(
|
||||
cipher.PasswordHistory.Select(h => new PasswordHistoryDataModel(h)));
|
||||
}
|
||||
catch(JsonSerializationException) { }
|
||||
}
|
||||
}
|
||||
|
||||
[PrimaryKey]
|
||||
@@ -75,6 +85,7 @@ namespace Bit.App.Models.Data
|
||||
public string Name { get; set; }
|
||||
public string Notes { get; set; }
|
||||
public string Fields { get; set; }
|
||||
public string PasswordHistory { get; set; }
|
||||
public string Login { get; set; }
|
||||
public string Card { get; set; }
|
||||
public string Identity { get; set; }
|
||||
|
||||
@@ -13,10 +13,12 @@ namespace Bit.App.Models.Data
|
||||
Name = cipher.Name;
|
||||
Notes = cipher.Notes;
|
||||
Fields = cipher.Fields?.Select(f => new FieldDataModel(f));
|
||||
PasswordHistory = cipher.PasswordHistory?.Select(h => new PasswordHistoryDataModel(h));
|
||||
}
|
||||
|
||||
public string Name { get; set; }
|
||||
public string Notes { get; set; }
|
||||
public IEnumerable<FieldDataModel> Fields { get; set; }
|
||||
public IEnumerable<PasswordHistoryDataModel> PasswordHistory { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ namespace Bit.App.Models.Data
|
||||
Uris = response.Login.Uris?.Where(u => u != null).Select(u => new LoginUriDataModel(u));
|
||||
Username = response.Login.Username;
|
||||
Password = response.Login.Password;
|
||||
PasswordRevisionDate = response.Login.PasswordRevisionDate;
|
||||
Totp = response.Login.Totp;
|
||||
}
|
||||
|
||||
@@ -33,6 +34,7 @@ namespace Bit.App.Models.Data
|
||||
public IEnumerable<LoginUriDataModel> Uris { get; set; }
|
||||
public string Username { get; set; }
|
||||
public string Password { get; set; }
|
||||
public DateTime? PasswordRevisionDate { get; set; }
|
||||
public string Totp { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
18
src/App/Models/Data/CipherData/PasswordHistoryDataModel.cs
Normal file
18
src/App/Models/Data/CipherData/PasswordHistoryDataModel.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using Bit.App.Models.Api;
|
||||
|
||||
namespace Bit.App.Models.Data
|
||||
{
|
||||
public class PasswordHistoryDataModel
|
||||
{
|
||||
public PasswordHistoryDataModel() { }
|
||||
|
||||
public PasswordHistoryDataModel(PasswordHistoryResponse h)
|
||||
{
|
||||
Password = h.Password;
|
||||
LastUsedDate = h.LastUsedDate;
|
||||
}
|
||||
|
||||
public string Password { get; set; }
|
||||
public System.DateTime LastUsedDate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,7 @@ namespace Bit.App.Models
|
||||
|
||||
Username = deserializedData.Username != null ? new CipherString(deserializedData.Username) : null;
|
||||
Password = deserializedData.Password != null ? new CipherString(deserializedData.Password) : null;
|
||||
PasswordRevisionDate = deserializedData.PasswordRevisionDate;
|
||||
Totp = deserializedData.Totp != null ? new CipherString(deserializedData.Totp) : null;
|
||||
Uris = deserializedData.Uris?.Select(u => new LoginUri(u));
|
||||
}
|
||||
@@ -35,6 +36,7 @@ namespace Bit.App.Models
|
||||
public IEnumerable<LoginUri> Uris { get; set; }
|
||||
public CipherString Username { get; set; }
|
||||
public CipherString Password { get; set; }
|
||||
public DateTime? PasswordRevisionDate { get; set; }
|
||||
public CipherString Totp { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
58
src/App/Models/OtpAuth.cs
Normal file
58
src/App/Models/OtpAuth.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using Bit.App.Utilities;
|
||||
using PCLCrypto;
|
||||
|
||||
namespace Bit.App.Models
|
||||
{
|
||||
public class OtpAuth
|
||||
{
|
||||
public OtpAuth(string key)
|
||||
{
|
||||
if(key?.ToLowerInvariant().StartsWith("otpauth://") ?? false)
|
||||
{
|
||||
var qsParams = Helpers.GetQueryParams(key);
|
||||
if(qsParams.ContainsKey("digits") && qsParams["digits"] != null &&
|
||||
int.TryParse(qsParams["digits"].Trim(), out var digitParam))
|
||||
{
|
||||
if(digitParam > 10)
|
||||
{
|
||||
Digits = 10;
|
||||
}
|
||||
else if(digitParam > 0)
|
||||
{
|
||||
Digits = digitParam;
|
||||
}
|
||||
}
|
||||
if(qsParams.ContainsKey("period") && qsParams["period"] != null &&
|
||||
int.TryParse(qsParams["period"].Trim(), out var periodParam) && periodParam > 0)
|
||||
{
|
||||
Period = periodParam;
|
||||
}
|
||||
if(qsParams.ContainsKey("secret") && qsParams["secret"] != null)
|
||||
{
|
||||
Secret = qsParams["secret"];
|
||||
}
|
||||
if(qsParams.ContainsKey("algorithm") && qsParams["algorithm"] != null)
|
||||
{
|
||||
var algParam = qsParams["algorithm"].ToLowerInvariant();
|
||||
if(algParam == "sha256")
|
||||
{
|
||||
Algorithm = MacAlgorithm.HmacSha256;
|
||||
}
|
||||
else if(algParam == "sha512")
|
||||
{
|
||||
Algorithm = MacAlgorithm.HmacSha512;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Secret = key;
|
||||
}
|
||||
}
|
||||
|
||||
public int Period { get; set; } = 30;
|
||||
public int Digits { get; set; } = 6;
|
||||
public MacAlgorithm Algorithm { get; set; } = MacAlgorithm.HmacSha1;
|
||||
public string Secret { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -172,7 +172,11 @@ namespace Bit.App.Models.Page
|
||||
{
|
||||
AddRange(groupItems);
|
||||
|
||||
if(doUpper)
|
||||
if(string.IsNullOrWhiteSpace(name))
|
||||
{
|
||||
Name = "-";
|
||||
}
|
||||
else if(doUpper)
|
||||
{
|
||||
Name = name.ToUpperInvariant();
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ namespace Bit.App.Models.Page
|
||||
{
|
||||
private const string MaskedPasswordString = "••••••••";
|
||||
|
||||
private string _name, _notes;
|
||||
private string _name, _notes, _reivisonDate, _passwordReivisonDate;
|
||||
private List<Attachment> _attachments;
|
||||
private List<Field> _fields;
|
||||
private List<LoginUri> _loginUris;
|
||||
@@ -44,6 +44,28 @@ namespace Bit.App.Models.Page
|
||||
}
|
||||
}
|
||||
|
||||
public string RevisionDate
|
||||
{
|
||||
get => _reivisonDate;
|
||||
set
|
||||
{
|
||||
_reivisonDate = value;
|
||||
PropertyChanged(this, new PropertyChangedEventArgs(nameof(RevisionDate)));
|
||||
}
|
||||
}
|
||||
|
||||
public string PasswordRevisionDate
|
||||
{
|
||||
get => _passwordReivisonDate;
|
||||
set
|
||||
{
|
||||
_passwordReivisonDate = value;
|
||||
PropertyChanged(this, new PropertyChangedEventArgs(nameof(PasswordRevisionDate)));
|
||||
PropertyChanged(this, new PropertyChangedEventArgs(nameof(ShowPasswordRevisionDate)));
|
||||
}
|
||||
}
|
||||
public bool ShowPasswordRevisionDate => !string.IsNullOrWhiteSpace(PasswordRevisionDate);
|
||||
|
||||
public string Notes
|
||||
{
|
||||
get => _notes;
|
||||
@@ -156,8 +178,18 @@ namespace Bit.App.Models.Page
|
||||
public bool LoginTotpLow => LoginTotpSecond <= 7;
|
||||
public Color LoginTotpColor => !string.IsNullOrWhiteSpace(LoginTotpCode) && LoginTotpLow ?
|
||||
Color.Red : Color.Black;
|
||||
public string LoginTotpCodeFormatted => !string.IsNullOrWhiteSpace(LoginTotpCode) ?
|
||||
string.Format("{0} {1}", LoginTotpCode.Substring(0, 3), LoginTotpCode.Substring(3)) : null;
|
||||
public string LoginTotpCodeFormatted
|
||||
{
|
||||
get
|
||||
{
|
||||
if(string.IsNullOrWhiteSpace(LoginTotpCode) || LoginTotpCode.Length < 5)
|
||||
{
|
||||
return LoginTotpCode;
|
||||
}
|
||||
var half = (int)Math.Floor((double)LoginTotpCode.Length / 2);
|
||||
return string.Format("{0} {1}", LoginTotpCode.Substring(0, half), LoginTotpCode.Substring(half));
|
||||
}
|
||||
}
|
||||
|
||||
// Card
|
||||
public string CardName
|
||||
@@ -523,6 +555,20 @@ namespace Bit.App.Models.Page
|
||||
{
|
||||
Name = cipher.Name?.Decrypt(cipher.OrganizationId);
|
||||
Notes = cipher.Notes?.Decrypt(cipher.OrganizationId);
|
||||
var revisionDate = DateTime.SpecifyKind(cipher.RevisionDate, DateTimeKind.Utc).ToLocalTime();
|
||||
RevisionDate = revisionDate.ToShortDateString() + " " + revisionDate.ToShortTimeString();
|
||||
|
||||
if(cipher.PasswordRevisionDisplayDate.HasValue)
|
||||
{
|
||||
var passwordRevisionDate = DateTime.SpecifyKind(
|
||||
cipher.PasswordRevisionDisplayDate.Value, DateTimeKind.Utc).ToLocalTime();
|
||||
PasswordRevisionDate = passwordRevisionDate.ToShortDateString() + " " +
|
||||
passwordRevisionDate.ToShortTimeString();
|
||||
}
|
||||
else
|
||||
{
|
||||
PasswordRevisionDate = null;
|
||||
}
|
||||
|
||||
if(cipher.Attachments != null)
|
||||
{
|
||||
@@ -533,6 +579,7 @@ namespace Bit.App.Models.Page
|
||||
{
|
||||
Id = attachment.Id,
|
||||
Name = attachment.FileName?.Decrypt(cipher.OrganizationId),
|
||||
Key = attachment.Key,
|
||||
SizeName = attachment.SizeName,
|
||||
Size = attachment.Size,
|
||||
Url = attachment.Url
|
||||
@@ -624,6 +671,7 @@ namespace Bit.App.Models.Page
|
||||
{
|
||||
public string Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public CipherString Key { get; set; }
|
||||
public string SizeName { get; set; }
|
||||
public long Size { get; set; }
|
||||
public string Url { get; set; }
|
||||
@@ -693,7 +741,7 @@ namespace Bit.App.Models.Page
|
||||
}
|
||||
}
|
||||
public string Label => IsWebsite ? AppResources.Website : AppResources.URI;
|
||||
public bool IsWebsite => Value == null ? false :
|
||||
public bool IsWebsite => Value == null ? false :
|
||||
Value.StartsWith("http://") || Value.StartsWith("https://");
|
||||
public bool IsApp => Value == null ? false : Value.StartsWith(Constants.AndroidAppProtocol);
|
||||
}
|
||||
|
||||
18
src/App/Models/PasswordHistory.cs
Normal file
18
src/App/Models/PasswordHistory.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using Bit.App.Models.Data;
|
||||
|
||||
namespace Bit.App.Models
|
||||
{
|
||||
public class PasswordHistory
|
||||
{
|
||||
public PasswordHistory() { }
|
||||
|
||||
public PasswordHistory(PasswordHistoryDataModel model)
|
||||
{
|
||||
Password = model.Password != null ? new CipherString(model.Password) : null;
|
||||
LastUsedDate = model.LastUsedDate;
|
||||
}
|
||||
|
||||
public CipherString Password { get; set; }
|
||||
public System.DateTime LastUsedDate { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Bit.App.Enums;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace Bit.App.Models
|
||||
{
|
||||
@@ -19,6 +19,7 @@ namespace Bit.App.Models
|
||||
public string Id { get; set; }
|
||||
public string UserId { get; set; }
|
||||
public string OrganizationId { get; set; }
|
||||
public List<Guid> CollectionIds { get; set; }
|
||||
public DateTime RevisionDate { get; set; }
|
||||
}
|
||||
|
||||
@@ -29,7 +30,7 @@ namespace Bit.App.Models
|
||||
public DateTime RevisionDate { get; set; }
|
||||
}
|
||||
|
||||
public class SyncUserPushNotification
|
||||
public class UserPushNotification
|
||||
{
|
||||
public string UserId { get; set; }
|
||||
public DateTime Date { get; set; }
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Bit.App.Pages
|
||||
PasswordCell = new FormEntryCell(AppResources.MasterPassword, isPassword: true,
|
||||
useLabelAsPlaceholder: true, imageSource: "lock.png", containerPadding: padding);
|
||||
|
||||
PasswordCell.Entry.ReturnType = Enums.ReturnType.Go;
|
||||
PasswordCell.Entry.TargetReturnType = Enums.ReturnType.Go;
|
||||
|
||||
var table = new ExtendedTableView
|
||||
{
|
||||
@@ -151,7 +151,8 @@ namespace Bit.App.Pages
|
||||
return;
|
||||
}
|
||||
|
||||
var key = _cryptoService.MakeKeyFromPassword(PasswordCell.Entry.Text, _authService.Email);
|
||||
var key = _cryptoService.MakeKeyFromPassword(PasswordCell.Entry.Text, _authService.Email,
|
||||
_authService.Kdf, _authService.KdfIterations);
|
||||
if(key.Key.SequenceEqual(_cryptoService.Key.Key))
|
||||
{
|
||||
_appSettingsService.Locked = false;
|
||||
|
||||
@@ -62,7 +62,7 @@ namespace Bit.App.Pages
|
||||
EmailCell.Entry.Text = lastLoginEmail;
|
||||
}
|
||||
|
||||
PasswordCell.Entry.ReturnType = Enums.ReturnType.Go;
|
||||
PasswordCell.Entry.TargetReturnType = Enums.ReturnType.Go;
|
||||
|
||||
var table = new ExtendedTableView
|
||||
{
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace Bit.App.Pages
|
||||
imageSource: "lock", containerPadding: padding);
|
||||
|
||||
TokenCell.Entry.Keyboard = Keyboard.Numeric;
|
||||
TokenCell.Entry.ReturnType = ReturnType.Go;
|
||||
TokenCell.Entry.TargetReturnType = Enums.ReturnType.Go;
|
||||
|
||||
var table = new TwoFactorTable(
|
||||
new TableSection(Helpers.GetEmptyTableSectionTitle())
|
||||
@@ -254,7 +254,7 @@ namespace Bit.App.Pages
|
||||
{
|
||||
TokenCell = new FormEntryCell("", isPassword: true, imageSource: "lock",
|
||||
useLabelAsPlaceholder: true);
|
||||
TokenCell.Entry.ReturnType = ReturnType.Go;
|
||||
TokenCell.Entry.TargetReturnType = Enums.ReturnType.Go;
|
||||
section.Insert(0, TokenCell);
|
||||
}
|
||||
|
||||
@@ -335,6 +335,17 @@ namespace Bit.App.Pages
|
||||
MessagingCenter.Unsubscribe<Application>(Application.Current, "ResumeYubiKey");
|
||||
}
|
||||
|
||||
protected override bool OnBackButtonPressed()
|
||||
{
|
||||
// ref: https://github.com/bitwarden/mobile/issues/350
|
||||
if(Device.RuntimePlatform == Device.Android && _providerType.HasValue &&
|
||||
_providerType.Value == TwoFactorProviderType.YubiKey)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return base.OnBackButtonPressed();
|
||||
}
|
||||
|
||||
private async void AnotherMethodAsync()
|
||||
{
|
||||
var beforeProviderType = _providerType;
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Bit.App.Pages
|
||||
EmailCell = new FormEntryCell(AppResources.EmailAddress, entryKeyboard: Keyboard.Email,
|
||||
useLabelAsPlaceholder: true, imageSource: "envelope.png", containerPadding: padding);
|
||||
|
||||
EmailCell.Entry.ReturnType = Enums.ReturnType.Go;
|
||||
EmailCell.Entry.TargetReturnType = Enums.ReturnType.Go;
|
||||
|
||||
var table = new ExtendedTableView
|
||||
{
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace Bit.App.Pages
|
||||
entryKeyboard: Keyboard.Email, useLabelAsPlaceholder: true, imageSource: "envelope.png",
|
||||
containerPadding: padding);
|
||||
|
||||
PasswordHintCell.Entry.ReturnType = Enums.ReturnType.Done;
|
||||
PasswordHintCell.Entry.TargetReturnType = Enums.ReturnType.Done;
|
||||
|
||||
var table = new FormTableView(this)
|
||||
{
|
||||
@@ -192,8 +192,10 @@ namespace Bit.App.Pages
|
||||
return;
|
||||
}
|
||||
|
||||
var normalizedEmail = EmailCell.Entry.Text.ToLower();
|
||||
var key = _cryptoService.MakeKeyFromPassword(PasswordCell.Entry.Text, normalizedEmail);
|
||||
var kdf = Enums.KdfType.PBKDF2_SHA256;
|
||||
var kdfIterations = 100000;
|
||||
var normalizedEmail = EmailCell.Entry.Text.ToLower().Trim();
|
||||
var key = _cryptoService.MakeKeyFromPassword(PasswordCell.Entry.Text, normalizedEmail, kdf, kdfIterations);
|
||||
var encKey = _cryptoService.MakeEncKey(key);
|
||||
var request = new RegisterRequest
|
||||
{
|
||||
@@ -201,7 +203,9 @@ namespace Bit.App.Pages
|
||||
MasterPasswordHash = _cryptoService.HashPasswordBase64(key, PasswordCell.Entry.Text),
|
||||
MasterPasswordHint = !string.IsNullOrWhiteSpace(PasswordHintCell.Entry.Text)
|
||||
? PasswordHintCell.Entry.Text : null,
|
||||
Key = encKey.EncryptedString
|
||||
Key = encKey.Item2.EncryptedString,
|
||||
Kdf = kdf,
|
||||
KdfIterations = kdfIterations
|
||||
};
|
||||
|
||||
await _deviceActionService.ShowLoadingAsync(AppResources.CreatingAccount);
|
||||
|
||||
@@ -118,10 +118,6 @@ namespace Bit.App.Pages
|
||||
{
|
||||
base.OnAppearing();
|
||||
NameCell.InitEvents();
|
||||
if(!_connectivity.IsConnected)
|
||||
{
|
||||
AlertNoConnection();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnDisappearing()
|
||||
|
||||
@@ -131,11 +131,6 @@ namespace Bit.App.Pages
|
||||
base.OnAppearing();
|
||||
NameCell.InitEvents();
|
||||
DeleteCell.Tapped += DeleteCell_Tapped;
|
||||
|
||||
if(!_connectivity.IsConnected)
|
||||
{
|
||||
AlertNoConnection();
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnDisappearing()
|
||||
|
||||
@@ -68,10 +68,6 @@ namespace Bit.App.Pages
|
||||
protected override void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
if(!_connectivity.IsConnected)
|
||||
{
|
||||
AlertNoConnection();
|
||||
}
|
||||
}
|
||||
|
||||
private void SetLastSync()
|
||||
|
||||
113
src/App/Pages/Tools/ToolsAutofillPage.cs
Normal file
113
src/App/Pages/Tools/ToolsAutofillPage.cs
Normal file
@@ -0,0 +1,113 @@
|
||||
using System;
|
||||
using Bit.App.Controls;
|
||||
using Xamarin.Forms;
|
||||
using Bit.App.Resources;
|
||||
using FFImageLoading.Forms;
|
||||
|
||||
namespace Bit.App.Pages
|
||||
{
|
||||
public class ToolsAutofillPage : ExtendedContentPage
|
||||
{
|
||||
public ToolsAutofillPage()
|
||||
{
|
||||
Init();
|
||||
}
|
||||
|
||||
public void Init()
|
||||
{
|
||||
var getAccessLabel = new Label
|
||||
{
|
||||
Text = AppResources.ExtensionInstantAccess,
|
||||
VerticalOptions = LayoutOptions.Start,
|
||||
HorizontalOptions = LayoutOptions.Center,
|
||||
HorizontalTextAlignment = TextAlignment.Center,
|
||||
LineBreakMode = LineBreakMode.WordWrap,
|
||||
FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label)),
|
||||
Margin = new Thickness(0, 0, 0, 15),
|
||||
};
|
||||
|
||||
var turnOnLabel = new Label
|
||||
{
|
||||
Text = AppResources.AutofillTurnOn,
|
||||
VerticalOptions = LayoutOptions.Start,
|
||||
HorizontalOptions = LayoutOptions.Center,
|
||||
HorizontalTextAlignment = TextAlignment.Center,
|
||||
LineBreakMode = LineBreakMode.WordWrap,
|
||||
Margin = new Thickness(0, 0, 0, 15),
|
||||
};
|
||||
|
||||
var turnOnLabel1 = new Label
|
||||
{
|
||||
Text = AppResources.AutofillTurnOn1,
|
||||
VerticalOptions = LayoutOptions.Start,
|
||||
HorizontalOptions = LayoutOptions.Start,
|
||||
HorizontalTextAlignment = TextAlignment.Start,
|
||||
LineBreakMode = LineBreakMode.WordWrap
|
||||
};
|
||||
|
||||
var turnOnLabel2 = new Label
|
||||
{
|
||||
Text = AppResources.AutofillTurnOn2,
|
||||
VerticalOptions = LayoutOptions.Start,
|
||||
HorizontalOptions = LayoutOptions.Start,
|
||||
HorizontalTextAlignment = TextAlignment.Start,
|
||||
LineBreakMode = LineBreakMode.WordWrap
|
||||
};
|
||||
|
||||
var turnOnLabel3 = new Label
|
||||
{
|
||||
Text = AppResources.AutofillTurnOn3,
|
||||
VerticalOptions = LayoutOptions.Start,
|
||||
HorizontalOptions = LayoutOptions.Start,
|
||||
HorizontalTextAlignment = TextAlignment.Start,
|
||||
LineBreakMode = LineBreakMode.WordWrap
|
||||
};
|
||||
|
||||
var turnOnLabel4 = new Label
|
||||
{
|
||||
Text = AppResources.AutofillTurnOn4,
|
||||
VerticalOptions = LayoutOptions.Start,
|
||||
HorizontalOptions = LayoutOptions.Start,
|
||||
HorizontalTextAlignment = TextAlignment.Start,
|
||||
LineBreakMode = LineBreakMode.WordWrap
|
||||
};
|
||||
|
||||
var turnOnLabel5 = new Label
|
||||
{
|
||||
Text = AppResources.AutofillTurnOn5,
|
||||
VerticalOptions = LayoutOptions.Start,
|
||||
HorizontalOptions = LayoutOptions.Start,
|
||||
HorizontalTextAlignment = TextAlignment.Start,
|
||||
LineBreakMode = LineBreakMode.WordWrap
|
||||
};
|
||||
|
||||
var keyboardImge = new CachedImage
|
||||
{
|
||||
Source = "autofill-kb.png",
|
||||
VerticalOptions = LayoutOptions.CenterAndExpand,
|
||||
HorizontalOptions = LayoutOptions.Center,
|
||||
Margin = new Thickness(0, 10, 0, 0),
|
||||
WidthRequest = 290,
|
||||
HeightRequest = 252
|
||||
};
|
||||
|
||||
var stackLayout = new StackLayout
|
||||
{
|
||||
Orientation = StackOrientation.Vertical,
|
||||
Spacing = 5,
|
||||
Padding = new Thickness(20, 20, 20, 30),
|
||||
Children = { getAccessLabel, turnOnLabel, turnOnLabel1, turnOnLabel2,
|
||||
turnOnLabel3, turnOnLabel4, turnOnLabel5, keyboardImge },
|
||||
VerticalOptions = LayoutOptions.FillAndExpand
|
||||
};
|
||||
|
||||
if(Device.RuntimePlatform == Device.iOS)
|
||||
{
|
||||
ToolbarItems.Add(new DismissModalToolBarItem(this, AppResources.Close));
|
||||
}
|
||||
|
||||
Title = AppResources.PasswordAutofill;
|
||||
Content = new ScrollView { Content = stackLayout };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,9 +41,18 @@ namespace Bit.App.Pages
|
||||
|
||||
if(Device.RuntimePlatform == Device.iOS)
|
||||
{
|
||||
ExtensionCell = new ToolsViewCell(AppResources.BitwardenAppExtension,
|
||||
AppResources.BitwardenAppExtensionDescription, "upload.png");
|
||||
section.Add(ExtensionCell);
|
||||
if(_deviceInfoService.Version < 12)
|
||||
{
|
||||
ExtensionCell = new ToolsViewCell(AppResources.BitwardenAppExtension,
|
||||
AppResources.BitwardenAppExtensionDescription, "upload.png");
|
||||
section.Add(ExtensionCell);
|
||||
}
|
||||
else
|
||||
{
|
||||
ExtensionCell = new ToolsViewCell(AppResources.PasswordAutofill,
|
||||
AppResources.BitwardenAutofillDescription, "magic.png");
|
||||
section.Add(ExtensionCell);
|
||||
}
|
||||
}
|
||||
if(Device.RuntimePlatform == Device.Android)
|
||||
{
|
||||
@@ -152,13 +161,28 @@ namespace Bit.App.Pages
|
||||
|
||||
private void ExtensionCell_Tapped(object sender, EventArgs e)
|
||||
{
|
||||
Navigation.PushModalAsync(new ExtendedNavigationPage(new ToolsExtensionPage()));
|
||||
if(_deviceInfoService.Version < 12)
|
||||
{
|
||||
Navigation.PushModalAsync(new ExtendedNavigationPage(new ToolsExtensionPage()));
|
||||
}
|
||||
else
|
||||
{
|
||||
Navigation.PushModalAsync(new ExtendedNavigationPage(new ToolsAutofillPage()));
|
||||
}
|
||||
}
|
||||
|
||||
private void WebCell_Tapped(object sender, EventArgs e)
|
||||
{
|
||||
_googleAnalyticsService.TrackAppEvent("OpenedTool", "Web");
|
||||
Device.OpenUri(new Uri("https://vault.bitwarden.com"));
|
||||
var appSettings = Resolver.Resolve<IAppSettingsService>();
|
||||
if(!string.IsNullOrWhiteSpace(appSettings.BaseUrl))
|
||||
{
|
||||
Device.OpenUri(new Uri(appSettings.BaseUrl));
|
||||
}
|
||||
else
|
||||
{
|
||||
Device.OpenUri(new Uri("https://vault.bitwarden.com"));
|
||||
}
|
||||
}
|
||||
|
||||
private void ShareCell_Tapped(object sender, EventArgs e)
|
||||
|
||||
@@ -400,7 +400,9 @@ namespace Bit.App.Pages
|
||||
LengthSlider = new Slider(5, 64, _settings.GetValueOrDefault(Constants.PasswordGeneratorLength, 10))
|
||||
{
|
||||
HorizontalOptions = LayoutOptions.FillAndExpand,
|
||||
VerticalOptions = LayoutOptions.CenterAndExpand
|
||||
VerticalOptions = LayoutOptions.CenterAndExpand,
|
||||
MaximumTrackColor = Color.LightGray,
|
||||
MinimumTrackColor = Color.LightGray,
|
||||
};
|
||||
|
||||
Value = new Label
|
||||
@@ -408,7 +410,8 @@ namespace Bit.App.Pages
|
||||
FontSize = Device.GetNamedSize(NamedSize.Medium, typeof(Label)),
|
||||
HorizontalOptions = LayoutOptions.End,
|
||||
VerticalOptions = LayoutOptions.CenterAndExpand,
|
||||
Style = (Style)Application.Current.Resources["text-muted"]
|
||||
Style = (Style)Application.Current.Resources["text-muted"],
|
||||
FontFamily = Helpers.OnPlatform(iOS: "Menlo-Regular", Android: "monospace", Windows: "Courier"),
|
||||
};
|
||||
|
||||
Value.SetBinding(Label.TextProperty, nameof(PasswordGeneratorPageModel.Length));
|
||||
|
||||
@@ -177,10 +177,6 @@ namespace Bit.App.Pages
|
||||
protected override void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
if(!_connectivity.IsConnected)
|
||||
{
|
||||
AlertNoConnection();
|
||||
}
|
||||
|
||||
NameCell.InitEvents();
|
||||
NotesCell.InitEvents();
|
||||
@@ -249,8 +245,16 @@ namespace Bit.App.Pages
|
||||
_settings.AddOrUpdateValue(AddedLoginAlertKey, true);
|
||||
if(Device.RuntimePlatform == Device.iOS)
|
||||
{
|
||||
DisplayAlert(AppResources.BitwardenAppExtension, AppResources.BitwardenAppExtensionAlert,
|
||||
AppResources.Ok);
|
||||
if(_deviceInfo.Version < 12)
|
||||
{
|
||||
DisplayAlert(AppResources.BitwardenAppExtension, AppResources.BitwardenAppExtensionAlert,
|
||||
AppResources.Ok);
|
||||
}
|
||||
else
|
||||
{
|
||||
DisplayAlert(AppResources.PasswordAutofill, AppResources.BitwardenAutofillAlert,
|
||||
AppResources.Ok);
|
||||
}
|
||||
}
|
||||
else if(Device.RuntimePlatform == Device.Android && !_appInfoService.AutofillAccessibilityServiceEnabled)
|
||||
{
|
||||
|
||||
@@ -19,7 +19,6 @@ namespace Bit.App.Pages
|
||||
private readonly IConnectivity _connectivity;
|
||||
private readonly IDeviceActionService _deviceActionService;
|
||||
private readonly IGoogleAnalyticsService _googleAnalyticsService;
|
||||
private readonly ITokenService _tokenService;
|
||||
private readonly ICryptoService _cryptoService;
|
||||
private readonly string _cipherId;
|
||||
private Cipher _cipher;
|
||||
@@ -35,7 +34,6 @@ namespace Bit.App.Pages
|
||||
_connectivity = Resolver.Resolve<IConnectivity>();
|
||||
_deviceActionService = Resolver.Resolve<IDeviceActionService>();
|
||||
_googleAnalyticsService = Resolver.Resolve<IGoogleAnalyticsService>();
|
||||
_tokenService = Resolver.Resolve<ITokenService>();
|
||||
_cryptoService = Resolver.Resolve<ICryptoService>();
|
||||
|
||||
Init();
|
||||
@@ -210,7 +208,7 @@ namespace Bit.App.Pages
|
||||
ToolbarItems.RemoveAt(0);
|
||||
}
|
||||
|
||||
if(_cipher != null && (_tokenService.TokenPremium || _cipher.OrganizationId != null))
|
||||
if(_cipher != null && (Helpers.CanAccessPremium() || _cipher.OrganizationId != null))
|
||||
{
|
||||
ToolbarItems.Add(SaveToolbarItem);
|
||||
ListView.Footer = NewTable;
|
||||
|
||||
@@ -23,6 +23,8 @@ namespace Bit.App.Pages
|
||||
private readonly IDeviceInfoService _deviceInfo;
|
||||
private readonly IGoogleAnalyticsService _googleAnalyticsService;
|
||||
private DateTime? _lastAction;
|
||||
private string _originalLoginPassword = null;
|
||||
private List<Tuple<string, string>> _originalHiddenFields = new List<Tuple<string, string>>();
|
||||
|
||||
public VaultEditCipherPage(string cipherId)
|
||||
{
|
||||
@@ -169,7 +171,7 @@ namespace Bit.App.Pages
|
||||
// Types
|
||||
if(Cipher.Type == CipherType.Login)
|
||||
{
|
||||
LoginTotpCell = new FormEntryCell(AppResources.AuthenticatorKey,
|
||||
LoginTotpCell = new FormEntryCell(AppResources.AuthenticatorKey,
|
||||
button1: _deviceInfo.HasCamera ? "camera.png" : null);
|
||||
LoginTotpCell.Entry.Text = Cipher.Login?.Totp?.Decrypt(Cipher.OrganizationId);
|
||||
LoginTotpCell.Entry.DisableAutocapitalize = true;
|
||||
@@ -179,7 +181,8 @@ namespace Bit.App.Pages
|
||||
|
||||
LoginPasswordCell = new FormEntryCell(AppResources.Password, isPassword: true,
|
||||
nextElement: LoginTotpCell.Entry, button1: "eye.png", button2: "refresh_alt.png");
|
||||
LoginPasswordCell.Entry.Text = Cipher.Login?.Password?.Decrypt(Cipher.OrganizationId);
|
||||
LoginPasswordCell.Entry.Text = _originalLoginPassword =
|
||||
Cipher.Login?.Password?.Decrypt(Cipher.OrganizationId);
|
||||
LoginPasswordCell.Entry.DisableAutocapitalize = true;
|
||||
LoginPasswordCell.Entry.Autocorrect = false;
|
||||
LoginPasswordCell.Entry.FontFamily =
|
||||
@@ -211,7 +214,7 @@ namespace Bit.App.Pages
|
||||
foreach(var uri in Cipher.Login.Uris)
|
||||
{
|
||||
var value = uri.Uri?.Decrypt(Cipher.OrganizationId);
|
||||
UrisSection.Insert(UrisSection.Count - 1,
|
||||
UrisSection.Insert(UrisSection.Count - 1,
|
||||
Helpers.MakeUriCell(value, uri.Match, UrisSection, this));
|
||||
}
|
||||
}
|
||||
@@ -415,6 +418,11 @@ namespace Bit.App.Pages
|
||||
{
|
||||
FieldsSection.Add(cell);
|
||||
}
|
||||
if(!string.IsNullOrWhiteSpace(label) && !string.IsNullOrWhiteSpace(value) &&
|
||||
field.Type == FieldType.Hidden)
|
||||
{
|
||||
_originalHiddenFields.Add(new Tuple<string, string>(label, value));
|
||||
}
|
||||
}
|
||||
}
|
||||
AddFieldCell = new ExtendedTextCell
|
||||
@@ -492,6 +500,7 @@ namespace Bit.App.Pages
|
||||
NotesCell.Editor.Text.Encrypt(Cipher.OrganizationId);
|
||||
Cipher.Favorite = FavoriteCell.On;
|
||||
|
||||
var passwordHistory = Cipher.PasswordHistory?.ToList() ?? new List<PasswordHistory>();
|
||||
switch(Cipher.Type)
|
||||
{
|
||||
case CipherType.Login:
|
||||
@@ -503,8 +512,21 @@ namespace Bit.App.Pages
|
||||
LoginPasswordCell.Entry.Text.Encrypt(Cipher.OrganizationId),
|
||||
Totp = string.IsNullOrWhiteSpace(LoginTotpCell.Entry.Text) ? null :
|
||||
LoginTotpCell.Entry.Text.Encrypt(Cipher.OrganizationId),
|
||||
PasswordRevisionDate = Cipher.Login.PasswordRevisionDate,
|
||||
};
|
||||
|
||||
if(!string.IsNullOrWhiteSpace(_originalLoginPassword) &&
|
||||
LoginPasswordCell.Entry.Text != _originalLoginPassword)
|
||||
{
|
||||
var now = DateTime.UtcNow;
|
||||
passwordHistory.Insert(0, new PasswordHistory
|
||||
{
|
||||
LastUsedDate = now,
|
||||
Password = _originalLoginPassword.Encrypt(Cipher.OrganizationId),
|
||||
});
|
||||
Cipher.Login.PasswordRevisionDate = now;
|
||||
}
|
||||
|
||||
Helpers.ProcessUrisSectionForSave(UrisSection, Cipher);
|
||||
break;
|
||||
case CipherType.SecureNote:
|
||||
@@ -639,7 +661,18 @@ namespace Bit.App.Pages
|
||||
Cipher.FolderId = null;
|
||||
}
|
||||
|
||||
Helpers.ProcessFieldsSectionForSave(FieldsSection, Cipher);
|
||||
var hiddenFields = Helpers.ProcessFieldsSectionForSave(FieldsSection, Cipher);
|
||||
var changedFields = _originalHiddenFields.Where(of =>
|
||||
hiddenFields.Any(f => f.Item1 == of.Item1 && f.Item2 != of.Item2));
|
||||
foreach(var cf in changedFields)
|
||||
{
|
||||
passwordHistory.Insert(0, new PasswordHistory
|
||||
{
|
||||
LastUsedDate = DateTime.UtcNow,
|
||||
Password = (cf.Item1 + ": " + cf.Item2).Encrypt(Cipher.OrganizationId),
|
||||
});
|
||||
}
|
||||
Cipher.PasswordHistory = (passwordHistory?.Count ?? 0) > 0 ? passwordHistory.Take(5) : null;
|
||||
|
||||
await _deviceActionService.ShowLoadingAsync(AppResources.Saving);
|
||||
var saveTask = await _cipherService.SaveAsync(Cipher);
|
||||
@@ -667,11 +700,6 @@ namespace Bit.App.Pages
|
||||
protected override void OnAppearing()
|
||||
{
|
||||
base.OnAppearing();
|
||||
if(!_connectivity.IsConnected)
|
||||
{
|
||||
AlertNoConnection();
|
||||
}
|
||||
|
||||
NameCell?.InitEvents();
|
||||
NotesCell?.InitEvents();
|
||||
FolderCell?.InitEvents();
|
||||
@@ -719,7 +747,7 @@ namespace Bit.App.Pages
|
||||
CardExpYearCell?.InitEvents();
|
||||
CardNameCell?.InitEvents();
|
||||
CardNumberCell?.InitEvents();
|
||||
if (CardCodeCell?.Button1 != null)
|
||||
if(CardCodeCell?.Button1 != null)
|
||||
{
|
||||
CardCodeCell.Button1.Clicked += CardCodeButton_Clicked;
|
||||
}
|
||||
@@ -803,7 +831,7 @@ namespace Bit.App.Pages
|
||||
CardExpYearCell?.Dispose();
|
||||
CardNameCell?.Dispose();
|
||||
CardNumberCell?.Dispose();
|
||||
if (CardCodeCell?.Button1 != null)
|
||||
if(CardCodeCell?.Button1 != null)
|
||||
{
|
||||
CardCodeCell.Button1.Clicked -= CardCodeButton_Clicked;
|
||||
}
|
||||
@@ -831,7 +859,7 @@ namespace Bit.App.Pages
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Helpers.DisposeSectionEvents(FieldsSection);
|
||||
Helpers.DisposeSectionEvents(UrisSection);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ namespace Bit.App.Pages
|
||||
private readonly string _cipherId;
|
||||
private readonly ICipherService _cipherService;
|
||||
private readonly IDeviceActionService _deviceActionService;
|
||||
private readonly ITokenService _tokenService;
|
||||
private DateTime? _timerStarted = null;
|
||||
private TimeSpan _timerMaxLength = TimeSpan.FromMinutes(5);
|
||||
|
||||
@@ -30,7 +29,6 @@ namespace Bit.App.Pages
|
||||
_cipherId = cipherId;
|
||||
_cipherService = Resolver.Resolve<ICipherService>();
|
||||
_deviceActionService = Resolver.Resolve<IDeviceActionService>();
|
||||
_tokenService = Resolver.Resolve<ITokenService>();
|
||||
|
||||
Init();
|
||||
}
|
||||
@@ -43,6 +41,7 @@ namespace Bit.App.Pages
|
||||
private TableSection NotesSection { get; set; }
|
||||
private TableSection AttachmentsSection { get; set; }
|
||||
private TableSection FieldsSection { get; set; }
|
||||
public TableSection OtherSection { get; set; }
|
||||
public LabeledValueCell NotesCell { get; set; }
|
||||
private EditCipherToolBarItem EditItem { get; set; }
|
||||
public List<LabeledValueCell> FieldsCells { get; set; }
|
||||
@@ -51,6 +50,7 @@ namespace Bit.App.Pages
|
||||
// Login
|
||||
public LabeledValueCell LoginUsernameCell { get; set; }
|
||||
public LabeledValueCell LoginPasswordCell { get; set; }
|
||||
public LabeledValueCell LoginPasswordRevisionDateCell { get; set; }
|
||||
public LabeledValueCell LoginTotpCodeCell { get; set; }
|
||||
|
||||
// Card
|
||||
@@ -111,6 +111,10 @@ namespace Bit.App.Pages
|
||||
NotesCell.Value.SetBinding(Label.TextProperty, nameof(VaultViewCipherPageModel.Notes));
|
||||
NotesCell.Value.LineBreakMode = LineBreakMode.WordWrap;
|
||||
|
||||
var revisionDateCell = new LabeledValueCell(AppResources.DateUpdated);
|
||||
revisionDateCell.Value.SetBinding(Label.TextProperty, nameof(VaultViewCipherPageModel.RevisionDate));
|
||||
revisionDateCell.Value.LineBreakMode = LineBreakMode.WordWrap;
|
||||
|
||||
switch(_type)
|
||||
{
|
||||
case CipherType.Login:
|
||||
@@ -152,6 +156,12 @@ namespace Bit.App.Pages
|
||||
nameof(VaultViewCipherPageModel.LoginTotpColor));
|
||||
LoginTotpCodeCell.Value.FontFamily =
|
||||
Helpers.OnPlatform(iOS: "Menlo-Regular", Android: "monospace", Windows: "Courier");
|
||||
|
||||
// Password Revision Date
|
||||
LoginPasswordRevisionDateCell = new LabeledValueCell(AppResources.DatePasswordUpdated);
|
||||
LoginPasswordRevisionDateCell.Value.SetBinding(Label.TextProperty,
|
||||
nameof(VaultViewCipherPageModel.PasswordRevisionDate));
|
||||
LoginPasswordRevisionDateCell.Value.LineBreakMode = LineBreakMode.WordWrap;
|
||||
break;
|
||||
case CipherType.Card:
|
||||
CardNameCell = new LabeledValueCell(AppResources.CardholderName);
|
||||
@@ -235,6 +245,11 @@ namespace Bit.App.Pages
|
||||
NotesCell
|
||||
};
|
||||
|
||||
OtherSection = new TableSection(Helpers.GetEmptyTableSectionTitle())
|
||||
{
|
||||
revisionDateCell
|
||||
};
|
||||
|
||||
Table = new ExtendedTableView
|
||||
{
|
||||
Intent = TableIntent.Settings,
|
||||
@@ -346,7 +361,7 @@ namespace Bit.App.Pages
|
||||
{
|
||||
Table.Root.Remove(AttachmentsSection);
|
||||
}
|
||||
if(Model.ShowAttachments && (_tokenService.TokenPremium || cipher.OrganizationId != null))
|
||||
if(Model.ShowAttachments && (Helpers.CanAccessPremium() || cipher.OrganizationId != null))
|
||||
{
|
||||
AttachmentsSection = new TableSection(AppResources.Attachments);
|
||||
AttachmentCells = new List<AttachmentViewCell>();
|
||||
@@ -363,10 +378,26 @@ namespace Bit.App.Pages
|
||||
Table.Root.Add(AttachmentsSection);
|
||||
}
|
||||
|
||||
// Other
|
||||
if(Table.Root.Contains(OtherSection))
|
||||
{
|
||||
Table.Root.Remove(OtherSection);
|
||||
}
|
||||
Table.Root.Add(OtherSection);
|
||||
|
||||
// Various types
|
||||
switch(cipher.Type)
|
||||
{
|
||||
case CipherType.Login:
|
||||
if(OtherSection.Contains(LoginPasswordRevisionDateCell))
|
||||
{
|
||||
OtherSection.Remove(LoginPasswordRevisionDateCell);
|
||||
}
|
||||
if(Model.ShowPasswordRevisionDate)
|
||||
{
|
||||
OtherSection.Add(LoginPasswordRevisionDateCell);
|
||||
}
|
||||
|
||||
AddSectionCell(LoginUsernameCell, Model.ShowLoginUsername);
|
||||
AddSectionCell(LoginPasswordCell, Model.ShowLoginPassword);
|
||||
|
||||
@@ -374,15 +405,16 @@ namespace Bit.App.Pages
|
||||
{
|
||||
ItemInformationSection.Remove(LoginTotpCodeCell);
|
||||
}
|
||||
if(cipher.Login?.Totp != null && (_tokenService.TokenPremium || cipher.OrganizationUseTotp))
|
||||
if(cipher.Login?.Totp != null && (Helpers.CanAccessPremium() || cipher.OrganizationUseTotp))
|
||||
{
|
||||
var totpKey = cipher.Login?.Totp.Decrypt(cipher.OrganizationId);
|
||||
if(!string.IsNullOrWhiteSpace(totpKey))
|
||||
{
|
||||
var otpParams = new OtpAuth(totpKey);
|
||||
Model.LoginTotpCode = Crypto.Totp(totpKey);
|
||||
if(!string.IsNullOrWhiteSpace(Model.LoginTotpCode))
|
||||
{
|
||||
TotpTick(totpKey);
|
||||
TotpTick(totpKey, otpParams.Period);
|
||||
_timerStarted = DateTime.Now;
|
||||
Device.StartTimer(new TimeSpan(0, 0, 1), () =>
|
||||
{
|
||||
@@ -391,7 +423,7 @@ namespace Bit.App.Pages
|
||||
return false;
|
||||
}
|
||||
|
||||
TotpTick(totpKey);
|
||||
TotpTick(totpKey, otpParams.Period);
|
||||
return true;
|
||||
});
|
||||
|
||||
@@ -448,7 +480,7 @@ namespace Bit.App.Pages
|
||||
|
||||
private async Task OpenAttachmentAsync(Cipher cipher, VaultViewCipherPageModel.Attachment attachment)
|
||||
{
|
||||
if(!_tokenService.TokenPremium && !cipher.OrganizationUseTotp)
|
||||
if(!Helpers.CanAccessPremium() && !cipher.OrganizationUseTotp)
|
||||
{
|
||||
await DisplayAlert(null, AppResources.PremiumRequired, AppResources.Ok);
|
||||
return;
|
||||
@@ -469,7 +501,8 @@ namespace Bit.App.Pages
|
||||
}
|
||||
|
||||
await _deviceActionService.ShowLoadingAsync(AppResources.Downloading);
|
||||
var data = await _cipherService.DownloadAndDecryptAttachmentAsync(attachment.Url, cipher.OrganizationId);
|
||||
var data = await _cipherService.DownloadAndDecryptAttachmentAsync(attachment.Url, attachment.Key,
|
||||
cipher.OrganizationId);
|
||||
await _deviceActionService.HideLoadingAsync();
|
||||
|
||||
if(data == null)
|
||||
@@ -496,11 +529,11 @@ namespace Bit.App.Pages
|
||||
_deviceActionService.Toast(string.Format(AppResources.ValueHasBeenCopied, alertLabel));
|
||||
}
|
||||
|
||||
private void TotpTick(string totpKey)
|
||||
private void TotpTick(string totpKey, int interval)
|
||||
{
|
||||
var now = Helpers.EpocUtcNow() / 1000;
|
||||
var mod = now % 30;
|
||||
Model.LoginTotpSecond = (int)(30 - mod);
|
||||
var mod = now % interval;
|
||||
Model.LoginTotpSecond = (int)(interval - mod);
|
||||
|
||||
if(mod == 0)
|
||||
{
|
||||
|
||||
@@ -20,6 +20,40 @@ namespace Bit.App.Repositories
|
||||
|
||||
protected override string ApiRoute => "/accounts";
|
||||
|
||||
public virtual async Task<ApiResult<PreloginResponse>> PostPreloginAsync(PreloginRequest requestObj)
|
||||
{
|
||||
if(!Connectivity.IsConnected)
|
||||
{
|
||||
return HandledNotConnected<PreloginResponse>();
|
||||
}
|
||||
|
||||
using(var client = HttpService.ApiClient)
|
||||
{
|
||||
var requestMessage = new TokenHttpRequestMessage(requestObj)
|
||||
{
|
||||
Method = HttpMethod.Post,
|
||||
RequestUri = new Uri(string.Concat(client.BaseAddress, ApiRoute, "/prelogin")),
|
||||
};
|
||||
|
||||
try
|
||||
{
|
||||
var response = await client.SendAsync(requestMessage).ConfigureAwait(false);
|
||||
if(!response.IsSuccessStatusCode)
|
||||
{
|
||||
return await HandleErrorAsync<PreloginResponse>(response).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
var responseContent = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
|
||||
var responseObj = JsonConvert.DeserializeObject<PreloginResponse>(responseContent);
|
||||
return ApiResult<PreloginResponse>.Success(responseObj, response.StatusCode);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return HandledWebException<PreloginResponse>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual async Task<ApiResult> PostRegisterAsync(RegisterRequest requestObj)
|
||||
{
|
||||
if(!Connectivity.IsConnected)
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace Bit.App.Repositories
|
||||
protected override string ApiRoute => "/ciphers";
|
||||
|
||||
public virtual async Task<ApiResult<CipherResponse>> PostAttachmentAsync(string cipherId, byte[] data,
|
||||
string fileName)
|
||||
string key, string fileName)
|
||||
{
|
||||
if(!Connectivity.IsConnected)
|
||||
{
|
||||
@@ -37,6 +37,7 @@ namespace Bit.App.Repositories
|
||||
using(var client = HttpService.ApiClient)
|
||||
using(var content = new MultipartFormDataContent("--BWMobileFormBoundary" + DateTime.UtcNow.Ticks))
|
||||
{
|
||||
content.Add(new StringContent(key), "key");
|
||||
content.Add(new StreamContent(new MemoryStream(data)), "data", fileName);
|
||||
|
||||
var requestMessage = new TokenHttpRequestMessage
|
||||
|
||||
137
src/App/Resources/AppResources.Designer.cs
generated
137
src/App/Resources/AppResources.Designer.cs
generated
@@ -312,6 +312,15 @@ namespace Bit.App.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to AutoFill Activated!.
|
||||
/// </summary>
|
||||
public static string AutofillActivated {
|
||||
get {
|
||||
return ResourceManager.GetString("AutofillActivated", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Always Scan.
|
||||
/// </summary>
|
||||
@@ -402,6 +411,78 @@ namespace Bit.App.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Your logins are now easily accessable right from your keyboard while logging into apps and websites..
|
||||
/// </summary>
|
||||
public static string AutofillSetup {
|
||||
get {
|
||||
return ResourceManager.GetString("AutofillSetup", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to We recommend disabling any other AutoFill apps under Settings if you do not plan to use them..
|
||||
/// </summary>
|
||||
public static string AutofillSetup2 {
|
||||
get {
|
||||
return ResourceManager.GetString("AutofillSetup2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to To enable password autofill on your device, follow these instructions:.
|
||||
/// </summary>
|
||||
public static string AutofillTurnOn {
|
||||
get {
|
||||
return ResourceManager.GetString("AutofillTurnOn", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 1. Go to the iOS "Settings" app.
|
||||
/// </summary>
|
||||
public static string AutofillTurnOn1 {
|
||||
get {
|
||||
return ResourceManager.GetString("AutofillTurnOn1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 2. Tap "Passwords & Accounts".
|
||||
/// </summary>
|
||||
public static string AutofillTurnOn2 {
|
||||
get {
|
||||
return ResourceManager.GetString("AutofillTurnOn2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 3. Tap "AutoFill Passwords".
|
||||
/// </summary>
|
||||
public static string AutofillTurnOn3 {
|
||||
get {
|
||||
return ResourceManager.GetString("AutofillTurnOn3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 4. Turn on AutoFill.
|
||||
/// </summary>
|
||||
public static string AutofillTurnOn4 {
|
||||
get {
|
||||
return ResourceManager.GetString("AutofillTurnOn4", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 5. Select "Bitwarden".
|
||||
/// </summary>
|
||||
public static string AutofillTurnOn5 {
|
||||
get {
|
||||
return ResourceManager.GetString("AutofillTurnOn5", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Auto-fill with Bitwarden.
|
||||
/// </summary>
|
||||
@@ -501,6 +582,24 @@ namespace Bit.App.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen..
|
||||
/// </summary>
|
||||
public static string BitwardenAutofillAlert {
|
||||
get {
|
||||
return ResourceManager.GetString("BitwardenAutofillAlert", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Access your vault directly from your keyboard to quickly autofill passwords..
|
||||
/// </summary>
|
||||
public static string BitwardenAutofillDescription {
|
||||
get {
|
||||
return ResourceManager.GetString("BitwardenAutofillDescription", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to We were unable to automatically open the Android autofill settings menu for you. You can navigate to the autofill settings menu manually from Android Settings > System > Languages and input > Advanced > Autofill service..
|
||||
/// </summary>
|
||||
@@ -942,6 +1041,24 @@ namespace Bit.App.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Password Updated.
|
||||
/// </summary>
|
||||
public static string DatePasswordUpdated {
|
||||
get {
|
||||
return ResourceManager.GetString("DatePasswordUpdated", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Updated.
|
||||
/// </summary>
|
||||
public static string DateUpdated {
|
||||
get {
|
||||
return ResourceManager.GetString("DateUpdated", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to December.
|
||||
/// </summary>
|
||||
@@ -2157,6 +2274,15 @@ namespace Bit.App.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to You must log into the main Bitwarden app before you can use AutoFill..
|
||||
/// </summary>
|
||||
public static string MustLogInMainAppAutofill {
|
||||
get {
|
||||
return ResourceManager.GetString("MustLogInMainAppAutofill", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to My Vault.
|
||||
/// </summary>
|
||||
@@ -2284,7 +2410,7 @@ namespace Bit.App.Resources {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to There are no items in your vault for this website. Tap to add one..
|
||||
/// Looks up a localized string similar to There are no items in your vault for this website/app. Tap to add one..
|
||||
/// </summary>
|
||||
public static string NoItemsTap {
|
||||
get {
|
||||
@@ -2418,6 +2544,15 @@ namespace Bit.App.Resources {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Password AutoFill.
|
||||
/// </summary>
|
||||
public static string PasswordAutofill {
|
||||
get {
|
||||
return ResourceManager.GetString("PasswordAutofill", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Password generated..
|
||||
/// </summary>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey Security Key</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Прикачване на файл</value>
|
||||
@@ -1305,4 +1305,51 @@
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Password Updated</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Updated</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Turn on AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Select "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Password AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -182,18 +182,18 @@
|
||||
<value>Upravit složku</value>
|
||||
</data>
|
||||
<data name="Email" xml:space="preserve">
|
||||
<value>Email</value>
|
||||
<value>E-mail</value>
|
||||
<comment>Short label for an email address.</comment>
|
||||
</data>
|
||||
<data name="EmailAddress" xml:space="preserve">
|
||||
<value>Emailová adresa</value>
|
||||
<value>E-mailová adresa</value>
|
||||
<comment>Full label for a email address.</comment>
|
||||
</data>
|
||||
<data name="EmailUs" xml:space="preserve">
|
||||
<value>Napište nám</value>
|
||||
</data>
|
||||
<data name="EmailUsDescription" xml:space="preserve">
|
||||
<value>Napište nám email pro získání pomoci nebo zanechání zpětné vazby.</value>
|
||||
<value>Napište nám e-mail pro získání pomoci nebo zanechání zpětné vazby.</value>
|
||||
</data>
|
||||
<data name="EnterPIN" xml:space="preserve">
|
||||
<value>Zadejte PIN kód.</value>
|
||||
@@ -344,7 +344,7 @@
|
||||
<comment>The title for the tools page.</comment>
|
||||
</data>
|
||||
<data name="URI" xml:space="preserve">
|
||||
<value>URL</value>
|
||||
<value>URI</value>
|
||||
<comment>Label for a uri/url.</comment>
|
||||
</data>
|
||||
<data name="UseFingerprintToUnlock" xml:space="preserve">
|
||||
@@ -381,7 +381,7 @@
|
||||
<value>Navštivit naší webovou stránku</value>
|
||||
</data>
|
||||
<data name="VisitOurWebsiteDescription" xml:space="preserve">
|
||||
<value>Navštivte webovou stránku aplikace pro zobrazení nápovědy, novinek, nebo návody jak používat Bitwarden.</value>
|
||||
<value>Navštivte náš web pro získání nápovědy, novinek, kontaktu, nebo návodů, jak používat Bitwarden.</value>
|
||||
</data>
|
||||
<data name="Website" xml:space="preserve">
|
||||
<value>Webová stránka</value>
|
||||
@@ -403,10 +403,10 @@
|
||||
<value>Rozšíření aplikace</value>
|
||||
</data>
|
||||
<data name="AutofillAccessibilityDescription" xml:space="preserve">
|
||||
<value>Použijte službu usnadnění pro automatické vyplnění přihlašovacích údajů v aplikacích a na webových stránkách.</value>
|
||||
<value>Služba přístupnosti Bitwarden umožňuje automatické vyplňování přihlašovacích údajů v aplikacích a na webových stránkách.</value>
|
||||
</data>
|
||||
<data name="AutofillService" xml:space="preserve">
|
||||
<value>Služba automatického vyplnění</value>
|
||||
<value>Služba automatického vyplňování</value>
|
||||
</data>
|
||||
<data name="AvoidAmbiguousCharacters" xml:space="preserve">
|
||||
<value>Nepoužít zaměnitelné znaky</value>
|
||||
@@ -415,7 +415,7 @@
|
||||
<value>Rozšíření aplikace Bitwarden</value>
|
||||
</data>
|
||||
<data name="BitwardenAppExtensionAlert" xml:space="preserve">
|
||||
<value>Nejjednodušší způsob, jak přidat nové přihlašovací údaje do vašeho trezoru, je použití rozšíření aplikace Bitwarden. Přečtěte si další informace o použití rozšíření na obrazovce "Nástroje".</value>
|
||||
<value>Nejjednodušší způsob, jak přidat nové přihlašovací údaje do vašeho trezoru, je použití rozšíření aplikace Bitwarden. Další informace o použití tohoto rozšíření naleznete na obrazovce „Nástroje“.</value>
|
||||
</data>
|
||||
<data name="BitwardenAppExtensionDescription" xml:space="preserve">
|
||||
<value>Použijte Bitwarden v Safari a ostatních prohlížečích pro automatické vyplnění přihlašovacích údajů.</value>
|
||||
@@ -424,13 +424,13 @@
|
||||
<value>Služba automatického vyplňování</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription" xml:space="preserve">
|
||||
<value>Použijte službu usnadnění pro automatické vyplnění přihlašovacích údajů.</value>
|
||||
<value>Použijte službu přístupnosti pro automatické vyplňování přihlašovacích údajů.</value>
|
||||
</data>
|
||||
<data name="ChangeEmail" xml:space="preserve">
|
||||
<value>Změnit email</value>
|
||||
<value>Změnit e-mail</value>
|
||||
</data>
|
||||
<data name="ChangeEmailConfirmation" xml:space="preserve">
|
||||
<value>Emailovou adresu si můžete změnit na webové stránce bitwarden.com. Chcete tuto stránku nyní otevřít?</value>
|
||||
<value>E-mailovou adresu si můžete změnit na webové stránce bitwarden.com. Chcete tuto stránku nyní otevřít?</value>
|
||||
</data>
|
||||
<data name="ChangeMasterPassword" xml:space="preserve">
|
||||
<value>Změnit hlavní heslo</value>
|
||||
@@ -470,7 +470,7 @@
|
||||
<value>Povolit automatickou synchronizaci</value>
|
||||
</data>
|
||||
<data name="EnterEmailForHint" xml:space="preserve">
|
||||
<value>Zadejte emailovou adresu pro zaslání nápovědy k hlavnímu heslu.</value>
|
||||
<value>Zadejte e-mailovou adresu pro zaslání nápovědy k hlavnímu heslu.</value>
|
||||
</data>
|
||||
<data name="ExntesionReenable" xml:space="preserve">
|
||||
<value>Znovu zapnout rozšíření aplikace</value>
|
||||
@@ -504,7 +504,7 @@
|
||||
<value>Pro spuštění rozšíření klikněte na ikonku Bitwarden v menu.</value>
|
||||
</data>
|
||||
<data name="ExtensionTurnOn" xml:space="preserve">
|
||||
<value>Pro zapnutí Bitwarden v Safari a ostatních prohlížečích, klikněte na ikonku "více" v dolní části menu.</value>
|
||||
<value>Pro zapnutí Bitwarden v prohlížeči Safari a dalších aplikacích klepněte na ikonku „více“ v dolní části menu.</value>
|
||||
</data>
|
||||
<data name="Favorite" xml:space="preserve">
|
||||
<value>Oblíbené</value>
|
||||
@@ -516,7 +516,7 @@
|
||||
<value>Vygenerovat heslo</value>
|
||||
</data>
|
||||
<data name="GetPasswordHint" xml:space="preserve">
|
||||
<value>Získat nápovědu pro hlavní heslo</value>
|
||||
<value>Zaslat nápovědu k hlavnímu heslu</value>
|
||||
</data>
|
||||
<data name="ImportItems" xml:space="preserve">
|
||||
<value>Importovat položky</value>
|
||||
@@ -634,7 +634,7 @@
|
||||
<value>Nápověda k heslu</value>
|
||||
</data>
|
||||
<data name="PasswordHintAlert" xml:space="preserve">
|
||||
<value>Odeslali jsme vám email s nápovědou k hlavnímu heslu.</value>
|
||||
<value>Odeslali jsme vám e-mail s nápovědou k hlavnímu heslu.</value>
|
||||
</data>
|
||||
<data name="PasswordOverrideAlert" xml:space="preserve">
|
||||
<value>Opravdu chcete přepsat aktuální heslo?</value>
|
||||
@@ -707,7 +707,7 @@
|
||||
<value>Dvoufázové přihlášení</value>
|
||||
</data>
|
||||
<data name="TwoStepLoginConfirmation" xml:space="preserve">
|
||||
<value>Dvoufázové přihlášení činí váš účet mnohem bezpečnější díky nutnosti po každém úspěšném přihlášení zadat ověřovací kód získaný z aplikace, SMS, emailu nebo telefonního hovoru. Dvoufázové přihlášení lze aktivovat na webové stránce bitwarden.com. Chcete tuto stránku nyní otevřít?</value>
|
||||
<value>Dvoufázové přihlášení činí váš účet mnohem bezpečnějším díky nutnosti po každém úspěšném přihlášení zadat ověřovací kód získaný z aplikace, SMS, e-mailu nebo telefonního hovoru. Dvoufázové přihlášení lze aktivovat na webové stránce bitwarden.com. Chcete tuto stránku nyní otevřít?</value>
|
||||
</data>
|
||||
<data name="UnlockWith" xml:space="preserve">
|
||||
<value>Odemknout pomocí {0}</value>
|
||||
@@ -762,10 +762,10 @@
|
||||
<value>Klikněte pro automatické vyplnění přihlašovacích údajů.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceOpenAccessibilitySettings" xml:space="preserve">
|
||||
<value>Otevřít nastavení usnadnění</value>
|
||||
<value>Otevřít nastavení přístupnosti</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceStep1" xml:space="preserve">
|
||||
<value>1. V menu v nastavení Usnadnění klikněte na "Bitwarden" pod nadpisem Služby.</value>
|
||||
<value>1. V nastavení Přístupnosti systému Android klepněte na „Bitwarden“ v části „Stažené služby“.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceStep2" xml:space="preserve">
|
||||
<value>2. Zapněte přepínač a potvrďte stisknutím tlačítka OK.</value>
|
||||
@@ -783,7 +783,7 @@
|
||||
<value>Beta</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceAlert" xml:space="preserve">
|
||||
<value>Nejjednodušší způsob, jak přidat nové přihlašovací údaje do vašeho trezoru, je služba automatického vyplňování Bitwarden. Přečtěte si další informace o použití této služby na obrazovce "Nástroje".</value>
|
||||
<value>Nejjednodušší způsob, jak přidat nové přihlašovací údaje do vašeho trezoru, je služba automatického vyplňování Bitwarden. Další informace o použití této služby naleznete na obrazovce „Nástroje“.</value>
|
||||
</data>
|
||||
<data name="Autofill" xml:space="preserve">
|
||||
<value>Automatické vyplnění</value>
|
||||
@@ -846,7 +846,7 @@
|
||||
<comment>For 2FA</comment>
|
||||
</data>
|
||||
<data name="EnterVerificationCodeEmail" xml:space="preserve">
|
||||
<value>Zadejte 6-místný kód, který byl odeslán na email {0}.</value>
|
||||
<value>Zadejte 6místný kód z e-mailu, který byl zaslán na {0}.</value>
|
||||
<comment>For 2FA</comment>
|
||||
</data>
|
||||
<data name="LoginUnavailable" xml:space="preserve">
|
||||
@@ -865,7 +865,7 @@
|
||||
<comment>Remember my two-step login</comment>
|
||||
</data>
|
||||
<data name="SendVerificationCodeAgain" xml:space="preserve">
|
||||
<value>Zaslat znovu ověřovací kód na email</value>
|
||||
<value>Znovu zaslat ověřovací kód na e-mail</value>
|
||||
<comment>For 2FA</comment>
|
||||
</data>
|
||||
<data name="TwoStepLoginOptions" xml:space="preserve">
|
||||
@@ -875,11 +875,11 @@
|
||||
<value>Použít jinou metodu dvoufázového přihlášení</value>
|
||||
</data>
|
||||
<data name="VerificationEmailNotSent" xml:space="preserve">
|
||||
<value>Nepodařilo se odeslat ověřovací email. Zkuste to znovu.</value>
|
||||
<value>Ověřovací e-mail se nepodařilo odeslat. Zkuste to znovu.</value>
|
||||
<comment>For 2FA</comment>
|
||||
</data>
|
||||
<data name="VerificationEmailSent" xml:space="preserve">
|
||||
<value>Ověřovací email byl odeslán.</value>
|
||||
<value>Ověřovací e-mail byl odeslán.</value>
|
||||
<comment>For 2FA</comment>
|
||||
</data>
|
||||
<data name="YubiKeyInstruction" xml:space="preserve">
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey NEO bezpečnostní klíč</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Přidat přílohu</value>
|
||||
@@ -995,10 +995,10 @@
|
||||
<value>Pro pokročilé uživatele. Můžete zadat základní URL adresu každé služby zvlášť.</value>
|
||||
</data>
|
||||
<data name="EnvironmentSaved" xml:space="preserve">
|
||||
<value>URL adresy vlastního prostředí byly uloženy.</value>
|
||||
<value>URL adresy vlastního prostředí byly uloženy</value>
|
||||
</data>
|
||||
<data name="FormattedIncorrectly" xml:space="preserve">
|
||||
<value>{0} nemá správný formát.</value>
|
||||
<value>{0} má nesprávný formát.</value>
|
||||
<comment>Validation error when something is not formatted correctly, such as a URL or email address.</comment>
|
||||
</data>
|
||||
<data name="IdentityUrl" xml:space="preserve">
|
||||
@@ -1144,7 +1144,7 @@
|
||||
<value>Telefon</value>
|
||||
</data>
|
||||
<data name="September" xml:space="preserve">
|
||||
<value>Záři</value>
|
||||
<value>Září</value>
|
||||
</data>
|
||||
<data name="SSN" xml:space="preserve">
|
||||
<value>Číslo sociálního pojištění</value>
|
||||
@@ -1192,13 +1192,13 @@
|
||||
<value>V této složce nejsou žádné položky.</value>
|
||||
</data>
|
||||
<data name="AutofillAccessibilityService" xml:space="preserve">
|
||||
<value>Služba automatického vyplňování</value>
|
||||
<value>Služba přístupnosti</value>
|
||||
</data>
|
||||
<data name="AutofillServiceDescription" xml:space="preserve">
|
||||
<value>The bitwarden auto-fill service uses the Android Autofill Framework to assist in filling logins, credit cards, and identity information into other apps on your device.</value>
|
||||
<value>Služba Bitwarden automatického vyplnění používá Android Autofill framework pro vyplnění přihlašovacích údajů, čísel platebních karet a dalších osobních informací do dalších aplikací ve vašem zařízení.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceDescription" xml:space="preserve">
|
||||
<value>Použijte službu usnadnění pro automatické vyplnění přihlašovacích údajům, karet nebo identit v ostatních aplikacích.</value>
|
||||
<value>Použijte službu přístupnosti pro automatické vyplňování přihlašovacích údajů, platebních karet či identit v ostatních aplikacích.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceOpenAutofillSettings" xml:space="preserve">
|
||||
<value>Otevřít nastavení automatického vyplňování</value>
|
||||
@@ -1226,7 +1226,7 @@
|
||||
<value>Windows Hello</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillGoToSettings" xml:space="preserve">
|
||||
<value>Nepodařilo se nám automaticky otevřít nastavení automatického vyplňování Android. Nastavení můžete otevřít ručně z Nastavení systému Android > Systém > Jazyky a vstup > Rozšířené > Služba automatického vyplňování.</value>
|
||||
<value>Obrazovku nastavení automatického vyplňování Android se nepodařilo otevřít. Nastavení můžete otevřít ručně z Nastavení systému Android > Systém > Jazyky a zadávání > Rozšířená nastavení > Služba automatického vyplňování.</value>
|
||||
</data>
|
||||
<data name="CustomFieldName" xml:space="preserve">
|
||||
<value>Název vlastního pole</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>Ano a uložit</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>Automaticky vyplněno a uloženo.</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>Organizace</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Držte Yubikey v horní části zařízení.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>Zkusit znovu</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>Pro pokračování přidržte YubiKey NEO u zadní části zařízení.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>Služba přístupnosti může být užitečná, pokud aplikace nepodporují standardní službu automatického vyplňování.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Heslo bylo změněno</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Změněno</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>Automatické vyplňování zapnuto.</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Před použitím automatického vyplňování se musíte nejdříve přihlásit v hlavní aplikaci Bitwarden.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Vaše přihlašovací údaje jsou nyní snadno přístupné přímo z vaší klávesnice během přihlašování do aplikací či webů.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Doporučujeme vypnout v nastavení všechny další aplikace pro automatické vyplňování údajů, pokud je neplánujete používat.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Přistupujte k vašemu trezoru přímo z vaší klávesnice pro rychlejší automatické vyplnění hesel.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Pokyny pro zapnutí automatického vyplňování hesel na vašem zařízení:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Přejděte do aplikace „Nastavení“ v iOS</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Klepněte na „Hesla a účty“</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Klepněte na „Automatické vyplňování hesel“</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Zapněte automatické vyplňování</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Vyberte „Bitwarden“</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Automatické vyplnění hesel</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>Nejjednodušší způsob, jak přidat nové přihlašovací údaje do vašeho trezoru, je rozšíření automatického vyplňování Bitwarden. Další informace o použití tohoto rozšíření naleznete na obrazovce „Nástroje“.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -144,19 +144,19 @@
|
||||
<comment>App name. Shouldn't ever change.</comment>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Annuller</value>
|
||||
<value>Annullér</value>
|
||||
<comment>Cancel an operation.</comment>
|
||||
</data>
|
||||
<data name="Copy" xml:space="preserve">
|
||||
<value>Kopier</value>
|
||||
<value>Kopiér</value>
|
||||
<comment>Copy some value to your clipboard.</comment>
|
||||
</data>
|
||||
<data name="CopyPassword" xml:space="preserve">
|
||||
<value>Kopier adgangskode</value>
|
||||
<value>Kopiér adgangskode</value>
|
||||
<comment>The button text that allows a user to copy the login's password to their clipboard.</comment>
|
||||
</data>
|
||||
<data name="CopyUsername" xml:space="preserve">
|
||||
<value>Kopier brugernavn</value>
|
||||
<value>Kopiér brugernavn</value>
|
||||
<comment>The button text that allows a user to copy the login's username to their clipboard.</comment>
|
||||
</data>
|
||||
<data name="Credits" xml:space="preserve">
|
||||
@@ -179,21 +179,21 @@
|
||||
<value>Redigér</value>
|
||||
</data>
|
||||
<data name="EditFolder" xml:space="preserve">
|
||||
<value>Rediger mappe</value>
|
||||
<value>Redigér mappe</value>
|
||||
</data>
|
||||
<data name="Email" xml:space="preserve">
|
||||
<value>Email</value>
|
||||
<value>E-mail</value>
|
||||
<comment>Short label for an email address.</comment>
|
||||
</data>
|
||||
<data name="EmailAddress" xml:space="preserve">
|
||||
<value>Emailadresse</value>
|
||||
<value>E-mailadresse</value>
|
||||
<comment>Full label for a email address.</comment>
|
||||
</data>
|
||||
<data name="EmailUs" xml:space="preserve">
|
||||
<value>Email os</value>
|
||||
<value>E-mail os</value>
|
||||
</data>
|
||||
<data name="EmailUsDescription" xml:space="preserve">
|
||||
<value>Email os direkte for at få hjælp eller give feedback.</value>
|
||||
<value>E-mail os direkte for at få hjælp eller give feedback.</value>
|
||||
</data>
|
||||
<data name="EnterPIN" xml:space="preserve">
|
||||
<value>Indtast din PIN-kode.</value>
|
||||
@@ -206,10 +206,10 @@
|
||||
<value>Indsend en fejlrapport</value>
|
||||
</data>
|
||||
<data name="FileBugReportDescription" xml:space="preserve">
|
||||
<value>Åbn et problem på vores GitHub depot.</value>
|
||||
<value>Opret en supportsag i vores GitHub-arkiv.</value>
|
||||
</data>
|
||||
<data name="FingerprintDirection" xml:space="preserve">
|
||||
<value>Brug dit fingeraftryk til at verificere.</value>
|
||||
<value>Verificér med dit fingeraftryk.</value>
|
||||
</data>
|
||||
<data name="Folder" xml:space="preserve">
|
||||
<value>Mappe</value>
|
||||
@@ -243,7 +243,7 @@
|
||||
<comment>Hide a secret value that is currently shown (password).</comment>
|
||||
</data>
|
||||
<data name="InternetConnectionRequiredMessage" xml:space="preserve">
|
||||
<value>Forbind venligst til internettet før du fortsætter.</value>
|
||||
<value>Opret forbindelse til internettet inden du fortsætter.</value>
|
||||
<comment>Description message for the alert when internet connection is required to continue.</comment>
|
||||
</data>
|
||||
<data name="InternetConnectionRequiredTitle" xml:space="preserve">
|
||||
@@ -269,18 +269,18 @@
|
||||
<comment>Title for login page. (noun)</comment>
|
||||
</data>
|
||||
<data name="LogOut" xml:space="preserve">
|
||||
<value>Log af</value>
|
||||
<value>Log ud</value>
|
||||
<comment>The log out button text (verb).</comment>
|
||||
</data>
|
||||
<data name="LogoutConfirmation" xml:space="preserve">
|
||||
<value>Er du sikker på, at du vil logge af?</value>
|
||||
<value>Er du sikker på, at du vil logge ud?</value>
|
||||
</data>
|
||||
<data name="MasterPassword" xml:space="preserve">
|
||||
<value>Hovedadgangskode</value>
|
||||
<comment>Label for a master password.</comment>
|
||||
</data>
|
||||
<data name="More" xml:space="preserve">
|
||||
<value>Mere</value>
|
||||
<value>Flere</value>
|
||||
<comment>Text to define that there are more options things to see.</comment>
|
||||
</data>
|
||||
<data name="MyVault" xml:space="preserve">
|
||||
@@ -303,7 +303,7 @@
|
||||
<comment>Acknowledgement.</comment>
|
||||
</data>
|
||||
<data name="DisableGA" xml:space="preserve">
|
||||
<value>Deaktiver Analytics</value>
|
||||
<value>Deaktivér Analytics</value>
|
||||
</data>
|
||||
<data name="Password" xml:space="preserve">
|
||||
<value>Adgangskode</value>
|
||||
@@ -333,7 +333,7 @@
|
||||
<value>Indsend</value>
|
||||
</data>
|
||||
<data name="Sync" xml:space="preserve">
|
||||
<value>Synkroniser</value>
|
||||
<value>Synkronisér</value>
|
||||
<comment>The title for the sync page.</comment>
|
||||
</data>
|
||||
<data name="ThankYou" xml:space="preserve">
|
||||
@@ -348,14 +348,14 @@
|
||||
<comment>Label for a uri/url.</comment>
|
||||
</data>
|
||||
<data name="UseFingerprintToUnlock" xml:space="preserve">
|
||||
<value>Brug fingeraftryk til at låse op</value>
|
||||
<value>Benyt fingeraftryk til oplåsning</value>
|
||||
</data>
|
||||
<data name="Username" xml:space="preserve">
|
||||
<value>Brugernavn</value>
|
||||
<comment>Label for a username.</comment>
|
||||
</data>
|
||||
<data name="ValidationFieldRequired" xml:space="preserve">
|
||||
<value>Feltet {0} er påkrævet.</value>
|
||||
<value>Feltet {0} er obligatorisk.</value>
|
||||
<comment>Validation message for when a form field is left blank and is required to be entered.</comment>
|
||||
</data>
|
||||
<data name="ValueHasBeenCopied" xml:space="preserve">
|
||||
@@ -363,10 +363,10 @@
|
||||
<comment>Confirmation message after suceessfully copying a value to the clipboard.</comment>
|
||||
</data>
|
||||
<data name="VerifyFingerprint" xml:space="preserve">
|
||||
<value>Verificer fingeraftryk</value>
|
||||
<value>Verificér fingeraftryk</value>
|
||||
</data>
|
||||
<data name="VerifyMasterPassword" xml:space="preserve">
|
||||
<value>Bekræft hovedadgangskode</value>
|
||||
<value>Verificér hovedadgangskode</value>
|
||||
</data>
|
||||
<data name="VerifyPIN" xml:space="preserve">
|
||||
<value>Bekræft PIN-kode</value>
|
||||
@@ -381,7 +381,7 @@
|
||||
<value>Besøg vores hjemmeside</value>
|
||||
</data>
|
||||
<data name="VisitOurWebsiteDescription" xml:space="preserve">
|
||||
<value>Besøg vores hjemmeside for at få hjælp, nyheder, sende os en email og/eller lære mere om hvordan du bruger Bitwarden.</value>
|
||||
<value>Besøg vores hjemmeside for at få hjælp, nyheder, e-maile os og/eller få mere at vide om, hvordan du benytter Bitwarden.</value>
|
||||
</data>
|
||||
<data name="Website" xml:space="preserve">
|
||||
<value>Hjemmeside</value>
|
||||
@@ -397,46 +397,46 @@
|
||||
<value>Din nye konto er oprettet! Du kan nu logge ind.</value>
|
||||
</data>
|
||||
<data name="AddAnItem" xml:space="preserve">
|
||||
<value>Tilføj element</value>
|
||||
<value>Tilføj et element</value>
|
||||
</data>
|
||||
<data name="AppExtension" xml:space="preserve">
|
||||
<value>App udvidelse</value>
|
||||
<value>App-udvidelse</value>
|
||||
</data>
|
||||
<data name="AutofillAccessibilityDescription" xml:space="preserve">
|
||||
<value>Brug Bitwardens hjælpefunktion til at auto-udfylde dine logins på tværs af apps og web.</value>
|
||||
<value>Brug Bitwardens hjælpefunktion til autoudfyldning af dine logins på tværs af apps og nettet.</value>
|
||||
</data>
|
||||
<data name="AutofillService" xml:space="preserve">
|
||||
<value>Auto-udfyld tjeneste</value>
|
||||
<value>Autoudfyldningstjeneste</value>
|
||||
</data>
|
||||
<data name="AvoidAmbiguousCharacters" xml:space="preserve">
|
||||
<value>Undgå tvetydige tegn</value>
|
||||
</data>
|
||||
<data name="BitwardenAppExtension" xml:space="preserve">
|
||||
<value>Bitwarden app udvidelse</value>
|
||||
<value>Bitwarden app-udvidelse</value>
|
||||
</data>
|
||||
<data name="BitwardenAppExtensionAlert" xml:space="preserve">
|
||||
<value>Den nemmeste måde at tilføje nye logins til din boks er fra Bitwarden app udvidelse. Lær mere om brugen af Bitwarden app udvidelsen ved at navigere til skærmbilledet "Værktøjer".</value>
|
||||
<value>Den letteste måde at tilføje nye logins til din boks er fra Bitwarden app-udvidelsen. Få mere at vide om brugen af Bitwarden app-udvidelsen ved at gå til skærmen "Værktøjer".</value>
|
||||
</data>
|
||||
<data name="BitwardenAppExtensionDescription" xml:space="preserve">
|
||||
<value>Brug Bitwarden i Safari og andre apps til at auto-udfylde dine logins.</value>
|
||||
<value>Benyt Bitwarden i Safari og andre apps til autoudfyldelse af dine logins.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillService" xml:space="preserve">
|
||||
<value>Bitwarden auto-udfyld tjeneste</value>
|
||||
<value>Bitwarden autoudfyldningstjeneste</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription" xml:space="preserve">
|
||||
<value>Brug Bitwardens hjælpefunktion til at auto-udfylde dine logins.</value>
|
||||
<value>Benyt Bitwardens hjælpefunktion til autoudfyldning af dine logins.</value>
|
||||
</data>
|
||||
<data name="ChangeEmail" xml:space="preserve">
|
||||
<value>Skift emailadresse</value>
|
||||
<value>Skift e-mail</value>
|
||||
</data>
|
||||
<data name="ChangeEmailConfirmation" xml:space="preserve">
|
||||
<value>Du kan ændre din emailadresse i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?</value>
|
||||
<value>Du kan skifte din e-mailadresse i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?</value>
|
||||
</data>
|
||||
<data name="ChangeMasterPassword" xml:space="preserve">
|
||||
<value>Skift hovedadgangskode</value>
|
||||
</data>
|
||||
<data name="ChangePasswordConfirmation" xml:space="preserve">
|
||||
<value>Du kan ændre din hovedadgangskode i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?</value>
|
||||
<value>Du kan skifte din hovedadgangskode i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?</value>
|
||||
</data>
|
||||
<data name="Close" xml:space="preserve">
|
||||
<value>Luk</value>
|
||||
@@ -464,25 +464,25 @@
|
||||
<comment>Message shown when interacting with the server</comment>
|
||||
</data>
|
||||
<data name="EditItem" xml:space="preserve">
|
||||
<value>Rediger element</value>
|
||||
<value>Redigér element</value>
|
||||
</data>
|
||||
<data name="EnableAutomaticSyncing" xml:space="preserve">
|
||||
<value>Aktiver automatisk synkronisering</value>
|
||||
<value>Aktivér automatisk synkronisering</value>
|
||||
</data>
|
||||
<data name="EnterEmailForHint" xml:space="preserve">
|
||||
<value>Indtast din kontos emailadresse for at modtage dit hovedadgangskodetip.</value>
|
||||
<value>Angiv din kontos e-mailadresse for at modtage dit hovedadgangskodetip.</value>
|
||||
</data>
|
||||
<data name="ExntesionReenable" xml:space="preserve">
|
||||
<value>Genaktiver app udvidelse</value>
|
||||
<value>Genaktivér app-udvidelse</value>
|
||||
</data>
|
||||
<data name="ExtensionAlmostDone" xml:space="preserve">
|
||||
<value>Næsten færdig!</value>
|
||||
</data>
|
||||
<data name="ExtensionEnable" xml:space="preserve">
|
||||
<value>Aktiver app udvidelse</value>
|
||||
<value>Aktivér app-udvidelse</value>
|
||||
</data>
|
||||
<data name="ExtensionInSafari" xml:space="preserve">
|
||||
<value>I Safari, find Bitwarden ved hjælp af ikonet del (tip: rul til højre på den nederste række i menuen).</value>
|
||||
<value>I Safari, find Bitwarden ved hjælp af delingsikonet (tip: Rul til højre på den nederste række i menuen).</value>
|
||||
<comment>Safari is the name of apple's web browser</comment>
|
||||
</data>
|
||||
<data name="ExtensionInstantAccess" xml:space="preserve">
|
||||
@@ -495,16 +495,16 @@
|
||||
<value>Se understøttede apps</value>
|
||||
</data>
|
||||
<data name="ExtensionSetup" xml:space="preserve">
|
||||
<value>Dine logins er nu let tilgængelige fra Safari, Chrome og andre understøttede apps.</value>
|
||||
<value>Dine logins er nu lettilgængelige fra Safari, Chrome og andre understøttede apps.</value>
|
||||
</data>
|
||||
<data name="ExtensionSetup2" xml:space="preserve">
|
||||
<value>I Safari og Chrome, find Bitwarden ved hjælp af ikonet del (tip: rul til højre på den nederste række i delemenuen).</value>
|
||||
<value>I Safari og Chrome, find Bitwarden ved hjælp af delingsikonet (tip: Rul til højre på den nederste række i delingsmenuen).</value>
|
||||
</data>
|
||||
<data name="ExtensionTapIcon" xml:space="preserve">
|
||||
<value>Tryk på Bitwarden-ikonet i menuen for at starte udvidelsen.</value>
|
||||
</data>
|
||||
<data name="ExtensionTurnOn" xml:space="preserve">
|
||||
<value>For at aktivere Bitwarden i Safari og andre apps, tryk på "mere" ikonet på den nederste række i menuen.</value>
|
||||
<value>For at aktivere Bitwarden i Safari og andre apps trykkes på "mere"-ikonet på den nederste række i menuen.</value>
|
||||
</data>
|
||||
<data name="Favorite" xml:space="preserve">
|
||||
<value>Favorit</value>
|
||||
@@ -513,22 +513,22 @@
|
||||
<value>fingeraftryk</value>
|
||||
</data>
|
||||
<data name="GeneratePassword" xml:space="preserve">
|
||||
<value>Generer adgangskode</value>
|
||||
<value>Generér adgangskode</value>
|
||||
</data>
|
||||
<data name="GetPasswordHint" xml:space="preserve">
|
||||
<value>Få dit hovedadgangskodetip</value>
|
||||
</data>
|
||||
<data name="ImportItems" xml:space="preserve">
|
||||
<value>Importer elementer</value>
|
||||
<value>Importér elementer</value>
|
||||
</data>
|
||||
<data name="ImportItemsConfirmation" xml:space="preserve">
|
||||
<value>Du kan importere elementer i din web-boks på bitwarden.com. Vil du besøge hjemmesiden nu?</value>
|
||||
<value>Du kan masseimportere elementer i din web-boks på bitwarden.com. Vil du besøge hjemmesiden nu?</value>
|
||||
</data>
|
||||
<data name="ImportItemsDescription" xml:space="preserve">
|
||||
<value>Importer hurtigt dine elementer fra andre adgangskode manager-programmer.</value>
|
||||
<value>Masseimportér hurtigt dine elementer fra andre adgangskodehåndterings-apps.</value>
|
||||
</data>
|
||||
<data name="LastSync" xml:space="preserve">
|
||||
<value>Sidste synkronisering:</value>
|
||||
<value>Seneste synkronisering:</value>
|
||||
</data>
|
||||
<data name="Length" xml:space="preserve">
|
||||
<value>Længde</value>
|
||||
@@ -559,25 +559,25 @@
|
||||
<comment>Message shown when interacting with the server</comment>
|
||||
</data>
|
||||
<data name="LoginOrCreateNewAccount" xml:space="preserve">
|
||||
<value>Log ind eller opret en ny konto for at få adgang til din sikre boks.</value>
|
||||
<value>Log ind, eller opret en ny konto, for at tilgå din sikre boks.</value>
|
||||
</data>
|
||||
<data name="Manage" xml:space="preserve">
|
||||
<value>Administrer</value>
|
||||
<value>Håndtér</value>
|
||||
</data>
|
||||
<data name="MasterPasswordConfirmationValMessage" xml:space="preserve">
|
||||
<value>Din adgangskode matchede ikke.</value>
|
||||
<value>Adgangskodebekræftelse er forkert.</value>
|
||||
</data>
|
||||
<data name="MasterPasswordDescription" xml:space="preserve">
|
||||
<value>Hovedadgangskoden er den adgangskode, du bruger til at få adgang til din boks. Det er meget vigtigt, at du ikke glemmer din hovedadgangskode. Der er ingen måde hvorpå koden kan genoprettes, i tilfælde af at du glemmer den.</value>
|
||||
<value>Hovedadgangskoden er den adgangskode, du benytter for at tilgå din boks. Det er meget vigtigt, at du ikke glemmer din hovedadgangskode. Der er ingen måde, hvorpå koden kan genoprettes, dersom du glemmer den.</value>
|
||||
</data>
|
||||
<data name="MasterPasswordHint" xml:space="preserve">
|
||||
<value>Hovedadgangskode tip (valgfri)</value>
|
||||
<value>Hovedadgangskodetip (valgfrit)</value>
|
||||
</data>
|
||||
<data name="MasterPasswordHintDescription" xml:space="preserve">
|
||||
<value>Et tip til hovedeadgangskoden kan hjælpe dig med at huske din adgangskode, hvis du glemmer den.</value>
|
||||
<value>Et hovedeadgangskodentip kan hjælpe dig med at huske din adgangskode, hvis du glemmer den.</value>
|
||||
</data>
|
||||
<data name="MasterPasswordLengthValMessage" xml:space="preserve">
|
||||
<value>Hovedadgangskode skal være mindst 8 tegn.</value>
|
||||
<value>Hovedadgangskode skal være på minimum 8 tegn.</value>
|
||||
</data>
|
||||
<data name="MinNumbers" xml:space="preserve">
|
||||
<value>Minimum cifre</value>
|
||||
@@ -591,7 +591,7 @@
|
||||
<value>Flere indstillinger</value>
|
||||
</data>
|
||||
<data name="MustLogInMainApp" xml:space="preserve">
|
||||
<value>Du skal logge ind på den primære Bitwarden app før du kan bruge udvidelsen.</value>
|
||||
<value>Du skal logge ind på den primære Bitwarden-app, før du kan benytte udvidelsen.</value>
|
||||
</data>
|
||||
<data name="Never" xml:space="preserve">
|
||||
<value>Aldrig</value>
|
||||
@@ -606,17 +606,17 @@
|
||||
<value>Der er ingen elementer i din boks.</value>
|
||||
</data>
|
||||
<data name="NoItemsTap" xml:space="preserve">
|
||||
<value>Der er ingen elementer i din boks til denne hjemmeside. Tryk for at tilføje et.</value>
|
||||
<value>Der er ingen elementer til denne hjemmeside/app i din boks. Tryk for at tilføje et.</value>
|
||||
</data>
|
||||
<data name="NoUsernamePasswordConfigured" xml:space="preserve">
|
||||
<value>Dette login har ikke et brugernavn eller adgangskode konfigureret.</value>
|
||||
<value>Dette login har intet brugernavn eller adgangskode opsat.</value>
|
||||
</data>
|
||||
<data name="OkGotIt" xml:space="preserve">
|
||||
<value>Ok, forstået!</value>
|
||||
<comment>Confirmation, like "Ok, I understand it"</comment>
|
||||
</data>
|
||||
<data name="OptionDefaults" xml:space="preserve">
|
||||
<value>Standardindstillinger er sat fra Bitwarden appens adgangskode generator værktøj.</value>
|
||||
<value>Standardindstillinger opsættes fra Bitwarden-app'ens adgangskodegeneratorværktøj.</value>
|
||||
</data>
|
||||
<data name="Options" xml:space="preserve">
|
||||
<value>Indstillinger</value>
|
||||
@@ -634,29 +634,29 @@
|
||||
<value>Adgangskodetip</value>
|
||||
</data>
|
||||
<data name="PasswordHintAlert" xml:space="preserve">
|
||||
<value>Vi har sendt dig en email med dit hovedadgangskodetip.</value>
|
||||
<value>Vi har sendt dig en e-mail med dit hovedadgangskodetip.</value>
|
||||
</data>
|
||||
<data name="PasswordOverrideAlert" xml:space="preserve">
|
||||
<value>Er du sikker du vil overskrive den aktuelle adgangskode?</value>
|
||||
</data>
|
||||
<data name="PushNotificationAlert" xml:space="preserve">
|
||||
<value>Bitwarden holder automatisk din boks synkroniseret ved hjælp af push notifikationer. For at få den bedst mulige oplevelse, skal du vælge "Tillad" på den følgende prompt for at aktivere push notifikationer.</value>
|
||||
<value>Bitwarden holder automatisk din boks synkroniseret ved hjælp af push-notifikationer. For den bedst mulige oplevelse bør du vælge "Tillad" i den følgende prompt for at aktivere push-notifikationer.</value>
|
||||
<comment>Push notifications for apple products</comment>
|
||||
</data>
|
||||
<data name="RateTheApp" xml:space="preserve">
|
||||
<value>Bedøm appen</value>
|
||||
</data>
|
||||
<data name="RateTheAppDescription" xml:space="preserve">
|
||||
<value>Overvej om du vil hjælpe os med en god anmeldelse!</value>
|
||||
<value>Overvej venligst at hjælpe os med en god anmeldelse!</value>
|
||||
</data>
|
||||
<data name="RateTheAppDescriptionAppStore" xml:space="preserve">
|
||||
<value>App Store bedømmelser nulstilles ved hver ny version af Bitwarden. Overvej om du vil hjælpe os med en god anmeldelse!</value>
|
||||
<value>App Store-bedømmelser nulstilles ved hver ny version af Bitwarden. Overvej venligst at hjælpe os med en god anmeldelse!</value>
|
||||
</data>
|
||||
<data name="RegeneratePassword" xml:space="preserve">
|
||||
<value>Regenerer adgangskode</value>
|
||||
<value>Regenerér adgangskode</value>
|
||||
</data>
|
||||
<data name="RetypeMasterPassword" xml:space="preserve">
|
||||
<value>Gentast hovedadgangskode</value>
|
||||
<value>Angiv hovedadgangskode igen</value>
|
||||
</data>
|
||||
<data name="SearchVault" xml:space="preserve">
|
||||
<value>Søg i boks</value>
|
||||
@@ -665,7 +665,7 @@
|
||||
<value>Sikkerhed</value>
|
||||
</data>
|
||||
<data name="SeeDevProgress" xml:space="preserve">
|
||||
<value>Se fremskridt i udviklingen</value>
|
||||
<value>Se udviklingsforløb</value>
|
||||
</data>
|
||||
<data name="Select" xml:space="preserve">
|
||||
<value>Vælg</value>
|
||||
@@ -674,7 +674,7 @@
|
||||
<value>Sæt PIN-kode</value>
|
||||
</data>
|
||||
<data name="SetPINDirection" xml:space="preserve">
|
||||
<value>Indtast en 4-cifret PIN-kode til at låse appen op med.</value>
|
||||
<value>Angiv en 4-cifret PIN-kode til at låse appen op med.</value>
|
||||
</data>
|
||||
<data name="ItemInformation" xml:space="preserve">
|
||||
<value>Elementinformation</value>
|
||||
@@ -691,13 +691,13 @@
|
||||
<comment>Message shown when interacting with the server</comment>
|
||||
</data>
|
||||
<data name="SyncingComplete" xml:space="preserve">
|
||||
<value>Synkronisering komplet.</value>
|
||||
<value>Synkronisering fuldført.</value>
|
||||
</data>
|
||||
<data name="SyncingFailed" xml:space="preserve">
|
||||
<value>Synkronisering mislykkedes.</value>
|
||||
</data>
|
||||
<data name="SyncVaultNow" xml:space="preserve">
|
||||
<value>Synkroniser boks nu</value>
|
||||
<value>Synkronisér boks nu</value>
|
||||
</data>
|
||||
<data name="TouchID" xml:space="preserve">
|
||||
<value>Touch ID</value>
|
||||
@@ -707,7 +707,7 @@
|
||||
<value>To-trins login</value>
|
||||
</data>
|
||||
<data name="TwoStepLoginConfirmation" xml:space="preserve">
|
||||
<value>To-trins login gør din konto mere sikker, ved at kræve at du verificerer dit login med en anden enhed, såsom en sikkerhedsnøgle, autentificerings app, SMS, telefonopkald eller email. To-trins login kan aktiveres på bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?</value>
|
||||
<value>To-trins login øger din kontosikkerhed, ved at kræve at du verificerer dit login med en anden enhed, såsom en sikkerhedsnøgle, autentificerings app, SMS, telefonopkald eller e-mail. To-trins login kan aktiveres i bitwarden.com web-boksen. Vil du besøge hjemmesiden nu?</value>
|
||||
</data>
|
||||
<data name="UnlockWith" xml:space="preserve">
|
||||
<value>Lås op med {0}</value>
|
||||
@@ -720,7 +720,7 @@
|
||||
<comment>Message shown when interacting with the server</comment>
|
||||
</data>
|
||||
<data name="VerificationCode" xml:space="preserve">
|
||||
<value>Bekræftelseskode</value>
|
||||
<value>Verifikationskode</value>
|
||||
</data>
|
||||
<data name="ViewItem" xml:space="preserve">
|
||||
<value>Vis element</value>
|
||||
@@ -729,10 +729,10 @@
|
||||
<value>Bitwarden web-boks</value>
|
||||
</data>
|
||||
<data name="WebVaultDescription" xml:space="preserve">
|
||||
<value>Administrer dine elementer fra enhver webbrowser med Bitwarden web-boksen.</value>
|
||||
<value>Håndtér dine elementer fra enhver webbrowser med Bitwarden web-boksen.</value>
|
||||
</data>
|
||||
<data name="Lost2FAApp" xml:space="preserve">
|
||||
<value>Mistet autentificerings app?</value>
|
||||
<value>Mistet autentificerings-app?</value>
|
||||
</data>
|
||||
<data name="Items" xml:space="preserve">
|
||||
<value>Elementer</value>
|
||||
@@ -756,19 +756,19 @@
|
||||
<comment>This is used for the autofill service. ex. "There are no items in your vault for twitter.com".</comment>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceNotification" xml:space="preserve">
|
||||
<value>Når du ser en Bitwarden auto-udfyld notifikation, kan du trykke på den for at starte automatisk udfyldning.</value>
|
||||
<value>Når du ser en Bitwarden autoudfyldningsnotifikation, kan du trykke på den for at starte automatisk udfyldning.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceNotificationContent" xml:space="preserve">
|
||||
<value>Tryk på denne notifikation for at auto-udfylde med et element fra din boks.</value>
|
||||
<value>Tryk på denne notifikation for at autoudfylde med et element fra din boks.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceOpenAccessibilitySettings" xml:space="preserve">
|
||||
<value>Åbn indstillinger for hjælpefunktioner</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceStep1" xml:space="preserve">
|
||||
<value>1. På Android-skærmen Hjælpefunktioner tryk på "Bitwarden" under tjenester.</value>
|
||||
<value>1. Tryk fra Androids Hjælpefunktioner på "Bitwarden" under Tjenester-sektionen.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceStep2" xml:space="preserve">
|
||||
<value>2. Tænd kontakten og tryk på OK for at acceptere.</value>
|
||||
<value>2. Slå kontakten til og tryk på OK for at acceptere.</value>
|
||||
</data>
|
||||
<data name="Disabled" xml:space="preserve">
|
||||
<value>Deaktiveret</value>
|
||||
@@ -783,16 +783,16 @@
|
||||
<value>Beta</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceAlert" xml:space="preserve">
|
||||
<value>Den nemmeste måde at tilføje nye logins til din boks er fra Bitwarden Auto-udfyld tjenesten. Lær mere om brugen af Bitwarden auto-udfyld tjenesten ved at navigere til skærmbilledet "Værktøjer".</value>
|
||||
<value>Den letteste måde at tilføje nye logins til din boks er fra Bitwarden Autoudfyldningstjenesten. Få mere at vide om brugen af Bitwarden Autoudfyldningstjenesten ved at gå til skærmen "Værktøjer".</value>
|
||||
</data>
|
||||
<data name="Autofill" xml:space="preserve">
|
||||
<value>Auto-udfyld</value>
|
||||
<value>Autoudfyld</value>
|
||||
</data>
|
||||
<data name="AutofillOrView" xml:space="preserve">
|
||||
<value>Vil du auto-udfylde eller se dette element?</value>
|
||||
<value>Vil du autoudfylde eller se dette element?</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceMatchConfirm" xml:space="preserve">
|
||||
<value>Er du sikker på du vil auto-udfylde dette element? Det er ikke et fuldstændigt match til "{0}".</value>
|
||||
<value>Er du sikker på du vil autoudfylde dette element? Det er ikke et fuldstændigt match til "{0}".</value>
|
||||
</data>
|
||||
<data name="MatchingItems" xml:space="preserve">
|
||||
<value>Matchende elementer</value>
|
||||
@@ -804,7 +804,7 @@
|
||||
<value>Søg</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceSearch" xml:space="preserve">
|
||||
<value>Du søger efter et auto-udfyld element til "{0}".</value>
|
||||
<value>Du søger efter et autoudfyld element til "{0}".</value>
|
||||
</data>
|
||||
<data name="ShareVault" xml:space="preserve">
|
||||
<value>Del din boks</value>
|
||||
@@ -819,19 +819,19 @@
|
||||
<value>Skan når adgangskodefeltet fokuseres</value>
|
||||
</data>
|
||||
<data name="AutofillPasswordFieldDescription" xml:space="preserve">
|
||||
<value>Skan kun skærmen for felter og tilbyd en auto-udfyld notifikation, når du vælger et adgangskodefelt. Denne indstilling kan hjælpe med at spare på batteriet.</value>
|
||||
<value>Skan kun skærmen for felter og tilbyd en autoudfyld notifikation, når du vælger et adgangskodefelt. Denne indstilling kan hjælpe med at spare på batteriet.</value>
|
||||
</data>
|
||||
<data name="AutofillPersistNotification" xml:space="preserve">
|
||||
<value>Vedvarende notifikation</value>
|
||||
</data>
|
||||
<data name="AutofillPersistNotificationDescription" xml:space="preserve">
|
||||
<value>Tilbyd altid en auto-udfyld notifikation og skan kun for felter efter forsøgt auto-udfyld. Denne indstilling kan hjælpe med at spare på batteriet.</value>
|
||||
<value>Tilbyd altid en autoudfyld notifikation og skan kun efter felter efter forsøgt autoudfyld. Denne indstilling kan hjælpe med at spare på batteriet.</value>
|
||||
</data>
|
||||
<data name="AutofillAlways" xml:space="preserve">
|
||||
<value>Skan altid</value>
|
||||
</data>
|
||||
<data name="AutofillAlwaysDescription" xml:space="preserve">
|
||||
<value>Skan altid skærmen for felter og tilbyd kun en auto-udfyld notifikation, hvis adgangskodefelter er fundet. Dette er standardindstillingen.</value>
|
||||
<value>Skan altid skærmen for felter og tilbyd kun en autoudfyld notifikation, hvis adgangskodefelter er fundet. Dette er standardindstillingen.</value>
|
||||
</data>
|
||||
<data name="CannotOpenApp" xml:space="preserve">
|
||||
<value>Kan ikke åbne appen "{0}".</value>
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey sikkerhedsnøgle</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Tilføj ny vedhæftning</value>
|
||||
@@ -941,13 +941,13 @@
|
||||
<value>TOTP kopieret!</value>
|
||||
</data>
|
||||
<data name="CopyTotp" xml:space="preserve">
|
||||
<value>Kopier TOTP</value>
|
||||
<value>Kopiér TOTP</value>
|
||||
</data>
|
||||
<data name="DisableAutoTotpCopyDescription" xml:space="preserve">
|
||||
<value>Hvis dit login har en autentificeringsnøgle tilknyttet, kopieres TOTP verifikationskoden automatisk til din udklipsholder når du auto-udfylder login.</value>
|
||||
</data>
|
||||
<data name="DisableAutoTotpCopy" xml:space="preserve">
|
||||
<value>Deaktiver automatisk TOTP kopiering</value>
|
||||
<value>Deaktivér automatisk TOTP kopiering</value>
|
||||
</data>
|
||||
<data name="PremiumRequired" xml:space="preserve">
|
||||
<value>Premium-medlemskab kræves for at anvende denne funktion.</value>
|
||||
@@ -1024,10 +1024,10 @@
|
||||
<value>Brugerdefinerede felter</value>
|
||||
</data>
|
||||
<data name="CopyNumber" xml:space="preserve">
|
||||
<value>Kopier nummer</value>
|
||||
<value>Kopiér nummer</value>
|
||||
</data>
|
||||
<data name="CopySecurityCode" xml:space="preserve">
|
||||
<value>Kopier sikkerhedskode</value>
|
||||
<value>Kopiér sikkerhedskode</value>
|
||||
</data>
|
||||
<data name="Number" xml:space="preserve">
|
||||
<value>Nummer</value>
|
||||
@@ -1174,7 +1174,7 @@
|
||||
<value>Ikonserver URL</value>
|
||||
</data>
|
||||
<data name="AutofillWithBitwarden" xml:space="preserve">
|
||||
<value>Auto-udfyld med Bitwarden</value>
|
||||
<value>Autoudfyld med Bitwarden</value>
|
||||
</data>
|
||||
<data name="VaultIsLocked" xml:space="preserve">
|
||||
<value>Boksen er låst</value>
|
||||
@@ -1192,16 +1192,16 @@
|
||||
<value>Der er ingen elementer i denne mappe.</value>
|
||||
</data>
|
||||
<data name="AutofillAccessibilityService" xml:space="preserve">
|
||||
<value>Auto-udfyld hjælpefunktion</value>
|
||||
<value>Autoudfyld hjælpefunktion</value>
|
||||
</data>
|
||||
<data name="AutofillServiceDescription" xml:space="preserve">
|
||||
<value>Bitwarden auto-udfyld tjenesten bruger Androids Auto-udfyld framework til at hjælpe med at udfylde logins, kreditkort og identitetsoplysninger i andre apps på din enhed.</value>
|
||||
<value>Bitwarden autoudfyld tjenesten bruger Androids AutoFyld framework til at hjælpe med at udfylde logins, kreditkort og identitetsoplysninger i andre apps på din enhed.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceDescription" xml:space="preserve">
|
||||
<value>Brug Bitwarden auto-udfyld tjenesten til at udfylde logins, kreditkort og identitetsoplysninger i andre apps.</value>
|
||||
<value>Brug Bitwarden autoudfyld tjenesten til at udfylde logins, kreditkort og identitetsoplysninger i andre apps.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillServiceOpenAutofillSettings" xml:space="preserve">
|
||||
<value>Åbn auto-udfyld indstillinger</value>
|
||||
<value>Åbn autoudfyld indstillinger</value>
|
||||
</data>
|
||||
<data name="FaceID" xml:space="preserve">
|
||||
<value>Face ID</value>
|
||||
@@ -1287,7 +1287,7 @@
|
||||
<value>Ja, og gem</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-udfyld og gem</value>
|
||||
<value>Autoudfyld og gem</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organisation</value>
|
||||
@@ -1303,6 +1303,53 @@
|
||||
<value>For at fortsætte skal du holde din YubiKey NEO mod bagsiden af enheden.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>Hjælpefunktionen kan være nyttigt at bruge, når apps ikke understøtter den almindelige auto-udfyldningstjeneste.</value>
|
||||
<value>Hjælpefunktionen kan være nyttigt at bruge, når apps ikke understøtter den almindelige autoudfyldningstjeneste.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Adgangskode opdateret</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Opdateret</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>Autoudfyld aktiveret!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Du skal logge ind på den primære Bitwarden-app, før du kan bruge Autoudfyld.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Dine logins kan nu nemt tilgås direkte fra dit tastatur, når du logger ind på apps og hjemmesider.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Vi anbefaler, at du deaktiverer andre Autoudfyld-apps under Indstillinger, hvis du ikke har planer om at bruge dem.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Få adgang til din boks direkte fra dit tastatur for hurtigt at autoudfylde adgangskoder.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Følg disse instruktioner for at aktivere autoudfyldning af adgangskoder på din enhed:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Åbn iOS-appen "Indstillinger"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tryk på "Adgangskoder & konti"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tryk på "Autoudfyld adgangskoder"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Aktivér Autoudfyld</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Vælg "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Adgangskode Autoudfyld</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>Den letteste måde at tilføje nye logins til din boks er ved at bruge Bitwarden adgangskode Autoudfyld udvidelsen. Få mere at vide om brugen af Bitwarden adgangskode Autoudfyld udvidelsen ved at navigere til skærmbilledet "Værktøjer".</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey NEO Sicherheitsschlüssel</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Anhang hinzufügen</value>
|
||||
@@ -1284,10 +1284,10 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Ja und speichern</value>
|
||||
<value>Ja, und speichern</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Automatisch Ausfüllen und speichern</value>
|
||||
<value>Automatisch ausfüllen und speichern</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organisation</value>
|
||||
@@ -1305,4 +1305,51 @@
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>Der Barrierefreiheits-Dienst kann möglicherweise hilfreich sein, wenn apps nicht den standard AutoFill-Dienst unterstützen.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Passwort aktualisiert</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Aktualisiert</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill aktiviert!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Du musst dich in der Bitwarden App einloggen, bevor du AutoFill nutzen kannst.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Du kannst nun direkt von der Tastatur auf deine Zugangsdaten zugreifen, wenn du dich auf Webseiten oder in Apps anmeldest.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Wir empfehlen alle anderen Auto Ausfüllen Apps in den Einstellungen zu deaktivieren wenn du sie nicht nutzt.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Greife auf deinen Tressor direkt von deiner Tastatur aus zu um Passwörter schnell und automatisch auszufüllen.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Um Autofill auf deinem Gerät zu aktivieren, befolge bitte diese Anweisungen:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Gehe in die iOS Einstellungen</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Drücke "Passwörter & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Drücke "AutoFill Passwörter"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Schalte AutoFill ein</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Wähle "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Passwort AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>Der einfachste Weg neue Zugangsdaten zum Tresor hinzuzufügen ist die Bitwarden Passwort Autofill Erweiterung. Um mehr über die Bitwarden Passwort Autofill Erweiterung zu erfahren, öffne einfach die "Werkzeuge" Bildschirmseite.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -606,7 +606,7 @@
|
||||
<value>No hay elementos en tu caja fuerte.</value>
|
||||
</data>
|
||||
<data name="NoItemsTap" xml:space="preserve">
|
||||
<value>No hay elementos en tu caja fuerte para este sitio web. Pulsa para añadir uno.</value>
|
||||
<value>No hay elementos en tu caja fuerte para este sitio web o aplicación. Pulsa para añadir uno.</value>
|
||||
</data>
|
||||
<data name="NoUsernamePasswordConfigured" xml:space="preserve">
|
||||
<value>Esta entrada no tiene usuario y contraseña configurados.</value>
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>Llave de Seguridad YubiKey</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Añadir nuevo adjunto</value>
|
||||
@@ -1305,4 +1305,51 @@
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>El servicio de accesibilidad puede ser útil para utilizarlo con aplicaciones que no soportan el sistema de autorellenado estándar.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Contraseña actualizada</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Actualizada</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>¡Autorellenado activado!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Debes identificarte en la aplicación principal de Bitwarden antes de poder utilizar Autorellenado.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Tus accesos son ahora fácilmente accesibles desde tu teclado mientras te identificas en aplicaciones y sitios web.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Te recomendamos deshabilitar cualquier otra aplicación de Autorellenado desde Ajustes si no piensas utilizarlas.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Accede a tu caja fuerte directamente desde tu teclado para autorellenar contraseñas rápidamente.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Para habilitar el Autorellenado de contraseña en su dispositivo, sigue estas instrucciones:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Ve a la aplicación "Ajustes" de iOS</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Pulsa en "Contraseñas y Cuentas"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Pulsa en "Autorellenado de contraseñas"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Habilita el autorellenado</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Selecciona "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Autorellenado de contraseña</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>La forma más facil de añadir nuevas entradas a tu caja fuerte es usando la extensión de Autorellenado de contraseñas Bitwarden. Aprende más sobre como utilizar la extensión de Autorellenado de contraseñas Bitwarden yendo a la pantalla de Herramientas.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey Security Key</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Lisa uus manus</value>
|
||||
@@ -1180,7 +1180,7 @@
|
||||
<value>Hoidla on lukus</value>
|
||||
</data>
|
||||
<data name="GoToMyVault" xml:space="preserve">
|
||||
<value>Mine hoidlasse</value>
|
||||
<value>Ava hoidla</value>
|
||||
</data>
|
||||
<data name="Collections" xml:space="preserve">
|
||||
<value>Kogumikud</value>
|
||||
@@ -1305,4 +1305,51 @@
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>Juurdepääsetavuse teenus võib abiks olla olukordades, kus rakendused ei toeta standardset automaattäite teenust.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Parool on uuendatud</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Uuendatud</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>Automaattäide on aktiveeritud!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Pead enne Automaattäite kasutamist Bitwardeni rakendusse sisse logima.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Sinu kontoandmed on otse klaviatuurilt ligipääsetavad. Saad nüüd kergemini äppides ja veebilehtel sisse logida.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Soovitame teised Automaattäite valikud Seadetest välja lülitada, kui sa neid enam ei kasuta.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Pääse oma hoidlale otse klaviatuurilt ligi ning täida parooliväljad lihtsamini.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Paroolide automaattäite võimaldamiseks järgi neid juhiseid:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Mine iOS "Settings" rakendusse</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Vajuta "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Vajuta "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Lülita AutoFill sisse</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Vali "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Paroolide Automaatne täitmine</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>Kõige lihtsam viis uute kontoandmete sisestamiseks on kasutada Bitwardeni Automaattäite lisatööriista. Rohkem teavet selle kasutamise kohta leiad "Tööriistad" menüüst.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
<comment>Message shown when interacting with the server</comment>
|
||||
</data>
|
||||
<data name="DoYouReallyWantToDelete" xml:space="preserve">
|
||||
<value>مطمئنید میخواهید حذف کنید؟ این عمل قابل بازگشت نیست.</value>
|
||||
<value>مطمئنید میخواهید حذف کنید؟ این عمل قابل بازگشت نیست.</value>
|
||||
<comment>Confirmation alert message when deleteing something.</comment>
|
||||
</data>
|
||||
<data name="Edit" xml:space="preserve">
|
||||
@@ -196,7 +196,7 @@
|
||||
<value>برای کمک گرفتن و گذاشتن بازخورد بصورت مستقیم به ما ایمیل ارسال کنید.</value>
|
||||
</data>
|
||||
<data name="EnterPIN" xml:space="preserve">
|
||||
<value>کد پین را وارد کنید.</value>
|
||||
<value>پین کد را وارد کنید.</value>
|
||||
</data>
|
||||
<data name="Favorites" xml:space="preserve">
|
||||
<value>علاقه مندی ها</value>
|
||||
@@ -236,7 +236,7 @@
|
||||
<comment>The button text that allows user to launch the website to their web browser.</comment>
|
||||
</data>
|
||||
<data name="HelpAndFeedback" xml:space="preserve">
|
||||
<value>کمک و بازخورد</value>
|
||||
<value>کمک و باز خورد</value>
|
||||
</data>
|
||||
<data name="Hide" xml:space="preserve">
|
||||
<value>پنهان کردن</value>
|
||||
@@ -273,7 +273,7 @@
|
||||
<comment>The log out button text (verb).</comment>
|
||||
</data>
|
||||
<data name="LogoutConfirmation" xml:space="preserve">
|
||||
<value>آیا مطمئنید که میخواهید خارج شوید؟</value>
|
||||
<value>آیا مطمئنید که میخواهید خارج شوید؟</value>
|
||||
</data>
|
||||
<data name="MasterPassword" xml:space="preserve">
|
||||
<value>گذرواژه ی اصلی</value>
|
||||
@@ -409,7 +409,7 @@
|
||||
<value>سرویس پر کردن خودکار</value>
|
||||
</data>
|
||||
<data name="AvoidAmbiguousCharacters" xml:space="preserve">
|
||||
<value>از کاراکترهای متقارن استفاده نکن</value>
|
||||
<value>از تکرار کاراکترهای یک شکل اجتناب کن</value>
|
||||
</data>
|
||||
<data name="BitwardenAppExtension" xml:space="preserve">
|
||||
<value>افزونه اپلیکیشن Bitwarden</value>
|
||||
@@ -436,7 +436,7 @@
|
||||
<value>تغییر گذرواژه اصلی</value>
|
||||
</data>
|
||||
<data name="ChangePasswordConfirmation" xml:space="preserve">
|
||||
<value>شما می توانید گذرواژه اصلی خود را در bitwarden.com تغییر دهید. آیا می خواهید از سایت بازدید کنید؟</value>
|
||||
<value>شما می توانید گذرواژه اصلی خود را در bitwarden.com تغییر دهید. آیا میخواهید از سایت بازدید کنید؟</value>
|
||||
</data>
|
||||
<data name="Close" xml:space="preserve">
|
||||
<value>بستن</value>
|
||||
@@ -674,7 +674,7 @@
|
||||
<value>تعیین پین</value>
|
||||
</data>
|
||||
<data name="SetPINDirection" xml:space="preserve">
|
||||
<value>یک کد پین 4 رقمی برای باز کردن برنامه وارد کنید.</value>
|
||||
<value>یک پین کد 4 رقمی برای باز کردن برنامه وارد کنید.</value>
|
||||
</data>
|
||||
<data name="ItemInformation" xml:space="preserve">
|
||||
<value>اطلاعات مورد</value>
|
||||
@@ -707,13 +707,13 @@
|
||||
<value>ورود دو مرحله ای</value>
|
||||
</data>
|
||||
<data name="TwoStepLoginConfirmation" xml:space="preserve">
|
||||
<value>ورودی دو مرحله ای باعث می شود که حساب کاربری شما با استفاده از یک دستگاه دیگر مانند کلید امنیتی، برنامه تأیید هویت، پیامک، تماس تلفنی و یا ایمیل، اعتبار خود را با ایمنی بیشتر اثبات کند. ورودی دو مرحله ای می تواند در bitwarden.com فعال شود. آیا می خواهید از سایت بازدید کنید؟</value>
|
||||
<value>ورود دو مرحله ای باعث می شود که حساب کاربری شما با استفاده از یک دستگاه دیگر مانند کلید امنیتی، برنامه تأیید هویت، پیامک، تماس تلفنی و یا ایمیل، اعتبار خود را با ایمنی بیشتر اثبات کند. ورود دو مرحله ای می تواند در bitwarden.com فعال شود. آیا میخواهید از سایت بازدید کنید؟</value>
|
||||
</data>
|
||||
<data name="UnlockWith" xml:space="preserve">
|
||||
<value>باز کردن با {0}</value>
|
||||
</data>
|
||||
<data name="UnlockWithPIN" xml:space="preserve">
|
||||
<value>باز کردن با کد پین</value>
|
||||
<value>باز کردن با پین کد</value>
|
||||
</data>
|
||||
<data name="Validating" xml:space="preserve">
|
||||
<value>اعتبار سنجی</value>
|
||||
@@ -813,19 +813,19 @@
|
||||
<value>ایجاد یک تشکیلات برای اشتراک گذاری ایمن موارد خود با سایر کاربران.</value>
|
||||
</data>
|
||||
<data name="DisableGADescription" xml:space="preserve">
|
||||
<value>ما از آنالیز استفاده می کنیم که بهتر بفهمیم چگونه برنامه استفاده می شود تا بتوانیم آن را بهتر کنیم. تمام داده های جمع آوری شده کاملاً ناشناس است.</value>
|
||||
<value>ما از آنالیزها جهت درک بهتر چگونگی استفاده از برنامه بهره میبریم تا بتوانیم آن را بهبود ببخشیم. تمام داده های جمع آوری شده کاملاً ناشناس است.</value>
|
||||
</data>
|
||||
<data name="AutofillPasswordField" xml:space="preserve">
|
||||
<value>اسکن زمانی که در فیلد پسورد متمرکز شده</value>
|
||||
</data>
|
||||
<data name="AutofillPasswordFieldDescription" xml:space="preserve">
|
||||
<value>فقط صفحه را اسکن میکند برای فیلدها و پیشنهاد یک پر کردن خودکار هر چند که شما یک فیلد رمز عبور را انتخاب کرده باشید. این تنظیم به افزایش عمر باتری کمک میکند.</value>
|
||||
<value>فقط صفحه را برای فیلدها و پیشنهاد دادن پر کردن خودکار اسکن میکند هر حتی اگر شما یک فیلد رمز عبور را انتخاب کرده باشید. این تنظیم به افزایش عمر باتری کمک میکند.</value>
|
||||
</data>
|
||||
<data name="AutofillPersistNotification" xml:space="preserve">
|
||||
<value>اطلاعیه ثابت</value>
|
||||
</data>
|
||||
<data name="AutofillPersistNotificationDescription" xml:space="preserve">
|
||||
<value>همیشه یک پر کردن خودکار را اطلاع میدهد و فقط برای فیلدها بعد از تلاش برای پر کردن خودکار اسکن میکند. این تنظیم ممکن است در صرفه جویی باتری موثر باشد.</value>
|
||||
<value>همیشه یک پر کردن خودکار را اطلاع میدهد و فقط بعد از تلاش برای پر کردن خودکار فیلدها اقدام به اسکن میکند. این تنظیم ممکن است در صرفه جویی باتری موثر باشد.</value>
|
||||
</data>
|
||||
<data name="AutofillAlways" xml:space="preserve">
|
||||
<value>همیشه اسکن کن</value>
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>کلید امنیتی YubiKey</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>افزودن پیوست جدید</value>
|
||||
@@ -944,7 +944,7 @@
|
||||
<value>کپی TOTP</value>
|
||||
</data>
|
||||
<data name="DisableAutoTotpCopyDescription" xml:space="preserve">
|
||||
<value>اگر ورود شما دارای یک کلید تأیید کننده است که به آن متصل شده است، هر زمان که بصورت خودکار وارد سایت شوید کد تأیید TOTP به صورت خودکار به کلیپ بورد شما کپی می شود.</value>
|
||||
<value>اگر ورود شما دارای یک کلید تأیید کننده میباشد که به آن متصل شده است، هر زمان که بصورت خودکار وارد سایت شوید کد تأیید TOTP به صورت خودکار به کلیپ بورد شما کپی می شود.</value>
|
||||
</data>
|
||||
<data name="DisableAutoTotpCopy" xml:space="preserve">
|
||||
<value>غیرفعال کردن کپی خودکار TOTP</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>بله، و ذخیره</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>پر کردن خودکار و ذخیره</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>سازماندهی</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Yubikey خود را در نزدیکی بالای دستگاه نگه دارید.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>دوباره امتحان کنید</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>برای ادامه، دوباره YubiKey NEO خود را پشت دستگاه نگه دارید.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>خدمات دسترسی ممکن است مفید باشد برای استفاده در زمانی که برنامه از سرویس پر کردن خودکار استاندارد پشتیبانی نمی کند.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>گذرواژه بروز رسانی شد</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>بروزرسانی شد</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Turn on AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Select "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Password AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -412,7 +412,7 @@
|
||||
<value>Vältä epäselviä merkkejä</value>
|
||||
</data>
|
||||
<data name="BitwardenAppExtension" xml:space="preserve">
|
||||
<value>bitwardenin sovelluslaajennus</value>
|
||||
<value>Bitwarden-sovelluslaajennus</value>
|
||||
</data>
|
||||
<data name="BitwardenAppExtensionAlert" xml:space="preserve">
|
||||
<value>Helpoin tapa lisätä uusia kirjautumistietoja holviisi on käyttää bitwardenin sovelluslaajennusta. Lue lisää sovelluslaajennuksesta "Työkalut"-kohdassa.</value>
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey-todennuslaite</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Lisää uusi liite</value>
|
||||
@@ -1290,14 +1290,14 @@
|
||||
<value>Auto-fill and save</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>Organisaatio</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Pidä Yubikeytasi lähellä laitteen yläosaa.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>Yritä uudelleen</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
@@ -1305,4 +1305,51 @@
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Salasana päivitetty</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Päivitetty</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Turn on AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Select "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Password AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
<comment>Add/create a new entity (verb).</comment>
|
||||
</data>
|
||||
<data name="AddFolder" xml:space="preserve">
|
||||
<value>Ajouter dossier</value>
|
||||
<value>Ajouter un dossier</value>
|
||||
</data>
|
||||
<data name="AddItem" xml:space="preserve">
|
||||
<value>Ajouter un élément</value>
|
||||
@@ -580,11 +580,11 @@
|
||||
<value>Le mot de passe maître doit faire plus de 8 caractères.</value>
|
||||
</data>
|
||||
<data name="MinNumbers" xml:space="preserve">
|
||||
<value>Nombres minimums</value>
|
||||
<value>Nombre minimum de chiffres</value>
|
||||
<comment>Minimum numeric characters for password generator settings</comment>
|
||||
</data>
|
||||
<data name="MinSpecial" xml:space="preserve">
|
||||
<value>Caractères spéciaux minimums</value>
|
||||
<value>Nombre minimum de caractères spéciaux</value>
|
||||
<comment>Minimum special characters for password generator settings</comment>
|
||||
</data>
|
||||
<data name="MoreSettings" xml:space="preserve">
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>Clé de sécurité YubiKey NEO</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Ajouter une nouvelle pièce jointe</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>Oui et enregistrer</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>Autocomplétion et enregistrer</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>Organisation</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Gardez votre Yubikey près du haut de l'appareil.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>Réessayez</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>Pour continuer, gardez votre Yubikey NEO à l'arrière de l'appareil.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>Le service d'accessibilité peut être utile lorsque des applis ne supportent pas le service d'autocomplétion de base.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Mot de passe mis à jour</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Mis à jour</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Turn on AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Select "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Password AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey NEO Security Key</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Add New Attachment</value>
|
||||
@@ -1305,4 +1305,51 @@
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Password Updated</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Updated</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Turn on AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Select "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Password AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey NEO sigurnosni ključ</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Dodavanje novog privitka</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>Da, i spremi</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>Automatski popuni i spremi</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>Organizacija</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Držite Yubikey blizu vrha uređaja.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>Pokušajte ponovno</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>Da biste nastavili, držite YubiKey NEO na stražnjoj strani uređaja.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>Usluga pristupačnosti može biti korisna kada aplikacije ne podržavaju standardnu uslugu automatskog popunjavanja.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Lozinka ažurirana</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Ažurirano</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Turn on AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Select "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Password AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey NEO biztonsági kulcs</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Melléklet hozzáadása</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>Igen, és mentés</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>Automatikus kitöltés és mentés</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>Szervezet</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Tartsd lenyomva a Yubikey-t, a készülék tetején.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>Próbáld újra</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>A folytatáshoz tartsd lenyomva a YubiKey NEO-t a készülék hátoldalán.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>A kisegítő szolgáltatás használata hasznos lehet, ha az alkalmazások nem támogatják a szabványos automatikus kitöltési szolgáltatást.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Jelszó frissítve</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Frissítve</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>Automatikus kitöltés aktiválva!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Az automatikus kitöltő szolgáltatás használata előtt be kell lépned a fő Bitwarden alkalmazásba.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Az alkalmazásokba és weboldalakra a belépési adatok most már könnyedén elérhető a billentyűzetről.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Javasoljuk, hogy kapcsolj ki minden más automatikus kitöltő alkalmazást, ha nem használod azokat.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>A széf közvetlenül a billentyűzetről érhető el a jelszavak gyors kitöltéséhez.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>A jelszó automatikus kitöltés szolgáltatás engedélyezéséhez kövesd az alábbi instrukciókat:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Lépj be az iOS "Beállítások" alkalmazásba</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Válaszd a "Jelszavak és Fiókok" lehetőséget</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Válaszd ki az "Jelszavak automatikus kitöltése" lehetőséget</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Kapcsold be az opciót</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Válaszd ki a "Bitwarden"-t</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Jelszó Automatikus kitöltése</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>A legegyszerűbb módja új bejelentkezési adatok hozzáadásának a széfedhez, a bitwarden alkalmazás. Az alkalmazás használatáról az "Eszközök" képernyőn tudhatsz meg többet.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>Kunci Keamanan YubiKey</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Tambah Lampiran Baru</value>
|
||||
@@ -989,7 +989,7 @@
|
||||
<value>URL Server API</value>
|
||||
</data>
|
||||
<data name="CustomEnvironment" xml:space="preserve">
|
||||
<value>Custom Environment</value>
|
||||
<value>Lingkungan Kustom</value>
|
||||
</data>
|
||||
<data name="CustomEnvironmentFooter" xml:space="preserve">
|
||||
<value>Untuk pengguna tingkat lanjutan. Anda dapat menentukan secara mandiri basis dari URL untuk setiap layanan.</value>
|
||||
@@ -1006,7 +1006,7 @@
|
||||
<comment>"Identity" refers to an identity server. See more context here https://en.wikipedia.org/wiki/Identity_management</comment>
|
||||
</data>
|
||||
<data name="SelfHostedEnvironment" xml:space="preserve">
|
||||
<value>Self-hosted Environment</value>
|
||||
<value>Lingkungan Hos-mandiri</value>
|
||||
</data>
|
||||
<data name="SelfHostedEnvironmentFooter" xml:space="preserve">
|
||||
<value>Specify the base URL of your on-premise hosted bitwarden installation.</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>Ya, dan Simpan</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>Isi otomatis dan simpan</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>Organisasi</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Pegang Yubikey di dekat bagian atas perangkat.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>Coba Lagi</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>Untuk melanjutkan, pegang YubiKey NEO Anda pada bagian belakang perangkat.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>Layanan aksesibilitas sangat berguna untuk dimanfaatkan saat aplikasi tidak mendukung layanan isi otomatis.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Kata Sandi Diperbarui</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Di perbarui</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>Isi Otomatis diaktifkan!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Anda harus masuk ke aplikasi utama Bitwarden sebelum Anda dapat menggunakan Isi Otomatis.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Sekarang login Anda bisa diakses dengan mudah dari keyboard Anda saat masuk ke aplikasi atau lewat situs web.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Sebaiknya fitur Isi Otomatis dinonaktifkan lewat Pengaturan, jika Anda tidak berencana menggunakannya.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Mengakses vault Anda lewat keyboard untuk mengisi otomatis sandi dengan cepat.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Untuk mengisi otomatis sandi pada perangkat Anda, ikuti petunjuk berikut:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Pergi ke "Setting" di menu iOS app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Pilih "Password & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Pilih "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Aktifkan AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Pilih "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Isi Otomatis Sandi</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>Cara termudah untuk menambahkan login baru ke brankas Anda adalah dari ekstensi Isi Otomatis Sandi Bitwarden. Pelajari lebih lanjut penggunaan ekstensi ini dengan mengunjungi layar "Alat".</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>Chiave di Sicurezza YubiKey</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Aggiungi Nuovo Allegato</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>Si, e Salva</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>Riempi automaticamente e salva</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>Organizzazione</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Tieni il tuo Yubikey vicino alla parte superiore del dispositivo.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>Riprova</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>Per continuare, tieni il tuo YubiKey NEO sul retro del dispositivo.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>Il servizio di accessibilità può essere utile quando le app non supportano il servizio di riempimento automatico standard.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Password Aggiornata</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Aggiornato</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>Riempimento automatico Attivato!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>È necessario accedere all'app principale di Bitwarden prima di poter utilizzare il riempimento automatico.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>I tuoi login sono ora facilmente accessibili direttamente dalla tastiera durante l'accesso ad app e siti web.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Se non prevedi di utilizzarli, ti consigliamo di disabilitare qualsiasi altra applicazione di Compilazione automatica nelle Impostazioni.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Accedi al tuo caveau direttamente dalla tastiera per velocizzare il riempimento automatico delle password.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Per abilitare la compilazione automatica della password sul tuo dispositivo, segui queste istruzioni:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Vai all'app "Impostazioni" di iOS</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Clicca su "Password & Account"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Clicca su "Riempimento automatico password"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Attiva Riempimento Automatico</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Seleziona "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Riempimento Automatico Password</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>Il modo più semplice per aggiungere nuovi accessi al tuo caveau è utilizzare l'estensione di Compilazione automatica password di Bitwarden. Ulteriori informazioni sull'utilizzo dell'estensione di Compilazione automatica password di Bitwarden andando nella schermata "Strumenti".</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey セキュリティキー</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>添付ファイルを追加</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>保存する</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>自動入力して保存</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>組織</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>YubiKey を端末の上部にしっかりタッチし続けてください。</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>もう一度実行</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>続行するには、YubiKey NEO を端末の背面にしっかりタッチし続けてください。</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>ユーザー補助サービスはアプリが標準の自動入力サービスに対応していない場合に適しています。</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>パスワード更新日</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>更新日</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Turn on AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Select "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Password AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey 보안 키</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>새 첨부 파일 추가</value>
|
||||
@@ -953,10 +953,10 @@
|
||||
<value>이 기능을 사용하려면 프리미엄 멤버십이 필요합니다.</value>
|
||||
</data>
|
||||
<data name="AttachementAdded" xml:space="preserve">
|
||||
<value>첨부 파일 추가됨</value>
|
||||
<value>첨부 파일 추가함</value>
|
||||
</data>
|
||||
<data name="AttachmentDeleted" xml:space="preserve">
|
||||
<value>첨부 파일 삭제됨</value>
|
||||
<value>첨부 파일 삭제함</value>
|
||||
</data>
|
||||
<data name="ChooseFile" xml:space="preserve">
|
||||
<value>파일 선택</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>예, 저장하겠습니다.</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>자동 완성 및 저장</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>조직</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>기기의 위쪽에 Yubikey를 가져다 대세요.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>다시 시도</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>계속하려면 기기의 뒷면에 YubiKey NEO를 가져다 대세요.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>접근성 서비스는 앱이 표준 자동 완성 서비스를 지원하지 않을 때 유용할 수 있습니다.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>비밀번호 업데이트됨</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>업데이트됨</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. 자동 완성을 켜세요.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. "Bitwarden"을 선택하세요.</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>비밀번호 자동 완성</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>보관함에 새 로그인을 추가하는 가장 쉬운 방법은 Bitwarden 비밀번호 자동 완성 확장 프로그램을 사용하는 것입니다. "도구" 화면으로 이동하여 Bitwarden 비밀번호 자동 완성 확장 프로그램에 대해 더 자세히 알아보세요.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -606,7 +606,7 @@
|
||||
<value>Det er ingen gjenstander i hvelvet ditt.</value>
|
||||
</data>
|
||||
<data name="NoItemsTap" xml:space="preserve">
|
||||
<value>Det er ingen gjenstander i ditt hvelv for dette nettstedet. Trykk for å legge til en.</value>
|
||||
<value>Det er ingen oppføringer i ditt hvelv for dette nettstedet. Trykk for å legge til en.</value>
|
||||
</data>
|
||||
<data name="NoUsernamePasswordConfigured" xml:space="preserve">
|
||||
<value>Denne innloggingen har verken et brukernavn eller passord satt opp.</value>
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey-sikkerhetsnøkkel</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Legg til et nytt vedlegg</value>
|
||||
@@ -1126,10 +1126,10 @@
|
||||
<value>Herr</value>
|
||||
</data>
|
||||
<data name="Mrs" xml:space="preserve">
|
||||
<value>Frøken</value>
|
||||
<value>Fru</value>
|
||||
</data>
|
||||
<data name="Ms" xml:space="preserve">
|
||||
<value>Fru</value>
|
||||
<value>Frøken</value>
|
||||
</data>
|
||||
<data name="November" xml:space="preserve">
|
||||
<value>November</value>
|
||||
@@ -1229,80 +1229,127 @@
|
||||
<value>Vi klarte ikke å automatisk åpne Android sine auto-utfyllingsinnstilinger for deg. Du kan bla manuelt til auto-utfyllingsinnstillingsmenyen fra Android-innstillinger → System → Språk og inndata → Avansert → Auto-utfyllingstjeneste.</value>
|
||||
</data>
|
||||
<data name="CustomFieldName" xml:space="preserve">
|
||||
<value>Custom Field Name</value>
|
||||
<value>Navn på spesifikt felt</value>
|
||||
</data>
|
||||
<data name="FieldTypeBoolean" xml:space="preserve">
|
||||
<value>Boolean</value>
|
||||
<value>Boolsk verdi</value>
|
||||
</data>
|
||||
<data name="FieldTypeHidden" xml:space="preserve">
|
||||
<value>Hidden</value>
|
||||
<value>Skjult</value>
|
||||
</data>
|
||||
<data name="FieldTypeText" xml:space="preserve">
|
||||
<value>Text</value>
|
||||
<value>Tekst</value>
|
||||
</data>
|
||||
<data name="NewCustomField" xml:space="preserve">
|
||||
<value>New Custom Field</value>
|
||||
<value>Nytt spesifikt felt</value>
|
||||
</data>
|
||||
<data name="SelectTypeField" xml:space="preserve">
|
||||
<value>What type of custom field do you want to add?</value>
|
||||
<value>Hvilken type spesifikt felt vil du legge til?</value>
|
||||
</data>
|
||||
<data name="Remove" xml:space="preserve">
|
||||
<value>Remove</value>
|
||||
<value>Fjern</value>
|
||||
</data>
|
||||
<data name="NewUri" xml:space="preserve">
|
||||
<value>New URI</value>
|
||||
<value>Ny URI</value>
|
||||
</data>
|
||||
<data name="URIPosition" xml:space="preserve">
|
||||
<value>URI {0}</value>
|
||||
<comment>Label for a uri/url with position. i.e. URI 1, URI 2, etc</comment>
|
||||
</data>
|
||||
<data name="BaseDomain" xml:space="preserve">
|
||||
<value>Base domain</value>
|
||||
<value>Grunndomene</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>Default</value>
|
||||
<value>Standard</value>
|
||||
</data>
|
||||
<data name="Exact" xml:space="preserve">
|
||||
<value>Exact</value>
|
||||
<value>Nøyaktig</value>
|
||||
</data>
|
||||
<data name="Host" xml:space="preserve">
|
||||
<value>Host</value>
|
||||
<value>Vert</value>
|
||||
<comment>A URL's host value. For example, the host of https://sub.domain.com:443 is 'sub.domain.com:443'.</comment>
|
||||
</data>
|
||||
<data name="RegEx" xml:space="preserve">
|
||||
<value>Regular expression</value>
|
||||
<value>Regulært uttrykk</value>
|
||||
<comment>A programming term, also known as 'RegEx'.</comment>
|
||||
</data>
|
||||
<data name="StartsWith" xml:space="preserve">
|
||||
<value>Starts with</value>
|
||||
<value>Starter med</value>
|
||||
</data>
|
||||
<data name="URIMatchDetection" xml:space="preserve">
|
||||
<value>URI Match Detection</value>
|
||||
<value>URI-matchgjenkjenning</value>
|
||||
</data>
|
||||
<data name="MatchDetection" xml:space="preserve">
|
||||
<value>Match Detection</value>
|
||||
<value>Match-gjenkjenning</value>
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>Ja, og lagre</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>Autofyll og lagre</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>Organisasjon</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Hold din Yubikey nær toppen av enheten.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>Prøv igjen</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>For å fortsette, hold din YubiKey NEO mot baksiden av enheten.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>Tilgjengelighetstjenesten kan være nyttig å bruke når apper ikke støtter den vanlige autoutfyllingstjenesten.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Passordet ble oppdatert den</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Oppdatert den</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>Autofyll aktivert!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Du må logge deg inn i hoved Bitwarden-appen før du kan bruke Autofyll.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Innloggingene dine er nå lett tilgjengelige fra tastaturet når du skal logge deg på apper og nettsteder.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Vi anbefaler å deaktivere alle andre Autofyll apper under innstillinger dersom du ikke har tenkt å bruke dem.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Få tilgang til hvelvet ditt direkte fra tastaturet for å raskt autofylle passord.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Følg disse instruksjonene for å aktivere passord autofyll på enheten din:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Gå til iOS-appen "Innstillinger"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Trykk på "Passord og kontoer"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Trykk «Autofyll passord»</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Slå på Autofyll</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Velg "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Passord Autofyll</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>Den enkleste måten å legge til nye innlogginger i hvelvet ditt er å bruke Bitwarden Passord Autofyll utvidelsen. Lær mer om Bitwarden Passord Autofyll utvidelsen ved å gå til "Verktøy" skjermen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>YubiKey NEO-beveiligingssleute</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Nieuwe bijlage toevoegen</value>
|
||||
@@ -1305,4 +1305,51 @@
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>De toegankelijkheidsdienst kan nuttig zijn wanneer apps het reguliere automatisch invullen niet ondersteunen.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Wachtwoord bijgewerkt</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Bijgewerkt</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Turn on AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Select "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Password AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>Klucz bezpieczeństwa YubiKey NEO</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Dodaj nowy załącznik</value>
|
||||
@@ -1305,4 +1305,51 @@
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>Usługi ułatwień dostępu mogą być pomocne w sytuacji, gdy aplikacje nie obsługują standardowej usługi automatycznego uzupełniania.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Hasło zaktualizowane</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Zaktualizowano</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>AutoFill Activated!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>You must log into the main Bitwarden app before you can use AutoFill.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Your logins are now easily accessable right from your keyboard while logging into apps and websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>We recommend disabling any other AutoFill apps under Settings if you do not plan to use them.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Access your vault directly from your keyboard to quickly autofill passwords.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>To enable password autofill on your device, follow these instructions:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Go to the iOS "Settings" app</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Tap "Passwords & Accounts"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Tap "AutoFill Passwords"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Turn on AutoFill</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Select "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Password AutoFill</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>The easiest way to add new logins to your vault is by using the Bitwarden Password AutoFill extension. Learn more about using the Bitwarden Password AutoFill extension by navigating to the "Tools" screen.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -337,7 +337,7 @@
|
||||
<comment>The title for the sync page.</comment>
|
||||
</data>
|
||||
<data name="ThankYou" xml:space="preserve">
|
||||
<value>Obrigado</value>
|
||||
<value>Agradecimentos</value>
|
||||
</data>
|
||||
<data name="Tools" xml:space="preserve">
|
||||
<value>Ferramentas</value>
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>Chave de Segurança YubiKey NEO</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Adicionar Novo Anexo</value>
|
||||
@@ -1284,25 +1284,72 @@
|
||||
<comment>URI match detection for auto-fill.</comment>
|
||||
</data>
|
||||
<data name="YesAndSave" xml:space="preserve">
|
||||
<value>Yes, and Save</value>
|
||||
<value>Sim, e Salvar</value>
|
||||
</data>
|
||||
<data name="AutofillAndSave" xml:space="preserve">
|
||||
<value>Auto-fill and save</value>
|
||||
<value>Autopreencher e salvar</value>
|
||||
</data>
|
||||
<data name="Organization" xml:space="preserve">
|
||||
<value>Organization</value>
|
||||
<value>Organização</value>
|
||||
<comment>An entity of multiple related people (ex. a team or business organization).</comment>
|
||||
</data>
|
||||
<data name="HoldYubikeyNearTop" xml:space="preserve">
|
||||
<value>Hold your Yubikey near the top of the device.</value>
|
||||
<value>Segure a sua Yubikey perto do topo do dispositivo.</value>
|
||||
</data>
|
||||
<data name="TryAgain" xml:space="preserve">
|
||||
<value>Try Again</value>
|
||||
<value>Tentar novamente</value>
|
||||
</data>
|
||||
<data name="YubiKeyInstructionIos" xml:space="preserve">
|
||||
<value>To continue, hold your YubiKey NEO against the back of the device.</value>
|
||||
<value>Para continuar, segure a sua YubiKey NEO contra a parte de trás do dispositivo.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>The accessibility service may be helpful to use when apps do not support the standard auto-fill service.</value>
|
||||
<value>O serviço de acessibilidade pode ser útil para se usar quando os aplicativos não suportam o serviço de autopreenchimento padrão.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Senha Atualizada</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Atualizado</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>Autopreenchimento Ativado!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Você deve iniciar a sessão no aplicativo principal do Bitwarden, antes de poder usar o Autopreenchimento.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>Suas credenciais agora são facilmente acessadas diretamente do seu teclado, enquanto você faz login em aplicativos e sites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Recomendamos desabilitar qualquer outro aplicativo de autopreenchimento em Ajustes, se você não pretende usá-los.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Acesse seu cofre diretamente do seu teclado para autopreencher as senhas rapidamente.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Para ativar o autopreenchimento de senha no seu dispositivo, siga estas instruções:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Acesse o aplicativo "Ajustes" do iOS</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Toque em "Senhas e Contas"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Toque em "Preencher Senhas"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Ative o Autopreenchimento</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Selecione "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Autopreenchimento de Senha</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>A maneira mais fácil de adicionar novas credenciais ao seu cofre é usando a extensão Autopreencher do Bitwarden. Saiba mais sobre como usar a extensão Autopreencher do Bitwarden navegando até a tela "Ferramentas".</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
@@ -584,7 +584,7 @@
|
||||
<comment>Minimum numeric characters for password generator settings</comment>
|
||||
</data>
|
||||
<data name="MinSpecial" xml:space="preserve">
|
||||
<value>Especiais minímos</value>
|
||||
<value>Especiais mínimos</value>
|
||||
<comment>Minimum special characters for password generator settings</comment>
|
||||
</data>
|
||||
<data name="MoreSettings" xml:space="preserve">
|
||||
@@ -606,7 +606,7 @@
|
||||
<value>Não existem itens no seu cofre.</value>
|
||||
</data>
|
||||
<data name="NoItemsTap" xml:space="preserve">
|
||||
<value>Não existem itens no seu cofre para este website. Toque para adicionar um.</value>
|
||||
<value>Não existem itens no seu cofre para este website/aplicação. Toque para adicionar um.</value>
|
||||
</data>
|
||||
<data name="NoUsernamePasswordConfigured" xml:space="preserve">
|
||||
<value>Esta credencial não tem um nome de utilizador ou palavra passe configurados.</value>
|
||||
@@ -631,7 +631,7 @@
|
||||
<value>Gerador de palavras-passe</value>
|
||||
</data>
|
||||
<data name="PasswordHint" xml:space="preserve">
|
||||
<value>Dica de palavra-passe</value>
|
||||
<value>Dica da palavra-passe</value>
|
||||
</data>
|
||||
<data name="PasswordHintAlert" xml:space="preserve">
|
||||
<value>Enviámos-lhe um email com a dica da sua palavra-passe mestra.</value>
|
||||
@@ -644,7 +644,7 @@
|
||||
<comment>Push notifications for apple products</comment>
|
||||
</data>
|
||||
<data name="RateTheApp" xml:space="preserve">
|
||||
<value>Avalie a aplicação</value>
|
||||
<value>Avaliar a aplicação</value>
|
||||
</data>
|
||||
<data name="RateTheAppDescription" xml:space="preserve">
|
||||
<value>Por favor considere ajudar-nos com uma boa análise!</value>
|
||||
@@ -726,7 +726,7 @@
|
||||
<value>Ver item</value>
|
||||
</data>
|
||||
<data name="WebVault" xml:space="preserve">
|
||||
<value>Cofre web Bitwarden</value>
|
||||
<value>Cofre Web Bitwarden</value>
|
||||
</data>
|
||||
<data name="WebVaultDescription" xml:space="preserve">
|
||||
<value>Gira os seus itens a partir de qualquer navegador web com o cofre web Bitwarden.</value>
|
||||
@@ -807,7 +807,7 @@
|
||||
<value>Está a pesquisar por um item de auto-preenchimento para "{0}".</value>
|
||||
</data>
|
||||
<data name="ShareVault" xml:space="preserve">
|
||||
<value>Partilhe o seu cofre</value>
|
||||
<value>Partilhar o seu cofre</value>
|
||||
</data>
|
||||
<data name="ShareVaultDescription" xml:space="preserve">
|
||||
<value>Crie uma organização para partilhar os seus itens em segurança com outros utilizadores.</value>
|
||||
@@ -887,7 +887,7 @@
|
||||
</data>
|
||||
<data name="YubiKeyTitle" xml:space="preserve">
|
||||
<value>Chave de segurança YubiKey</value>
|
||||
<comment>"YubiKey NEO" is the product name and should not be translated.</comment>
|
||||
<comment>"YubiKey" is the product name and should not be translated.</comment>
|
||||
</data>
|
||||
<data name="AddNewAttachment" xml:space="preserve">
|
||||
<value>Adicionar novo anexo</value>
|
||||
@@ -944,7 +944,7 @@
|
||||
<value>Copiar TOTP</value>
|
||||
</data>
|
||||
<data name="DisableAutoTotpCopyDescription" xml:space="preserve">
|
||||
<value>Se o seu início de sessão tem uma chave de autenticador anexada ao mesmo, o código de verificação TOTP é copiado automaticamente para a sua área de transferência quando quer que auto-preencha o início de sessão.</value>
|
||||
<value>Se a sua credencial tem uma chave de autenticador anexada à mesma, o código de verificação TOTP é copiado automaticamente para a sua área de transferência quando quer que auto-preencha a credencial.</value>
|
||||
</data>
|
||||
<data name="DisableAutoTotpCopy" xml:space="preserve">
|
||||
<value>Desativar cópia automática de TOTP</value>
|
||||
@@ -1305,4 +1305,51 @@
|
||||
<data name="BitwardenAutofillAccessibilityServiceDescription2" xml:space="preserve">
|
||||
<value>O serviço de acessibilidade pode ser útil para utilizar quando as aplicações não suportam o serviço de auto-preenchimento padrão.</value>
|
||||
</data>
|
||||
<data name="DatePasswordUpdated" xml:space="preserve">
|
||||
<value>Palavra passe atualizada</value>
|
||||
<comment>ex. Date this password was updated</comment>
|
||||
</data>
|
||||
<data name="DateUpdated" xml:space="preserve">
|
||||
<value>Atualizado</value>
|
||||
<comment>ex. Date this item was updated</comment>
|
||||
</data>
|
||||
<data name="AutofillActivated" xml:space="preserve">
|
||||
<value>Auto-preenchimento ativado!</value>
|
||||
</data>
|
||||
<data name="MustLogInMainAppAutofill" xml:space="preserve">
|
||||
<value>Tem de iniciar sessão na aplicação Bitwarden principal antes de poder utilizar auto-preenchimento.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup" xml:space="preserve">
|
||||
<value>As suas credenciais são agora facilmente acessíveis a partir do seu teclado ao iniciar sessão em aplicações e websites.</value>
|
||||
</data>
|
||||
<data name="AutofillSetup2" xml:space="preserve">
|
||||
<value>Recomendamos desativar quaisquer outras aplicações de auto-preenchimento nas Definições se não as planeia utilizar.</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillDescription" xml:space="preserve">
|
||||
<value>Aceda ao seu cofre diretamente a partir do seu teclado para rapidamente auto-preencher palavras-passe.</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn" xml:space="preserve">
|
||||
<value>Para ativar o auto-preenchimento de palavras-passe no seu dispositivo, siga estas instruções:</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn1" xml:space="preserve">
|
||||
<value>1. Vá à aplicação iOS "Definições"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn2" xml:space="preserve">
|
||||
<value>2. Toque em "Palavras-passe e contas"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn3" xml:space="preserve">
|
||||
<value>3. Toque em "auto-preencher palavras-passe"</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn4" xml:space="preserve">
|
||||
<value>4. Ligue o auto-preenchimento</value>
|
||||
</data>
|
||||
<data name="AutofillTurnOn5" xml:space="preserve">
|
||||
<value>5. Selecione "Bitwarden"</value>
|
||||
</data>
|
||||
<data name="PasswordAutofill" xml:space="preserve">
|
||||
<value>Auto-preenchimento de palavras-passe</value>
|
||||
</data>
|
||||
<data name="BitwardenAutofillAlert" xml:space="preserve">
|
||||
<value>A maneira mais fácil de adicionar novas credenciais ao seu cofre é ao utilizar a extensão de auto-preenchimento de palavras-passe do Bitwarden. Saiba mais acerca de como utilizar a extensão de auto-preenchimento de palavras-passe do Bitwarden ao navegar para o ecrã de "Ferramentas".</value>
|
||||
</data>
|
||||
</root>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user