1
0
mirror of https://github.com/bitwarden/mobile.git synced 2024-11-07 09:20:04 +01:00

Merge branch 'feature/maui-migration' into feature/maui-migration-ios-ext-tap-workaround

This commit is contained in:
Federico Maccaroni 2023-12-04 11:44:03 -03:00
commit 4c2998337d
No known key found for this signature in database
GPG Key ID: 5D233F8F2B034536
24 changed files with 413 additions and 442 deletions

View File

@ -9,7 +9,6 @@ on:
paths-ignore: paths-ignore:
- ".github/workflows/**" - ".github/workflows/**"
workflow_dispatch: workflow_dispatch:
inputs: {}
env: env:
main_app_folder_path: src/App main_app_folder_path: src/App
@ -17,31 +16,30 @@ env:
target-net-version: net8.0 target-net-version: net8.0
jobs: jobs:
# cloc: cloc:
# name: CLOC name: CLOC
# runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
# steps: steps:
# - name: Checkout repo - name: Checkout repo
# uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# - name: Set up CLOC - name: Set up CLOC
# run: | run: |
# sudo apt-get update sudo apt-get update
# sudo apt-get -y install cloc sudo apt-get -y install cloc
# - name: Print lines of code
# run: cloc --vcs git --exclude-dir Resources,store,test,Properties --include-lang C#,XAML
- name: Print lines of code
run: cloc --vcs git --exclude-dir Resources,store,test,Properties --include-lang C#,XAML
setup: setup:
name: Setup name: Setup
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
outputs: outputs:
rc_branch_exists: ${{ steps.branch-check.outputs.rc_branch_exists }} rc_branch_exists: ${{ steps.branch-check.outputs.rc_branch_exists }}
hotfix_branch_exists: ${{ steps.branch-check.outputs.hotfix_branch_exists }} hotfix_branch_exists: ${{ steps.branch-check.outputs.hotfix_branch_exists }}
steps: steps:
- name: Checkout repo - name: Checkout repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with: with:
submodules: 'true' submodules: 'true'
@ -59,7 +57,6 @@ jobs:
else else
echo "hotfix_branch_exists=0" >> $GITHUB_OUTPUT echo "hotfix_branch_exists=0" >> $GITHUB_OUTPUT
fi fi
shell: bash
android: android:
name: Android name: Android
@ -93,6 +90,12 @@ jobs:
- name: Setup Windows builder - name: Setup Windows builder
run: choco install checksum --no-progress run: choco install checksum --no-progress
- name: Install Microsoft OpenJDK 11
run: |
choco install microsoft-openjdk11 --no-progress
Write-Output "JAVA_HOME=$(Get-ChildItem -Path 'C:\Program Files\Microsoft\jdk*' | Select -First 1 -ExpandProperty FullName)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
Write-Output "Java Home: $env:JAVA_HOME"
- name: Print environment - name: Print environment
run: | run: |
nuget help | grep Version nuget help | grep Version
@ -102,9 +105,10 @@ jobs:
echo "GitHub event: $GITHUB_EVENT" echo "GitHub event: $GITHUB_EVENT"
- name: Checkout repo - name: Checkout repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Decrypt secrets - name: Decrypt secrets
env: env:
DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }} DECRYPT_FILE_PASSWORD: ${{ secrets.DECRYPT_FILE_PASSWORD }}
@ -118,6 +122,7 @@ jobs:
gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \
--output $HOME/secrets/play_creds.json ./.github/secrets/play_creds.json.gpg --output $HOME/secrets/play_creds.json ./.github/secrets/play_creds.json.gpg
shell: bash shell: bash
- name: Decrypt secrets - Google Services - name: Decrypt secrets - Google Services
if: ${{ matrix.variant == 'prod' }} if: ${{ matrix.variant == 'prod' }}
env: env:
@ -126,6 +131,7 @@ jobs:
gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \
--output ./${{ env.android_folder_path }}/google-services.json ./.github/secrets/google-services.json.gpg --output ./${{ env.android_folder_path }}/google-services.json ./.github/secrets/google-services.json.gpg
shell: bash shell: bash
- name: Increment version - name: Increment version
run: | run: |
BUILD_NUMBER=$((3000 + $GITHUB_RUN_NUMBER)) BUILD_NUMBER=$((3000 + $GITHUB_RUN_NUMBER))
@ -143,15 +149,12 @@ jobs:
- name: Restore tools - name: Restore tools
run: dotnet tool restore run: dotnet tool restore
shell: pwsh
# - name: Verify Format # - name: Verify Format
# run: dotnet tool run dotnet-format --check # run: dotnet tool run dotnet-format --check
# shell: pwsh
#- name: Run Core tests # - name: Run Core tests
# run: dotnet test test/Core.Test/Core.Test.csproj --logger "trx;LogFileName=test-results.trx" # run: dotnet test test/Core.Test/Core.Test.csproj --logger "trx;LogFileName=test-results.trx"
# shell: pwsh
#- name: Report test results #- name: Report test results
# uses: dorny/test-reporter@c9b3d0e2bd2a4e96aaf424dbaa31c46b42318226 # v1.6.0 # uses: dorny/test-reporter@c9b3d0e2bd2a4e96aaf424dbaa31c46b42318226 # v1.6.0
@ -179,7 +182,6 @@ jobs:
Write-Output "########################################" Write-Output "########################################"
dotnet build $projToBuild -c $configuration -f ${{ env.target-net-version }}-android dotnet build $projToBuild -c $configuration -f ${{ env.target-net-version }}-android
shell: pwsh
- name: Sign Android Build - name: Sign Android Build
env: env:
@ -221,10 +223,10 @@ jobs:
$signedApkDestPath = $($env:GITHUB_WORKSPACE + "/$($packageName).apk"); $signedApkDestPath = $($env:GITHUB_WORKSPACE + "/$($packageName).apk");
Copy-Item $signedApkPath $signedApkDestPath Copy-Item $signedApkPath $signedApkDestPath
shell: pwsh
- name: Upload Prod .aab artifact - name: Upload Prod .aab artifact
if: ${{ matrix.variant == 'prod' }} if: ${{ matrix.variant == 'prod' }}
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with: with:
name: com.x8bit.bitwarden.aab name: com.x8bit.bitwarden.aab
path: ./com.x8bit.bitwarden.aab path: ./com.x8bit.bitwarden.aab
@ -232,7 +234,7 @@ jobs:
- name: Upload Prod .apk artifact - name: Upload Prod .apk artifact
if: ${{ matrix.variant == 'prod' }} if: ${{ matrix.variant == 'prod' }}
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with: with:
name: com.x8bit.bitwarden.apk name: com.x8bit.bitwarden.apk
path: ./com.x8bit.bitwarden.apk path: ./com.x8bit.bitwarden.apk
@ -240,7 +242,7 @@ jobs:
- name: Upload Other .apk artifact - name: Upload Other .apk artifact
if: ${{ matrix.variant != 'prod' }} if: ${{ matrix.variant != 'prod' }}
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with: with:
name: com.x8bit.bitwarden.${{ matrix.variant }}.apk name: com.x8bit.bitwarden.${{ matrix.variant }}.apk
path: ./com.x8bit.bitwarden.${{ matrix.variant }}.apk path: ./com.x8bit.bitwarden.${{ matrix.variant }}.apk
@ -260,7 +262,7 @@ jobs:
- name: Upload .apk sha file for prod - name: Upload .apk sha file for prod
if: ${{ matrix.variant == 'prod' }} if: ${{ matrix.variant == 'prod' }}
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with: with:
name: bw-android-apk-sha256.txt name: bw-android-apk-sha256.txt
path: ./bw-android-apk-sha256.txt path: ./bw-android-apk-sha256.txt
@ -268,7 +270,7 @@ jobs:
- name: Upload .apk sha file for other - name: Upload .apk sha file for other
if: ${{ matrix.variant != 'prod' }} if: ${{ matrix.variant != 'prod' }}
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with: with:
name: bw-android-${{ matrix.variant }}-apk-sha256.txt name: bw-android-${{ matrix.variant }}-apk-sha256.txt
path: ./bw-android-${{ matrix.variant }}-apk-sha256.txt path: ./bw-android-${{ matrix.variant }}-apk-sha256.txt
@ -318,6 +320,12 @@ jobs:
- name: Setup Windows builder - name: Setup Windows builder
run: choco install checksum --no-progress run: choco install checksum --no-progress
- name: Install Microsoft OpenJDK 11
run: |
choco install microsoft-openjdk11 --no-progress
Write-Output "JAVA_HOME=$(Get-ChildItem -Path 'C:\Program Files\Microsoft\jdk*' | Select -First 1 -ExpandProperty FullName)" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
Write-Output "Java Home: $env:JAVA_HOME"
- name: Print environment - name: Print environment
run: | run: |
nuget help | grep Version nuget help | grep Version
@ -327,7 +335,7 @@ jobs:
echo "GitHub event: $GITHUB_EVENT" echo "GitHub event: $GITHUB_EVENT"
- name: Checkout repo - name: Checkout repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Decrypt secrets - name: Decrypt secrets
env: env:
@ -419,7 +427,6 @@ jobs:
# $appCenterNode.ParentNode.RemoveChild($appCenterNode); # $appCenterNode.ParentNode.RemoveChild($appCenterNode);
# $xml.Save($corePath); # $xml.Save($corePath);
shell: pwsh
- name: Restore packages - name: Restore packages
run: dotnet restore run: dotnet restore
@ -435,8 +442,6 @@ jobs:
dotnet build $projToBuild -c $configuration -f ${{ env.target-net-version }}-android /p:CustomConstants="FDROID" dotnet build $projToBuild -c $configuration -f ${{ env.target-net-version }}-android /p:CustomConstants="FDROID"
shell: pwsh
- name: Sign for F-Droid - name: Sign for F-Droid
env: env:
FDROID_KEYSTORE_PASSWORD: ${{ secrets.FDROID_KEYSTORE_PASSWORD }} FDROID_KEYSTORE_PASSWORD: ${{ secrets.FDROID_KEYSTORE_PASSWORD }}
@ -458,10 +463,9 @@ jobs:
$signedApkDestPath = $($env:GITHUB_WORKSPACE + "/com.x8bit.bitwarden-fdroid.apk"); $signedApkDestPath = $($env:GITHUB_WORKSPACE + "/com.x8bit.bitwarden-fdroid.apk");
Copy-Item $signedApkPath $signedApkDestPath Copy-Item $signedApkPath $signedApkDestPath
shell: pwsh
- name: Upload F-Droid .apk artifact - name: Upload F-Droid .apk artifact
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with: with:
name: com.x8bit.bitwarden-fdroid.apk name: com.x8bit.bitwarden-fdroid.apk
path: ./com.x8bit.bitwarden-fdroid.apk path: ./com.x8bit.bitwarden-fdroid.apk
@ -473,22 +477,20 @@ jobs:
-t sha256 | Out-File -Encoding ASCII ./bw-fdroid-apk-sha256.txt -t sha256 | Out-File -Encoding ASCII ./bw-fdroid-apk-sha256.txt
- name: Upload F-Droid sha file - name: Upload F-Droid sha file
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with: with:
name: bw-fdroid-apk-sha256.txt name: bw-fdroid-apk-sha256.txt
path: ./bw-fdroid-apk-sha256.txt path: ./bw-fdroid-apk-sha256.txt
if-no-files-found: error if-no-files-found: error
# Disabling iOS build from this branch until fixing publish/build
# really long time
ios: ios:
name: Apple iOS name: Apple iOS
if: github.ref == 'refs/heads/master'
runs-on: macos-13 runs-on: macos-13
needs: setup needs: setup
env: env:
ios_folder_path: src/App/Platforms/iOS ios_folder_path: src/App/Platforms/iOS
app_output_name: App app_output_name: App
app_ci_output_filename: App_x64_Debug
steps: steps:
- name: Set XCode version - name: Set XCode version
uses: maxim-lobanov/setup-xcode@v1 uses: maxim-lobanov/setup-xcode@v1
@ -518,7 +520,7 @@ jobs:
echo "GitHub event: $GITHUB_EVENT" echo "GitHub event: $GITHUB_EVENT"
- name: Checkout repo - name: Checkout repo
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with: with:
submodules: 'true' submodules: 'true'
@ -529,17 +531,10 @@ jobs:
- name: Retrieve secrets - name: Retrieve secrets
id: retrieve-secrets id: retrieve-secrets
env: uses: bitwarden/gh-actions/get-keyvault-secrets@main
KEYVAULT: bitwarden-ci with:
SECRETS: | keyvault: "bitwarden-ci"
appcenter-ios-token secrets: "appcenter-ios-token"
run: |
for i in ${SECRETS//,/ }
do
VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv)
echo "::add-mask::$VALUE"
echo "$i=$VALUE" >> $GITHUB_OUTPUT
done
- name: Decrypt secrets - name: Decrypt secrets
env: env:
@ -568,7 +563,6 @@ jobs:
./.github/secrets/dist_watch_app_extension.mobileprovision.gpg ./.github/secrets/dist_watch_app_extension.mobileprovision.gpg
gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \ gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPT_FILE_PASSWORD" \
--output ./src/watchOS/bitwarden/GoogleService-Info.plist ./.github/secrets/GoogleService-Info.plist.gpg --output ./src/watchOS/bitwarden/GoogleService-Info.plist ./.github/secrets/GoogleService-Info.plist.gpg
shell: bash
- name: Increment version - name: Increment version
run: | run: |
@ -584,8 +578,6 @@ jobs:
perl -0777 -pi.bak -e 's/<key>CFBundleVersion<\/key>\s*<string>1<\/string>/<key>CFBundleVersion<\/key>\n\t<string>'"$BUILD_NUMBER"'<\/string>/' ./src/iOS.ShareExtension/Info.plist perl -0777 -pi.bak -e 's/<key>CFBundleVersion<\/key>\s*<string>1<\/string>/<key>CFBundleVersion<\/key>\n\t<string>'"$BUILD_NUMBER"'<\/string>/' ./src/iOS.ShareExtension/Info.plist
cd src/watchOS/bitwarden cd src/watchOS/bitwarden
agvtool new-version -all $BUILD_NUMBER agvtool new-version -all $BUILD_NUMBER
cd ../../..
shell: bash
- name: Update Entitlements - name: Update Entitlements
run: | run: |
@ -594,8 +586,7 @@ jobs:
echo "########################################" echo "########################################"
perl -0777 -pi.bak -e 's/<key>aps-environment<\/key>\s*<string>development<\/string>/<key>aps-environment<\/key>\n\t<string>production<\/string>/' ./${{ env.ios_folder_path }}/Entitlements.plist perl -0777 -pi.bak -e 's/<key>aps-environment<\/key>\s*<string>development<\/string>/<key>aps-environment<\/key>\n\t<string>production<\/string>/' ./${{ env.ios_folder_path }}/Entitlements.plist
shell: bash
- name: Set up Keychain - name: Set up Keychain
env: env:
KEYCHAIN_PASSWORD: ${{ secrets.IOS_KEYCHAIN_PASSWORD }} KEYCHAIN_PASSWORD: ${{ secrets.IOS_KEYCHAIN_PASSWORD }}
@ -611,7 +602,6 @@ jobs:
security import ~/secrets/iphone-distribution-cert.p12 -k build.keychain -P $DIST_CERT_PASSWORD \ security import ~/secrets/iphone-distribution-cert.p12 -k build.keychain -P $DIST_CERT_PASSWORD \
-T /usr/bin/codesign -T /usr/bin/security -T /usr/bin/codesign -T /usr/bin/security
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $KEYCHAIN_PASSWORD build.keychain
shell: bash
- name: Set up provisioning profiles - name: Set up provisioning profiles
run: | run: |
@ -642,7 +632,6 @@ jobs:
WATCH_APP_EXTENSION_UUID=$(grep UUID -A1 -a $WATCH_APP_EXTENSION_PROFILE_PATH | grep -io "[-A-F0-9]\{36\}") WATCH_APP_EXTENSION_UUID=$(grep UUID -A1 -a $WATCH_APP_EXTENSION_PROFILE_PATH | grep -io "[-A-F0-9]\{36\}")
cp $WATCH_APP_EXTENSION_PROFILE_PATH "$PROFILES_DIR_PATH/$WATCH_APP_EXTENSION_UUID.mobileprovision" cp $WATCH_APP_EXTENSION_PROFILE_PATH "$PROFILES_DIR_PATH/$WATCH_APP_EXTENSION_UUID.mobileprovision"
shell: bash
- name: Restore packages - name: Restore packages
run: dotnet restore run: dotnet restore
@ -658,7 +647,6 @@ jobs:
echo "########################################" echo "########################################"
echo "##### Done" echo "##### Done"
echo "########################################" echo "########################################"
shell: bash
- name: Archive Build for App Store - name: Archive Build for App Store
run: | run: |
@ -666,7 +654,7 @@ jobs:
Write-Output "##### Archive for Release ios-arm64 Write-Output "##### Archive for Release ios-arm64
Write-Output "########################################" Write-Output "########################################"
dotnet publish ${{ env.main_app_project_path }} -c Release -f ${{ env.target-net-version }}-ios /p:RuntimeIdentifier=ios-arm64 /p:ArchiveOnBuild=true dotnet publish ${{ env.main_app_project_path }} -c Release -f ${{ env.target-net-version }}-ios /p:RuntimeIdentifier=ios-arm64 /p:ArchiveOnBuild=true /p:MtouchUseLlvm=false
Write-Output "########################################" Write-Output "########################################"
Write-Output "##### Done" Write-Output "##### Done"
@ -676,10 +664,10 @@ jobs:
- name: Archive Build for Mobile Automation - name: Archive Build for Mobile Automation
run: | run: |
Write-Output "########################################" Write-Output "########################################"
Write-Output "##### Archive Releae for iossimulator-arm64 Write-Output "##### Archive Debug for iossimulator-x64
Write-Output "########################################" Write-Output "########################################"
dotnet publish ${{ env.main_app_project_path }} -c Release -f ${{ env.target-net-version }}-ios /p:RuntimeIdentifier=iossimulator-arm64 /p:ArchiveOnBuild=true dotnet build ${{ env.main_app_project_path }} -c Debug -f ${{ env.target-net-version }}-ios /p:RuntimeIdentifier=iossimulator-x64 /p:ArchiveOnBuild=true /p:MtouchUseLlvm=false
Write-Output "########################################" Write-Output "########################################"
Write-Output "##### Done" Write-Output "##### Done"
@ -695,16 +683,14 @@ jobs:
xcodebuild -exportArchive -archivePath $ARCHIVE_PATH -exportPath $EXPORT_PATH \ xcodebuild -exportArchive -archivePath $ARCHIVE_PATH -exportPath $EXPORT_PATH \
-exportOptionsPlist $EXPORT_OPTIONS_PATH -exportOptionsPlist $EXPORT_OPTIONS_PATH
shell: bash
- name: Export .app for Automation CI - name: Export .app for Automation CI
run: | run: |
ARCHIVE_PATH="./${{ env.main_app_folder_path }}/bin/Release/iossimulator-arm64/publish/${{ env.app_output_name }}.app" ARCHIVE_PATH="./${{ env.main_app_folder_path }}/bin/Debug/${{ env.target-net-version }}-ios/iossimulator-x64"
EXPORT_PATH="./bitwarden-export" EXPORT_PATH="./bitwarden-export"
zip -r -q ${{ env.app_output_name }}.app.zip $ARCHIVE_PATH zip -r -q ${{ env.app_ci_output_filename }}.app.zip $ARCHIVE_PATH
mv ${{ env.app_output_name }}.app.zip $EXPORT_PATH mv ${{ env.app_ci_output_filename }}.app.zip $EXPORT_PATH
shell: bash
- name: Copy all dSYMs files to upload - name: Copy all dSYMs files to upload
run: | run: |
@ -717,22 +703,21 @@ jobs:
cp -r -v $ARCHIVE_DSYMS_PATH $EXPORT_PATH cp -r -v $ARCHIVE_DSYMS_PATH $EXPORT_PATH
mkdir $WATCH_DSYMS_EXPORT_PATH mkdir $WATCH_DSYMS_EXPORT_PATH
cp -r -v $WATCH_ARCHIVE_DSYMS_PATH $WATCH_DSYMS_EXPORT_PATH cp -r -v $WATCH_ARCHIVE_DSYMS_PATH $WATCH_DSYMS_EXPORT_PATH
shell: bash
- name: Upload App Store .ipa & dSYMs artifacts - name: Upload App Store .ipa & dSYMs artifacts
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with: with:
name: Bitwarden iOS name: Bitwarden iOS
path: | path: |
./bitwarden-export/${{ env.app_output_name }}.ipa ./bitwarden-export/Bitwarden.ipa
./bitwarden-export/dSYMs/*.* ./bitwarden-export/dSYMs/*.*
if-no-files-found: error if-no-files-found: error
- name: Upload .app file for Automation CI - name: Upload .app file for Automation CI
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535 # v3.0.0 uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3
with: with:
name: ${{ env.app_output_name }}.app.zip name: ${{ env.app_ci_output_filename }}.app.zip
path: ./bitwarden-export/${{ env.app_output_name }}.app.zip path: ./bitwarden-export/${{ env.app_ci_output_filename }}.app.zip
if-no-files-found: error if-no-files-found: error
- name: Install AppCenter CLI - name: Install AppCenter CLI
@ -754,7 +739,6 @@ jobs:
env: env:
APPCENTER_IOS_TOKEN: ${{ steps.retrieve-secrets.outputs.appcenter-ios-token }} APPCENTER_IOS_TOKEN: ${{ steps.retrieve-secrets.outputs.appcenter-ios-token }}
run: appcenter crashes upload-symbols -a bitwarden/bitwarden -s "./bitwarden-export/dSYMs" --token $APPCENTER_IOS_TOKEN run: appcenter crashes upload-symbols -a bitwarden/bitwarden -s "./bitwarden-export/dSYMs" --token $APPCENTER_IOS_TOKEN
shell: bash
- name: Upload Watch dSYMs to Firebase Crashlytics - name: Upload Watch dSYMs to Firebase Crashlytics
if: | if: |
@ -764,12 +748,25 @@ jobs:
|| (github.ref == 'refs/heads/rc' && needs.setup.outputs.hotfix_branch_exists == 0) || (github.ref == 'refs/heads/rc' && needs.setup.outputs.hotfix_branch_exists == 0)
|| github.ref == 'refs/heads/hotfix-rc' || github.ref == 'refs/heads/hotfix-rc'
run: | run: |
echo "########################################" echo "########################################"
echo "##### Uploading Watch dSYMs to Firebase" echo "##### Uploading Watch dSYMs to Firebase"
echo "########################################" echo "########################################"
find "$HOME/Library/Developer/XCode/DerivedData" -name "upload-symbols" -exec chmod +x {} \; -exec {} -gsp "./src/watchOS/bitwarden/GoogleService-Info.plist" -p ios "./bitwarden-export/Watch_dSYMs" \; find "$HOME/Library/Developer/XCode/DerivedData" -name "upload-symbols" -exec chmod +x {} \; -exec {} -gsp "./src/watchOS/bitwarden/GoogleService-Info.plist" -p ios "./bitwarden-export/Watch_dSYMs" \;
- name: Validate app in App Store
if: |
(github.ref == 'refs/heads/master'
&& needs.setup.outputs.rc_branch_exists == 0
&& needs.setup.outputs.hotfix_branch_exists == 0)
|| (github.ref == 'refs/heads/rc' && needs.setup.outputs.hotfix_branch_exists == 0)
|| github.ref == 'refs/heads/hotfix-rc'
env:
APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
run: |
xcrun altool --validate-app --type ios --file "./bitwarden-export/Bitwarden.ipa" \
--username "$APPLE_ID_USERNAME" --password "$APPLE_ID_PASSWORD"
shell: bash shell: bash
- name: Deploy to App Store - name: Deploy to App Store
@ -783,116 +780,101 @@ jobs:
APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }} APPLE_ID_USERNAME: ${{ secrets.APPLE_ID_USERNAME }}
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }}
run: | run: |
xcrun altool --upload-app --type ios --file "./bitwarden-export/${{ env.app_output_name }}.ipa" \ xcrun altool --upload-app --type ios --file "./bitwarden-export/Bitwarden.ipa" \
--username "$APPLE_ID_USERNAME" --password "$APPLE_ID_PASSWORD" --username "$APPLE_ID_USERNAME" --password "$APPLE_ID_PASSWORD"
shell: bash
# crowdin-push: crowdin-push:
# name: Crowdin Push name: Crowdin Push
# if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'
# needs: needs:
# - android - android
# - f-droid - f-droid
# - ios - ios
# runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
# env: env:
# _CROWDIN_PROJECT_ID: "269690" _CROWDIN_PROJECT_ID: "269690"
# steps: steps:
# - name: Checkout repo - name: Checkout repo
# uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
# - name: Login to Azure - CI Subscription - name: Login to Azure - CI Subscription
# uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.6 uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.6
# with: with:
# creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
# - name: Retrieve secrets - name: Retrieve secrets
# id: retrieve-secrets id: retrieve-secrets
# env: uses: bitwarden/gh-actions/get-keyvault-secrets@main
# KEYVAULT: bitwarden-ci with:
# SECRETS: | keyvault: "bitwarden-ci"
# crowdin-api-token secrets: "crowdin-api-token"
# run: |
# for i in ${SECRETS//,/ }
# do
# VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv)
# echo "::add-mask::$VALUE"
# echo "$i=$VALUE" >> $GITHUB_OUTPUT
# done
# - name: Upload Sources - name: Upload Sources
# uses: crowdin/github-action@965d501f160af7b1f88aed4c29154b0caf1e94b9 # v1.9.0 uses: crowdin/github-action@965d501f160af7b1f88aed4c29154b0caf1e94b9 # v1.9.0
# env: env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }} CROWDIN_API_TOKEN: ${{ steps.retrieve-secrets.outputs.crowdin-api-token }}
# with: with:
# config: crowdin.yml config: crowdin.yml
# crowdin_branch_name: master crowdin_branch_name: master
# upload_sources: true upload_sources: true
# upload_translations: false upload_translations: false
# check-failures: check-failures:
# name: Check for failures name: Check for failures
# if: always() if: always()
# runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
# needs: needs:
# - cloc - cloc
# - android - android
# - f-droid - f-droid
# - ios - ios
# - crowdin-push - crowdin-push
# steps: steps:
# - name: Check if any job failed - name: Check if any job failed
# if: | if: |
# (github.ref == 'refs/heads/master') (github.ref == 'refs/heads/master')
# || (github.ref == 'refs/heads/rc') || (github.ref == 'refs/heads/rc')
# || (github.ref == 'refs/heads/hotfix-rc') || (github.ref == 'refs/heads/hotfix-rc')
# env: env:
# CLOC_STATUS: ${{ needs.cloc.result }} CLOC_STATUS: ${{ needs.cloc.result }}
# ANDROID_STATUS: ${{ needs.android.result }} ANDROID_STATUS: ${{ needs.android.result }}
# F_DROID_STATUS: ${{ needs.f-droid.result }} F_DROID_STATUS: ${{ needs.f-droid.result }}
# IOS_STATUS: ${{ needs.ios.result }} IOS_STATUS: ${{ needs.ios.result }}
# CROWDIN_PUSH_STATUS: ${{ needs.crowdin-push.result }} CROWDIN_PUSH_STATUS: ${{ needs.crowdin-push.result }}
# run: | run: |
# if [ "$CLOC_STATUS" = "failure" ]; then if [ "$CLOC_STATUS" = "failure" ]; then
# exit 1 exit 1
# elif [ "$ANDROID_STATUS" = "failure" ]; then elif [ "$ANDROID_STATUS" = "failure" ]; then
# exit 1 exit 1
# elif [ "$F_DROID_STATUS" = "failure" ]; then elif [ "$F_DROID_STATUS" = "failure" ]; then
# exit 1 exit 1
# elif [ "$IOS_STATUS" = "failure" ]; then elif [ "$IOS_STATUS" = "failure" ]; then
# exit 1 exit 1
# elif [ "$CROWDIN_PUSH_STATUS" = "failure" ]; then elif [ "$CROWDIN_PUSH_STATUS" = "failure" ]; then
# exit 1 exit 1
# fi fi
# - name: Login to Azure - CI Subscription - name: Login to Azure - CI Subscription
# uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.6 uses: Azure/login@92a5484dfaf04ca78a94597f4f19fea633851fa2 # v1.4.6
# if: failure() if: failure()
# with: with:
# creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }} creds: ${{ secrets.AZURE_KV_CI_SERVICE_PRINCIPAL }}
# - name: Retrieve secrets - name: Retrieve secrets
# id: retrieve-secrets id: retrieve-secrets
# if: failure() uses: bitwarden/gh-actions/get-keyvault-secrets@main
# env: if: failure()
# KEYVAULT: bitwarden-ci with:
# SECRETS: | keyvault: "bitwarden-ci"
# devops-alerts-slack-webhook-url secrets: "devops-alerts-slack-webhook-url"
# run: |
# for i in ${SECRETS//,/ }
# do
# VALUE=$(az keyvault secret show --vault-name $KEYVAULT --name $i --query value --output tsv)
# echo "::add-mask::$VALUE"
# echo "$i=$VALUE" >> $GITHUB_OUTPUT
# done
# - name: Notify Slack on failure - name: Notify Slack on failure
# uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f # v2.0.0 uses: act10ns/slack@ed1309ab9862e57e9e583e51c7889486b9a00b0f # v2.0.0
# if: failure() if: failure()
# env: env:
# SLACK_WEBHOOK_URL: ${{ steps.retrieve-secrets.outputs.devops-alerts-slack-webhook-url }} SLACK_WEBHOOK_URL: ${{ steps.retrieve-secrets.outputs.devops-alerts-slack-webhook-url }}
# with: with:
# status: ${{ job.status }} status: ${{ job.status }}

View File

@ -68,8 +68,8 @@
<CodesignKey>iPhone Distribution</CodesignKey> <CodesignKey>iPhone Distribution</CodesignKey>
<CodesignEntitlements>Platforms\iOS\Entitlements.plist</CodesignEntitlements> <CodesignEntitlements>Platforms\iOS\Entitlements.plist</CodesignEntitlements>
<MtouchInterpreter>all</MtouchInterpreter> <MtouchInterpreter>all</MtouchInterpreter>
<MtouchLink>None</MtouchLink> <MtouchLink>Full</MtouchLink>
<MtouchExtraArgs>--weak-framework=NewsstandKit.framework/NewsstandKit --linkskip=LiteDB --linkskip=CsvHelper --linkskip=Core --linkskip=iOS.Core --linkskip=iOS.Autofill --linkskip=iOS.Extension --linkskip=iOS.ShareExtension --linkskip=App -gcc_flags "-L$(ProjectDir)../../lib/ios -largon2 -force_load $(ProjectDir)../../lib/ios/libargon2.a"</MtouchExtraArgs> <MtouchExtraArgs>--linkskip=LiteDB --linkskip=CsvHelper --linkskip=Core --linkskip=iOS.Core --linkskip=iOS.Autofill --linkskip=iOS.Extension --linkskip=iOS.ShareExtension --linkskip=App -gcc_flags "-L$(ProjectDir)../../lib/ios -largon2 -force_load $(ProjectDir)../../lib/ios/libargon2.a"</MtouchExtraArgs>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<AndroidNativeLibrary Include="Platforms\Android\lib\arm64-v8a\libargon2.so" /> <AndroidNativeLibrary Include="Platforms\Android\lib\arm64-v8a\libargon2.so" />

View File

@ -11,7 +11,7 @@
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
<string>com.8bit.bitwarden</string> <string>com.8bit.bitwarden</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>2023.9.2</string> <string>2023.10.1</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1</string> <string>1</string>
<key>CFBundleIconName</key> <key>CFBundleIconName</key>

View File

@ -58,10 +58,6 @@
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Label <Label
Grid.Row="0" Grid.Row="0"
Text="{Binding AccountView.Email}" Text="{Binding AccountView.Email}"

View File

@ -64,23 +64,25 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" /> <ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Label <Label
LineBreakMode="TailTruncation"
Grid.Column="0" Grid.Column="0"
Grid.Row="0" Grid.Row="0"
HorizontalTextAlignment="Start"
LineBreakMode="TailTruncation"
StyleClass="list-title, list-title-platform" StyleClass="list-title, list-title-platform"
Text="{Binding Cipher.Name}" Text="{Binding Cipher.Name}"
AutomationId="CipherNameLabel" /> AutomationId="CipherNameLabel" />
<Label <Label
LineBreakMode="TailTruncation"
Grid.Column="0" Grid.Column="0"
Grid.Row="1" Grid.Row="1"
Grid.ColumnSpan="3" Grid.ColumnSpan="3"
HorizontalTextAlignment="Start"
LineBreakMode="TailTruncation"
StyleClass="list-subtitle, list-subtitle-platform" StyleClass="list-subtitle, list-subtitle-platform"
Text="{Binding Cipher.SubTitle}" Text="{Binding Cipher.SubTitle}"
IsVisible="{Binding Source={RelativeSource Self}, Path=Text, IsVisible="{Binding Source={RelativeSource Self}, Path=Text,

View File

@ -1,5 +1,6 @@
using System.Windows.Input; using System.Windows.Input;
using Bit.App.Abstractions; using Bit.App.Abstractions;
using Bit.App.Pages;
using Bit.Core.Models.View; using Bit.Core.Models.View;
using Bit.Core.Utilities; using Bit.Core.Utilities;
@ -59,10 +60,21 @@ namespace Bit.App.Controls
private void MoreButton_Clicked(object sender, EventArgs e) private void MoreButton_Clicked(object sender, EventArgs e)
{ {
var cipher = ((sender as MiButton)?.BindingContext as CipherViewCellViewModel)?.Cipher; // WORKAROUND: Added a temporary workaround so that the MoreButton still works in all pages even if it uses GroupingsPageListItem instead of CipherViewCellViewModel.
if (cipher != null) // Ideally this should be fixed so that even Groupings Page uses CipherViewCellViewModel
CipherView cipherView = null;
if (BindingContext is CipherViewCellViewModel cipherViewCellViewModel)
{ {
ButtonCommand?.Execute(cipher); cipherView = cipherViewCellViewModel.Cipher;
}
else if (BindingContext is GroupingsPageListItem groupingsPageListItem)
{
cipherView = groupingsPageListItem.Cipher;
}
if (cipherView != null)
{
ButtonCommand?.Execute(cipherView);
} }
} }
} }

View File

@ -11,7 +11,8 @@ namespace Bit.App.Controls
// TODO: [TouchEffect] When this TouchBehavior is replaced we can delete the existing TouchBehavior support files (which is all the files and folders inside "Core.Behaviors.PlatformBehaviors.MCTTouch.*") // TODO: [TouchEffect] When this TouchBehavior is replaced we can delete the existing TouchBehavior support files (which is all the files and folders inside "Core.Behaviors.PlatformBehaviors.MCTTouch.*")
var touchBehavior = new TouchBehavior() var touchBehavior = new TouchBehavior()
{ {
NativeAnimation = true NativeAnimation = true,
ShouldMakeChildrenInputTransparent = false
}; };
Behaviors.Add(touchBehavior); Behaviors.Add(touchBehavior);
#endif #endif

View File

@ -11,7 +11,8 @@ namespace Bit.App.Controls
// TODO: [TouchEffect] When this TouchBehavior is replaced we can delete the existing TouchBehavior support files (which is all the files and folders inside "Core.Behaviors.PlatformBehaviors.MCTTouch.*") // TODO: [TouchEffect] When this TouchBehavior is replaced we can delete the existing TouchBehavior support files (which is all the files and folders inside "Core.Behaviors.PlatformBehaviors.MCTTouch.*")
var touchBehavior = new TouchBehavior() var touchBehavior = new TouchBehavior()
{ {
NativeAnimation = true NativeAnimation = true,
ShouldMakeChildrenInputTransparent = false
}; };
Behaviors.Add(touchBehavior); Behaviors.Add(touchBehavior);
#endif #endif

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
<pages:BaseContentPage <pages:BaseContentPage
xmlns="http://schemas.microsoft.com/dotnet/2021/maui" xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
@ -21,6 +21,10 @@
<ScrollView> <ScrollView>
<StackLayout Spacing="20"> <StackLayout Spacing="20">
<StackLayout StyleClass="box"> <StackLayout StyleClass="box">
<StackLayout StyleClass="box-row-header">
<Label Text="MAUI APP"
StyleClass="box-header, box-header-platform" />
</StackLayout>
<StackLayout StyleClass="box-row-header"> <StackLayout StyleClass="box-row-header">
<Label Text="{u:I18n SelfHostedEnvironment, Header=True}" <Label Text="{u:I18n SelfHostedEnvironment, Header=True}"
StyleClass="box-header, box-header-platform" /> StyleClass="box-header, box-header-platform" />

View File

@ -93,7 +93,8 @@
IsSpellCheckEnabled="False" IsSpellCheckEnabled="False"
IsTextPredictionEnabled="False" IsTextPredictionEnabled="False"
ReturnType="Go" ReturnType="Go"
ReturnCommand="{Binding SubmitCommand}" /> ReturnCommand="{Binding SubmitCommand}"
TextChanged="Token_TextChanged" />
</StackLayout> </StackLayout>
<StackLayout StyleClass="box-row, box-row-switch"> <StackLayout StyleClass="box-row, box-row-switch">
<Label <Label

View File

@ -68,7 +68,8 @@ namespace Bit.App.Pages
{ {
get get
{ {
var appInfo = string.Format("{0}: {1} ({2})", // TODO: REMOVE WHEN MERGED INTO MAIN BRANCH
var appInfo = string.Format("MAUI {0}: {1} ({2})",
AppResources.Version, AppResources.Version,
_platformUtilsService.GetApplicationVersion(), _platformUtilsService.GetApplicationVersion(),
_deviceActionService.GetBuildNumber()); _deviceActionService.GetBuildNumber());

View File

@ -1,20 +1,11 @@
using System.Collections.Generic; using System.Windows.Input;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Input;
using Bit.App.Abstractions; using Bit.App.Abstractions;
using Bit.App.Controls; using Bit.App.Controls;
using Bit.App.Models;
using Bit.Core.Resources.Localization;
using Bit.App.Utilities; using Bit.App.Utilities;
using Bit.Core;
using Bit.Core.Abstractions; using Bit.Core.Abstractions;
using Bit.Core.Models.View; using Bit.Core.Models.View;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using Microsoft.Maui.Controls;
using Microsoft.Maui;
namespace Bit.App.Pages namespace Bit.App.Pages
{ {
public abstract class CipherSelectionPageViewModel : BaseViewModel public abstract class CipherSelectionPageViewModel : BaseViewModel
@ -108,10 +99,7 @@ namespace Bit.App.Pages
var groupedItems = await LoadGroupedItemsAsync(); var groupedItems = await LoadGroupedItemsAsync();
// TODO: refactor this // TODO: refactor this
// TODO Xamarin.Forms.Device.RuntimePlatform is no longer supported. Use Microsoft.Maui.Devices.DeviceInfo.Platform instead. For more details see https://learn.microsoft.com/en-us/dotnet/maui/migration/forms-projects#device-changes if (DeviceInfo.Platform == DevicePlatform.Android || GroupedItems.Any())
if (Device.RuntimePlatform == Device.Android
||
GroupedItems.Any())
{ {
var items = new List<IGroupingsPageListItem>(); var items = new List<IGroupingsPageListItem>();
foreach (var itemGroup in groupedItems) foreach (var itemGroup in groupedItems)
@ -140,7 +128,7 @@ namespace Bit.App.Pages
items.AddRange(itemGroup); items.AddRange(itemGroup);
} }
await Device.InvokeOnMainThreadAsync(() => await MainThread.InvokeOnMainThreadAsync(() =>
{ {
if (groupedItems.Any()) if (groupedItems.Any())
{ {
@ -153,7 +141,7 @@ namespace Bit.App.Pages
} }
}); });
} }
await Device.InvokeOnMainThreadAsync(() => await MainThread.InvokeOnMainThreadAsync(() =>
{ {
ShowList = groupedItems.Any(); ShowList = groupedItems.Any();
ShowNoData = !ShowList; ShowNoData = !ShowList;

View File

@ -1,13 +1,9 @@
using System; using Bit.App.Controls;
using System.Linq;
using Bit.App.Controls;
using Bit.App.Models; using Bit.App.Models;
using Bit.Core.Resources.Localization; using Bit.Core.Resources.Localization;
using Bit.Core.Abstractions; using Bit.Core.Abstractions;
using Bit.Core.Models.View; using Bit.Core.Models.View;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using Microsoft.Maui.Controls;
using Microsoft.Maui;
namespace Bit.App.Pages namespace Bit.App.Pages
{ {
@ -41,8 +37,7 @@ namespace Bit.App.Pages
} }
_vm.VaultFilterDescription = vaultFilterSelection; _vm.VaultFilterDescription = vaultFilterSelection;
// TODO Xamarin.Forms.Device.RuntimePlatform is no longer supported. Use Microsoft.Maui.Devices.DeviceInfo.Platform instead. For more details see https://learn.microsoft.com/en-us/dotnet/maui/migration/forms-projects#device-changes if (DeviceInfo.Platform == DevicePlatform.iOS)
if (Device.RuntimePlatform == Device.iOS)
{ {
ToolbarItems.Add(_closeItem); ToolbarItems.Add(_closeItem);
_searchBar.Placeholder = AppResources.Search; _searchBar.Placeholder = AppResources.Search;
@ -59,7 +54,7 @@ namespace Bit.App.Pages
public SearchBar SearchBar => _searchBar; public SearchBar SearchBar => _searchBar;
protected async override void OnAppearing() protected override async void OnAppearing()
{ {
base.OnAppearing(); base.OnAppearing();
await _vm.InitAsync(); await _vm.InitAsync();

View File

@ -1,9 +1,4 @@
using System; using System.Windows.Input;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Input;
using Bit.App.Abstractions; using Bit.App.Abstractions;
using Bit.App.Models; using Bit.App.Models;
using Bit.Core.Resources.Localization; using Bit.Core.Resources.Localization;
@ -13,10 +8,6 @@ using Bit.Core.Exceptions;
using Bit.Core.Models.View; using Bit.Core.Models.View;
using Bit.Core.Utilities; using Bit.Core.Utilities;
using Microsoft.Maui.Controls;
using Microsoft.Maui;
using Bit.App.Utilities;
namespace Bit.App.Pages namespace Bit.App.Pages
{ {
public class CiphersPageViewModel : VaultFilterViewModel public class CiphersPageViewModel : VaultFilterViewModel
@ -164,7 +155,7 @@ namespace Bit.App.Pages
{ {
ciphers = new List<CipherView>(); ciphers = new List<CipherView>();
} }
Device.BeginInvokeOnMainThread(() => MainThread.BeginInvokeOnMainThread(() =>
{ {
Ciphers.ResetWithRange(ciphers); Ciphers.ResetWithRange(ciphers);
ShowNoData = !shouldShowAllWhenEmpty && searchable && Ciphers.Count == 0; ShowNoData = !shouldShowAllWhenEmpty && searchable && Ciphers.Count == 0;

View File

@ -2863,12 +2863,12 @@
<value>تم تسجيل الخروج من الحساب.</value> <value>تم تسجيل الخروج من الحساب.</value>
</data> </data>
<data name="YourOrganizationPermissionsWereUpdatedRequeringYouToSetAMasterPassword" xml:space="preserve"> <data name="YourOrganizationPermissionsWereUpdatedRequeringYouToSetAMasterPassword" xml:space="preserve">
<value>Your organization permissions were updated, requiring you to set a master password.</value> <value>تم تحديث أذونات مؤسستك ، مما يتطلب عليك تعيين كلمة مرور رئيسية.</value>
</data> </data>
<data name="YourOrganizationRequiresYouToSetAMasterPassword" xml:space="preserve"> <data name="YourOrganizationRequiresYouToSetAMasterPassword" xml:space="preserve">
<value>Your organization requires you to set a master password.</value> <value>تتطلب مؤسستك تعيين كلمة مرور رئيسية.</value>
</data> </data>
<data name="SetUpAnUnlockOptionToChangeYourVaultTimeoutAction" xml:space="preserve"> <data name="SetUpAnUnlockOptionToChangeYourVaultTimeoutAction" xml:space="preserve">
<value>Set up an unlock option to change your vault timeout action.</value> <value>أعدنّ ميزة إلغاء القُفْل لتغيير إجراء مهلة المخزن الخاص بك.</value>
</data> </data>
</root> </root>

View File

@ -209,7 +209,7 @@
<value>GitHub repository-də problemi bildirin.</value> <value>GitHub repository-də problemi bildirin.</value>
</data> </data>
<data name="FingerprintDirection" xml:space="preserve"> <data name="FingerprintDirection" xml:space="preserve">
<value>Təsdiqləmək üçün barmaq izinizi istifadə edin.</value> <value>Doğrulamaq üçün barmaq izinizi istifadə edin.</value>
</data> </data>
<data name="Folder" xml:space="preserve"> <data name="Folder" xml:space="preserve">
<value>Qovluq</value> <value>Qovluq</value>
@ -236,14 +236,14 @@
<comment>The button text that allows user to launch the website to their web browser.</comment> <comment>The button text that allows user to launch the website to their web browser.</comment>
</data> </data>
<data name="HelpAndFeedback" xml:space="preserve"> <data name="HelpAndFeedback" xml:space="preserve">
<value>Kömək və əks əlaqə</value> <value>Kömək və əks-əlaqə</value>
</data> </data>
<data name="Hide" xml:space="preserve"> <data name="Hide" xml:space="preserve">
<value>Gizlət</value> <value>Gizlət</value>
<comment>Hide a secret value that is currently shown (password).</comment> <comment>Hide a secret value that is currently shown (password).</comment>
</data> </data>
<data name="InternetConnectionRequiredMessage" xml:space="preserve"> <data name="InternetConnectionRequiredMessage" xml:space="preserve">
<value>Davam etməzdən əvvəl zəhmət olmasa internetə bağlanın.</value> <value>Davam etməzdən əvvəl lütfən internetə bağlanın.</value>
<comment>Description message for the alert when internet connection is required to continue.</comment> <comment>Description message for the alert when internet connection is required to continue.</comment>
</data> </data>
<data name="InternetConnectionRequiredTitle" xml:space="preserve"> <data name="InternetConnectionRequiredTitle" xml:space="preserve">
@ -300,7 +300,7 @@
<comment>The title for the vault page.</comment> <comment>The title for the vault page.</comment>
</data> </data>
<data name="Authenticator" xml:space="preserve"> <data name="Authenticator" xml:space="preserve">
<value>Kimlik təsdiqləyici</value> <value>Kimlik doğrulayıcı</value>
<comment>Authenticator TOTP feature</comment> <comment>Authenticator TOTP feature</comment>
</data> </data>
<data name="Name" xml:space="preserve"> <data name="Name" xml:space="preserve">
@ -334,7 +334,7 @@
<comment>Message shown when interacting with the server</comment> <comment>Message shown when interacting with the server</comment>
</data> </data>
<data name="Settings" xml:space="preserve"> <data name="Settings" xml:space="preserve">
<value>Tənzimləmələr</value> <value>Ayarlar</value>
<comment>The title for the settings page.</comment> <comment>The title for the settings page.</comment>
</data> </data>
<data name="Show" xml:space="preserve"> <data name="Show" xml:space="preserve">
@ -379,13 +379,13 @@
<comment>Confirmation message after successfully copying a value to the clipboard.</comment> <comment>Confirmation message after successfully copying a value to the clipboard.</comment>
</data> </data>
<data name="VerifyFingerprint" xml:space="preserve"> <data name="VerifyFingerprint" xml:space="preserve">
<value>Barmaq izini təsdiqlə</value> <value>Barmaq izini doğrula</value>
</data> </data>
<data name="VerifyMasterPassword" xml:space="preserve"> <data name="VerifyMasterPassword" xml:space="preserve">
<value>Ana parolu təsdiqlə</value> <value>Ana parolu doğrula</value>
</data> </data>
<data name="VerifyPIN" xml:space="preserve"> <data name="VerifyPIN" xml:space="preserve">
<value>PIN-i təsdiqlə</value> <value>PIN-i doğrula</value>
</data> </data>
<data name="Version" xml:space="preserve"> <data name="Version" xml:space="preserve">
<value>Versiya</value> <value>Versiya</value>
@ -413,7 +413,7 @@
<value>Element əlavə et</value> <value>Element əlavə et</value>
</data> </data>
<data name="AppExtension" xml:space="preserve"> <data name="AppExtension" xml:space="preserve">
<value>Tətbiq genişləndirməsi</value> <value>Tətbiq uzantısı</value>
</data> </data>
<data name="AutofillAccessibilityDescription" xml:space="preserve"> <data name="AutofillAccessibilityDescription" xml:space="preserve">
<value>Tətbiq və veb saytda giriş məlumatlarının avto-doldurulması üçün Bitwarden əlçatımlılıq xidmətini istifadə edin.</value> <value>Tətbiq və veb saytda giriş məlumatlarının avto-doldurulması üçün Bitwarden əlçatımlılıq xidmətini istifadə edin.</value>
@ -425,10 +425,10 @@
<value>Anlaşılmaz simvollardan çəkinin</value> <value>Anlaşılmaz simvollardan çəkinin</value>
</data> </data>
<data name="BitwardenAppExtension" xml:space="preserve"> <data name="BitwardenAppExtension" xml:space="preserve">
<value>Bitwarden tətbiq genişləndirməsi</value> <value>Bitwarden tətbiq uzantısı</value>
</data> </data>
<data name="BitwardenAppExtensionAlert2" xml:space="preserve"> <data name="BitwardenAppExtensionAlert2" xml:space="preserve">
<value>Anbarınıza yeni hesab əlavə etməyin ən asan yolu, Bitwarden tətbiq genişləndirməsidir. Bu genişləndirmə haqqında daha ətraflı məlumat üçün "Tənzimləmələr" ekranına gedin.</value> <value>Anbarınıza yeni hesab əlavə etməyin ən asan yolu, Bitwarden tətbiq uzantısıdır. Bu uzantı haqqında daha ətraflı məlumat üçün "Ayarlar" ekranına gedin.</value>
</data> </data>
<data name="BitwardenAppExtensionDescription" xml:space="preserve"> <data name="BitwardenAppExtensionDescription" xml:space="preserve">
<value>Giriş məlumatlarının avto-doldurulması üçün Safari-də və digər tətbiqlərdə Bitwarden-i istifadə edin.</value> <value>Giriş məlumatlarının avto-doldurulması üçün Safari-də və digər tətbiqlərdə Bitwarden-i istifadə edin.</value>
@ -471,13 +471,13 @@
<value>Ana parol məsləhətini alacağınız hesabınızın e-poçt ünvanını daxil edin.</value> <value>Ana parol məsləhətini alacağınız hesabınızın e-poçt ünvanını daxil edin.</value>
</data> </data>
<data name="ExntesionReenable" xml:space="preserve"> <data name="ExntesionReenable" xml:space="preserve">
<value>Tətbiq genişləndirməsini təkrar fəallaşdır</value> <value>Tətbiq uzantısını təkrar aktivləşdir</value>
</data> </data>
<data name="ExtensionAlmostDone" xml:space="preserve"> <data name="ExtensionAlmostDone" xml:space="preserve">
<value>Demək olar ki, hazırdır!</value> <value>Demək olar ki, hazırdır!</value>
</data> </data>
<data name="ExtensionEnable" xml:space="preserve"> <data name="ExtensionEnable" xml:space="preserve">
<value>Tətbiq genişləndirməsini fəallaşdır</value> <value>Tətbiq uzantısını aktivləşdir</value>
</data> </data>
<data name="ExtensionInSafari" xml:space="preserve"> <data name="ExtensionInSafari" xml:space="preserve">
<value>Safari-də paylaş nişanını istifadə edərək Bitwarden-i tapın (məsləhət: Menyunun ən alt sətrinin sağ hissəsinə baxın).</value> <value>Safari-də paylaş nişanını istifadə edərək Bitwarden-i tapın (məsləhət: Menyunun ən alt sətrinin sağ hissəsinə baxın).</value>
@ -496,7 +496,7 @@
<value>Safari və Chrome-da paylaş nişanını istifadə edərək Bitwarden-i tapın (məsləhət: Paylaş menyusunun ən alt sətrinin sağ hissəsinə baxın).</value> <value>Safari və Chrome-da paylaş nişanını istifadə edərək Bitwarden-i tapın (məsləhət: Paylaş menyusunun ən alt sətrinin sağ hissəsinə baxın).</value>
</data> </data>
<data name="ExtensionTapIcon" xml:space="preserve"> <data name="ExtensionTapIcon" xml:space="preserve">
<value>Genişləndirməni başlatmaq üçün menyudakı Bitwarden nişanına toxunun.</value> <value>Uzantını başlatmaq üçün menyudakı Bitwarden nişanına toxunun.</value>
</data> </data>
<data name="ExtensionTurnOn" xml:space="preserve"> <data name="ExtensionTurnOn" xml:space="preserve">
<value>Safari və digər tətbiqlərdə Bitwarden-i işə salmaq üçün menyunun ən alt sətrindəki "daha çox" nişanına toxunun.</value> <value>Safari və digər tətbiqlərdə Bitwarden-i işə salmaq üçün menyunun ən alt sətrindəki "daha çox" nişanına toxunun.</value>
@ -514,13 +514,13 @@
<value>Ana parolunuz üçün məsləhət alın</value> <value>Ana parolunuz üçün məsləhət alın</value>
</data> </data>
<data name="ImportItems" xml:space="preserve"> <data name="ImportItems" xml:space="preserve">
<value>Elementləri idxal et</value> <value>Elementləri daxilə köçür</value>
</data> </data>
<data name="ImportItemsConfirmation" xml:space="preserve"> <data name="ImportItemsConfirmation" xml:space="preserve">
<value>bitwarden.com veb anbarından elementləri toplu formada idxal edə bilərsiniz. Veb saytı indi ziyarət etmək istəyirsiniz?</value> <value>bitwarden.com veb anbarından elementləri toplu formada daxilə köçürə bilərsiniz. Veb saytı indi ziyarət etmək istəyirsiniz?</value>
</data> </data>
<data name="ImportItemsDescription" xml:space="preserve"> <data name="ImportItemsDescription" xml:space="preserve">
<value>Digər parol idarəetmə tətbiqlərindəki elementləri cəld və toplu formada idxal edin.</value> <value>Digər parol idarəetmə tətbiqlərindəki elementləri cəld və toplu formada daxilə köçürün.</value>
</data> </data>
<data name="LastSync" xml:space="preserve"> <data name="LastSync" xml:space="preserve">
<value>Son eyniləşdirmə:</value> <value>Son eyniləşdirmə:</value>
@ -553,7 +553,7 @@
<value>Anbara müraciət vaxtının bitmə əməliyyatı</value> <value>Anbara müraciət vaxtının bitmə əməliyyatı</value>
</data> </data>
<data name="VaultTimeoutLogOutConfirmation" xml:space="preserve"> <data name="VaultTimeoutLogOutConfirmation" xml:space="preserve">
<value>Çıxış edəndə, anbarınıza bütün müraciətiniz dayanacaq və vaxt bitməsindən sonra onlayn kimlik təsdiqləməsi tələb olunacaq. Bu tənzimləməni istifadə etmək istədiyinizə əminsiniz?</value> <value>Çıxış edəndə, anbarınıza bütün müraciətiniz dayanacaq və vaxt bitməsindən sonra onlayn kimlik doğrulaması tələb olunacaq. Bu ayarı istifadə etmək istədiyinizə əminsiniz?</value>
</data> </data>
<data name="LoggingIn" xml:space="preserve"> <data name="LoggingIn" xml:space="preserve">
<value>Giriş edilir...</value> <value>Giriş edilir...</value>
@ -589,10 +589,10 @@
<comment>Minimum special characters for password generator settings</comment> <comment>Minimum special characters for password generator settings</comment>
</data> </data>
<data name="MoreSettings" xml:space="preserve"> <data name="MoreSettings" xml:space="preserve">
<value>Daha çox tənzimləmə</value> <value>Daha çox ayar</value>
</data> </data>
<data name="MustLogInMainApp" xml:space="preserve"> <data name="MustLogInMainApp" xml:space="preserve">
<value>Genişləndirməni istifadə edə bilmək üçün Bitwarden tətbiqində giriş etməlisiniz.</value> <value>Uzantını istifadə edə bilmək üçün Bitwarden tətbiqində giriş etməlisiniz.</value>
</data> </data>
<data name="Never" xml:space="preserve"> <data name="Never" xml:space="preserve">
<value>Heç vaxt</value> <value>Heç vaxt</value>
@ -617,7 +617,7 @@
<comment>Confirmation, like "Ok, I understand it"</comment> <comment>Confirmation, like "Ok, I understand it"</comment>
</data> </data>
<data name="OptionDefaults" xml:space="preserve"> <data name="OptionDefaults" xml:space="preserve">
<value>İlkin tənzimləmələr, əsas Bitwarden tətbiqinin parol yaratma alətindən tənzimlənir.</value> <value>İlkin seçim dəyərləri, əsas Bitwarden tətbiqinin parol yaratma alətindən ayarlanır.</value>
</data> </data>
<data name="Options" xml:space="preserve"> <data name="Options" xml:space="preserve">
<value>Seçimlər</value> <value>Seçimlər</value>
@ -708,11 +708,11 @@
<value>PIN kod ilə kilidi açın</value> <value>PIN kod ilə kilidi açın</value>
</data> </data>
<data name="Validating" xml:space="preserve"> <data name="Validating" xml:space="preserve">
<value>Təsdiqlənir</value> <value>Doğrulanır</value>
<comment>Message shown when interacting with the server</comment> <comment>Message shown when interacting with the server</comment>
</data> </data>
<data name="VerificationCode" xml:space="preserve"> <data name="VerificationCode" xml:space="preserve">
<value>Təsdiqləmə kodu</value> <value>Doğrulama kodu</value>
</data> </data>
<data name="ViewItem" xml:space="preserve"> <data name="ViewItem" xml:space="preserve">
<value>Elementə bax</value> <value>Elementə bax</value>
@ -721,14 +721,14 @@
<value>Bitwarden veb anbarı</value> <value>Bitwarden veb anbarı</value>
</data> </data>
<data name="Lost2FAApp" xml:space="preserve"> <data name="Lost2FAApp" xml:space="preserve">
<value>Kimlik təsdiqləyici tətbiqini itirmisiniz?</value> <value>Kimlik doğrulayıcı tətbiqini itirmisiniz?</value>
</data> </data>
<data name="Items" xml:space="preserve"> <data name="Items" xml:space="preserve">
<value>Elementlər</value> <value>Elementlər</value>
<comment>Screen title</comment> <comment>Screen title</comment>
</data> </data>
<data name="ExtensionActivated" xml:space="preserve"> <data name="ExtensionActivated" xml:space="preserve">
<value>Genişləndirmə aktivləşdirildi!</value> <value>Uzantı aktivləşdirildi!</value>
</data> </data>
<data name="Icons" xml:space="preserve"> <data name="Icons" xml:space="preserve">
<value>Nişanlar</value> <value>Nişanlar</value>
@ -751,13 +751,13 @@
<value>Anbarınızdakı bir elementi avto-doldurmaq üçün bu bildirişə toxunun.</value> <value>Anbarınızdakı bir elementi avto-doldurmaq üçün bu bildirişə toxunun.</value>
</data> </data>
<data name="BitwardenAutofillServiceOpenAccessibilitySettings" xml:space="preserve"> <data name="BitwardenAutofillServiceOpenAccessibilitySettings" xml:space="preserve">
<value>Əlçatımlılıq tənzimləmələrini açın</value> <value>Əlçatımlılıq Ayarlarını</value>
</data> </data>
<data name="BitwardenAutofillServiceStep1" xml:space="preserve"> <data name="BitwardenAutofillServiceStep1" xml:space="preserve">
<value>1. Android əlçatımlılıq xidmətləri ekranında Xidmətlər başlığı altındakı "Bitwarden"ə toxunun.</value> <value>1. Android əlçatımlılıq xidmətləri ekranında Xidmətlər başlığı altındakı "Bitwarden"ə toxunun.</value>
</data> </data>
<data name="BitwardenAutofillServiceStep2" xml:space="preserve"> <data name="BitwardenAutofillServiceStep2" xml:space="preserve">
<value>2. Tənzimləməniın və Olduya basaraq qəbul edin.</value> <value>2. Ayarıın və Olduya basaraq qəbul edin.</value>
</data> </data>
<data name="Disabled" xml:space="preserve"> <data name="Disabled" xml:space="preserve">
<value>Sıradan çıxarıldı</value> <value>Sıradan çıxarıldı</value>
@ -775,7 +775,7 @@
<value>Vəziyyət</value> <value>Vəziyyət</value>
</data> </data>
<data name="BitwardenAutofillServiceAlert2" xml:space="preserve"> <data name="BitwardenAutofillServiceAlert2" xml:space="preserve">
<value>Anbarınıza yeni hesab əlavə etməyin ən asan yolu, Bitwarden avto-doldurma xidmətidir. Bu xidmət haqqında daha ətraflı məlumat üçün "Tənzimləmələr" ekranına gedin.</value> <value>Anbarınıza yeni hesab əlavə etməyin ən asan yolu, Bitwarden avto-doldurma xidmətidir. Bu xidmət haqqında daha ətraflı məlumat üçün "Ayarlar" ekranına gedin.</value>
</data> </data>
<data name="Autofill" xml:space="preserve"> <data name="Autofill" xml:space="preserve">
<value>Avto-doldurma</value> <value>Avto-doldurma</value>
@ -806,15 +806,15 @@
<comment>Message shown when trying to launch an app that does not exist on the user's device.</comment> <comment>Message shown when trying to launch an app that does not exist on the user's device.</comment>
</data> </data>
<data name="AuthenticatorAppTitle" xml:space="preserve"> <data name="AuthenticatorAppTitle" xml:space="preserve">
<value>Kimlik təsdiqləyici tətbiqi</value> <value>Kimlik doğrulayıcı tətbiqi</value>
<comment>For 2FA</comment> <comment>For 2FA</comment>
</data> </data>
<data name="EnterVerificationCodeApp" xml:space="preserve"> <data name="EnterVerificationCodeApp" xml:space="preserve">
<value>Kimlik təsdiqləyici tətbiqindən 6 rəqəmli təsdiqləmə kodunu daxil edin.</value> <value>Kimlik doğrulayıcı tətbiqindən 6 rəqəmli doğrulama kodunu daxil edin.</value>
<comment>For 2FA</comment> <comment>For 2FA</comment>
</data> </data>
<data name="EnterVerificationCodeEmail" xml:space="preserve"> <data name="EnterVerificationCodeEmail" xml:space="preserve">
<value>{0} ünvanına göndərilən e-poçtdakı 6 rəqəmli təsdiqləmə kodunu daxil edin.</value> <value>{0} ünvanına göndərilən e-poçtdakı 6 rəqəmli doğrulama kodunu daxil edin.</value>
<comment>For 2FA</comment> <comment>For 2FA</comment>
</data> </data>
<data name="LoginUnavailable" xml:space="preserve"> <data name="LoginUnavailable" xml:space="preserve">
@ -822,7 +822,7 @@
<comment>For 2FA whenever there are no available providers on this device.</comment> <comment>For 2FA whenever there are no available providers on this device.</comment>
</data> </data>
<data name="NoTwoStepAvailable" xml:space="preserve"> <data name="NoTwoStepAvailable" xml:space="preserve">
<value>Bu hesabda ikir mərhələli giriş fəaldır, ancaq konfiqurasiya edilmiş iki mərhələli təchizatçıların heç biri bu cihazda dəstəklənmir. Zəhmət olmasa dəstəklənən cihaz istifadə edin və/və ya fərqli cihazda dəstəklənən yeni provayderlər əlavə edin (məs. kimlik təsdiqləyici tətbiqi).</value> <value>Bu hesabda iki addımlı giriş qurulub, ancaq konfiqurasiya edilmiş iki addımlı provayderlərin heç biri bu cihazda dəstəklənmir. Lütfən dəstəklənən cihaz istifadə edin və/və ya fərqli cihazda dəstəklənən yeni provayderlər əlavə edin (məs. kimlik doğrulayıcı tətbiq).</value>
</data> </data>
<data name="RecoveryCodeTitle" xml:space="preserve"> <data name="RecoveryCodeTitle" xml:space="preserve">
<value>Bərpa kodu</value> <value>Bərpa kodu</value>
@ -833,7 +833,7 @@
<comment>Remember my two-step login</comment> <comment>Remember my two-step login</comment>
</data> </data>
<data name="SendVerificationCodeAgain" xml:space="preserve"> <data name="SendVerificationCodeAgain" xml:space="preserve">
<value>Təsdiqləmə kodu olan e-poçtu yenidən göndər</value> <value>Doğrulama kodu olan e-poçtu yenidən göndər</value>
<comment>For 2FA</comment> <comment>For 2FA</comment>
</data> </data>
<data name="TwoStepLoginOptions" xml:space="preserve"> <data name="TwoStepLoginOptions" xml:space="preserve">
@ -843,11 +843,11 @@
<value>Başqa bir iki mərhələli giriş metodu istifadə edin</value> <value>Başqa bir iki mərhələli giriş metodu istifadə edin</value>
</data> </data>
<data name="VerificationEmailNotSent" xml:space="preserve"> <data name="VerificationEmailNotSent" xml:space="preserve">
<value>Təsdiqləmə e-poçtu göndərilə bilmədi. Yenidən sınayın.</value> <value>Doğrulama e-poçtu göndərilə bilmədi. Yenidən sınayın.</value>
<comment>For 2FA</comment> <comment>For 2FA</comment>
</data> </data>
<data name="VerificationEmailSent" xml:space="preserve"> <data name="VerificationEmailSent" xml:space="preserve">
<value>Təsdiqləmə e-poçtu göndərildi.</value> <value>Doğrulama e-poçtu göndərildi</value>
<comment>For 2FA</comment> <comment>For 2FA</comment>
</data> </data>
<data name="YubiKeyInstruction" xml:space="preserve"> <data name="YubiKeyInstruction" xml:space="preserve">
@ -878,17 +878,17 @@
<comment>The placeholder will show the file size of the attachment. Ex "25 MB"</comment> <comment>The placeholder will show the file size of the attachment. Ex "25 MB"</comment>
</data> </data>
<data name="AuthenticatorKey" xml:space="preserve"> <data name="AuthenticatorKey" xml:space="preserve">
<value>Kimlik təsdiqləyici açarı (TOTP)</value> <value>Kimlik doğrulayıcı açarı (TOTP)</value>
</data> </data>
<data name="VerificationCodeTotp" xml:space="preserve"> <data name="VerificationCodeTotp" xml:space="preserve">
<value>Təsdiqləmə kodu (TOTP)</value> <value>Doğrulama kodu (TOTP)</value>
<comment>Totp code label</comment> <comment>Totp code label</comment>
</data> </data>
<data name="AuthenticatorKeyAdded" xml:space="preserve"> <data name="AuthenticatorKeyAdded" xml:space="preserve">
<value>Kimlik təsdiqləyici açarı əlavə edildi.</value> <value>Kimlik doğrulayıcı açarı əlavə edildi.</value>
</data> </data>
<data name="AuthenticatorKeyReadError" xml:space="preserve"> <data name="AuthenticatorKeyReadError" xml:space="preserve">
<value>Kimlik təsdiqləyici açarı oxuna bilmir.</value> <value>Kimlik doğrulayıcı açarı oxuna bilmir.</value>
</data> </data>
<data name="PointYourCameraAtTheQRCode" xml:space="preserve"> <data name="PointYourCameraAtTheQRCode" xml:space="preserve">
<value>Kameranızı QR koduna yönəldin. <value>Kameranızı QR koduna yönəldin.
@ -907,7 +907,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>TOTP-ni kopyala</value> <value>TOTP-ni kopyala</value>
</data> </data>
<data name="CopyTotpAutomaticallyDescription" xml:space="preserve"> <data name="CopyTotpAutomaticallyDescription" xml:space="preserve">
<value>Bir girişin, kimlik təsdiqləyici açarı varsa, giriş məlumatları avto-doldurulanda TOTP təsdiqləmə kodunu kopyalayın.</value> <value>Bir giriş prosesinin kimlik doğrulayıcı açarı varsa, giriş məlumatları avto-doldurulanda TOTP doğrulama kodunu kopyalayın.</value>
</data> </data>
<data name="CopyTotpAutomatically" xml:space="preserve"> <data name="CopyTotpAutomatically" xml:space="preserve">
<value>TOTP-ni avtomatik kopyala</value> <value>TOTP-ni avtomatik kopyala</value>
@ -946,7 +946,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Şifrələmə açarınızı güncəlləyənə qədər bu özəlliyi istifadə edə bilməzsiniz.</value> <value>Şifrələmə açarınızı güncəlləyənə qədər bu özəlliyi istifadə edə bilməzsiniz.</value>
</data> </data>
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve"> <data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
<value>Şifrələmə açarının daşınması tələb olunur. Şifrələmə açarınızı güncəlləmək üçün zəhmət olmasa veb anbar üzərindən giriş edin.</value> <value>Şifrələmə açarının daşınması tələb olunur. Şifrələmə açarınızı güncəlləmək üçün lütfən veb anbar üzərindən giriş edin.</value>
</data> </data>
<data name="LearnMore" xml:space="preserve"> <data name="LearnMore" xml:space="preserve">
<value>Daha ətraflı</value> <value>Daha ətraflı</value>
@ -1173,26 +1173,26 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Digər tətbiqlərdəki giriş məlumatlarının, kredit kartlarının və kimlik məlumatlarının doldurulması üçün Bitwarden avto-doldurma xidmətini istifadə edin.</value> <value>Digər tətbiqlərdəki giriş məlumatlarının, kredit kartlarının və kimlik məlumatlarının doldurulması üçün Bitwarden avto-doldurma xidmətini istifadə edin.</value>
</data> </data>
<data name="BitwardenAutofillServiceOpenAutofillSettings" xml:space="preserve"> <data name="BitwardenAutofillServiceOpenAutofillSettings" xml:space="preserve">
<value>Avto-doldurma tənzimləmələrini açın</value> <value>Avto-doldurma ayarlarını</value>
</data> </data>
<data name="FaceID" xml:space="preserve"> <data name="FaceID" xml:space="preserve">
<value>Face ID</value> <value>Face ID</value>
<comment>What Apple calls their facial recognition reader.</comment> <comment>What Apple calls their facial recognition reader.</comment>
</data> </data>
<data name="FaceIDDirection" xml:space="preserve"> <data name="FaceIDDirection" xml:space="preserve">
<value>Təsdiqləmə üçün Face ID istifadə edin.</value> <value>Doğrulamaq üçün Face ID istifadə edin.</value>
</data> </data>
<data name="UseFaceIDToUnlock" xml:space="preserve"> <data name="UseFaceIDToUnlock" xml:space="preserve">
<value>Kilidi açmaq üçün Face ID istifadə edin</value> <value>Kilidi açmaq üçün Face ID istifadə edin</value>
</data> </data>
<data name="VerifyFaceID" xml:space="preserve"> <data name="VerifyFaceID" xml:space="preserve">
<value>Face ID-ni təsdiqlə</value> <value>Face ID-ni doğrula</value>
</data> </data>
<data name="WindowsHello" xml:space="preserve"> <data name="WindowsHello" xml:space="preserve">
<value>Windows Hello</value> <value>Windows Hello</value>
</data> </data>
<data name="BitwardenAutofillGoToSettings" xml:space="preserve"> <data name="BitwardenAutofillGoToSettings" xml:space="preserve">
<value>Android avto-doldurma tənzimləmələri menyusunu avtomatik aça bilmədik. Bu menyunu tapmaq üçün Android Tənzimləmələri &gt; Sistem &gt; Dillər və daxiletmə &gt; Qabaqcıl &gt; "Avto-doldurma xidməti"nə gedin.</value> <value>Android avto-doldurma ayarları menyusunu avtomatik aça bilmədik. Bu menyunu tapmaq üçün Android Ayarları &gt; Sistem &gt; Dillər və giriş &gt; Qabaqcıl &gt; "Avto-doldurma xidməti"nə gedin.</value>
</data> </data>
<data name="CustomFieldName" xml:space="preserve"> <data name="CustomFieldName" xml:space="preserve">
<value>Özəl sahə adı</value> <value>Özəl sahə adı</value>
@ -1292,7 +1292,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Tətbiqlərdə və veb saytlarda giriş edərkən giriş etmə məlumatlarınıza klaviaturadan asanlıqla müraciət edə bilərsiniz.</value> <value>Tətbiqlərdə və veb saytlarda giriş edərkən giriş etmə məlumatlarınıza klaviaturadan asanlıqla müraciət edə bilərsiniz.</value>
</data> </data>
<data name="AutofillSetup2" xml:space="preserve"> <data name="AutofillSetup2" xml:space="preserve">
<value>Digər Avto-doldurma tətbiqləriniz varssa və onları istifadə etməyi düşünmürsünüzsə, Tənzimləmələrdə sıradan çıxara bilərsiniz.</value> <value>İstifadə etməyi düşünmürsünüzsə, digər Avto-doldurma tətbiqlərini Ayarlarda sıradan çıxartmağı tövsiyə edirik.</value>
</data> </data>
<data name="BitwardenAutofillDescription" xml:space="preserve"> <data name="BitwardenAutofillDescription" xml:space="preserve">
<value>Parollarınızın cəld avto-doldurulması üçün anbarınıza birbaşa klaviaturanızdan müraciət edin.</value> <value>Parollarınızın cəld avto-doldurulması üçün anbarınıza birbaşa klaviaturanızdan müraciət edin.</value>
@ -1301,7 +1301,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Cihazınızda parolun avto-doldurulması üçün aşağıdakı təlimatları izləyin:</value> <value>Cihazınızda parolun avto-doldurulması üçün aşağıdakı təlimatları izləyin:</value>
</data> </data>
<data name="AutofillTurnOn1" xml:space="preserve"> <data name="AutofillTurnOn1" xml:space="preserve">
<value>1. iOS "Tənzimləmələri"nə gedin</value> <value>1. iOS "Ayarları"na gedin</value>
</data> </data>
<data name="AutofillTurnOn2" xml:space="preserve"> <data name="AutofillTurnOn2" xml:space="preserve">
<value>2. "Parollar və Hesablar"a toxunun.</value> <value>2. "Parollar və Hesablar"a toxunun.</value>
@ -1319,7 +1319,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Parolun avto-doldurulması</value> <value>Parolun avto-doldurulması</value>
</data> </data>
<data name="BitwardenAutofillAlert2" xml:space="preserve"> <data name="BitwardenAutofillAlert2" xml:space="preserve">
<value>Anbarınıza yeni giriş məlumatlarını əlavə etməyin ən asan yolu, Bitwarden parol avto-doldurma genişləndirməsidir. Bu genişləndirmə haqqında daha ətraflı məlumat almaq üçün "Tənzimləmələr" ekranına gedin.</value> <value>Anbarınıza yeni giriş məlumatlarını əlavə etməyin ən asan yolu, Bitwarden parol avto-doldurma uzantısıdır. Bu uzantı haqqında daha ətraflı məlumat almaq üçün "Ayarlar" ekranına gedin.</value>
</data> </data>
<data name="InvalidEmail" xml:space="preserve"> <data name="InvalidEmail" xml:space="preserve">
<value>Yararsız e-poçt ünvanı.</value> <value>Yararsız e-poçt ünvanı.</value>
@ -1465,7 +1465,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Bitwarden, bir təşkilat hesabı istifadə edərək anbar elementlərinizi başqaları ilə paylaşmağınıza icazə verər. Daha ətraflı məlumat üçün bitwarden.com saytını ziyarət etmək istəyirsiniz?</value> <value>Bitwarden, bir təşkilat hesabı istifadə edərək anbar elementlərinizi başqaları ilə paylaşmağınıza icazə verər. Daha ətraflı məlumat üçün bitwarden.com saytını ziyarət etmək istəyirsiniz?</value>
</data> </data>
<data name="ExportVault" xml:space="preserve"> <data name="ExportVault" xml:space="preserve">
<value>Anbarı ixrac et</value> <value>Anbarı xaricə köçür</value>
</data> </data>
<data name="LockNow" xml:space="preserve"> <data name="LockNow" xml:space="preserve">
<value>İndi kilidlə</value> <value>İndi kilidlə</value>
@ -1483,20 +1483,20 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>30 dəqiqə</value> <value>30 dəqiqə</value>
</data> </data>
<data name="SetPINDescription" xml:space="preserve"> <data name="SetPINDescription" xml:space="preserve">
<value>Bitwarden-in kilidini açmaq üçün PIN kod tənzimləyin. Hər tətbiqdən tam çıxış edəndə PIN tənzimləmələriniz sıfırlanacaq.</value> <value>Bitwarden-in kilidini açmaq üçün PIN kodunuzu ayarlayın. Tətbiqdən tam çıxış etdikdə PIN ayarlarınız sıfırlanacaq.</value>
</data> </data>
<data name="LoggedInAsOn" xml:space="preserve"> <data name="LoggedInAsOn" xml:space="preserve">
<value>{1} saytında {0} kimi giriş edildi.</value> <value>{1} saytında {0} kimi giriş edildi.</value>
<comment>ex: Logged in as user@example.com on bitwarden.com.</comment> <comment>ex: Logged in as user@example.com on bitwarden.com.</comment>
</data> </data>
<data name="VaultLockedMasterPassword" xml:space="preserve"> <data name="VaultLockedMasterPassword" xml:space="preserve">
<value>Anbarınız kilidlənib. Davam etmək üçün ana parolunuzu təsdiqləyin.</value> <value>Anbarınız kilidlənib. Davam etmək üçün ana parolunuzu doğrulayın.</value>
</data> </data>
<data name="VaultLockedPIN" xml:space="preserve"> <data name="VaultLockedPIN" xml:space="preserve">
<value>Anbarınız kilidlənib. Davam etmək üçün PIN kodunuzu təsdiqləyin.</value> <value>Anbarınız kilidlənib. Davam etmək üçün PIN kodunuzu doğrulayın.</value>
</data> </data>
<data name="VaultLockedIdentity" xml:space="preserve"> <data name="VaultLockedIdentity" xml:space="preserve">
<value>Anbarınız kilidlənib. Davam etmək üçün kimliyinizi təsdiqləyin.</value> <value>Anbarınız kilidlənib. Davam etmək üçün kimliyinizi doğrulayın.</value>
</data> </data>
<data name="Dark" xml:space="preserve"> <data name="Dark" xml:space="preserve">
<value>Tünd</value> <value>Tünd</value>
@ -1586,7 +1586,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Tətbiq yenidən başladılanda</value> <value>Tətbiq yenidən başladılanda</value>
</data> </data>
<data name="AutofillServiceNotEnabled" xml:space="preserve"> <data name="AutofillServiceNotEnabled" xml:space="preserve">
<value>Avto-doldurma, veb sayt və tətbiqlərdən Bitwarden anbarınıza güvənli şəkildə müraciət etməyinizi asanlaşdırır. Deyəsən, Bitwarden üçün avto-doldurma xidmətini fəallaşdırmamısınız. "Tənzimləmələr" ekranında Bitwarden üçün avto-doldurma xidmətini fəallaşdırın.</value> <value>Avto-doldurma, veb sayt və tətbiqlərdən Bitwarden anbarınıza güvənli şəkildə müraciət etməyinizi asanlaşdırır. Deyəsən, Bitwarden üçün avto-doldurma xidmətini qurmamısınız. "Ayarlar" ekranında Bitwarden üçün avto-doldurma xidmətini qurun.</value>
</data> </data>
<data name="ThemeAppliedOnRestart" xml:space="preserve"> <data name="ThemeAppliedOnRestart" xml:space="preserve">
<value>Tema dəyişiklikləriniz tətbiq yenidən başladılanda tətbiq ediləcək.</value> <value>Tema dəyişiklikləriniz tətbiq yenidən başladılanda tətbiq ediləcək.</value>
@ -1611,7 +1611,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Seansın müddəti bitdi.</value> <value>Seansın müddəti bitdi.</value>
</data> </data>
<data name="BiometricsDirection" xml:space="preserve"> <data name="BiometricsDirection" xml:space="preserve">
<value>Biometrik təsdiqləmə</value> <value>Biometrik doğrulama</value>
</data> </data>
<data name="Biometrics" xml:space="preserve"> <data name="Biometrics" xml:space="preserve">
<value>Biometrik</value> <value>Biometrik</value>
@ -1620,19 +1620,19 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Kilidi biometriklə aç</value> <value>Kilidi biometriklə aç</value>
</data> </data>
<data name="AccessibilityOverlayPermissionAlert" xml:space="preserve"> <data name="AccessibilityOverlayPermissionAlert" xml:space="preserve">
<value>Bitwarden diqqətinizi tələb edir - Bitwarden Tənzimləmələrində "Avto-doldurma əlçatımlılıq xidməti"nə baxın</value> <value>Bitwarden diqqətinizi tələb edir - Bitwarden ayarlarında "Avto-doldurma əlçatımlılıq xidməti"nə baxın</value>
</data> </data>
<data name="BitwardenAutofillServiceOverlayPermission" xml:space="preserve"> <data name="BitwardenAutofillServiceOverlayPermission" xml:space="preserve">
<value>3. Android tətbiq tənzimləmələrində Bitwarden-i tapın və "Digər tətbiqlərin üzərində göstər" seçini açın ("Qabaqcıl" seçimin altında ola bilər).</value> <value>3. Android tətbiq ayarlarında Bitwarden-i tapın və "Digər tətbiqlərin üzərində göstər" seçiminə ("Qabaqcıl" seçimin altında ola bilər) gedin və örtük dəstəyinə icazə vermək üçün açara toxunun.</value>
</data> </data>
<data name="OverlayPermission" xml:space="preserve"> <data name="OverlayPermission" xml:space="preserve">
<value>İcazə</value> <value>İcazə</value>
</data> </data>
<data name="BitwardenAutofillServiceOpenOverlayPermissionSettings" xml:space="preserve"> <data name="BitwardenAutofillServiceOpenOverlayPermissionSettings" xml:space="preserve">
<value>Üzərində göstərmə icazə tənzimləmələriniın</value> <value>Üzərində göstərmə icazə ayarlarınıın</value>
</data> </data>
<data name="BitwardenAutofillServiceStep3" xml:space="preserve"> <data name="BitwardenAutofillServiceStep3" xml:space="preserve">
<value>3. Android tətbiq tənzimləmələrində Bitwarden-i tapın və "Digər tətbiqlərin üzərində göstər" seçini açın ("Qabaqcıl" seçimin altında ola bilər).</value> <value>3. Android tətbiq ayarlarında Bitwarden-i tapın və "Digər tətbiqlərin üzərində göstər" seçin ("Qabaqcıl" seçimin altında ola bilər) və örtüyə icazə vermək üçün açarıın.</value>
</data> </data>
<data name="Denied" xml:space="preserve"> <data name="Denied" xml:space="preserve">
<value>Rədd edildi</value> <value>Rədd edildi</value>
@ -1644,38 +1644,38 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Fayl formatı</value> <value>Fayl formatı</value>
</data> </data>
<data name="ExportVaultMasterPasswordDescription" xml:space="preserve"> <data name="ExportVaultMasterPasswordDescription" xml:space="preserve">
<value>Anbar verilənlərinizi ixrac etmək üçün ana parolunuzu daxil edin.</value> <value>Anbar datanızı xaricə köçürmək üçün ana parolunuzu daxil edin.</value>
</data> </data>
<data name="SendVerificationCodeToEmail" xml:space="preserve"> <data name="SendVerificationCodeToEmail" xml:space="preserve">
<value>E-poçtunuza bir təsdiqləmə kodu göndərin</value> <value>Doğrulama kodunu e-poçtunuza göndərin</value>
</data> </data>
<data name="CodeSent" xml:space="preserve"> <data name="CodeSent" xml:space="preserve">
<value>Kod göndərildi!</value> <value>Kod göndərildi!</value>
</data> </data>
<data name="ConfirmYourIdentity" xml:space="preserve"> <data name="ConfirmYourIdentity" xml:space="preserve">
<value>Davam etmək üçün kimliyinizi təsdiqləyin.</value> <value>Davam etmək üçün kimliyinizi doğrulayın.</value>
</data> </data>
<data name="ExportVaultWarning" xml:space="preserve"> <data name="ExportVaultWarning" xml:space="preserve">
<value>Bu ixrac faylındakı anbar verilənləriniz şifrələnməmiş formatdadır. İxrac edilən faylı, güvənli olmayan kanallar üzərində saxlamamalı və ya göndərməməlisiniz (e-poçt kimi). Bu faylı işiniz bitdikdən sonra dərhal silin.</value> <value>Xaricə köçürdüyünüz bu fayldakı datanız şifrələnməmiş formatdadır. Bu faylı güvənli olmayan kanallar (e-poçt kimi) üzərində saxlamamalı və ya göndərməməlisiniz. İşiniz bitdikdən sonra faylı dərhal silin.</value>
</data> </data>
<data name="EncExportKeyWarning" xml:space="preserve"> <data name="EncExportKeyWarning" xml:space="preserve">
<value>Bu ixrac faylı, hesabınızın şifrələmə açarını istifadə edərək verilənlərinizi şifrələyir. Hesabınızın şifrələmə açarını döndərsəniz, bu ixrac faylının şifrəsini aça bilməyəcəyiniz üçün yenidən ixrac etməli olacaqsınız.</value> <value>Xaricə köçürdüyünüz bu fayldakı data, hesabınızın şifrələmə açarı istifadə edilərək şifrələnir. Hesabınızın şifrələmə açarını dəyişdirsəniz, bu faylın şifrəsini aça bilməyəcəksiniz və onu yenidən xaricə köçürməli olacaqsınız.</value>
</data> </data>
<data name="EncExportAccountWarning" xml:space="preserve"> <data name="EncExportAccountWarning" xml:space="preserve">
<value>Hesab şifrələmə açarları, hər Bitwarden istifadəçi hesabı üçün unikaldır, buna görə də şifrələnmiş bir ixracı, fərqli bir hesaba idxal edə bilməzsiniz.</value> <value>Hesab şifrələmə açarları, hər Bitwarden istifadəçi hesabı üçün unikaldır, buna görə də şifrələnmiş bir xaricə köçürməni, fərqli bir hesaba köçürə bilməzsiniz.</value>
</data> </data>
<data name="ExportVaultConfirmationTitle" xml:space="preserve"> <data name="ExportVaultConfirmationTitle" xml:space="preserve">
<value>Anbarın ixracını təsdiqləyin</value> <value>Anbarın xaricə köçürülməsini təsdiqlə</value>
<comment>Title for the alert to confirm vault exports.</comment> <comment>Title for the alert to confirm vault exports.</comment>
</data> </data>
<data name="Warning" xml:space="preserve"> <data name="Warning" xml:space="preserve">
<value>Xəbərdarlıq</value> <value>Xəbərdarlıq</value>
</data> </data>
<data name="ExportVaultFailure" xml:space="preserve"> <data name="ExportVaultFailure" xml:space="preserve">
<value>Anbarınızın ixracında problem yarandı. Əgər problem davam edərsə, veb anbarından ixrac etməli olacaqsınız.</value> <value>Anbarınızın xaricə köçürülməsi zamanı problem yarandı. Əgər problem davam edərsə, veb anbarından xaricə köçürməli olacaqsınız.</value>
</data> </data>
<data name="ExportVaultSuccess" xml:space="preserve"> <data name="ExportVaultSuccess" xml:space="preserve">
<value>Anbar uğurla ixrac edildi</value> <value>Anbar uğurla xaricə köçürüldü</value>
</data> </data>
<data name="Clone" xml:space="preserve"> <data name="Clone" xml:space="preserve">
<value>Klonla</value> <value>Klonla</value>
@ -1695,7 +1695,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Qoşma uğurla saxlanıldı</value> <value>Qoşma uğurla saxlanıldı</value>
</data> </data>
<data name="AutofillTileAccessibilityRequired" xml:space="preserve"> <data name="AutofillTileAccessibilityRequired" xml:space="preserve">
<value>Avto-doldurma qutusunu istifadə etmək üçün zəhmət olmasa "Bitwarden" tənzimləmələrində "Avto-doldurma əlçatımlılıq xidməti"ni fəallaşdırın.</value> <value>Avto-doldurma qutusunu istifadə etmək üçün lütfən "Bitwarden" ayarlarında "Avto-doldurma əlçatımlılıq xidməti"ni fəallaşdırın.</value>
</data> </data>
<data name="AutofillTileUriNotFound" xml:space="preserve"> <data name="AutofillTileUriNotFound" xml:space="preserve">
<value>Heç bir parol sahəsi aşkarlanmadı</value> <value>Heç bir parol sahəsi aşkarlanmadı</value>
@ -1741,10 +1741,10 @@ Skan prosesi avtomatik baş tutacaq.</value>
<comment>Confirmation alert message when soft-deleting a cipher.</comment> <comment>Confirmation alert message when soft-deleting a cipher.</comment>
</data> </data>
<data name="AccountBiometricInvalidated" xml:space="preserve"> <data name="AccountBiometricInvalidated" xml:space="preserve">
<value>Ana parolun təsdiqlənməsi gözlənildiyi üçün bu hesab üzrə biometrik kilid açma sıradan çıxarıldı.</value> <value>Ana parolun doğrulanması gözlənildiyi üçün bu hesab üzrə biometrik kilid açma sıradan çıxarıldı.</value>
</data> </data>
<data name="AccountBiometricInvalidatedExtension" xml:space="preserve"> <data name="AccountBiometricInvalidatedExtension" xml:space="preserve">
<value>Ana parolun təsdiqlənməsi gözlənildiyi üçün bu hesab üzrə avto-doldurma biometrik kilid açma sıradan çıxarıldı.</value> <value>Ana parolun doğrulanması gözlənildiyi üçün bu hesab üzrə avto-doldurma biometrik kilid açma sıradan çıxarıldı.</value>
</data> </data>
<data name="EnableSyncOnRefresh" xml:space="preserve"> <data name="EnableSyncOnRefresh" xml:space="preserve">
<value>Təzələmə əsnasında eyniləşdirməni fəallaşdır</value> <value>Təzələmə əsnasında eyniləşdirməni fəallaşdır</value>
@ -1756,7 +1756,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Müəssisə üçün tək daxil olma</value> <value>Müəssisə üçün tək daxil olma</value>
</data> </data>
<data name="LogInSsoSummary" xml:space="preserve"> <data name="LogInSsoSummary" xml:space="preserve">
<value>Təşkilatınızın tək daxil olma portalını istifadə edərək daha tez giriş edə bilərsiniz. Başlatmaq üçün zəhmət olmasa təşkilatınızın identifikatorunu daxil edin.</value> <value>Təşkilatınızın tək daxil olma portalını istifadə edərək daha tez giriş edə bilərsiniz. Başlatmaq üçün lütfən təşkilatınızın identifikatorunu daxil edin.</value>
</data> </data>
<data name="OrgIdentifier" xml:space="preserve"> <data name="OrgIdentifier" xml:space="preserve">
<value>Təşkilat identifikatoru</value> <value>Təşkilat identifikatoru</value>
@ -1765,10 +1765,10 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Hazırda SSO ilə giriş edilə bilmir</value> <value>Hazırda SSO ilə giriş edilə bilmir</value>
</data> </data>
<data name="SetMasterPassword" xml:space="preserve"> <data name="SetMasterPassword" xml:space="preserve">
<value>Ana parolu tənzimlə</value> <value>Ana parolu ayarla</value>
</data> </data>
<data name="SetMasterPasswordSummary" xml:space="preserve"> <data name="SetMasterPasswordSummary" xml:space="preserve">
<value>SSO ilə giriş prosesini tamamlamaq üçün zəhmət olmasa anbarınıza müraciət etmək və onu qorumaq üçün bir ana şifrə tənzimləyin.</value> <value>SSO ilə giriş prosesini tamamlamaq üçün lütfən anbarınıza müraciət etmək və onu qorumaq üçün bir ana parol ayarlayın.</value>
</data> </data>
<data name="MasterPasswordPolicyInEffect" xml:space="preserve"> <data name="MasterPasswordPolicyInEffect" xml:space="preserve">
<value>Bir və ya daha çox təşkilat siyasəti, aşağıdakı tələbləri qarşılamaq üçün ana parolunuzu tələb edir:</value> <value>Bir və ya daha çox təşkilat siyasəti, aşağıdakı tələbləri qarşılamaq üçün ana parolunuzu tələb edir:</value>
@ -1795,7 +1795,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Yararsız parol</value> <value>Yararsız parol</value>
</data> </data>
<data name="MasterPasswordPolicyValidationMessage" xml:space="preserve"> <data name="MasterPasswordPolicyValidationMessage" xml:space="preserve">
<value>Parol, şirkət tələblərini qarşılamır. Zəhmət olmasa siyasət məlumatlarını yoxlayıb yenidən sınayın.</value> <value>Parol, şirkət tələblərini qarşılamır. Lütfən siyasət məlumatlarını yoxlayıb yenidən sınayın.</value>
</data> </data>
<data name="Loading" xml:space="preserve"> <data name="Loading" xml:space="preserve">
<value>Yüklənir</value> <value>Yüklənir</value>
@ -1813,7 +1813,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Gizlilik Siyasəti</value> <value>Gizlilik Siyasəti</value>
</data> </data>
<data name="AccessibilityDrawOverPermissionAlert" xml:space="preserve"> <data name="AccessibilityDrawOverPermissionAlert" xml:space="preserve">
<value>Bitwarden diqqətinizi tələb edir - Bitwarden Tənzimləmələrində "Avto-doldurma xidməti"ndə "Üzərindən göstər"i fəallaşdırın</value> <value>Bitwarden diqqətinizi tələb edir - Bitwarden Ayarlarında "Avto-doldurma xidməti"ndə "Üzərindən göstər"i işə salın</value>
</data> </data>
<data name="AutofillServices" xml:space="preserve"> <data name="AutofillServices" xml:space="preserve">
<value>Avto-doldurma xidmətləri</value> <value>Avto-doldurma xidmətləri</value>
@ -1924,7 +1924,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Bitmə vaxtı</value> <value>Bitmə vaxtı</value>
</data> </data>
<data name="ExpirationDateInfo" xml:space="preserve"> <data name="ExpirationDateInfo" xml:space="preserve">
<value>Əgər tənzimlənsə, göstərilən tarix və vaxtda "Send"ə müraciət başa çatacaq.</value> <value>Əgər ayarlanıbsa, göstərilən tarix və vaxtda "Send"ə müraciət başa çatacaq.</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment> <comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data> </data>
<data name="Expired" xml:space="preserve"> <data name="Expired" xml:space="preserve">
@ -1934,7 +1934,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Maksimal müraciət sayı</value> <value>Maksimal müraciət sayı</value>
</data> </data>
<data name="MaximumAccessCountInfo" xml:space="preserve"> <data name="MaximumAccessCountInfo" xml:space="preserve">
<value>Əgər tənzimlənsə, istifadəçilər maksimal müraciət sayına çatdıqdan sonra bu "Send"ə müraciət edə bilməyəcək.</value> <value>Əgər ayarlanıbsa, istifadəçilər maksimal müraciət sayına çatdıqdan sonra bu "Send"ə müraciət edə bilməyəcək.</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment> <comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data> </data>
<data name="MaximumAccessCountReached" xml:space="preserve"> <data name="MaximumAccessCountReached" xml:space="preserve">
@ -2058,7 +2058,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment> <comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data> </data>
<data name="SendFileEmailVerificationRequired" xml:space="preserve"> <data name="SendFileEmailVerificationRequired" xml:space="preserve">
<value>"Send" ilə faylları istifadə etmək üçün e-poçtunuzu təsdiqləməlisiniz. E-poçtunuzu veb anbarında təsdiqləyə bilərsiniz.</value> <value>Faylları "Send" ilə istifadə etmək üçün e-poçtunuzu doğrulamalısınız. E-poçtunuzu veb anbarında doğrulaya bilərsiniz.</value>
<comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment> <comment>'Send' is a noun and the name of a feature called 'Bitwarden Send'. It should not be translated.</comment>
</data> </data>
<data name="PasswordPrompt" xml:space="preserve"> <data name="PasswordPrompt" xml:space="preserve">
@ -2068,13 +2068,13 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Ana parol təsdiqi</value> <value>Ana parol təsdiqi</value>
</data> </data>
<data name="PasswordConfirmationDesc" xml:space="preserve"> <data name="PasswordConfirmationDesc" xml:space="preserve">
<value>Bu əməliyyat qorumalıdır, davam etmək üçün zəhmət olmasa kimliyinizi təsdiqləmək üçün ana parolunuzu təkrar daxil edin.</value> <value>Bu əməliyyat qorumalıdır, davam etmək üçün lütfən kimliyinizi doğrulamaq üçün ana parolunuzu təkrar daxil edin.</value>
</data> </data>
<data name="CaptchaRequired" xml:space="preserve"> <data name="CaptchaRequired" xml:space="preserve">
<value>Captcha tələb olunur</value> <value>Captcha tələb olunur</value>
</data> </data>
<data name="CaptchaFailed" xml:space="preserve"> <data name="CaptchaFailed" xml:space="preserve">
<value>Captcha uğursuz oldu. Zəhmət olmasa yenidən sınayın.</value> <value>Captcha uğursuz oldu. Lütfən yenidən sınayın.</value>
</data> </data>
<data name="UpdatedMasterPassword" xml:space="preserve"> <data name="UpdatedMasterPassword" xml:space="preserve">
<value>Güncəllənmiş ana parol</value> <value>Güncəllənmiş ana parol</value>
@ -2110,19 +2110,19 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>FIDO2 WebAuthn</value> <value>FIDO2 WebAuthn</value>
</data> </data>
<data name="Fido2Instruction" xml:space="preserve"> <data name="Fido2Instruction" xml:space="preserve">
<value>Davam etmək üçün FIDO2 WebAuthn fəal güvənlik açarınızı hazır saxlayın, daha sonra növbəti ekranda "WebAuthn-u təsdiqlə"yə kliklədikdən sonra təlimatları izləyin.</value> <value>Davam etmək üçün FIDO2 WebAuthn üçün fəal olan güvənlik açarınızı hazır saxlayın, daha sonra növbəti ekranda "WebAuthn-u doğrula"ya kliklədikdən sonra təlimatları izləyin.</value>
</data> </data>
<data name="Fido2Desc" xml:space="preserve"> <data name="Fido2Desc" xml:space="preserve">
<value>Kimlik təsdiqləmə, FIDO2 WebAuthn istifadə edir, xarici güvənlik açarı istifadə edərək kimliyi təsdiqləyə bilərsiniz.</value> <value>Kimlik doğrulama, FIDO2 WebAuthn istifadə edir, xarici güvənlik açarı istifadə edərək kimliyi doğrulaya bilərsiniz.</value>
</data> </data>
<data name="Fido2AuthenticateWebAuthn" xml:space="preserve"> <data name="Fido2AuthenticateWebAuthn" xml:space="preserve">
<value>WebAuthn-u təsdiqlə</value> <value>WebAuthn kimlik doğrulama</value>
</data> </data>
<data name="Fido2ReturnToApp" xml:space="preserve"> <data name="Fido2ReturnToApp" xml:space="preserve">
<value>Tətbiqə qayıt</value> <value>Tətbiqə qayıt</value>
</data> </data>
<data name="Fido2CheckBrowser" xml:space="preserve"> <data name="Fido2CheckBrowser" xml:space="preserve">
<value>Zəhmət olmasa ilkin brauzerinizin WebAuthn-u təsdiqlədiyinə əmin olub yenidən sınayın.</value> <value>Lütfən ilkin brauzerinizin WebAuthn-u dəstəklədiyinə əmin olub yenidən sınayın.</value>
</data> </data>
<data name="ResetPasswordAutoEnrollInviteWarning" xml:space="preserve"> <data name="ResetPasswordAutoEnrollInviteWarning" xml:space="preserve">
<value>Bu təşkilat, sizi "parol sıfırlama"da avtomatik olaraq qeydiyyata alan müəssisə siyasətinə sahibdir. Qeydiyyat, təşkilat administratorlarına ana parolunuzu dəyişdirmə icazəsi verəcək.</value> <value>Bu təşkilat, sizi "parol sıfırlama"da avtomatik olaraq qeydiyyata alan müəssisə siyasətinə sahibdir. Qeydiyyat, təşkilat administratorlarına ana parolunuzu dəyişdirmə icazəsi verəcək.</value>
@ -2131,16 +2131,16 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Təşkilatınızın siyasətləri, anbarınızın vaxt bitişinə təsir edir. Anbar vaxt bitişi üçün icazə verilən maksimum vaxt {0} saat {1} dəqiqədir</value> <value>Təşkilatınızın siyasətləri, anbarınızın vaxt bitişinə təsir edir. Anbar vaxt bitişi üçün icazə verilən maksimum vaxt {0} saat {1} dəqiqədir</value>
</data> </data>
<data name="VaultTimeoutPolicyWithActionInEffect" xml:space="preserve"> <data name="VaultTimeoutPolicyWithActionInEffect" xml:space="preserve">
<value>Təşkilatınızın siyasətləri, anbarınızın vaxt bitişinə təsir edir. Anbar vaxt bitişi üçün icazə verilən maksimum vaxt {0} saat {1} dəqiqədir. Anbar vaxt bitişi əməliyyatı {2} olaraq tənzimləndi.</value> <value>Təşkilatınızın siyasətləri, anbarınızın vaxt bitişinə təsir edir. Anbar vaxt bitişi üçün icazə verilən maksimum vaxt {0} saat {1} dəqiqədir. Anbar vaxt bitişi əməliyyatı {2} olaraq ayarlandı.</value>
</data> </data>
<data name="VaultTimeoutActionPolicyInEffect" xml:space="preserve"> <data name="VaultTimeoutActionPolicyInEffect" xml:space="preserve">
<value>Təşkilatınızın siyasətləri, anbar vaxt bitişi əməliyyatınızı {0} olaraq tənzimlədi.</value> <value>Təşkilatınızın siyasətləri, anbar vaxt bitişi əməliyyatınızı {0} olaraq ayarladı.</value>
</data> </data>
<data name="VaultTimeoutToLarge" xml:space="preserve"> <data name="VaultTimeoutToLarge" xml:space="preserve">
<value>Anbar vaxt bitişi, təşkilatınız tərəfindən tənzimlənən məhdudiyyətləri aşır.</value> <value>Anbar vaxt bitişi, təşkilatınız tərəfindən ayarlanan məhdudiyyətləri aşır.</value>
</data> </data>
<data name="DisablePersonalVaultExportPolicyInEffect" xml:space="preserve"> <data name="DisablePersonalVaultExportPolicyInEffect" xml:space="preserve">
<value>Bir və ya daha çox təşkilat siyasəti, fərdi anbarınızı ixrac etməyinizin qarşısını alır.</value> <value>Bir və ya daha çox təşkilat siyasəti, fərdi anbarınızı xaricə köçürməyinizi əngəlləyir.</value>
</data> </data>
<data name="AddAccount" xml:space="preserve"> <data name="AddAccount" xml:space="preserve">
<value>Hesab əlavə et</value> <value>Hesab əlavə et</value>
@ -2173,7 +2173,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Hesabınız birdəfəlik silinəcək</value> <value>Hesabınız birdəfəlik silinəcək</value>
</data> </data>
<data name="DeleteAccountExplanation" xml:space="preserve"> <data name="DeleteAccountExplanation" xml:space="preserve">
<value>Hesabınız və əlaqəli bütün verilənlər silinəcək və bərpa oluna bilməyəcək. Davam etmək istədiyinizə əminsiniz?</value> <value>Hesabınız və əlaqəli bütün datalar silinəcək və bərpa oluna bilməyəcək. Davam etmək istədiyinizə əminsiniz?</value>
</data> </data>
<data name="DeletingYourAccount" xml:space="preserve"> <data name="DeletingYourAccount" xml:space="preserve">
<value>Hesabınız silinir</value> <value>Hesabınız silinir</value>
@ -2182,7 +2182,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Hesabınız birdəfəlik silindi</value> <value>Hesabınız birdəfəlik silindi</value>
</data> </data>
<data name="InvalidVerificationCode" xml:space="preserve"> <data name="InvalidVerificationCode" xml:space="preserve">
<value>Yararsız təsdiqləmə kodu.</value> <value>Yararsız doğrulama kodu</value>
</data> </data>
<data name="RequestOTP" xml:space="preserve"> <data name="RequestOTP" xml:space="preserve">
<value>Tək istifadəlik parol tələb et</value> <value>Tək istifadəlik parol tələb et</value>
@ -2200,19 +2200,19 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Kod göndərilir</value> <value>Kod göndərilir</value>
</data> </data>
<data name="Verifying" xml:space="preserve"> <data name="Verifying" xml:space="preserve">
<value>Təsdiqlənir</value> <value>Doğrulanır</value>
</data> </data>
<data name="ResendCode" xml:space="preserve"> <data name="ResendCode" xml:space="preserve">
<value>Kodu təkrar göndər</value> <value>Kodu təkrar göndər</value>
</data> </data>
<data name="AVerificationCodeWasSentToYourEmail" xml:space="preserve"> <data name="AVerificationCodeWasSentToYourEmail" xml:space="preserve">
<value>Təsdiqləmə kodu e-poçtunuza göndərildi</value> <value>Doğrulama kodu e-poçtunuza göndərildi</value>
</data> </data>
<data name="AnErrorOccurredWhileSendingAVerificationCodeToYourEmailPleaseTryAgain" xml:space="preserve"> <data name="AnErrorOccurredWhileSendingAVerificationCodeToYourEmailPleaseTryAgain" xml:space="preserve">
<value>E-poçtunuza təsdiqləmə kodu göndərilərkən bir xəta baş verdi. Zəhmət olmasa yenidən sınayın</value> <value>E-poçtunuza doğrulama kodu göndərilərkən bir xəta baş verdi. Lütfən yenidən sınayın</value>
</data> </data>
<data name="EnterTheVerificationCodeThatWasSentToYourEmail" xml:space="preserve"> <data name="EnterTheVerificationCodeThatWasSentToYourEmail" xml:space="preserve">
<value>E-poçtunuza göndərilmiş təsdiqləmə kodunu daxil edin</value> <value>E-poçtunuza göndərilmiş doğrulama kodunu daxil edin</value>
</data> </data>
<data name="SubmitCrashLogs" xml:space="preserve"> <data name="SubmitCrashLogs" xml:space="preserve">
<value>Çökmə jurnallarını göndər</value> <value>Çökmə jurnallarını göndər</value>
@ -2266,13 +2266,13 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>TOTP</value> <value>TOTP</value>
</data> </data>
<data name="VerificationCodes" xml:space="preserve"> <data name="VerificationCodes" xml:space="preserve">
<value>Təsdiqləmə kodları</value> <value>Doğrulama kodları</value>
</data> </data>
<data name="PremiumSubscriptionRequired" xml:space="preserve"> <data name="PremiumSubscriptionRequired" xml:space="preserve">
<value>Premium abunəlik tələb olunur</value> <value>Premium abunəlik tələb olunur</value>
</data> </data>
<data name="CannotAddAuthenticatorKey" xml:space="preserve"> <data name="CannotAddAuthenticatorKey" xml:space="preserve">
<value>Kimlik təsdiqləyici açarı oxuna bilmir? </value> <value>Kimlik doğrulayıcı açarı oxuna bilmir? </value>
</data> </data>
<data name="ScanQRCode" xml:space="preserve"> <data name="ScanQRCode" xml:space="preserve">
<value>QR kodu skan edin</value> <value>QR kodu skan edin</value>
@ -2281,7 +2281,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>QR kodunu skan edə bilmədiniz? </value> <value>QR kodunu skan edə bilmədiniz? </value>
</data> </data>
<data name="AuthenticatorKeyScanner" xml:space="preserve"> <data name="AuthenticatorKeyScanner" xml:space="preserve">
<value>Kimlik təsdiqləyici açarı</value> <value>Kimlik doğrulayıcı açarı</value>
</data> </data>
<data name="EnterKeyManually" xml:space="preserve"> <data name="EnterKeyManually" xml:space="preserve">
<value>Kodu əllə daxil et</value> <value>Kodu əllə daxil et</value>
@ -2296,13 +2296,13 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Açar uğurla daxil edildikdən sonra, açarı güvənli şəkildə saxlamaq üçün "TOTP əlavə et"i seçin</value> <value>Açar uğurla daxil edildikdən sonra, açarı güvənli şəkildə saxlamaq üçün "TOTP əlavə et"i seçin</value>
</data> </data>
<data name="NeverLockWarning" xml:space="preserve"> <data name="NeverLockWarning" xml:space="preserve">
<value>Kilid seçimlərini "Heç vaxt" olaraq tənzimləmək, anbarınızı cihazınıza müraciəti olan hər kəsə əlçatan edir. Bu seçimi istifadə etsəniz, cihazınızı düzgün qoruduğunuza əmin olmalısınız.</value> <value>Kilid seçimlərini "Heç vaxt" olaraq ayarlamaq, anbarınızı cihazınıza müraciəti olan hər kəsə əlçatan edir. Bu seçimi istifadə etsəniz, cihazınızı düzgün qoruduğunuza əmin olmalısınız.</value>
</data> </data>
<data name="EnvironmentPageUrlsError" xml:space="preserve"> <data name="EnvironmentPageUrlsError" xml:space="preserve">
<value>Daxil edilən bir və ya daha çox URL yararsızdır. Zəhmət olmasa nəzər salın və yenidən saxlamağa çalışın.</value> <value>Daxil edilən bir və ya daha çox URL yararsızdır. Lütfən nəzər salın və yenidən saxlamağa çalışın.</value>
</data> </data>
<data name="GenericErrorMessage" xml:space="preserve"> <data name="GenericErrorMessage" xml:space="preserve">
<value>Tələbinizi emal edə bilmədik. Zəhmət olmasa yenidən sınayın və ya bizimlə əlaqə saxlayın.</value> <value>Tələbinizi emal edə bilmədik. Lütfən yenidən sınayın və ya bizimlə əlaqə saxlayın.</value>
</data> </data>
<data name="AllowScreenCapture" xml:space="preserve"> <data name="AllowScreenCapture" xml:space="preserve">
<value>Ekranı çəkməyə icazə ver</value> <value>Ekranı çəkməyə icazə ver</value>
@ -2353,7 +2353,7 @@ Skan prosesi avtomatik baş tutacaq.</value>
<value>Giriş tələblərini təsdiqlə</value> <value>Giriş tələblərini təsdiqlə</value>
</data> </data>
<data name="UseThisDeviceToApproveLoginRequestsMadeFromOtherDevices" xml:space="preserve"> <data name="UseThisDeviceToApproveLoginRequestsMadeFromOtherDevices" xml:space="preserve">
<value>Digər cihazlardan edilən giriş tələblərini təsdiqləmək üçün bu cihazı istifadə edin.</value> <value>Digər cihazlardan edilən giriş tələblərini təsdiqləmək üçün bu cihazı istifadə edin</value>
</data> </data>
<data name="AllowNotifications" xml:space="preserve"> <data name="AllowNotifications" xml:space="preserve">
<value>Bildirişlərə icazə ver</value> <value>Bildirişlərə icazə ver</value>
@ -2505,7 +2505,7 @@ Bu hesaba keçmək istəyirsiniz?</value>
<value>Cihazınıza bir bildiriş göndərildi.</value> <value>Cihazınıza bir bildiriş göndərildi.</value>
</data> </data>
<data name="PleaseMakeSureYourVaultIsUnlockedAndTheFingerprintPhraseMatchesOnTheOtherDevice" xml:space="preserve"> <data name="PleaseMakeSureYourVaultIsUnlockedAndTheFingerprintPhraseMatchesOnTheOtherDevice" xml:space="preserve">
<value>Zəhmət olmasa anbarınızın kilidinin açıq olduğuna və Barmaq izi ifadəsinin digər cihazda uyğun gəldiyinə əmin olun.</value> <value>Lütfən anbarınızın kilidinin açıq olduğuna və Barmaq izi ifadəsinin digər cihazda uyğun gəldiyinə əmin olun.</value>
</data> </data>
<data name="ResendNotification" xml:space="preserve"> <data name="ResendNotification" xml:space="preserve">
<value>Bildirişi təkrar göndər</value> <value>Bildirişi təkrar göndər</value>
@ -2541,7 +2541,7 @@ Bu hesaba keçmək istəyirsiniz?</value>
<value>Dil</value> <value>Dil</value>
</data> </data>
<data name="LanguageChangeXDescription" xml:space="preserve"> <data name="LanguageChangeXDescription" xml:space="preserve">
<value>Dil, {0} olaraq dəyişdirildi. Dəyişiklikləri görmək üçün zəhmət olmasa tətbiqi yenidən başladın</value> <value>Dil, {0} olaraq dəyişdirildi. Dəyişiklikləri görmək üçün lütfən tətbiqi yenidən başladın</value>
</data> </data>
<data name="LanguageChangeRequiresAppRestart" xml:space="preserve"> <data name="LanguageChangeRequiresAppRestart" xml:space="preserve">
<value>Dil dəyişikliyi, tətbiqin yenidən başladılmasını tələb edir</value> <value>Dil dəyişikliyi, tətbiqin yenidən başladılmasını tələb edir</value>
@ -2667,7 +2667,7 @@ Bu hesaba keçmək istəyirsiniz?</value>
<value>Ana parolu təkrar soruş köməyi</value> <value>Ana parolu təkrar soruş köməyi</value>
</data> </data>
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve"> <data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
<value>Yetərsiz yaddaşa görə kilid açma uğursuz ola bilər. Həll etmək üçün KDF yaddaş tənzimləmələrinizi azaldın və ya biometrik kilid açmanı quraşdırın.</value> <value>Yetərsiz yaddaşa görə kilid açma uğursuz ola bilər. Həll etmək üçün KDF yaddaş ayarlarınızı azaldın və ya biometrik kilid açmanı quraşdırın.</value>
</data> </data>
<data name="InvalidAPIKey" xml:space="preserve"> <data name="InvalidAPIKey" xml:space="preserve">
<value>Yararsız API açarı</value> <value>Yararsız API açarı</value>
@ -2740,7 +2740,7 @@ Bu hesaba keçmək istəyirsiniz?</value>
<value>Giriş təsdiqləndi</value> <value>Giriş təsdiqləndi</value>
</data> </data>
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve"> <data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
<value>Cihazla giriş etmə, Bitwarden tətbiqinin tənzimləmələrində quraşdırılmalıdır. Başqa bir seçimə ehtiyacınız var?</value> <value>Cihazla giriş etmə, Bitwarden tətbiqinin ayarlarında qurulmalıdır. Başqa bir seçimə ehtiyacınız var?</value>
</data> </data>
<data name="LogInWithDevice" xml:space="preserve"> <data name="LogInWithDevice" xml:space="preserve">
<value>Cihazla giriş et</value> <value>Cihazla giriş et</value>

View File

@ -946,7 +946,7 @@ El escaneo se realizará automáticamente.</value>
<value>No puedes usar esta característica hasta que actualices tu clave de cifrado.</value> <value>No puedes usar esta característica hasta que actualices tu clave de cifrado.</value>
</data> </data>
<data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve"> <data name="EncryptionKeyMigrationRequiredDescriptionLong" xml:space="preserve">
<value>Encryption key migration required. Please login through the web vault to update your encryption key.</value> <value>Se requiere migración de la clave de cifrado. Por favor, inicie sesión a través de la bóveda web para actualizar su clave de cifrado.</value>
</data> </data>
<data name="LearnMore" xml:space="preserve"> <data name="LearnMore" xml:space="preserve">
<value>Aprender más</value> <value>Aprender más</value>
@ -2630,16 +2630,16 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
<value>Aprobar con mi otro dispositivo</value> <value>Aprobar con mi otro dispositivo</value>
</data> </data>
<data name="RequestAdminApproval" xml:space="preserve"> <data name="RequestAdminApproval" xml:space="preserve">
<value>Request admin approval</value> <value>Solicitar aprobación del administrador</value>
</data> </data>
<data name="ApproveWithMasterPassword" xml:space="preserve"> <data name="ApproveWithMasterPassword" xml:space="preserve">
<value>Approve with master password</value> <value>Aprobar con contraseña maestra</value>
</data> </data>
<data name="TurnOffUsingPublicDevice" xml:space="preserve"> <data name="TurnOffUsingPublicDevice" xml:space="preserve">
<value>Turn off using a public device</value> <value>Deshabilitar usando un dispositivo público</value>
</data> </data>
<data name="RememberThisDevice" xml:space="preserve"> <data name="RememberThisDevice" xml:space="preserve">
<value>Remember this device</value> <value>Recordar este dispositivo</value>
</data> </data>
<data name="Passkey" xml:space="preserve"> <data name="Passkey" xml:space="preserve">
<value>Passkey</value> <value>Passkey</value>
@ -2648,28 +2648,29 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
<value>Passkeys</value> <value>Passkeys</value>
</data> </data>
<data name="Application" xml:space="preserve"> <data name="Application" xml:space="preserve">
<value>Application</value> <value>Aplicación</value>
</data> </data>
<data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve"> <data name="YouCannotEditPasskeyApplicationBecauseItWouldInvalidateThePasskey" xml:space="preserve">
<value>You cannot edit passkey application because it would invalidate the passkey</value> <value>No puedes editar la aplicación de contraseñas maestras porque podría invalidar la contraseña maestra</value>
</data> </data>
<data name="PasskeyWillNotBeCopied" xml:space="preserve"> <data name="PasskeyWillNotBeCopied" xml:space="preserve">
<value>Passkey will not be copied</value> <value>La contraseña maestra no será copiada</value>
</data> </data>
<data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve"> <data name="ThePasskeyWillNotBeCopiedToTheClonedItemDoYouWantToContinueCloningThisItem" xml:space="preserve">
<value>The passkey will not be copied to the cloned item. Do you want to continue cloning this item?</value> <value>La contraseña maestra no será copiada al elemento clonado.
¿Deseas continuar clonando este elemento?</value>
</data> </data>
<data name="CopyApplication" xml:space="preserve"> <data name="CopyApplication" xml:space="preserve">
<value>Copy application</value> <value>Copiar aplicación</value>
</data> </data>
<data name="AvailableForTwoStepLogin" xml:space="preserve"> <data name="AvailableForTwoStepLogin" xml:space="preserve">
<value>Available for two-step login</value> <value>Disponible para inicio de sesión en dos pasos</value>
</data> </data>
<data name="MasterPasswordRePromptHelp" xml:space="preserve"> <data name="MasterPasswordRePromptHelp" xml:space="preserve">
<value>Ayuda de volver a pedir contraseña maestra</value> <value>Ayuda de volver a pedir contraseña maestra</value>
</data> </data>
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve"> <data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value> <value>El desbloqueo puede fallar por falta de memoria. Disminuye los ajustes de memoria KDF o configura el desbloqueo biométrico para resolverlo.</value>
</data> </data>
<data name="InvalidAPIKey" xml:space="preserve"> <data name="InvalidAPIKey" xml:space="preserve">
<value>Clave API no válida</value> <value>Clave API no válida</value>
@ -2678,195 +2679,195 @@ seleccione Agregar TOTP para almacenar la clave de forma segura</value>
<value>Token de API no válido</value> <value>Token de API no válido</value>
</data> </data>
<data name="AdminApprovalRequested" xml:space="preserve"> <data name="AdminApprovalRequested" xml:space="preserve">
<value>Admin approval requested</value> <value>Aprobación del administrador solicitada</value>
</data> </data>
<data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve"> <data name="YourRequestHasBeenSentToYourAdmin" xml:space="preserve">
<value>Your request has been sent to your admin.</value> <value>Tu solicitud ha sido enviada a tu administrador.</value>
</data> </data>
<data name="YouWillBeNotifiedOnceApproved" xml:space="preserve"> <data name="YouWillBeNotifiedOnceApproved" xml:space="preserve">
<value>You will be notified once approved. </value> <value>Se te notificará una vez aprobada. </value>
</data> </data>
<data name="TroubleLoggingIn" xml:space="preserve"> <data name="TroubleLoggingIn" xml:space="preserve">
<value>Trouble logging in?</value> <value>¿Problema para iniciar sesión?</value>
</data> </data>
<data name="LoggingInAsX" xml:space="preserve"> <data name="LoggingInAsX" xml:space="preserve">
<value>Logging in as {0}</value> <value>Iniciando sesión como {0}</value>
</data> </data>
<data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve"> <data name="VaultTimeoutActionChangedToLogOut" xml:space="preserve">
<value>Vault timeout action changed to log out</value> <value>Acción después del tiempo de espera de la caja fuerte cambiado a cerrar sesión</value>
</data> </data>
<data name="BlockAutoFill" xml:space="preserve"> <data name="BlockAutoFill" xml:space="preserve">
<value>Block auto-fill</value> <value>Bloquear autocompletar</value>
</data> </data>
<data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve"> <data name="AutoFillWillNotBeOfferedForTheseURIs" xml:space="preserve">
<value>Auto-fill will not be offered for these URIs.</value> <value>Autocompletar no se ofrecerá para estas URLs.</value>
</data> </data>
<data name="NewBlockedURI" xml:space="preserve"> <data name="NewBlockedURI" xml:space="preserve">
<value>New blocked URI</value> <value>Nueva URI bloqueada</value>
</data> </data>
<data name="URISaved" xml:space="preserve"> <data name="URISaved" xml:space="preserve">
<value>URI saved</value> <value>URI guardada</value>
</data> </data>
<data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve"> <data name="InvalidFormatUseHttpsHttpOrAndroidApp" xml:space="preserve">
<value>Invalid format. Use https://, http://, or androidapp://</value> <value>Formato no válido. Use https://, http://, o androidapp://</value>
<comment>https://, http://, androidapp:// should not be translated</comment> <comment>https://, http://, androidapp:// should not be translated</comment>
</data> </data>
<data name="EditURI" xml:space="preserve"> <data name="EditURI" xml:space="preserve">
<value>Edit URI</value> <value>Editar URI</value>
</data> </data>
<data name="EnterURI" xml:space="preserve"> <data name="EnterURI" xml:space="preserve">
<value>Enter URI</value> <value>Escribir URI</value>
</data> </data>
<data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve"> <data name="FormatXSeparateMultipleURIsWithAComma" xml:space="preserve">
<value>Format: {0}. Separate multiple URIs with a comma.</value> <value>Formato: {0}. Separar múltiples URIs con una coma.</value>
</data> </data>
<data name="FormatX" xml:space="preserve"> <data name="FormatX" xml:space="preserve">
<value>Format: {0}</value> <value>Formato: {0}</value>
</data> </data>
<data name="InvalidURI" xml:space="preserve"> <data name="InvalidURI" xml:space="preserve">
<value>Invalid URI</value> <value>URI no válida</value>
</data> </data>
<data name="URIRemoved" xml:space="preserve"> <data name="URIRemoved" xml:space="preserve">
<value>URI removed</value> <value>URI eliminada</value>
</data> </data>
<data name="ThereAreNoBlockedURIs" xml:space="preserve"> <data name="ThereAreNoBlockedURIs" xml:space="preserve">
<value>There are no blocked URIs</value> <value>No hay URIs bloqueadas</value>
</data> </data>
<data name="TheURIXIsAlreadyBlocked" xml:space="preserve"> <data name="TheURIXIsAlreadyBlocked" xml:space="preserve">
<value>The URI {0} is already blocked</value> <value>El URI {0} ya está bloqueada</value>
</data> </data>
<data name="CannotEditMultipleURIsAtOnce" xml:space="preserve"> <data name="CannotEditMultipleURIsAtOnce" xml:space="preserve">
<value>Cannot edit multiple URIs at once</value> <value>No se pueden editar múltiples URIs a la vez</value>
</data> </data>
<data name="LoginApproved" xml:space="preserve"> <data name="LoginApproved" xml:space="preserve">
<value>Login approved</value> <value>Inicio de sesión aprobado</value>
</data> </data>
<data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve"> <data name="LogInWithDeviceMustBeSetUpInTheSettingsOfTheBitwardenAppNeedAnotherOption" xml:space="preserve">
<value>Log in with device must be set up in the settings of the Bitwarden app. Need another option?</value> <value>Iniciar sesión con el dispositivo debe configurarse en los ajustes de la aplicación Bitwarden. ¿Necesitas otra opción?</value>
</data> </data>
<data name="LogInWithDevice" xml:space="preserve"> <data name="LogInWithDevice" xml:space="preserve">
<value>Log in with device</value> <value>Iniciar sesión con el dispositivo</value>
</data> </data>
<data name="LoggingInOn" xml:space="preserve"> <data name="LoggingInOn" xml:space="preserve">
<value>Logging in on</value> <value>Iniciando sesión en</value>
</data> </data>
<data name="Vault" xml:space="preserve"> <data name="Vault" xml:space="preserve">
<value>Vault</value> <value>Caja fuerte</value>
</data> </data>
<data name="Appearance" xml:space="preserve"> <data name="Appearance" xml:space="preserve">
<value>Appearance</value> <value>Apariencia</value>
</data> </data>
<data name="AccountSecurity" xml:space="preserve"> <data name="AccountSecurity" xml:space="preserve">
<value>Account security</value> <value>Seguridad de la cuenta</value>
</data> </data>
<data name="BitwardenHelpCenter" xml:space="preserve"> <data name="BitwardenHelpCenter" xml:space="preserve">
<value>Bitwarden Help Center</value> <value>Centro de ayuda de Bitwarden</value>
</data> </data>
<data name="ContactBitwardenSupport" xml:space="preserve"> <data name="ContactBitwardenSupport" xml:space="preserve">
<value>Contact Bitwarden support</value> <value>Contactar al soporte de Bitwarden</value>
</data> </data>
<data name="CopyAppInformation" xml:space="preserve"> <data name="CopyAppInformation" xml:space="preserve">
<value>Copy app information</value> <value>Copiar información de la aplicación</value>
</data> </data>
<data name="SyncNow" xml:space="preserve"> <data name="SyncNow" xml:space="preserve">
<value>Sync now</value> <value>Sincronizar ahora</value>
</data> </data>
<data name="UnlockOptions" xml:space="preserve"> <data name="UnlockOptions" xml:space="preserve">
<value>Unlock options</value> <value>Opciónes de desbloqueo</value>
</data> </data>
<data name="SessionTimeout" xml:space="preserve"> <data name="SessionTimeout" xml:space="preserve">
<value>Session timeout</value> <value>Tiempo de espera de sesión</value>
</data> </data>
<data name="SessionTimeoutAction" xml:space="preserve"> <data name="SessionTimeoutAction" xml:space="preserve">
<value>Session timeout action</value> <value>Acción de tiempo de espera de sesión</value>
</data> </data>
<data name="AccountFingerprintPhrase" xml:space="preserve"> <data name="AccountFingerprintPhrase" xml:space="preserve">
<value>Account fingerprint phrase</value> <value>Frase de huella digital de su cuenta</value>
<comment>A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing.</comment> <comment>A 'fingerprint phrase' is a unique word phrase (similar to a passphrase) that a user can use to authenticate their public key with another user, for the purposes of sharing.</comment>
</data> </data>
<data name="OneHourAndOneMinute" xml:space="preserve"> <data name="OneHourAndOneMinute" xml:space="preserve">
<value>One hour and one minute</value> <value>Una hora y un minuto</value>
</data> </data>
<data name="OneHourAndXMinute" xml:space="preserve"> <data name="OneHourAndXMinute" xml:space="preserve">
<value>One hour and {0} minutes</value> <value>Una hora y {0} minutos</value>
</data> </data>
<data name="XHoursAndOneMinute" xml:space="preserve"> <data name="XHoursAndOneMinute" xml:space="preserve">
<value>{0} hours and one minute</value> <value>{0} horas y un minuto</value>
</data> </data>
<data name="XHoursAndYMinutes" xml:space="preserve"> <data name="XHoursAndYMinutes" xml:space="preserve">
<value>{0} hours and {1} minutes</value> <value>{0} horas y {1} minutos</value>
</data> </data>
<data name="XHours" xml:space="preserve"> <data name="XHours" xml:space="preserve">
<value>{0} hours</value> <value>{0} horas</value>
</data> </data>
<data name="AutofillServicesExplanationLong" xml:space="preserve"> <data name="AutofillServicesExplanationLong" xml:space="preserve">
<value>The Android Autofill Framework is used to assist in filling login information into other apps on your device.</value> <value>El Framework de Autofill de Android se utiliza para ayudar a rellenar información de inicio de sesión en otras aplicaciones en tu dispositivo.</value>
</data> </data>
<data name="UseInlineAutofillExplanationLong" xml:space="preserve"> <data name="UseInlineAutofillExplanationLong" xml:space="preserve">
<value>Use inline autofill if your selected keyboard supports it. Otherwise, use the default overlay.</value> <value>Utilice el autocompletado en línea si tu teclado seleccionado lo soporta. De otra manera, utilice la superposición por defecto.</value>
</data> </data>
<data name="AdditionalOptions" xml:space="preserve"> <data name="AdditionalOptions" xml:space="preserve">
<value>Additional options</value> <value>Opciones adicionales</value>
</data> </data>
<data name="ContinueToWebApp" xml:space="preserve"> <data name="ContinueToWebApp" xml:space="preserve">
<value>Continue to web app?</value> <value>¿Continuar a la aplicación web?</value>
</data> </data>
<data name="ContinueToX" xml:space="preserve"> <data name="ContinueToX" xml:space="preserve">
<value>Continue to {0}?</value> <value>¿Continuar a {0}?</value>
<comment>The parameter is an URL, like bitwarden.com.</comment> <comment>The parameter is an URL, like bitwarden.com.</comment>
</data> </data>
<data name="ContinueToHelpCenter" xml:space="preserve"> <data name="ContinueToHelpCenter" xml:space="preserve">
<value>Continue to Help center?</value> <value>¿Continuar al centro de ayuda?</value>
</data> </data>
<data name="ContinueToContactSupport" xml:space="preserve"> <data name="ContinueToContactSupport" xml:space="preserve">
<value>Continue to contact support?</value> <value>¿Continuar con el servicio de asistencia?</value>
</data> </data>
<data name="ContinueToAppStore" xml:space="preserve"> <data name="ContinueToAppStore" xml:space="preserve">
<value>Continue to app store?</value> <value>¿Continuar a la App Store?</value>
</data> </data>
<data name="TwoStepLoginDescriptionLong" xml:space="preserve"> <data name="TwoStepLoginDescriptionLong" xml:space="preserve">
<value>Make your account more secure by setting up two-step login in the Bitwarden web app.</value> <value>Haz tu cuenta más segura al configurar el inicio de sesión en dos pasos en la aplicación web de Bitwarden.</value>
</data> </data>
<data name="ChangeMasterPasswordDescriptionLong" xml:space="preserve"> <data name="ChangeMasterPasswordDescriptionLong" xml:space="preserve">
<value>You can change your master password on the Bitwarden web app.</value> <value>Puedes cambiar tu contraseña maestra en la aplicación web de Bitwarden.</value>
</data> </data>
<data name="YouCanImportDataToYourVaultOnX" xml:space="preserve"> <data name="YouCanImportDataToYourVaultOnX" xml:space="preserve">
<value>You can import data to your vault on {0}.</value> <value>Puedes importar datos a tu caja fuerte en {0}.</value>
<comment>The parameter is an URL, like vault.bitwarden.com.</comment> <comment>The parameter is an URL, like vault.bitwarden.com.</comment>
</data> </data>
<data name="LearnMoreAboutHowToUseBitwardenOnTheHelpCenter" xml:space="preserve"> <data name="LearnMoreAboutHowToUseBitwardenOnTheHelpCenter" xml:space="preserve">
<value>Learn more about how to use Bitwarden on the Help center.</value> <value>Más información sobre cómo usar Bitwarden en el centro de Ayuda.</value>
</data> </data>
<data name="ContactSupportDescriptionLong" xml:space="preserve"> <data name="ContactSupportDescriptionLong" xml:space="preserve">
<value>Cant find what you are looking for? Reach out to Bitwarden support on bitwarden.com.</value> <value>¿No encuentras lo que estás buscando? Contacta con el soporte de Bitwarden en bitwarden.com.</value>
</data> </data>
<data name="ExploreMoreFeaturesOfYourBitwardenAccountOnTheWebApp" xml:space="preserve"> <data name="ExploreMoreFeaturesOfYourBitwardenAccountOnTheWebApp" xml:space="preserve">
<value>Explore more features of your Bitwarden account on the web app.</value> <value>Explora más características de tu cuenta de Bitwarden en la aplicación web.</value>
</data> </data>
<data name="LearnAboutOrganizationsDescriptionLong" xml:space="preserve"> <data name="LearnAboutOrganizationsDescriptionLong" xml:space="preserve">
<value>Bitwarden allows you to share your vault items with others by using an organization. Learn more on the bitwarden.com website.</value> <value>Bitwarden te permite compartir tus elementos de la caja fuerte con otros utilizando una organización. Más información en el sitio web de bitwarden.com.</value>
</data> </data>
<data name="RateAppDescriptionLong" xml:space="preserve"> <data name="RateAppDescriptionLong" xml:space="preserve">
<value>Help others find out if Bitwarden is right for them. Visit the app store and leave a rating now.</value> <value>Ayuda a otros a averiguar si Bitwarden es correcto para ellos. Visita la tienda de aplicaciones y deja una calificación ahora.</value>
</data> </data>
<data name="DefaultDarkThemeDescriptionLong" xml:space="preserve"> <data name="DefaultDarkThemeDescriptionLong" xml:space="preserve">
<value>Choose the dark theme to use when your devices dark mode is in use</value> <value>Elige el tema oscuro a usar cuando el modo oscuro de tu dispositivo esté en uso</value>
</data> </data>
<data name="CreatedXY" xml:space="preserve"> <data name="CreatedXY" xml:space="preserve">
<value>Creado {0}, {1}</value> <value>Creado {0}, {1}</value>
<comment>To state the date/time in which the cipher was created: Created 03/21/2023, 09:25 AM. First parameter is the date and the second parameter is the time.</comment> <comment>To state the date/time in which the cipher was created: Created 03/21/2023, 09:25 AM. First parameter is the date and the second parameter is the time.</comment>
</data> </data>
<data name="TooManyAttempts" xml:space="preserve"> <data name="TooManyAttempts" xml:space="preserve">
<value>Too many attempts</value> <value>Demasiados intentos</value>
</data> </data>
<data name="AccountLoggedOutBiometricExceeded" xml:space="preserve"> <data name="AccountLoggedOutBiometricExceeded" xml:space="preserve">
<value>Account logged out.</value> <value>Sesión de la cuenta cerrada.</value>
</data> </data>
<data name="YourOrganizationPermissionsWereUpdatedRequeringYouToSetAMasterPassword" xml:space="preserve"> <data name="YourOrganizationPermissionsWereUpdatedRequeringYouToSetAMasterPassword" xml:space="preserve">
<value>Your organization permissions were updated, requiring you to set a master password.</value> <value>Los permisos de su organización han sido actualizados, requiriendo que establezca una contraseña maestra.</value>
</data> </data>
<data name="YourOrganizationRequiresYouToSetAMasterPassword" xml:space="preserve"> <data name="YourOrganizationRequiresYouToSetAMasterPassword" xml:space="preserve">
<value>Your organization requires you to set a master password.</value> <value>Tu organización requiere que establezcas una contraseña maestra.</value>
</data> </data>
<data name="SetUpAnUnlockOptionToChangeYourVaultTimeoutAction" xml:space="preserve"> <data name="SetUpAnUnlockOptionToChangeYourVaultTimeoutAction" xml:space="preserve">
<value>Set up an unlock option to change your vault timeout action.</value> <value>Set up an unlock option to change your vault timeout action.</value>

View File

@ -843,11 +843,11 @@
<value>कोई दूसरा दो-कदम लॉगइन तरीका इस्तेमाल करें</value> <value>कोई दूसरा दो-कदम लॉगइन तरीका इस्तेमाल करें</value>
</data> </data>
<data name="VerificationEmailNotSent" xml:space="preserve"> <data name="VerificationEmailNotSent" xml:space="preserve">
<value>Could not send verification email. Try again.</value> <value>जांच के लिए मेईल भेजने में असमर्थ। फिर से प्रयास करें ।</value>
<comment>For 2FA</comment> <comment>For 2FA</comment>
</data> </data>
<data name="VerificationEmailSent" xml:space="preserve"> <data name="VerificationEmailSent" xml:space="preserve">
<value>Verification email sent</value> <value>जांच के लिए मेईल भेजा गया है</value>
<comment>For 2FA</comment> <comment>For 2FA</comment>
</data> </data>
<data name="YubiKeyInstruction" xml:space="preserve"> <data name="YubiKeyInstruction" xml:space="preserve">
@ -858,23 +858,23 @@
<comment>"YubiKey" is the product name and should not be translated.</comment> <comment>"YubiKey" is the product name and should not be translated.</comment>
</data> </data>
<data name="AddNewAttachment" xml:space="preserve"> <data name="AddNewAttachment" xml:space="preserve">
<value>Add new attachment</value> <value>नई अटैचमेंट जोडे</value>
</data> </data>
<data name="Attachments" xml:space="preserve"> <data name="Attachments" xml:space="preserve">
<value>अटॅचमेंट्स</value> <value>अटॅचमेंट्स</value>
</data> </data>
<data name="UnableToDownloadFile" xml:space="preserve"> <data name="UnableToDownloadFile" xml:space="preserve">
<value>Unable to download file.</value> <value>फाइल डाउनलोड करने में असफल</value>
</data> </data>
<data name="UnableToOpenFile" xml:space="preserve"> <data name="UnableToOpenFile" xml:space="preserve">
<value>Your device cannot open this type of file.</value> <value>आपका उपकरण इस तरह की फाइल नहीं खोल सकता</value>
</data> </data>
<data name="Downloading" xml:space="preserve"> <data name="Downloading" xml:space="preserve">
<value>डाउनलोड कर रहा है...</value> <value>डाउनलोड कर रहा है...</value>
<comment>Message shown when downloading a file</comment> <comment>Message shown when downloading a file</comment>
</data> </data>
<data name="AttachmentLargeWarning" xml:space="preserve"> <data name="AttachmentLargeWarning" xml:space="preserve">
<value>This attachment is {0} in size. Are you sure you want to download it onto your device?</value> <value>इस अटैचमेंट की साईज {0} है. क्या आप निश्चित रूप से उसे अपने उपकरण में डाउनलोड करना चाहते हैं?</value>
<comment>The placeholder will show the file size of the attachment. Ex "25 MB"</comment> <comment>The placeholder will show the file size of the attachment. Ex "25 MB"</comment>
</data> </data>
<data name="AuthenticatorKey" xml:space="preserve"> <data name="AuthenticatorKey" xml:space="preserve">
@ -891,8 +891,7 @@
<value>Cannot read authenticator key.</value> <value>Cannot read authenticator key.</value>
</data> </data>
<data name="PointYourCameraAtTheQRCode" xml:space="preserve"> <data name="PointYourCameraAtTheQRCode" xml:space="preserve">
<value>Point your camera at the QR Code. <value>अपने कैमरे को QR CODE कि और रखें। स्कैन अपने आप होगा।</value>
Scanning will happen automatically.</value>
</data> </data>
<data name="ScanQrTitle" xml:space="preserve"> <data name="ScanQrTitle" xml:space="preserve">
<value>QR कोड को स्कैन करें</value> <value>QR कोड को स्कैन करें</value>
@ -913,10 +912,10 @@ Scanning will happen automatically.</value>
<value>Copy TOTP automatically</value> <value>Copy TOTP automatically</value>
</data> </data>
<data name="PremiumRequired" xml:space="preserve"> <data name="PremiumRequired" xml:space="preserve">
<value>A premium membership is required to use this feature.</value> <value>इस सुविधा का उपयोग करने के लिए प्रीमियम सदस्यता की आवश्यकता होती है।</value>
</data> </data>
<data name="AttachementAdded" xml:space="preserve"> <data name="AttachementAdded" xml:space="preserve">
<value>Attachment added</value> <value>अटैचमेंट डालि गई।</value>
</data> </data>
<data name="AttachmentDeleted" xml:space="preserve"> <data name="AttachmentDeleted" xml:space="preserve">
<value>संग्लित वस्तु डिलीट करी गई</value> <value>संग्लित वस्तु डिलीट करी गई</value>

View File

@ -2423,7 +2423,7 @@
<comment>"Fastmail" is the product name and should not be translated.</comment> <comment>"Fastmail" is the product name and should not be translated.</comment>
</data> </data>
<data name="ForwardEmail" xml:space="preserve"> <data name="ForwardEmail" xml:space="preserve">
<value>FowardEmail</value> <value>ForwardEmail</value>
<comment>"ForwardEmail" is the product name and should not be translated.</comment> <comment>"ForwardEmail" is the product name and should not be translated.</comment>
</data> </data>
<data name="APIAccessToken" xml:space="preserve"> <data name="APIAccessToken" xml:space="preserve">

View File

@ -2670,7 +2670,7 @@ Vill du byta till detta konto?</value>
<value>Återupprepa huvudlösenord hjälp</value> <value>Återupprepa huvudlösenord hjälp</value>
</data> </data>
<data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve"> <data name="UnlockingMayFailDueToInsufficientMemoryDecreaseYourKDFMemorySettingsToResolve" xml:space="preserve">
<value>Unlocking may fail due to insufficient memory. Decrease your KDF memory settings or set up biometric unlock to resolve.</value> <value>Upplåsning kan misslyckas på grund av otillräckligt minne. Minska dina KDF-minnesinställningar för att lösa detta.</value>
</data> </data>
<data name="InvalidAPIKey" xml:space="preserve"> <data name="InvalidAPIKey" xml:space="preserve">
<value>Ogiltig API-nyckel</value> <value>Ogiltig API-nyckel</value>
@ -2764,7 +2764,7 @@ Vill du byta till detta konto?</value>
<value>Bitwarden Hjälpcenter</value> <value>Bitwarden Hjälpcenter</value>
</data> </data>
<data name="ContactBitwardenSupport" xml:space="preserve"> <data name="ContactBitwardenSupport" xml:space="preserve">
<value>Contact Bitwarden support</value> <value>Kontakta Bitwarden support</value>
</data> </data>
<data name="CopyAppInformation" xml:space="preserve"> <data name="CopyAppInformation" xml:space="preserve">
<value>Copy app information</value> <value>Copy app information</value>
@ -2854,7 +2854,7 @@ Vill du byta till detta konto?</value>
<value>Choose the dark theme to use when your devices dark mode is in use</value> <value>Choose the dark theme to use when your devices dark mode is in use</value>
</data> </data>
<data name="CreatedXY" xml:space="preserve"> <data name="CreatedXY" xml:space="preserve">
<value>Created {0}, {1}</value> <value>Skapad {0}, {1}</value>
<comment>To state the date/time in which the cipher was created: Created 03/21/2023, 09:25 AM. First parameter is the date and the second parameter is the time.</comment> <comment>To state the date/time in which the cipher was created: Created 03/21/2023, 09:25 AM. First parameter is the date and the second parameter is the time.</comment>
</data> </data>
<data name="TooManyAttempts" xml:space="preserve"> <data name="TooManyAttempts" xml:space="preserve">
@ -2864,10 +2864,10 @@ Vill du byta till detta konto?</value>
<value>Account logged out.</value> <value>Account logged out.</value>
</data> </data>
<data name="YourOrganizationPermissionsWereUpdatedRequeringYouToSetAMasterPassword" xml:space="preserve"> <data name="YourOrganizationPermissionsWereUpdatedRequeringYouToSetAMasterPassword" xml:space="preserve">
<value>Your organization permissions were updated, requiring you to set a master password.</value> <value>Din organisations behörigheter uppdaterades, vilket kräver att du anger ett huvudlösenord.</value>
</data> </data>
<data name="YourOrganizationRequiresYouToSetAMasterPassword" xml:space="preserve"> <data name="YourOrganizationRequiresYouToSetAMasterPassword" xml:space="preserve">
<value>Your organization requires you to set a master password.</value> <value>Din organisation kräver att du anger ett huvudlösenord.</value>
</data> </data>
<data name="SetUpAnUnlockOptionToChangeYourVaultTimeoutAction" xml:space="preserve"> <data name="SetUpAnUnlockOptionToChangeYourVaultTimeoutAction" xml:space="preserve">
<value>Set up an unlock option to change your vault timeout action.</value> <value>Set up an unlock option to change your vault timeout action.</value>

View File

@ -36,8 +36,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-ios|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-ios|AnyCPU'">
<CreatePackage>false</CreatePackage> <CreatePackage>false</CreatePackage>
<MtouchLink>None</MtouchLink> <MtouchExtraArgs>--linkskip=LiteDB --linkskip=CsvHelper --linkskip=Core --linkskip=iOS.Core --linkskip=iOS.Autofill --linkskip=iOS.Extension --linkskip=iOS.ShareExtension --linkskip=App -gcc_flags "-L$(ProjectDir)../../lib/ios -largon2 -force_load $(ProjectDir)../../lib/ios/libargon2.a"</MtouchExtraArgs>
<MtouchExtraArgs>--weak-framework=NewsstandKit.framework/NewsstandKit --linkskip=LiteDB --linkskip=CsvHelper --linkskip=Core --linkskip=iOS.Core --linkskip=iOS.Autofill --linkskip=iOS.Extension --linkskip=iOS.ShareExtension --linkskip=App -gcc_flags "-L$(ProjectDir)../../lib/ios -largon2 -force_load $(ProjectDir)../../lib/ios/libargon2.a"</MtouchExtraArgs>
<CodesignKey>iPhone Distribution</CodesignKey> <CodesignKey>iPhone Distribution</CodesignKey>
<CodesignProvision>Automatic:AppStore</CodesignProvision> <CodesignProvision>Automatic:AppStore</CodesignProvision>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements> <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>

View File

@ -33,8 +33,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-ios|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-ios|AnyCPU'">
<CreatePackage>false</CreatePackage> <CreatePackage>false</CreatePackage>
<MtouchLink>None</MtouchLink> <MtouchExtraArgs>--linkskip=LiteDB --linkskip=CsvHelper --linkskip=Core --linkskip=iOS.Core --linkskip=iOS.Autofill --linkskip=iOS.Extension --linkskip=iOS.ShareExtension --linkskip=App -gcc_flags "-L$(ProjectDir)../../lib/ios -largon2 -force_load $(ProjectDir)../../lib/ios/libargon2.a"</MtouchExtraArgs>
<MtouchExtraArgs>--weak-framework=NewsstandKit.framework/NewsstandKit --linkskip=LiteDB --linkskip=CsvHelper --linkskip=Core --linkskip=iOS.Core --linkskip=iOS.Autofill --linkskip=iOS.Extension --linkskip=iOS.ShareExtension --linkskip=App -gcc_flags "-L$(ProjectDir)../../lib/ios -largon2 -force_load $(ProjectDir)../../lib/ios/libargon2.a"</MtouchExtraArgs>
<CodesignKey>iPhone Distribution</CodesignKey> <CodesignKey>iPhone Distribution</CodesignKey>
<CodesignProvision>Automatic:AppStore</CodesignProvision> <CodesignProvision>Automatic:AppStore</CodesignProvision>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements> <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>

View File

@ -35,8 +35,7 @@
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-ios|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net8.0-ios|AnyCPU'">
<CreatePackage>false</CreatePackage> <CreatePackage>false</CreatePackage>
<MtouchLink>None</MtouchLink> <MtouchExtraArgs>--linkskip=LiteDB --linkskip=CsvHelper --linkskip=Core --linkskip=iOS.Core --linkskip=iOS.Autofill --linkskip=iOS.Extension --linkskip=iOS.ShareExtension --linkskip=App -gcc_flags "-L$(ProjectDir)../../lib/ios -largon2 -force_load $(ProjectDir)../../lib/ios/libargon2.a"</MtouchExtraArgs>
<MtouchExtraArgs>--weak-framework=NewsstandKit.framework/NewsstandKit --linkskip=LiteDB --linkskip=CsvHelper --linkskip=Core --linkskip=iOS.Core --linkskip=iOS.Autofill --linkskip=iOS.Extension --linkskip=iOS.ShareExtension --linkskip=App -gcc_flags "-L$(ProjectDir)../../lib/ios -largon2 -force_load $(ProjectDir)../../lib/ios/libargon2.a"</MtouchExtraArgs>
<CodesignKey>iPhone Distribution</CodesignKey> <CodesignKey>iPhone Distribution</CodesignKey>
<CodesignProvision>Automatic:AppStore</CodesignProvision> <CodesignProvision>Automatic:AppStore</CodesignProvision>
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements> <CodesignEntitlements>Entitlements.plist</CodesignEntitlements>

View File

@ -1,10 +1,10 @@
"ThereAreNoItemsToList" = "Siyahılanacaq heç bir element yoxdur"; "ThereAreNoItemsToList" = "Siyahılanacaq heç bir element yoxdur";
"ToViewVerificationCodesUpgradeToPremium" = "Təsdiqləmə kodlarına baxmaq üçün premiuma yüksəldin"; "ToViewVerificationCodesUpgradeToPremium" = "Doğrulama kodlarına baxmaq üçün premiuma yüksəldin";
"Add2FactorAutenticationToAnItemToViewVerificationCodes" = "Təsdiqləmə kodlarına baxmaq üçün bir elementə 2 faktorlu kimlik təsdiqləmə əlavə edin"; "Add2FactorAutenticationToAnItemToViewVerificationCodes" = "Doğrulama kodlarına baxmaq üçün bir elementə 2 faktorlu kimlik doğrulama əlavə edin";
"LogInToBitwardenOnYourIPhoneToViewVerificationCodes" = "Təsdiqləmə kodlarına baxmaq üçün iPhone-nunuzda Bitwarden-ə giriş edin"; "LogInToBitwardenOnYourIPhoneToViewVerificationCodes" = "Doğrulama kodlarına baxmaq üçün iPhone-nunuzda Bitwarden-ə giriş edin";
"SyncingItemsContainingVerificationCodes" = "Təsdiqləmə kodlarını ehtiva edən elementlər sinxronlaşdırılır"; "SyncingItemsContainingVerificationCodes" = "Doğrulama kodlarını ehtiva edən elementlər sinxronlaşdırılır";
"UnlockBitwardenOnYourIPhoneToViewVerificationCodes" = "Təsdiqləmə kodlarına baxmaq üçün iPhone-nunuzda Bitwarden-in kilidini açın"; "UnlockBitwardenOnYourIPhoneToViewVerificationCodes" = "Doğrulama kodlarına baxmaq üçün iPhone-nunuzda Bitwarden-in kilidini açın";
"SetUpBitwardenToViewItemsContainingVerificationCodes" = "Təsdiqləmə kodlarını ehtiva edən elementlərə baxmaq üçün Bitwarden-i quraşdırın"; "SetUpBitwardenToViewItemsContainingVerificationCodes" = "Doğrulama kodlarını ehtiva edən elementlərə baxmaq üçün Bitwarden-i quraşdırın";
"Search" = "Axtar"; "Search" = "Axtar";
"NoItemsFound" = "Heç bir element tapılmadı"; "NoItemsFound" = "Heç bir element tapılmadı";
"SetUpAppleWatchPasscodeInOrderToUseBitwarden" = "Bitwarden-i istifadə etmək üçün Apple Watch parolunu quraşdırın"; "SetUpAppleWatchPasscodeInOrderToUseBitwarden" = "Bitwarden-i istifadə etmək üçün Apple Watch parolunu quraşdırın";