diff --git a/build.gradle b/build.gradle index 3490f070fb..cf7b8dd07a 100644 --- a/build.gradle +++ b/build.gradle @@ -197,8 +197,8 @@ dependencies { compile 'org.greenrobot:eventbus:3.0.0' compile 'com.googlecode.ez-vcard:ez-vcard:0.10.2' -// uncomment for gplay, modified -// compile 'com.google.android.gms:play-services:10.2.1' + // uncomment for gplay, modified + //compile 'com.google.android.gms:play-services:10.2.4' compile 'org.parceler:parceler-api:1.1.6' annotationProcessor 'org.parceler:parceler:1.1.6' diff --git a/src/generic/java/com/owncloud/android/utils/PushUtils.java b/src/generic/java/com/owncloud/android/utils/PushUtils.java new file mode 100644 index 0000000000..08f795f7a1 --- /dev/null +++ b/src/generic/java/com/owncloud/android/utils/PushUtils.java @@ -0,0 +1,25 @@ +/** + * Nextcloud Android client application + * + * @author Mario Danic + * Copyright (C) 2017 Mario Danic + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package com.owncloud.android.utils; + +public class PushUtils { + public static final String KEY_PUSH = "push"; +} diff --git a/src/gplay/java/com/owncloud/android/services/firebase/NCFirebaseInstanceIDService.java b/src/gplay/java/com/owncloud/android/services/firebase/NCFirebaseInstanceIDService.java index a5ab4d409a..c5f39a5070 100644 --- a/src/gplay/java/com/owncloud/android/services/firebase/NCFirebaseInstanceIDService.java +++ b/src/gplay/java/com/owncloud/android/services/firebase/NCFirebaseInstanceIDService.java @@ -36,8 +36,6 @@ public class NCFirebaseInstanceIDService extends FirebaseInstanceIdService { //You can implement this method to store the token on your server if (!TextUtils.isEmpty(getResources().getString(R.string.push_server_url))) { PreferenceManager.setPushToken(MainApp.getAppContext(), FirebaseInstanceId.getInstance().getToken()); - PreferenceManager.setPushTokenUpdateTime(MainApp.getAppContext(), System.currentTimeMillis()); - PushUtils.pushRegistrationToServer(); } } diff --git a/src/gplay/java/com/owncloud/android/ui/activity/ModifiedFileDisplayActivity.java b/src/gplay/java/com/owncloud/android/ui/activity/ModifiedFileDisplayActivity.java index a2d17ca8ab..71ecfaf958 100644 --- a/src/gplay/java/com/owncloud/android/ui/activity/ModifiedFileDisplayActivity.java +++ b/src/gplay/java/com/owncloud/android/ui/activity/ModifiedFileDisplayActivity.java @@ -20,9 +20,12 @@ package com.owncloud.android.ui.activity; +import android.os.Bundle; + import com.owncloud.android.ui.events.TokenPushEvent; import com.owncloud.android.utils.PushUtils; +import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -33,4 +36,11 @@ public class ModifiedFileDisplayActivity extends FileDisplayActivity { PushUtils.pushRegistrationToServer(); } + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + // see if there's stuff to push every time we start the app + EventBus.getDefault().post(new TokenPushEvent()); + } + } diff --git a/src/gplay/java/com/owncloud/android/utils/PushUtils.java b/src/gplay/java/com/owncloud/android/utils/PushUtils.java index dd689c1d2a..cbbaacea6d 100644 --- a/src/gplay/java/com/owncloud/android/utils/PushUtils.java +++ b/src/gplay/java/com/owncloud/android/utils/PushUtils.java @@ -27,9 +27,12 @@ import android.content.Context; import android.text.TextUtils; import android.util.Base64; +import com.google.gson.Gson; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; +import com.owncloud.android.datamodel.ArbitraryDataProvider; +import com.owncloud.android.datamodel.PushConfigurationState; import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.OwnCloudClient; @@ -39,8 +42,12 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.notifications.RegisterAccountDeviceForNotificationsOperation; import com.owncloud.android.lib.resources.notifications.RegisterAccountDeviceForProxyOperation; +import com.owncloud.android.lib.resources.notifications.UnregisterAccountDeviceForNotificationsOperation; +import com.owncloud.android.lib.resources.notifications.UnregisterAccountDeviceForProxyOperation; import com.owncloud.android.lib.resources.notifications.models.PushResponse; +import org.apache.commons.httpclient.HttpStatus; + import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -65,7 +72,11 @@ public class PushUtils { private static final String KEYPAIR_PRIV_EXTENSION = ".priv"; private static final String KEYPAIR_PUB_EXTENSION = ".pub"; - public static String generateSHA512Hash(String pushToken) { + public static final String KEY_PUSH = "push"; + + private static ArbitraryDataProvider arbitraryDataProvider; + + private static String generateSHA512Hash(String pushToken) { MessageDigest messageDigest = null; try { messageDigest = MessageDigest.getInstance("SHA-512"); @@ -86,7 +97,7 @@ public class PushUtils { return result.toString(); } - public static int generateRsa2048KeyPair() { + private static int generateRsa2048KeyPair() { String keyPath = MainApp.getStoragePath() + File.separator + MainApp.getDataFolder() + File.separator + KEYPAIR_FOLDER; @@ -124,8 +135,59 @@ public class PushUtils { return -2; } + private static void deleteRegistrationForAccount(Account account) { + Context context = MainApp.getAppContext(); + OwnCloudAccount ocAccount = null; + arbitraryDataProvider = new ArbitraryDataProvider(MainApp.getAppContext().getContentResolver()); + + try { + ocAccount = new OwnCloudAccount(account, context); + OwnCloudClient mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). + getClientFor(ocAccount, context); + + RemoteOperation unregisterAccountDeviceForNotificationsOperation = new + UnregisterAccountDeviceForNotificationsOperation(); + + RemoteOperationResult remoteOperationResult = unregisterAccountDeviceForNotificationsOperation. + execute(mClient); + + if (remoteOperationResult.getHttpCode() == HttpStatus.SC_ACCEPTED) { + String arbitraryValue; + if (!TextUtils.isEmpty(arbitraryValue = arbitraryDataProvider.getValue(account, KEY_PUSH))) { + Gson gson = new Gson(); + PushConfigurationState pushArbitraryData = gson.fromJson(arbitraryValue, + PushArbitraryData.class); + RemoteOperation unregisterAccountDeviceForProxyOperation = + new UnregisterAccountDeviceForProxyOperation(context.getResources(). + getString(R.string.push_server_url), + pushArbitraryData.getDeviceIdentifier(), + pushArbitraryData.getDeviceIdentifierSignature(), + pushArbitraryData.getUserPublicKey()); + + remoteOperationResult = unregisterAccountDeviceForProxyOperation.execute(mClient); + + if (remoteOperationResult.isSuccess()) { + arbitraryDataProvider.deleteKeyForAccount(account, KEY_PUSH); + } + } + } + + + } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { + Log_OC.d(TAG, "Failed to find an account"); + } catch (AuthenticatorException e) { + Log_OC.d(TAG, "Failed via AuthenticatorException"); + } catch (IOException e) { + Log_OC.d(TAG, "Failed via IOException"); + } catch (OperationCanceledException e) { + Log_OC.d(TAG, "Failed via OperationCanceledException"); + } + } + public static void pushRegistrationToServer() { String token = PreferenceManager.getPushToken(MainApp.getAppContext()); + arbitraryDataProvider = new ArbitraryDataProvider(MainApp.getAppContext().getContentResolver()); + if (!TextUtils.isEmpty(MainApp.getAppContext().getResources().getString(R.string.push_server_url)) && !TextUtils.isEmpty(token)) { PushUtils.generateRsa2048KeyPair(); @@ -139,42 +201,57 @@ public class PushUtils { publicKey = "-----BEGIN PUBLIC KEY-----\n" + publicKey + "\n-----END PUBLIC KEY-----\n"; Context context = MainApp.getAppContext(); + String providerValue; + Gson gson = new Gson(); for (Account account : AccountUtils.getAccounts(context)) { - try { - OwnCloudAccount ocAccount = new OwnCloudAccount(account, context); - OwnCloudClient mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). - getClientFor(ocAccount, context); + if (!TextUtils.isEmpty(providerValue = arbitraryDataProvider.getValue(account, KEY_PUSH))) { + PushConfigurationState accountPushData = gson.fromJson(providerValue, + PushConfigurationState.class); + if (!accountPushData.getPushToken().equals(token) && !accountPushData.isShouldBeDeleted()) { + try { + OwnCloudAccount ocAccount = new OwnCloudAccount(account, context); + OwnCloudClient mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). + getClientFor(ocAccount, context); - RemoteOperation registerAccountDeviceForNotificationsOperation = - new RegisterAccountDeviceForNotificationsOperation(pushTokenHash, - publicKey, - context.getResources().getString(R.string.push_server_url)); + RemoteOperation registerAccountDeviceForNotificationsOperation = + new RegisterAccountDeviceForNotificationsOperation(pushTokenHash, + publicKey, + context.getResources().getString(R.string.push_server_url)); - RemoteOperationResult remoteOperationResult = registerAccountDeviceForNotificationsOperation. - execute(mClient); + RemoteOperationResult remoteOperationResult = registerAccountDeviceForNotificationsOperation. + execute(mClient); - if (remoteOperationResult.isSuccess()) { - PushResponse pushResponse = remoteOperationResult.getPushResponseData(); + if (remoteOperationResult.isSuccess()) { + PushResponse pushResponse = remoteOperationResult.getPushResponseData(); - RemoteOperation registerAccountDeviceForProxyOperation = new - RegisterAccountDeviceForProxyOperation( - context.getResources().getString(R.string.push_server_url), - token, pushResponse.getDeviceIdentifier(), pushResponse.getSignature(), - pushResponse.getPublicKey()); + RemoteOperation registerAccountDeviceForProxyOperation = new + RegisterAccountDeviceForProxyOperation( + context.getResources().getString(R.string.push_server_url), + token, pushResponse.getDeviceIdentifier(), pushResponse.getSignature(), + pushResponse.getPublicKey()); - remoteOperationResult = registerAccountDeviceForProxyOperation.execute(mClient); - PreferenceManager.setPushTokenLastSentTime(MainApp.getAppContext(), - System.currentTimeMillis()); + remoteOperationResult = registerAccountDeviceForProxyOperation.execute(mClient); + if (remoteOperationResult.isSuccess()) { + PushConfigurationState pushArbitraryData = new PushConfigurationState(token, + pushResponse.getDeviceIdentifier(), pushResponse.getSignature(), + pushResponse.getPublicKey(), false); + arbitraryDataProvider.storeOrUpdateKeyValue(account, KEY_PUSH, + gson.toJson(pushArbitraryData)); + } + } + } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { + Log_OC.d(TAG, "Failed to find an account"); + } catch (AuthenticatorException e) { + Log_OC.d(TAG, "Failed via AuthenticatorException"); + } catch (IOException e) { + Log_OC.d(TAG, "Failed via IOException"); + } catch (OperationCanceledException e) { + Log_OC.d(TAG, "Failed via OperationCanceledException"); + } + } else if (accountPushData.isShouldBeDeleted()) { + deleteRegistrationForAccount(account); } - } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { - Log_OC.d(TAG, "Failed to find an account"); - } catch (AuthenticatorException e) { - Log_OC.d(TAG, "Failed via AuthenticatorException"); - } catch (IOException e) { - Log_OC.d(TAG, "Failed via IOException"); - } catch (OperationCanceledException e) { - Log_OC.d(TAG, "Failed via OperationCanceledException"); } } } diff --git a/src/gplay/res/values/setup.xml b/src/gplay/res/values/setup.xml index 5f3582a9d6..f2ce5f20ff 100644 --- a/src/gplay/res/values/setup.xml +++ b/src/gplay/res/values/setup.xml @@ -1,135 +1,5 @@ - - false - - - Nextcloud - nextcloud - org.nextcloud - com.nextcloud.android.providers.UsersAndGroupsSearchProvider - com.nextcloud.android.providers.UsersAndGroupsSearchProvider.action.SHARE_WITH - org.nextcloud.documents - org.nextcloud.files - nextcloud.db - nextcloud - nextcloud - nextcloud - Nextcloud - Mozilla/5.0 (Android) ownCloud-android/%1$s - - - - true - - - regular - true - "https://nextcloud.com/providers" - - - - off - off - - - on - true - true - true - true - - - true - /Contacts-Backup - -1 - - - - - - @color/nc_blue - #006AA3 - @color/nc_blue_accent - @color/white - #7fC0E3 - #FFFFFF - #FFFFFF - #FFFFFF - #0082c9 - #0082c9 - @color/nc_blue_accent - @color/white - #D6D7D7 - @color/black - - - #201D2D44 - #40162233 - - - #000000 - - - #757575 - #616161 - #ECECEC - - - true - - - false - false - true - false - - - false - - - true - true - true - false - true - true - false - https://help.nextcloud.com/c/feature - - "mailto:" - "mailto:android@nextcloud.com" - "https://play.google.com/store/apps/details?id=com.nextcloud.client" - https://nextcloud.com/install - - - - - - true - - https://f-droid.org/repository/browse/?fdid=com.nextcloud.android.beta - https://download.nextcloud.com/android/dev/latest.apk - https://play.google.com/apps/testing/com.nextcloud.client - https://f-droid.org/repository/browse/?fdid=com.nextcloud.client - http://webchat.freenode.net?channels=nextcloud-mobile - https://help.nextcloud.com/c/clients/android - https://www.transifex.com/nextcloud/nextcloud/android/ - https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md - https://github.com/nextcloud/android/issues - - - nc - - - - - false - - - false - https://push-notifications.nextcloud.com diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 25ab45a60e..6e9239f8e4 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -88,7 +88,8 @@ - + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU AFFERO GENERAL PUBLIC LICENSE for more details. + *

+ * You should have received a copy of the GNU Affero General Public + * License along with this program. If not, see . + */ +package com.owncloud.android.datamodel; + +import android.accounts.Account; +import android.content.ContentResolver; +import android.content.ContentValues; +import android.database.Cursor; +import android.net.Uri; + +import com.owncloud.android.db.ProviderMeta; +import com.owncloud.android.lib.common.utils.Log_OC; + +import java.util.ArrayList; + +/** + * Database provider for handling the persistence aspects of arbitrary data table. + */ + +public class ArbitraryDataProvider { + static private final String TAG = ArbitraryDataProvider.class.getSimpleName(); + + private ContentResolver contentResolver; + + public ArbitraryDataProvider(ContentResolver contentResolver) { + if (contentResolver == null) { + throw new IllegalArgumentException("Cannot create an instance with a NULL contentResolver"); + } + this.contentResolver = contentResolver; + } + + public int deleteKeyForAccount(Account account, String key) { + int result = contentResolver.delete( + ProviderMeta.ProviderTableMeta.CONTENT_URI_ARBITRARY_DATA, + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID + " = ? AND " + + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_KEY + "= ?", + new String[]{account.name, key} + ); + + return result; + } + + + public void storeOrUpdateKeyValue(Account account, String key, String newValue) { + ArbitraryDataSet data = getArbitraryDataSet(account, key); + if (data == null) { + Log_OC.v(TAG, "Adding arbitrary data with cloud id: " + account.name + " key: " + key + + " value: " + newValue); + ContentValues cv = new ContentValues(); + cv.put(ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID, account.name); + cv.put(ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_KEY, key); + cv.put(ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_VALUE, newValue); + + Uri result = contentResolver.insert(ProviderMeta.ProviderTableMeta.CONTENT_URI_ARBITRARY_DATA, cv); + + if (result == null) { + Log_OC.v(TAG, "Failed to store arbitrary data with cloud id: " + account.name + " key: " + key + + " value: " + newValue); + } + } else { + Log_OC.v(TAG, "Updating arbitrary data with cloud id: " + account.name + " key: " + key + + " value: " + newValue); + ContentValues cv = new ContentValues(); + cv.put(ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID, data.getCloudId()); + cv.put(ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_KEY, data.getKey()); + cv.put(ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_VALUE, newValue); + + int result = contentResolver.update( + ProviderMeta.ProviderTableMeta.CONTENT_URI_ARBITRARY_DATA, + cv, + ProviderMeta.ProviderTableMeta._ID + "=?", + new String[]{String.valueOf(data.getId())} + ); + + if (result == 0) { + Log_OC.v(TAG, "Failed to update arbitrary data with cloud id: " + account.name + " key: " + key + + " value: " + newValue); + } + } + } + + + public Long getLongValue(Account account, String key) { + String value = getValue(account, key); + + if (value.isEmpty()) { + return -1l; + } else { + return Long.valueOf(value); + } + } + + public boolean getBooleanValue(Account account, String key) { + String value = getValue(account, key); + + return !value.isEmpty() && value.equalsIgnoreCase("true"); + } + + private ArrayList getValues(Account account, String key) { + Cursor cursor = contentResolver.query( + ProviderMeta.ProviderTableMeta.CONTENT_URI_ARBITRARY_DATA, + null, + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID + " = ? and " + + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_KEY + " = ?", + new String[]{account.name, key}, + null + ); + + if (cursor != null) { + ArrayList list = new ArrayList<>(); + if (cursor.moveToFirst()) { + do { + String value = cursor.getString(cursor.getColumnIndex( + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_VALUE)); + if (value == null) { + Log_OC.e(TAG, "Arbitrary value could not be created from cursor"); + } else { + list.add(value); + } + } while (cursor.moveToNext()); + } + cursor.close(); + return list; + } else { + Log_OC.e(TAG, "DB error restoring arbitrary values."); + } + + return new ArrayList<>(); + } + + public String getValue(Account account, String key) { + Cursor cursor = contentResolver.query( + ProviderMeta.ProviderTableMeta.CONTENT_URI_ARBITRARY_DATA, + null, + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID + " = ? and " + + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_KEY + " = ?", + new String[]{account.name, key}, + null + ); + + if (cursor != null) { + if (cursor.moveToFirst()) { + String value = cursor.getString(cursor.getColumnIndex( + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_VALUE)); + if (value == null) { + Log_OC.e(TAG, "Arbitrary value could not be created from cursor"); + } else { + return value; + } + } + cursor.close(); + return ""; + } else { + Log_OC.e(TAG, "DB error restoring arbitrary values."); + } + + return ""; + } + + private ArbitraryDataSet getArbitraryDataSet(Account account, String key) { + Cursor cursor = contentResolver.query( + ProviderMeta.ProviderTableMeta.CONTENT_URI_ARBITRARY_DATA, + null, + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID + " = ? and " + + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_KEY + " = ?", + new String[]{account.name, key}, + null + ); + + ArbitraryDataSet dataSet = null; + if (cursor != null) { + if (cursor.moveToFirst()) { + int id = cursor.getInt(cursor.getColumnIndex(ProviderMeta.ProviderTableMeta._ID)); + String dbAccount = cursor.getString(cursor.getColumnIndex( + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID)); + String dbKey = cursor.getString(cursor.getColumnIndex( + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_KEY)); + String dbValue = cursor.getString(cursor.getColumnIndex( + ProviderMeta.ProviderTableMeta.ARBITRARY_DATA_VALUE)); + + if (id == -1) { + Log_OC.e(TAG, "Arbitrary value could not be created from cursor"); + } else { + dataSet = new ArbitraryDataSet(id, dbAccount, dbKey, dbValue); + } + } + cursor.close(); + } else { + Log_OC.e(TAG, "DB error restoring arbitrary values."); + } + + return dataSet; + } + + + public class ArbitraryDataSet { + private int id; + private String cloudId; + private String key; + private String value; + + public ArbitraryDataSet(int id, String cloudId, String key, String value) { + this.id = id; + this.cloudId = cloudId; + this.key = key; + this.value = value; + } + + public int getId() { + return id; + } + + public String getCloudId() { + return cloudId; + } + + public String getKey() { + return key; + } + + public String getValue() { + return value; + } + } + +} diff --git a/src/main/java/com/owncloud/android/datamodel/PushConfigurationState.java b/src/main/java/com/owncloud/android/datamodel/PushConfigurationState.java new file mode 100644 index 0000000000..8fffec9584 --- /dev/null +++ b/src/main/java/com/owncloud/android/datamodel/PushConfigurationState.java @@ -0,0 +1,81 @@ +/** + * Nextcloud Android client application + * + * @author Mario Danic + * Copyright (C) 2017 Mario Danic + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package com.owncloud.android.datamodel; + +public class PushConfigurationState { + public String pushToken; + public String deviceIdentifier; + public String deviceIdentifierSignature; + public String userPublicKey; + public boolean shouldBeDeleted; + + public PushConfigurationState() { + } + + public PushConfigurationState(String pushToken, String deviceIdentifier, String deviceIdentifierSignature, + String userPublicKey, boolean shouldBeDeleted) { + this.pushToken = pushToken; + this.deviceIdentifier = deviceIdentifier; + this.deviceIdentifierSignature = deviceIdentifierSignature; + this.userPublicKey = userPublicKey; + this.shouldBeDeleted = shouldBeDeleted; + } + + public String getPushToken() { + return pushToken; + } + + public void setPushToken(String pushToken) { + this.pushToken = pushToken; + } + + public String getDeviceIdentifier() { + return deviceIdentifier; + } + + public void setDeviceIdentifier(String deviceIdentifier) { + this.deviceIdentifier = deviceIdentifier; + } + + public String getDeviceIdentifierSignature() { + return deviceIdentifierSignature; + } + + public void setDeviceIdentifierSignature(String deviceIdentifierSignature) { + this.deviceIdentifierSignature = deviceIdentifierSignature; + } + + public String getUserPublicKey() { + return userPublicKey; + } + + public void setUserPublicKey(String userPublicKey) { + this.userPublicKey = userPublicKey; + } + + public boolean isShouldBeDeleted() { + return shouldBeDeleted; + } + + public void setShouldBeDeleted(boolean shouldBeDeleted) { + this.shouldBeDeleted = shouldBeDeleted; + } +} diff --git a/src/main/java/com/owncloud/android/db/PreferenceManager.java b/src/main/java/com/owncloud/android/db/PreferenceManager.java index 182ef0a708..78c6402b3c 100644 --- a/src/main/java/com/owncloud/android/db/PreferenceManager.java +++ b/src/main/java/com/owncloud/android/db/PreferenceManager.java @@ -47,33 +47,15 @@ public abstract class PreferenceManager { private static final String PREF__LEGACY_CLEAN = "legacyClean"; private static final String PREF__AUTO_UPLOAD_UPDATE_PATH = "autoUploadPathUpdate"; private static final String PREF__PUSH_TOKEN = "pushToken"; - private static final String PREF__PUSH_TOKEN_UPDATE_TIME = "pushTokenLastUpdated"; - private static final String PREF__PUSH_TOKEN_LAST_REGISTRATION_TIME = "pushTokenLastSent"; - - public static void setPushTokenLastSentTime(Context context, long time) { - saveLongPreference(context, PREF__PUSH_TOKEN_LAST_REGISTRATION_TIME, time); - } - - public static long getPushTokenLastSentTime(Context context) { - return getDefaultSharedPreferences(context).getLong(PREF__PUSH_TOKEN_LAST_REGISTRATION_TIME, -1); - } public static void setPushToken(Context context, String pushToken) { - saveStringPreference(context, PREF__PUSH_TOKEN, pushToken); + saveStringPreferenceNow(context, PREF__PUSH_TOKEN, pushToken); } public static String getPushToken(Context context) { return getDefaultSharedPreferences(context).getString(PREF__PUSH_TOKEN, ""); } - public static void setPushTokenUpdateTime(Context context, long time) { - saveLongPreference(context, PREF__PUSH_TOKEN_UPDATE_TIME, time); - } - - public static long getPushTokenUpdateTime(Context context) { - return getDefaultSharedPreferences(context).getLong(PREF__PUSH_TOKEN_UPDATE_TIME, -1); - } - public static boolean instantPictureUploadEnabled(Context context) { return getDefaultSharedPreferences(context).getBoolean(PREF__INSTANT_UPLOADING, false); } @@ -289,6 +271,12 @@ public abstract class PreferenceManager { appPreferences.apply(); } + private static void saveStringPreferenceNow(Context context, String key, String value) { + SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit(); + appPreferences.putString(key, value); + appPreferences.commit(); + } + private static void saveIntPreference(Context context, String key, int value) { SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit(); appPreferences.putInt(key, value); diff --git a/src/main/java/com/owncloud/android/db/ProviderMeta.java b/src/main/java/com/owncloud/android/db/ProviderMeta.java index f7ae1d1976..8701de44bb 100644 --- a/src/main/java/com/owncloud/android/db/ProviderMeta.java +++ b/src/main/java/com/owncloud/android/db/ProviderMeta.java @@ -32,7 +32,7 @@ import com.owncloud.android.MainApp; public class ProviderMeta { public static final String DB_NAME = "filelist"; - public static final int DB_VERSION = 20; + public static final int DB_VERSION = 21; private ProviderMeta() { } @@ -44,6 +44,7 @@ public class ProviderMeta { public static final String UPLOADS_TABLE_NAME = "list_of_uploads"; public static final String SYNCED_FOLDERS_TABLE_NAME = "synced_folders"; public static final String EXTERNAL_LINKS_TABLE_NAME = "external_links"; + public static final String ARBITRARY_DATA_TABLE_NAME = "arbitrary_data"; public static final String VIRTUAL_TABLE_NAME = "virtual"; private static final String CONTENT_PREFIX = "content://"; @@ -64,6 +65,8 @@ public class ProviderMeta { + MainApp.getAuthority() + "/synced_folders"); public static final Uri CONTENT_URI_EXTERNAL_LINKS = Uri.parse(CONTENT_PREFIX + MainApp.getAuthority() + "/external_links"); + public static final Uri CONTENT_URI_ARBITRARY_DATA = Uri.parse(CONTENT_PREFIX + + MainApp.getAuthority() + "/arbitrary_data"); public static final Uri CONTENT_URI_VIRTUAL = Uri.parse(CONTENT_PREFIX + MainApp.getAuthority() + "/virtual"); public static final String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.owncloud.file"; @@ -180,6 +183,11 @@ public class ProviderMeta { public static final String EXTERNAL_LINKS_NAME = "name"; public static final String EXTERNAL_LINKS_URL = "url"; + // Columns of arbitrary data table + public static final String ARBITRARY_DATA_CLOUD_ID = "cloud_id"; + public static final String ARBITRARY_DATA_KEY = "key"; + public static final String ARBITRARY_DATA_VALUE = "value"; + // Columns of virtual public static final String VIRTUAL_TYPE = "type"; public static final String VIRTUAL_OCFILE_ID = "ocfile_id"; diff --git a/src/main/java/com/owncloud/android/providers/FileContentProvider.java b/src/main/java/com/owncloud/android/providers/FileContentProvider.java index e018eae0b6..460a1b453c 100644 --- a/src/main/java/com/owncloud/android/providers/FileContentProvider.java +++ b/src/main/java/com/owncloud/android/providers/FileContentProvider.java @@ -72,7 +72,8 @@ public class FileContentProvider extends ContentProvider { private static final int UPLOADS = 6; private static final int SYNCED_FOLDERS = 7; private static final int EXTERNAL_LINKS = 8; - private static final int VIRTUAL = 9; + private static final int ARBITRARY_DATA = 9; + private static final int VIRTUAL = 10; private static final String TAG = FileContentProvider.class.getSimpleName(); @@ -202,6 +203,9 @@ public class FileContentProvider extends ContentProvider { case EXTERNAL_LINKS: count = db.delete(ProviderTableMeta.EXTERNAL_LINKS_TABLE_NAME, where, whereArgs); break; + case ARBITRARY_DATA: + count = db.delete(ProviderTableMeta.ARBITRARY_DATA_TABLE_NAME, where, whereArgs); + break; case VIRTUAL: count = db.delete(ProviderTableMeta.VIRTUAL_TABLE_NAME, where, whereArgs); break; @@ -339,6 +343,18 @@ public class FileContentProvider extends ContentProvider { } return insertedExternalLinkUri; + case ARBITRARY_DATA: + Uri insertedArbitraryDataUri = null; + long arbitraryDataId = db.insert(ProviderTableMeta.ARBITRARY_DATA_TABLE_NAME, null, values); + if (arbitraryDataId > 0) { + insertedArbitraryDataUri = + ContentUris.withAppendedId(ProviderTableMeta.CONTENT_URI_ARBITRARY_DATA, arbitraryDataId); + } else { + throw new SQLException("ERROR " + uri); + + } + return insertedArbitraryDataUri; + case VIRTUAL: Uri insertedVirtualUri; long virtualId = db.insert(ProviderTableMeta.VIRTUAL_TABLE_NAME, null, values); @@ -401,6 +417,7 @@ public class FileContentProvider extends ContentProvider { mUriMatcher.addURI(authority, "uploads/#", UPLOADS); mUriMatcher.addURI(authority, "synced_folders", SYNCED_FOLDERS); mUriMatcher.addURI(authority, "external_links", EXTERNAL_LINKS); + mUriMatcher.addURI(authority, "arbitrary_data", ARBITRARY_DATA); mUriMatcher.addURI(authority, "virtual", VIRTUAL); return true; @@ -490,6 +507,13 @@ public class FileContentProvider extends ContentProvider { + uri.getPathSegments().get(1)); } break; + case ARBITRARY_DATA: + sqlQuery.setTables(ProviderTableMeta.ARBITRARY_DATA_TABLE_NAME); + if (uri.getPathSegments().size() > 1) { + sqlQuery.appendWhere(ProviderTableMeta._ID + "=" + + uri.getPathSegments().get(1)); + } + break; case VIRTUAL: sqlQuery.setTables(ProviderTableMeta.VIRTUAL_TABLE_NAME); if (uri.getPathSegments().size() > 1) { @@ -518,6 +542,9 @@ public class FileContentProvider extends ContentProvider { case EXTERNAL_LINKS: order = ProviderTableMeta.EXTERNAL_LINKS_NAME; break; + case ARBITRARY_DATA: + order = ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID; + break; case VIRTUAL: order = ProviderTableMeta.VIRTUAL_TYPE; break; @@ -564,25 +591,19 @@ public class FileContentProvider extends ContentProvider { case DIRECTORY: return 0; //updateFolderSize(db, selectionArgs[0]); case SHARES: - return db.update( - ProviderTableMeta.OCSHARES_TABLE_NAME, values, selection, selectionArgs - ); + return db.update(ProviderTableMeta.OCSHARES_TABLE_NAME, values, selection, selectionArgs); case CAPABILITIES: - return db.update( - ProviderTableMeta.CAPABILITIES_TABLE_NAME, values, selection, selectionArgs - ); + return db.update(ProviderTableMeta.CAPABILITIES_TABLE_NAME, values, selection, selectionArgs); case UPLOADS: - int ret = db.update( - ProviderTableMeta.UPLOADS_TABLE_NAME, values, selection, selectionArgs - ); + int ret = db.update(ProviderTableMeta.UPLOADS_TABLE_NAME, values, selection, selectionArgs); trimSuccessfulUploads(db); return ret; case SYNCED_FOLDERS: return db.update(ProviderTableMeta.SYNCED_FOLDERS_TABLE_NAME, values, selection, selectionArgs); + case ARBITRARY_DATA: + return db.update(ProviderTableMeta.ARBITRARY_DATA_TABLE_NAME, values, selection, selectionArgs); default: - return db.update( - ProviderTableMeta.FILE_TABLE_NAME, values, selection, selectionArgs - ); + return db.update(ProviderTableMeta.FILE_TABLE_NAME, values, selection, selectionArgs); } } @@ -638,6 +659,9 @@ public class FileContentProvider extends ContentProvider { // Create external links table createExternalLinksTable(db); + // Create arbitrary data table + createArbitraryData(db); + // Create virtual table createVirtualTable(db); } @@ -958,6 +982,22 @@ public class FileContentProvider extends ContentProvider { } if (oldVersion < 20 && newVersion >= 20) { + Log_OC.i(SQL, "Adding arbitrary data table"); + db.beginTransaction(); + try { + createArbitraryData(db); + upgraded = true; + db.setTransactionSuccessful(); + } finally { + db.endTransaction(); + } + } + + if (!upgraded) { + Log_OC.i(SQL, String.format(Locale.ENGLISH, UPGRADE_VERSION_MSG, oldVersion, newVersion)); + } + + if (oldVersion < 21 && newVersion >= 21) { Log_OC.i(SQL, "Adding virtual table"); db.beginTransaction(); try { @@ -1109,6 +1149,15 @@ public class FileContentProvider extends ContentProvider { ); } + private void createArbitraryData(SQLiteDatabase db) { + db.execSQL("CREATE TABLE " + ProviderTableMeta.ARBITRARY_DATA_TABLE_NAME + "(" + + ProviderTableMeta._ID + " INTEGER PRIMARY KEY, " // id + + ProviderTableMeta.ARBITRARY_DATA_CLOUD_ID + " TEXT, " // cloud id (account name + FQDN) + + ProviderTableMeta.ARBITRARY_DATA_KEY + " TEXT, " // key + + ProviderTableMeta.ARBITRARY_DATA_VALUE + " TEXT) " // value + ); + } + private void createVirtualTable(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + ProviderTableMeta.VIRTUAL_TABLE_NAME + "(" + ProviderTableMeta._ID + " INTEGER PRIMARY KEY, " // id diff --git a/src/main/java/com/owncloud/android/services/AutoUploadJob.java b/src/main/java/com/owncloud/android/services/AutoUploadJob.java index 041bb1a205..7ae6502f6e 100644 --- a/src/main/java/com/owncloud/android/services/AutoUploadJob.java +++ b/src/main/java/com/owncloud/android/services/AutoUploadJob.java @@ -52,7 +52,7 @@ public class AutoUploadJob extends Job { final String filePath = bundle.getString(LOCAL_PATH, ""); final String remotePath = bundle.getString(REMOTE_PATH, ""); final Account account = AccountUtils.getOwnCloudAccountByName(context, bundle.getString(ACCOUNT, "")); - final Integer uploadBehaviour = bundle.getInt(UPLOAD_BEHAVIOUR, -1); + final Integer uploadBehaviour = bundle.getInt(UPLOAD_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_FORGET); File file = new File(filePath); diff --git a/src/main/java/com/owncloud/android/services/ContactsBackupJob.java b/src/main/java/com/owncloud/android/services/ContactsBackupJob.java index 86e4de1377..036e700709 100644 --- a/src/main/java/com/owncloud/android/services/ContactsBackupJob.java +++ b/src/main/java/com/owncloud/android/services/ContactsBackupJob.java @@ -26,7 +26,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; -import android.content.SharedPreferences; import android.database.Cursor; import android.net.Uri; import android.os.IBinder; @@ -39,9 +38,9 @@ import com.evernote.android.job.util.support.PersistableBundleCompat; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; +import com.owncloud.android.datamodel.ArbitraryDataProvider; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.operations.UploadFileOperation; @@ -76,13 +75,15 @@ public class ContactsBackupJob extends Job { boolean force = bundle.getBoolean(FORCE, false); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); - Long lastExecution = sharedPreferences.getLong(ContactsPreferenceActivity.PREFERENCE_CONTACTS_LAST_BACKUP, -1); + final Account account = AccountUtils.getOwnCloudAccountByName(context, bundle.getString(ACCOUNT, "")); + + ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(getContext().getContentResolver()); + Long lastExecution = arbitraryDataProvider.getLongValue(account, + ContactsPreferenceActivity.PREFERENCE_CONTACTS_LAST_BACKUP); if (force || (lastExecution + 24 * 60 * 60 * 1000) < Calendar.getInstance().getTimeInMillis()) { Log_OC.d(TAG, "start contacts backup job"); - final Account account = AccountUtils.getOwnCloudAccountByName(context, bundle.getString(ACCOUNT, "")); String backupFolder = getContext().getResources().getString(R.string.contacts_backup_folder) + OCFile.PATH_SEPARATOR; Integer daysToExpire = getContext().getResources().getInteger(R.integer.contacts_backup_expire); @@ -96,9 +97,9 @@ public class ContactsBackupJob extends Job { OperationsService.BIND_AUTO_CREATE); // store execution date - sharedPreferences.edit().putLong(ContactsPreferenceActivity.PREFERENCE_CONTACTS_LAST_BACKUP, - Calendar.getInstance().getTimeInMillis()).apply(); - + arbitraryDataProvider.storeOrUpdateKeyValue(account, + ContactsPreferenceActivity.PREFERENCE_CONTACTS_LAST_BACKUP, + String.valueOf(Calendar.getInstance().getTimeInMillis())); } else { Log_OC.d(TAG, "last execution less than 24h ago"); } diff --git a/src/main/java/com/owncloud/android/services/ContactsImportJob.java b/src/main/java/com/owncloud/android/services/ContactsImportJob.java index a02b8281fe..39d9e03c81 100644 --- a/src/main/java/com/owncloud/android/services/ContactsImportJob.java +++ b/src/main/java/com/owncloud/android/services/ContactsImportJob.java @@ -64,9 +64,7 @@ public class ContactsImportJob extends Job { vCards.addAll(Ezvcard.parse(file).all()); for (int i = 0; i < intArray.length; i++ ){ - if (intArray[i] == 1){ - operations.insertContact(vCards.get(i)); - } + operations.insertContact(vCards.get(intArray[i])); } } catch (Exception e) { Log_OC.e(TAG, e.getMessage()); diff --git a/src/main/java/com/owncloud/android/ui/activity/ActivitiesListActivity.java b/src/main/java/com/owncloud/android/ui/activity/ActivitiesListActivity.java index 0b22e2e40f..59767dd4fb 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ActivitiesListActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ActivitiesListActivity.java @@ -51,8 +51,8 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.activities.GetRemoteActivitiesOperation; import com.owncloud.android.ui.adapter.ActivityListAdapter; -import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.AnalyticsUtils; +import com.owncloud.android.utils.DisplayUtils; import java.io.IOException; import java.util.ArrayList; @@ -74,10 +74,8 @@ public class ActivitiesListActivity extends FileActivity { @BindView(R.id.empty_list_view) public LinearLayout emptyContentContainer; - @BindView(R.id.swipe_containing_list) public SwipeRefreshLayout swipeListRefreshLayout; - @BindView(R.id.swipe_containing_empty) public SwipeRefreshLayout swipeEmptyListRefreshLayout; @BindView(R.id.empty_list_view_text) @@ -111,9 +109,13 @@ public class ActivitiesListActivity extends FileActivity { setContentView(R.layout.activity_list_layout); unbinder = ButterKnife.bind(this); + // setup toolbar setupToolbar(); + swipeEmptyListRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_containing_empty); + swipeListRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_containing_list); + // setup drawer setupDrawer(R.id.nav_activity); getSupportActionBar().setTitle(getString(R.string.drawer_item_activities)); @@ -197,8 +199,7 @@ public class ActivitiesListActivity extends FileActivity { RemoteOperation getRemoteNotificationOperation = new GetRemoteActivitiesOperation(); Log_OC.d(TAG, "BEFORE getRemoteActivitiesOperation.execute"); - final RemoteOperationResult result = - getRemoteNotificationOperation.execute(mClient); + final RemoteOperationResult result = getRemoteNotificationOperation.execute(mClient); if (result.isSuccess() && result.getData() != null) { final ArrayList activities = result.getData(); diff --git a/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java b/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java index 5315e1c69d..3a062faadc 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ContactsPreferenceActivity.java @@ -21,43 +21,29 @@ package com.owncloud.android.ui.activity; -import android.Manifest; import android.accounts.Account; -import android.app.DatePickerDialog; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; -import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; -import android.support.design.widget.Snackbar; -import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; -import android.support.v7.widget.SwitchCompat; -import android.view.MenuItem; import android.view.View; -import android.widget.CompoundButton; -import android.widget.DatePicker; -import android.widget.TextView; -import android.widget.Toast; import com.evernote.android.job.JobManager; import com.evernote.android.job.JobRequest; import com.evernote.android.job.util.support.PersistableBundleCompat; import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.services.ContactsBackupJob; import com.owncloud.android.ui.fragment.FileFragment; +import com.owncloud.android.ui.fragment.contactsbackup.ContactListFragment; +import com.owncloud.android.ui.fragment.contactsbackup.ContactsBackupFragment; import com.owncloud.android.utils.DisplayUtils; -import com.owncloud.android.utils.PermissionUtil; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; +import org.parceler.Parcels; + import java.util.Set; -import java.util.Vector; /** * This activity shows all settings for contact backup/restore @@ -69,9 +55,6 @@ public class ContactsPreferenceActivity extends FileActivity implements FileFrag public static final String PREFERENCE_CONTACTS_AUTOMATIC_BACKUP = "PREFERENCE_CONTACTS_AUTOMATIC_BACKUP"; public static final String PREFERENCE_CONTACTS_LAST_BACKUP = "PREFERENCE_CONTACTS_LAST_BACKUP"; - private SwitchCompat backupSwitch; - private SharedPreferences sharedPreferences; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -84,41 +67,23 @@ public class ContactsPreferenceActivity extends FileActivity implements FileFrag // setup drawer setupDrawer(R.id.nav_contacts); - getSupportActionBar().setTitle(R.string.actionbar_contacts); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - - sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - - backupSwitch = (SwitchCompat) findViewById(R.id.contacts_automatic_backup); - backupSwitch.setChecked(sharedPreferences.getBoolean(PREFERENCE_CONTACTS_AUTOMATIC_BACKUP, false)); - - backupSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked && - checkAndAskForContactsReadPermission(PermissionUtil.PERMISSIONS_READ_CONTACTS_AUTOMATIC)) { - // store value - setAutomaticBackup(backupSwitch, true); - - // enable daily job - startContactBackupJob(getAccount()); - } else { - setAutomaticBackup(backupSwitch, false); - - // cancel pending jobs - cancelContactBackupJob(getBaseContext()); - } + Intent intent = getIntent(); + if (savedInstanceState == null) { + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); + if (intent == null || intent.getParcelableExtra(ContactListFragment.FILE_NAME) == null || + intent.getParcelableExtra(ContactListFragment.ACCOUNT) == null) { + ContactsBackupFragment fragment = new ContactsBackupFragment(); + Bundle bundle = new Bundle(); + bundle.putParcelable(ContactListFragment.ACCOUNT, getAccount()); + fragment.setArguments(bundle); + transaction.add(R.id.frame_container, fragment); + } else { + OCFile file = Parcels.unwrap(intent.getParcelableExtra(ContactListFragment.FILE_NAME)); + Account account = Parcels.unwrap(intent.getParcelableExtra(ContactListFragment.ACCOUNT)); + ContactListFragment contactListFragment = ContactListFragment.newInstance(file, account); + transaction.add(R.id.frame_container, contactListFragment); } - }); - - // display last backup - TextView lastBackup = (TextView) findViewById(R.id.contacts_last_backup_timestamp); - Long lastBackupTimestamp = sharedPreferences.getLong(PREFERENCE_CONTACTS_LAST_BACKUP, -1); - - if (lastBackupTimestamp == -1) { - lastBackup.setText(R.string.contacts_preference_backup_never); - } else { - lastBackup.setText(DisplayUtils.getRelativeTimestamp(getBaseContext(), lastBackupTimestamp)); + transaction.commit(); } BottomNavigationView bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation_view); @@ -129,184 +94,6 @@ public class ContactsPreferenceActivity extends FileActivity implements FileFrag } } - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - - if (requestCode == PermissionUtil.PERMISSIONS_READ_CONTACTS_AUTOMATIC) { - for (int index = 0; index < permissions.length; index++) { - if (Manifest.permission.READ_CONTACTS.equalsIgnoreCase(permissions[index])) { - if (grantResults[index] >= 0) { - setAutomaticBackup(backupSwitch, true); - } else { - setAutomaticBackup(backupSwitch, false); - } - - break; - } - } - } - - if (requestCode == PermissionUtil.PERMISSIONS_READ_CONTACTS_MANUALLY) { - for (int index = 0; index < permissions.length; index++) { - if (Manifest.permission.READ_CONTACTS.equalsIgnoreCase(permissions[index])) { - if (grantResults[index] >= 0) { - startContactsBackupJob(); - } - - break; - } - } - } - } - - public void backupContacts(View v) { - if (checkAndAskForContactsReadPermission(PermissionUtil.PERMISSIONS_READ_CONTACTS_MANUALLY)) { - startContactsBackupJob(); - } - } - - private void startContactsBackupJob() { - PersistableBundleCompat bundle = new PersistableBundleCompat(); - bundle.putString(ContactsBackupJob.ACCOUNT, getAccount().name); - bundle.putBoolean(ContactsBackupJob.FORCE, true); - - new JobRequest.Builder(ContactsBackupJob.TAG) - .setExtras(bundle) - .setExecutionWindow(3_000L, 10_000L) - .setRequiresCharging(false) - .setPersisted(false) - .setUpdateCurrent(false) - .build() - .schedule(); - - Snackbar.make(findViewById(R.id.contacts_linear_layout), R.string.contacts_preferences_backup_scheduled, - Snackbar.LENGTH_LONG).show(); - } - - private void setAutomaticBackup(SwitchCompat backupSwitch, boolean bool) { - backupSwitch.setChecked(bool); - SharedPreferences.Editor editor = sharedPreferences.edit(); - editor.putBoolean(PREFERENCE_CONTACTS_AUTOMATIC_BACKUP, bool); - editor.apply(); - } - - private boolean checkAndAskForContactsReadPermission(final int permission) { - // check permissions - if ((PermissionUtil.checkSelfPermission(this, Manifest.permission.READ_CONTACTS))) { - return true; - } else { - // Check if we should show an explanation - if (PermissionUtil.shouldShowRequestPermissionRationale(ContactsPreferenceActivity.this, - android.Manifest.permission.READ_CONTACTS)) { - // Show explanation to the user and then request permission - Snackbar snackbar = Snackbar.make(findViewById(R.id.contacts_linear_layout), R.string.contacts_read_permission, - Snackbar.LENGTH_INDEFINITE) - .setAction(R.string.common_ok, new View.OnClickListener() { - @Override - public void onClick(View v) { - PermissionUtil.requestReadContactPermission(ContactsPreferenceActivity.this, permission); - } - }); - - DisplayUtils.colorSnackbar(this, snackbar); - - snackbar.show(); - - return false; - } else { - // No explanation needed, request the permission. - PermissionUtil.requestReadContactPermission(ContactsPreferenceActivity.this, permission); - - return false; - } - } - } - - public void openDate(View v) { - String backupFolderString = getResources().getString(R.string.contacts_backup_folder) + OCFile.PATH_SEPARATOR; - OCFile backupFolder = getStorageManager().getFileByPath(backupFolderString); - - Vector backupFiles = getStorageManager().getFolderContent(backupFolder, false); - - Collections.sort(backupFiles, new Comparator() { - @Override - public int compare(OCFile o1, OCFile o2) { - if (o1.getModificationTimestamp() == o2.getModificationTimestamp()) { - return 0; - } - - if (o1.getModificationTimestamp() > o2.getModificationTimestamp()) { - return 1; - } else { - return -1; - } - } - }); - - Calendar cal = Calendar.getInstance(); - int year = cal.get(Calendar.YEAR); - int month = cal.get(Calendar.MONTH) + 1; - int day = cal.get(Calendar.DAY_OF_MONTH); - - DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() { - @Override - public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { - String backupFolderString = getResources().getString(R.string.contacts_backup_folder) + OCFile.PATH_SEPARATOR; - OCFile backupFolder = getStorageManager().getFileByPath(backupFolderString); - Vector backupFiles = getStorageManager().getFolderContent(backupFolder, false); - - // find file with modification with date and time between 00:00 and 23:59 - // if more than one file exists, take oldest - Calendar date = Calendar.getInstance(); - date.set(year, month, dayOfMonth); - - // start - date.set(Calendar.HOUR, 0); - date.set(Calendar.MINUTE, 0); - date.set(Calendar.SECOND, 1); - date.set(Calendar.MILLISECOND, 0); - date.set(Calendar.AM_PM, Calendar.AM); - Long start = date.getTimeInMillis(); - - // end - date.set(Calendar.HOUR, 23); - date.set(Calendar.MINUTE, 59); - date.set(Calendar.SECOND, 59); - Long end = date.getTimeInMillis(); - - OCFile backupToRestore = null; - - for (OCFile file : backupFiles) { - if (start < file.getModificationTimestamp() && end > file.getModificationTimestamp()) { - if (backupToRestore == null) { - backupToRestore = file; - } else if (backupToRestore.getModificationTimestamp() < file.getModificationTimestamp()) { - backupToRestore = file; - } - } - } - - if (backupToRestore != null) { - Fragment contactListFragment = ContactListFragment.newInstance(backupToRestore, getAccount()); - - FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); - transaction.replace(R.id.contacts_linear_layout, contactListFragment); - transaction.commit(); - } else { - Toast.makeText(ContactsPreferenceActivity.this, R.string.contacts_preferences_no_file_found, - Toast.LENGTH_SHORT).show(); - } - } - }; - - DatePickerDialog datePickerDialog = new DatePickerDialog(this, dateSetListener, year, month, day); - datePickerDialog.getDatePicker().setMaxDate(backupFiles.lastElement().getModificationTimestamp()); - datePickerDialog.getDatePicker().setMinDate(backupFiles.firstElement().getModificationTimestamp()); - - datePickerDialog.show(); - } - public static void startContactBackupJob(Account account) { Log_OC.d(TAG, "start daily contacts backup job"); @@ -323,8 +110,8 @@ public class ContactsPreferenceActivity extends FileActivity implements FileFrag .schedule(); } - public static void cancelContactBackupJob(Context context) { - Log_OC.d(TAG, "disabling contacts backup job"); + public static void cancelAllContactBackupJobs(Context context) { + Log_OC.d(TAG, "disabling all contacts backup job"); JobManager jobManager = JobManager.create(context); Set jobs = jobManager.getAllJobRequestsForTag(ContactsBackupJob.TAG); @@ -334,27 +121,21 @@ public class ContactsPreferenceActivity extends FileActivity implements FileFrag } } + public static void cancelContactBackupJobForAccount(Context context, Account account) { + Log_OC.d(TAG, "disabling contacts backup job for account: " + account.name); - @Override - public boolean onOptionsItemSelected(MenuItem item) { - boolean retval; - switch (item.getItemId()) { - case android.R.id.home: - if (isDrawerOpen()) { - closeDrawer(); - } else { - openDrawer(); - } - retval = true; - break; + JobManager jobManager = JobManager.create(context); + Set jobs = jobManager.getAllJobRequestsForTag(ContactsBackupJob.TAG); - default: - retval = super.onOptionsItemSelected(item); - break; + for (JobRequest jobRequest : jobs) { + PersistableBundleCompat extras = jobRequest.getExtras(); + if (extras.getString(ContactsBackupJob.ACCOUNT, "").equalsIgnoreCase(account.name)) { + jobManager.cancel(jobRequest.getJobId()); + } } - return retval; } + @Override public void showFiles(boolean onDeviceOnly) { super.showFiles(onDeviceOnly); diff --git a/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java b/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java index e177488265..8354da1565 100644 --- a/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java @@ -1199,7 +1199,8 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU Account account = AccountUtils.getCurrentOwnCloudAccount(DrawerActivity.this); - if (account != null && getStorageManager().getCapability(account.name) != null && + if (account != null && getStorageManager() != null && + getStorageManager().getCapability(account.name) != null && getStorageManager().getCapability(account.name).getExternalLinks().isTrue()) { int count = sharedPreferences.getInt(EXTERNAL_LINKS_COUNT, -1); diff --git a/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java b/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java index 17625df860..bde1c32784 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java +++ b/src/main/java/com/owncloud/android/ui/activity/ExternalSiteWebView.java @@ -32,11 +32,11 @@ import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ProgressBar; -import android.widget.Toast; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; +import com.owncloud.android.utils.DisplayUtils; /** * This activity shows an URL as a web view @@ -52,6 +52,7 @@ public class ExternalSiteWebView extends FileActivity { private boolean showSidebar = false; private int menuItemId; + private WebView webview; @Override protected void onCreate(Bundle savedInstanceState) { @@ -69,8 +70,8 @@ public class ExternalSiteWebView extends FileActivity { super.onCreate(savedInstanceState); setContentView(R.layout.externalsite_webview); - WebView webview = (WebView) findViewById(R.id.webView); - WebSettings webSettings = webview.getSettings(); + webview = (WebView) findViewById(R.id.webView); + final WebSettings webSettings = webview.getSettings(); webview.setFocusable(true); webview.setFocusableInTouchMode(true); @@ -122,7 +123,7 @@ public class ExternalSiteWebView extends FileActivity { webview.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { - Toast.makeText(activity, getString(R.string.webview_error) + ": " + description, Toast.LENGTH_SHORT).show(); + webview.loadData(DisplayUtils.getData(getResources().openRawResource(R.raw.custom_error)),"text/html; charset=UTF-8", null); } }); diff --git a/src/main/java/com/owncloud/android/ui/activity/FileActivity.java b/src/main/java/com/owncloud/android/ui/activity/FileActivity.java index dbd3b23a1b..7d181d7772 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FileActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FileActivity.java @@ -28,7 +28,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; -import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -41,8 +40,8 @@ import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.authentication.AuthenticatorActivity; +import com.owncloud.android.datamodel.ArbitraryDataProvider; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.files.services.FileDownloader; import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder; import com.owncloud.android.files.services.FileUploader; @@ -163,8 +162,6 @@ public abstract class FileActivity extends DrawerActivity setAccount(account, savedInstanceState != null); - checkContactsBackupJob(); - mOperationsServiceConnection = new OperationsServiceConnection(); bindService(new Intent(this, OperationsService.class), mOperationsServiceConnection, Context.BIND_AUTO_CREATE); @@ -244,17 +241,6 @@ public abstract class FileActivity extends DrawerActivity } } - private void checkContactsBackupJob() { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); - - if (sharedPreferences.getBoolean(ContactsPreferenceActivity.PREFERENCE_CONTACTS_AUTOMATIC_BACKUP, false)) { - ContactsPreferenceActivity.startContactBackupJob(getAccount()); - } else { - ContactsPreferenceActivity.cancelContactBackupJob(getBaseContext()); - } - } - - /** * Getter for the main {@link OCFile} handled by the activity. * diff --git a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java index 1b0b1ed99c..785ff90bea 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -84,6 +84,7 @@ import com.owncloud.android.services.observer.FileObserverService; import com.owncloud.android.syncadapter.FileSyncAdapter; import com.owncloud.android.ui.dialog.SortingOrderDialogFragment; import com.owncloud.android.ui.events.TokenPushEvent; +import com.owncloud.android.ui.fragment.contactsbackup.ContactListFragment; import com.owncloud.android.ui.fragment.ExtendedListFragment; import com.owncloud.android.ui.fragment.FileDetailFragment; import com.owncloud.android.ui.fragment.FileFragment; @@ -102,6 +103,7 @@ import com.owncloud.android.utils.MimeTypeUtil; import com.owncloud.android.utils.PermissionUtil; import org.greenrobot.eventbus.EventBus; +import org.parceler.Parcels; import java.io.File; import java.util.ArrayList; @@ -434,7 +436,7 @@ public class FileDisplayActivity extends HookActivity updateActionBarTitleAndHomeButton(file); } else { cleanSecondFragment(); - if (file.isDown() && MimeTypeUtil.isVCard(file.getMimetype())){ + if (file.isDown() && MimeTypeUtil.isVCard(file.getMimetype())) { startContactListFragment(file); } else if (file.isDown() && PreviewTextFragment.canBePreviewed(file)) { startTextPreview(file); @@ -603,7 +605,7 @@ public class FileDisplayActivity extends HookActivity if (PreviewMediaFragment.canBePreviewed(mWaitingToPreview)) { startMediaPreview(mWaitingToPreview, 0, true); detailsFragmentChanged = true; - } else if (MimeTypeUtil.isVCard(mWaitingToPreview.getMimetype())){ + } else if (MimeTypeUtil.isVCard(mWaitingToPreview.getMimetype())) { startContactListFragment(mWaitingToPreview); detailsFragmentChanged = true; } else if (PreviewTextFragment.canBePreviewed(mWaitingToPreview)) { @@ -1965,12 +1967,10 @@ public class FileDisplayActivity extends HookActivity } public void startContactListFragment(OCFile file) { - Fragment contactListFragment = ContactListFragment.newInstance(file, getAccount()); - - setSecondFragment(contactListFragment); - updateFragmentsVisibility(true); - updateActionBarTitleAndHomeButton(file); - setFile(file); + Intent intent = new Intent(this, ContactsPreferenceActivity.class); + intent.putExtra(ContactListFragment.FILE_NAME, Parcels.wrap(file)); + intent.putExtra(ContactListFragment.ACCOUNT, Parcels.wrap(getAccount())); + startActivity(intent); } /** diff --git a/src/main/java/com/owncloud/android/ui/activity/FingerprintActivity.java b/src/main/java/com/owncloud/android/ui/activity/FingerprintActivity.java index 815fb476aa..41df82b8b1 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FingerprintActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FingerprintActivity.java @@ -36,6 +36,7 @@ import android.os.CancellationSignal; import android.security.keystore.KeyGenParameterSpec; import android.security.keystore.KeyPermanentlyInvalidatedException; import android.security.keystore.KeyProperties; +import android.support.annotation.RequiresApi; import android.support.v4.app.ActivityCompat; import android.support.v4.graphics.drawable.DrawableCompat; import android.support.v7.app.AppCompatActivity; @@ -256,7 +257,8 @@ public class FingerprintActivity extends AppCompatActivity { Toast.makeText(this, errorSeq, Toast.LENGTH_LONG).show(); } - final static public boolean isFingerprintCapable(Context context) { + @RequiresApi(api = Build.VERSION_CODES.M) + static public boolean isFingerprintCapable(Context context) { try { FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE); @@ -274,7 +276,8 @@ public class FingerprintActivity extends AppCompatActivity { return false; } - final static public boolean isFingerprintReady(Context context) { + @RequiresApi(api = Build.VERSION_CODES.M) + static public boolean isFingerprintReady(Context context) { try { FingerprintManager fingerprintManager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE); diff --git a/src/main/java/com/owncloud/android/ui/activity/FolderSyncActivity.java b/src/main/java/com/owncloud/android/ui/activity/FolderSyncActivity.java index cf829c6095..3602c6f821 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FolderSyncActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FolderSyncActivity.java @@ -45,12 +45,13 @@ import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.datamodel.SyncedFolder; import com.owncloud.android.datamodel.SyncedFolderDisplayItem; import com.owncloud.android.datamodel.SyncedFolderProvider; +import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.ui.adapter.FolderSyncAdapter; import com.owncloud.android.ui.decoration.MediaGridItemDecoration; import com.owncloud.android.ui.dialog.SyncedFolderPreferencesDialogFragment; import com.owncloud.android.ui.dialog.parcel.SyncedFolderParcelable; -import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.AnalyticsUtils; +import com.owncloud.android.utils.DisplayUtils; import java.io.File; import java.util.ArrayList; @@ -303,7 +304,7 @@ public class FolderSyncActivity extends FileActivity implements FolderSyncAdapte false, false, AccountUtils.getCurrentOwnCloudAccount(this).name, - 0, + FileUploader.LOCAL_BEHAVIOUR_FORGET, false, mediaFolder.filePaths, mediaFolder.folderName, diff --git a/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java b/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java index e46d52bcb5..b09d41b185 100644 --- a/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.java @@ -52,8 +52,8 @@ import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.notifications.GetRemoteNotificationsOperation; import com.owncloud.android.lib.resources.notifications.models.Notification; import com.owncloud.android.ui.adapter.NotificationListAdapter; -import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.AnalyticsUtils; +import com.owncloud.android.utils.DisplayUtils; import java.io.IOException; import java.util.List; @@ -74,10 +74,8 @@ public class NotificationsActivity extends FileActivity { @BindView(R.id.empty_list_view) public LinearLayout emptyContentContainer; - @BindView(R.id.swipe_containing_list) public SwipeRefreshLayout swipeListRefreshLayout; - @BindView(R.id.swipe_containing_empty) public SwipeRefreshLayout swipeEmptyListRefreshLayout; @BindView(R.id.empty_list_view_text) @@ -116,6 +114,9 @@ public class NotificationsActivity extends FileActivity { // setup toolbar setupToolbar(); + swipeEmptyListRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_containing_empty); + swipeListRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_containing_list); + // setup drawer setupDrawer(R.id.nav_notifications); getSupportActionBar().setTitle(getString(R.string.drawer_item_notifications)); @@ -296,7 +297,7 @@ public class NotificationsActivity extends FileActivity { } @Override - public void onResume(){ + public void onResume() { super.onResume(); AnalyticsUtils.setCurrentScreenName(this, SCREEN_NAME, TAG); } diff --git a/src/main/java/com/owncloud/android/ui/activity/Preferences.java b/src/main/java/com/owncloud/android/ui/activity/Preferences.java index c730c7c1f1..657ea9a322 100644 --- a/src/main/java/com/owncloud/android/ui/activity/Preferences.java +++ b/src/main/java/com/owncloud/android/ui/activity/Preferences.java @@ -189,41 +189,49 @@ public class Preferences extends PreferenceActivity boolean fPrintEnabled = getResources().getBoolean(R.bool.fingerprint_enabled); fPrint = (CheckBoxPreference) findPreference(FingerprintActivity.PREFERENCE_USE_FINGERPRINT); if (fPrint != null) { - if(FingerprintActivity.isFingerprintCapable(MainApp.getAppContext()) && fPrintEnabled) { - fPrint.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - Boolean incoming = (Boolean) newValue; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (FingerprintActivity.isFingerprintCapable(MainApp.getAppContext()) && fPrintEnabled) { + fPrint.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + Boolean incoming = (Boolean) newValue; - if(FingerprintActivity.isFingerprintReady(MainApp.getAppContext())) { - SharedPreferences appPrefs = - PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - SharedPreferences.Editor editor = appPrefs.edit(); - editor.putBoolean("use_fingerprint", incoming); - editor.commit(); - return true; - } else { - if(incoming) { - Toast.makeText( - MainApp.getAppContext(), - R.string.prefs_fingerprint_notsetup, - Toast.LENGTH_LONG) - .show(); - fPrint.setChecked(false); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (FingerprintActivity.isFingerprintReady(MainApp.getAppContext())) { + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences.Editor editor = appPrefs.edit(); + editor.putBoolean("use_fingerprint", incoming); + editor.apply(); + return true; + } else { + if (incoming) { + Toast.makeText( + MainApp.getAppContext(), + R.string.prefs_fingerprint_notsetup, + Toast.LENGTH_LONG) + .show(); + fPrint.setChecked(false); + } + SharedPreferences appPrefs = + PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + SharedPreferences.Editor editor = appPrefs.edit(); + editor.putBoolean("use_fingerprint", false); + editor.apply(); + return false; + } + } else { + return false; } - SharedPreferences appPrefs = - PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - SharedPreferences.Editor editor = appPrefs.edit(); - editor.putBoolean("use_fingerprint", false); - editor.commit(); - return false; } + }); + if (!FingerprintActivity.isFingerprintReady(MainApp.getAppContext())) { + fPrint.setChecked(false); } - }); - if(!FingerprintActivity.isFingerprintReady(MainApp.getAppContext())) { - fPrint.setChecked(false); - } + } else { + preferenceCategoryDetails.removePreference(fPrint); + } } else { preferenceCategoryDetails.removePreference(fPrint); } diff --git a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 3b0f23f5a6..6949b5569c 100755 --- a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -26,7 +26,6 @@ package com.owncloud.android.ui.activity; import android.accounts.Account; import android.accounts.AccountManager; import android.accounts.AuthenticatorException; -import android.annotation.SuppressLint; import android.app.Dialog; import android.content.BroadcastReceiver; import android.content.Context; @@ -609,7 +608,7 @@ public class ReceiveExternalFilesActivity extends FileActivity @Nullable private File createTempFile(String filename, String text) { - File file = new File(((ReceiveExternalFilesActivity)getActivity()).getCacheDir(), filename); + File file = new File(getActivity().getCacheDir(), filename); FileWriter fw = null; try { fw = new FileWriter(file); @@ -862,7 +861,6 @@ public class ReceiveExternalFilesActivity extends FileActivity finish(); } - @SuppressLint("NewApi") public void uploadFiles() { UriUploader uploader = new UriUploader( diff --git a/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java b/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java index 6d4954a7d9..380dfab126 100644 --- a/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java @@ -47,16 +47,22 @@ import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; +import com.google.gson.Gson; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.authentication.AuthenticatorActivity; +import com.owncloud.android.datamodel.ArbitraryDataProvider; +import com.owncloud.android.datamodel.PushConfigurationState; import com.owncloud.android.lib.common.UserInfo; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.users.GetRemoteUserInfoOperation; +import com.owncloud.android.ui.events.TokenPushEvent; import com.owncloud.android.utils.DisplayUtils; +import com.owncloud.android.utils.PushUtils; +import org.greenrobot.eventbus.EventBus; import org.parceler.Parcels; import butterknife.BindString; @@ -337,11 +343,38 @@ public class UserInfoActivity extends FileActivity { new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { - Bundle bundle = new Bundle(); - bundle.putParcelable(KEY_ACCOUNT, Parcels.wrap(account)); - Intent intent = new Intent(); - intent.putExtras(bundle); + // remove contact backup job + ContactsPreferenceActivity.cancelContactBackupJobForAccount(getActivity(), account); + + // disable daily backup + ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider( + getActivity().getContentResolver()); + + arbitraryDataProvider.storeOrUpdateKeyValue(account, + ContactsPreferenceActivity.PREFERENCE_CONTACTS_AUTOMATIC_BACKUP, + "false"); + + + String arbitraryDataPushString; + + if (!TextUtils.isEmpty(arbitraryDataPushString = arbitraryDataProvider.getValue( + account, PushUtils.KEY_PUSH)) && + !TextUtils.isEmpty(getResources().getString(R.string.push_server_url))) { + Gson gson = new Gson(); + PushConfigurationState pushArbitraryData = gson.fromJson(arbitraryDataPushString, + PushConfigurationState.class); + pushArbitraryData.setShouldBeDeleted(true); + arbitraryDataProvider.storeOrUpdateKeyValue(account, PushUtils.KEY_PUSH, + gson.toJson(pushArbitraryData)); + EventBus.getDefault().post(new TokenPushEvent()); + } + + if (getActivity() != null && !removeDirectly) { + Bundle bundle = new Bundle(); + bundle.putParcelable(KEY_ACCOUNT, Parcels.wrap(account)); + Intent intent = new Intent(); + intent.putExtras(bundle); getActivity().setResult(KEY_DELETE_CODE, intent); getActivity().finish(); } else { diff --git a/src/main/java/com/owncloud/android/ui/events/VCardToggleEvent.java b/src/main/java/com/owncloud/android/ui/events/VCardToggleEvent.java new file mode 100644 index 0000000000..6c06d40cb6 --- /dev/null +++ b/src/main/java/com/owncloud/android/ui/events/VCardToggleEvent.java @@ -0,0 +1,28 @@ +/** + * Nextcloud Android client application + * + * @author Mario Danic + * Copyright (C) 2017 Mario Danic + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package com.owncloud.android.ui.events; + +public class VCardToggleEvent { + public boolean showRestoreButton; + + public VCardToggleEvent(boolean showRestore) { + this.showRestoreButton = showRestore; + } +} diff --git a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java index 531fc23e9c..d76aecf82e 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java @@ -591,11 +591,18 @@ public class ExtendedListFragment extends Fragment * * @param enabled Desired visibility for the FAB. */ - public void setFabEnabled(boolean enabled) { - if (enabled) { - mFabMain.setVisibility(View.VISIBLE); - } else { - mFabMain.setVisibility(View.GONE); + public void setFabEnabled(final boolean enabled) { + if (getActivity() != null) { + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + if (enabled) { + mFabMain.setVisibility(View.VISIBLE); + } else { + mFabMain.setVisibility(View.GONE); + } + } + }); } } diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index ed83455fcd..957823df33 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -651,13 +651,6 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi super.onViewStateRestored(savedInstanceState); if (savedInstanceState != null) { - mAdapter = new FileListListAdapter( - mJustFolders, - getActivity(), - mContainerActivity, - this, - mContainerActivity.getStorageManager()); - searchEvent = Parcels.unwrap(savedInstanceState.getParcelable(SEARCH_EVENT)); } diff --git a/src/main/java/com/owncloud/android/ui/activity/ContactListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java similarity index 64% rename from src/main/java/com/owncloud/android/ui/activity/ContactListFragment.java rename to src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java index 074f2574eb..67d839baf3 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ContactListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactListFragment.java @@ -19,7 +19,7 @@ * along with this program. If not, see . */ -package com.owncloud.android.ui.activity; +package com.owncloud.android.ui.fragment.contactsbackup; import android.Manifest; import android.accounts.Account; @@ -30,6 +30,7 @@ import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; +import android.os.Handler; import android.provider.ContactsContract; import android.support.annotation.NonNull; import android.support.design.widget.Snackbar; @@ -39,12 +40,15 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CheckedTextView; import android.widget.ImageView; +import android.widget.LinearLayout; import com.evernote.android.job.JobRequest; import com.evernote.android.job.util.support.PersistableBundleCompat; @@ -54,10 +58,16 @@ import com.owncloud.android.files.services.FileDownloader; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.services.ContactsImportJob; import com.owncloud.android.ui.TextDrawable; +import com.owncloud.android.ui.activity.ContactsPreferenceActivity; +import com.owncloud.android.ui.events.VCardToggleEvent; import com.owncloud.android.ui.fragment.FileFragment; import com.owncloud.android.utils.BitmapUtils; import com.owncloud.android.utils.PermissionUtil; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -65,6 +75,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import butterknife.BindView; +import butterknife.ButterKnife; import ezvcard.Ezvcard; import ezvcard.VCard; import ezvcard.property.StructuredName; @@ -72,15 +84,24 @@ import ezvcard.property.StructuredName; /** * This fragment shows all contacts from a file and allows to import them. */ - public class ContactListFragment extends FileFragment { public static final String TAG = ContactListFragment.class.getSimpleName(); public static final String FILE_NAME = "FILE_NAME"; public static final String ACCOUNT = "ACCOUNT"; - private RecyclerView recyclerView; - private Set checkedVCards; + public static final String CHECKED_ITEMS_ARRAY_KEY = "CHECKED_ITEMS"; + + @BindView(R.id.contactlist_recyclerview) + public RecyclerView recyclerView; + + @BindView(R.id.contactlist_restore_selected_container) + public LinearLayout restoreContactsContainer; + + @BindView(R.id.contactlist_restore_selected) + public Button restoreContacts; + + private ContactListAdapter contactListAdapter; public static ContactListFragment newInstance(OCFile file, Account account) { ContactListFragment frag = new ContactListFragment(); @@ -92,14 +113,29 @@ public class ContactListFragment extends FileFragment { return frag; } + /** + * {@inheritDoc} + */ + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.contactlist_menu, menu); + } + @Override public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.contactlist_fragment, null); + ButterKnife.bind(this, view); + setHasOptionsMenu(true); + ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + contactsPreferenceActivity.getSupportActionBar().setTitle(R.string.actionbar_contacts_restore); + contactsPreferenceActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + contactsPreferenceActivity.setDrawerIndicatorEnabled(false); + ArrayList vCards = new ArrayList<>(); - checkedVCards = new HashSet<>(); try { OCFile ocFile = getArguments().getParcelable(FILE_NAME); @@ -116,10 +152,9 @@ public class ContactListFragment extends FileFragment { vCards.addAll(Ezvcard.parse(file).all()); } } catch (IOException e) { - e.printStackTrace(); + Log_OC.e(TAG, "Error processing contacts file!", e); } - final Button restoreContacts = (Button) view.findViewById(R.id.contactlist_restore_selected); restoreContacts.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -132,36 +167,19 @@ public class ContactListFragment extends FileFragment { recyclerView = (RecyclerView) view.findViewById(R.id.contactlist_recyclerview); - - ContactListAdapter.OnVCardClickListener vCardClickListener = new ContactListAdapter.OnVCardClickListener() { - private void setRestoreButton() { - if (checkedVCards.size() > 0) { - restoreContacts.setEnabled(true); - restoreContacts.setBackgroundColor(getResources().getColor(R.color.primary_button_background_color)); - } else { - restoreContacts.setEnabled(false); - restoreContacts.setBackgroundColor(getResources().getColor(R.color.standard_grey)); - } + if (savedInstanceState == null) { + contactListAdapter = new ContactListAdapter(getContext(), vCards); + } else { + Set checkedItems = new HashSet<>(); + int[] itemsArray = savedInstanceState.getIntArray(CHECKED_ITEMS_ARRAY_KEY); + for (int i = 0; i < itemsArray.length; i++) { + checkedItems.add(itemsArray[i]); } - - @Override - public void onVCardCheck(int position) { - checkedVCards.add(position); - Log_OC.d(TAG, position + " checked"); - - setRestoreButton(); + if (checkedItems.size() > 0) { + onMessageEvent(new VCardToggleEvent(true)); } - - @Override - public void onVCardUncheck(int position) { - checkedVCards.remove(position); - Log_OC.d(TAG, position + " unchecked"); - - setRestoreButton(); - } - }; - - ContactListAdapter contactListAdapter = new ContactListAdapter(getContext(), vCards, vCardClickListener); + contactListAdapter = new ContactListAdapter(getContext(), vCards, checkedItems); + } recyclerView.setAdapter(contactListAdapter); recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); @@ -169,11 +187,75 @@ public class ContactListFragment extends FileFragment { } @Override - public void onPrepareOptionsMenu(Menu menu) { - menu.findItem(R.id.action_search).setVisible(false); - menu.findItem(R.id.action_sync_account).setVisible(false); - menu.findItem(R.id.action_sort).setVisible(false); - menu.findItem(R.id.action_switch_view).setVisible(false); + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putIntArray(CHECKED_ITEMS_ARRAY_KEY, contactListAdapter.getCheckedIntArray()); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void onMessageEvent(VCardToggleEvent event) { + if (event.showRestoreButton) { + restoreContactsContainer.setVisibility(View.VISIBLE); + } else { + restoreContactsContainer.setVisibility(View.GONE); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + contactsPreferenceActivity.setDrawerIndicatorEnabled(true); + } + + public void onResume() { + super.onResume(); + ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + contactsPreferenceActivity.setDrawerIndicatorEnabled(false); + } + + @Override + public void onStart() { + super.onStart(); + EventBus.getDefault().register(this); + } + + @Override + public void onStop() { + EventBus.getDefault().unregister(this); + super.onStop(); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + boolean retval; + ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + + switch (item.getItemId()) { + case android.R.id.home: + contactsPreferenceActivity.onBackPressed(); + retval = true; + break; + case R.id.action_select_all: + item.setChecked(!item.isChecked()); + setSelectAllMenuItem(item, item.isChecked()); + contactListAdapter.selectAllFiles(item.isChecked()); + retval = true; + break; + default: + retval = super.onOptionsItemSelected(item); + break; + } + return retval; + } + + private void setSelectAllMenuItem(MenuItem selectAll, boolean checked) { + selectAll.setChecked(checked); + if(checked) { + selectAll.setIcon(R.drawable.ic_select_none); + } else { + selectAll.setIcon(R.drawable.ic_select_all); + } } static class ContactItemViewHolder extends RecyclerView.ViewHolder { @@ -211,19 +293,11 @@ public class ContactListFragment extends FileFragment { } private void importContacts(ContactAccount account) { - int[] intArray = new int[checkedVCards.size()]; - - int i = 0; - for (Integer checkedVCard : checkedVCards) { - intArray[i] = checkedVCard; - i++; - } - PersistableBundleCompat bundle = new PersistableBundleCompat(); bundle.putString(ContactsImportJob.ACCOUNT_NAME, account.name); bundle.putString(ContactsImportJob.ACCOUNT_TYPE, account.type); bundle.putString(ContactsImportJob.VCARD_FILE_PATH, getFile().getStoragePath()); - bundle.putIntArray(ContactsImportJob.CHECKED_ITEMS_ARRAY, intArray); + bundle.putIntArray(ContactsImportJob.CHECKED_ITEMS_ARRAY, contactListAdapter.getCheckedIntArray()); new JobRequest.Builder(ContactsImportJob.TAG) .setExtras(bundle) @@ -234,8 +308,19 @@ public class ContactListFragment extends FileFragment { .build() .schedule(); - Snackbar.make(recyclerView, R.string.contacts_preferences_import_scheduled, Snackbar.LENGTH_LONG).show(); + + Handler handler = new Handler(); + handler.postDelayed(new Runnable() { + @Override + public void run() { + if (getFragmentManager().getBackStackEntryCount() > 0) { + getFragmentManager().popBackStack(); + } else { + getActivity().finish(); + } + } + }, 1750); } private void getAccountForImport() { @@ -269,13 +354,14 @@ public class ContactListFragment extends FileFragment { } catch (Exception e) { Log_OC.d(TAG, e.getMessage()); } finally { - cursor.close(); + if (cursor != null) { + cursor.close(); + } } if (accounts.size() == 1) { importContacts(accounts.get(0)); } else { - ArrayAdapter adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, accounts); AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); builder.setTitle(R.string.contactlist_account_chooser_title) @@ -291,7 +377,8 @@ public class ContactListFragment extends FileFragment { private boolean checkAndAskForContactsWritePermission() { // check permissions if (!PermissionUtil.checkSelfPermission(getContext(), Manifest.permission.WRITE_CONTACTS)) { - PermissionUtil.requestWriteContactPermission(this); + requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS}, + PermissionUtil.PERMISSIONS_WRITE_CONTACTS); return false; } else { return true; @@ -346,15 +433,46 @@ public class ContactListFragment extends FileFragment { class ContactListAdapter extends RecyclerView.Adapter { private List vCards; - private Context context; - private OnVCardClickListener vCardClickListener; + private Set checkedVCards; - ContactListAdapter(Context context, List vCards, OnVCardClickListener vCardClickListener) { + private Context context; + + ContactListAdapter(Context context, List vCards) { this.vCards = vCards; this.context = context; - this.vCardClickListener = vCardClickListener; + this.checkedVCards = new HashSet<>(); } + ContactListAdapter(Context context, List vCards, + Set checkedVCards) { + this.vCards = vCards; + this.context = context; + this.checkedVCards = checkedVCards; + } + + public int getCheckedCount() { + if (checkedVCards != null) { + return checkedVCards.size(); + } else { + return 0; + } + } + + public int[] getCheckedIntArray() { + int[] intArray; + if (checkedVCards != null && checkedVCards.size() > 0) { + intArray = new int[checkedVCards.size()]; + int i = 0; + for (int position: checkedVCards) { + intArray[i] = position; + i++; + } + return intArray; + } else { + intArray = new int[0]; + return intArray; + } + } @Override public ContactListFragment.ContactItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { @@ -365,9 +483,15 @@ class ContactListAdapter extends RecyclerView.Adapter(); + if (select) { + for (int i = 0; i < vCards.size(); i++) { + checkedVCards.add(i); + } + } - void onVCardUncheck(int position); + if (checkedVCards.size() > 0) { + EventBus.getDefault().post(new VCardToggleEvent(true)); + } else { + EventBus.getDefault().post(new VCardToggleEvent(false)); + } + + notifyDataSetChanged(); } } diff --git a/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java new file mode 100644 index 0000000000..150826763a --- /dev/null +++ b/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/ContactsBackupFragment.java @@ -0,0 +1,463 @@ +/** + * Nextcloud Android client application + * + * @author Mario Danic + * Copyright (C) 2017 Mario Danic + * Copyright (C) 2017 Nextcloud GmbH. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package com.owncloud.android.ui.fragment.contactsbackup; + +import android.Manifest; +import android.accounts.Account; +import android.app.DatePickerDialog; +import android.content.DialogInterface; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.design.widget.Snackbar; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; +import android.support.v7.widget.AppCompatButton; +import android.support.v7.widget.SwitchCompat; +import android.view.LayoutInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CompoundButton; +import android.widget.DatePicker; +import android.widget.TextView; +import android.widget.Toast; + +import com.evernote.android.job.JobRequest; +import com.evernote.android.job.util.support.PersistableBundleCompat; +import com.owncloud.android.R; +import com.owncloud.android.datamodel.ArbitraryDataProvider; +import com.owncloud.android.datamodel.OCFile; +import com.owncloud.android.services.ContactsBackupJob; +import com.owncloud.android.ui.activity.ContactsPreferenceActivity; +import com.owncloud.android.ui.fragment.FileFragment; +import com.owncloud.android.utils.DisplayUtils; +import com.owncloud.android.utils.PermissionUtil; + +import java.util.Calendar; +import java.util.Collections; +import java.util.Comparator; +import java.util.Date; +import java.util.Vector; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; + +import static com.owncloud.android.ui.activity.ContactsPreferenceActivity.PREFERENCE_CONTACTS_AUTOMATIC_BACKUP; +import static com.owncloud.android.ui.activity.ContactsPreferenceActivity.PREFERENCE_CONTACTS_LAST_BACKUP; + +public class ContactsBackupFragment extends FileFragment implements DatePickerDialog.OnDateSetListener { + public static final String TAG = ContactsBackupFragment.class.getSimpleName(); + + @BindView(R.id.contacts_automatic_backup) + public SwitchCompat backupSwitch; + + @BindView(R.id.contacts_header_restore) + public TextView contactsRestoreHeader; + + @BindView(R.id.contacts_datepicker) + public AppCompatButton contactsDatePickerBtn; + + @BindView(R.id.contacts_last_backup_timestamp) + public TextView lastBackup; + + private Date selectedDate = null; + private boolean calendarPickerOpen; + + private DatePickerDialog datePickerDialog; + + private CompoundButton.OnCheckedChangeListener onCheckedChangeListener; + + private static final String KEY_CALENDAR_PICKER_OPEN = "IS_CALENDAR_PICKER_OPEN"; + private static final String KEY_CALENDAR_DAY = "CALENDAR_DAY"; + private static final String KEY_CALENDAR_MONTH = "CALENDAR_MONTH"; + private static final String KEY_CALENDAR_YEAR = "CALENDAR_YEAR"; + private ArbitraryDataProvider arbitraryDataProvider; + private Account account; + + + @Override + public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + View view = inflater.inflate(R.layout.contacts_backup_fragment, null); + ButterKnife.bind(this, view); + + setHasOptionsMenu(true); + + final ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + + account = (Account) getArguments().get(ContactListFragment.ACCOUNT); + + contactsPreferenceActivity.getSupportActionBar().setTitle(R.string.actionbar_contacts); + contactsPreferenceActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); + + arbitraryDataProvider = new ArbitraryDataProvider(getContext().getContentResolver()); + + backupSwitch.setChecked(arbitraryDataProvider.getBooleanValue(account, PREFERENCE_CONTACTS_AUTOMATIC_BACKUP)); + + onCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (checkAndAskForContactsReadPermission()) { + if (isChecked) { + setAutomaticBackup(true); + } else { + setAutomaticBackup(false); + } + } + } + }; + + backupSwitch.setOnCheckedChangeListener(onCheckedChangeListener); + + // display last backup + Long lastBackupTimestamp = arbitraryDataProvider.getLongValue(account, PREFERENCE_CONTACTS_LAST_BACKUP); + + if (lastBackupTimestamp == -1) { + lastBackup.setText(R.string.contacts_preference_backup_never); + } else { + lastBackup.setText(DisplayUtils.getRelativeTimestamp(contactsPreferenceActivity, lastBackupTimestamp)); + } + + if (savedInstanceState != null && savedInstanceState.getBoolean(KEY_CALENDAR_PICKER_OPEN, false)) { + if (savedInstanceState.getInt(KEY_CALENDAR_YEAR, -1) != -1 && + savedInstanceState.getInt(KEY_CALENDAR_MONTH, -1) != -1 && + savedInstanceState.getInt(KEY_CALENDAR_DAY, -1) != -1) { + selectedDate = new Date(savedInstanceState.getInt(KEY_CALENDAR_YEAR), + savedInstanceState.getInt(KEY_CALENDAR_MONTH), savedInstanceState.getInt(KEY_CALENDAR_DAY)); + } + calendarPickerOpen = true; + } + + return view; + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + } + + @Override + public void onResume() { + super.onResume(); + + if (calendarPickerOpen) { + if (selectedDate != null) { + openDate(selectedDate); + } else { + openDate(null); + } + } + + final ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + + String backupFolderString = getResources().getString(R.string.contacts_backup_folder) + OCFile.PATH_SEPARATOR; + OCFile backupFolder = contactsPreferenceActivity.getStorageManager().getFileByPath(backupFolderString); + + Vector backupFiles = contactsPreferenceActivity.getStorageManager().getFolderContent(backupFolder, + false); + + if (backupFiles == null || backupFiles.size() == 0) { + contactsRestoreHeader.setVisibility(View.GONE); + contactsDatePickerBtn.setVisibility(View.GONE); + } else { + contactsRestoreHeader.setVisibility(View.VISIBLE); + contactsDatePickerBtn.setVisibility(View.VISIBLE); + } + } + + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + final ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + + boolean retval; + switch (item.getItemId()) { + case android.R.id.home: + if (contactsPreferenceActivity.isDrawerOpen()) { + contactsPreferenceActivity.closeDrawer(); + } else { + contactsPreferenceActivity.openDrawer(); + } + retval = true; + break; + + default: + retval = super.onOptionsItemSelected(item); + break; + } + return retval; + } + + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + + if (requestCode == PermissionUtil.PERMISSIONS_READ_CONTACTS_AUTOMATIC) { + for (int index = 0; index < permissions.length; index++) { + if (Manifest.permission.READ_CONTACTS.equalsIgnoreCase(permissions[index])) { + if (grantResults[index] >= 0) { + setAutomaticBackup(true); + } else { + backupSwitch.setOnCheckedChangeListener(null); + backupSwitch.setChecked(false); + backupSwitch.setOnCheckedChangeListener(onCheckedChangeListener); + } + + break; + } + } + } + + if (requestCode == PermissionUtil.PERMISSIONS_READ_CONTACTS_MANUALLY) { + for (int index = 0; index < permissions.length; index++) { + if (Manifest.permission.READ_CONTACTS.equalsIgnoreCase(permissions[index])) { + if (grantResults[index] >= 0) { + startContactsBackupJob(); + } + + break; + } + } + } + } + + @OnClick(R.id.contacts_backup_now) + public void backupContacts() { + if (checkAndAskForContactsReadPermission()) { + startContactsBackupJob(); + } + } + + private void startContactsBackupJob() { + final ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + + PersistableBundleCompat bundle = new PersistableBundleCompat(); + bundle.putString(ContactsBackupJob.ACCOUNT, contactsPreferenceActivity.getAccount().name); + bundle.putBoolean(ContactsBackupJob.FORCE, true); + + new JobRequest.Builder(ContactsBackupJob.TAG) + .setExtras(bundle) + .setExecutionWindow(3_000L, 10_000L) + .setRequiresCharging(false) + .setPersisted(false) + .setUpdateCurrent(false) + .build() + .schedule(); + + Snackbar.make(getView().findViewById(R.id.contacts_linear_layout), + R.string.contacts_preferences_backup_scheduled, + Snackbar.LENGTH_LONG).show(); + } + + private void setAutomaticBackup(final boolean bool) { + + final ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + + if (bool) { + ContactsPreferenceActivity.startContactBackupJob(contactsPreferenceActivity.getAccount()); + } else { + ContactsPreferenceActivity.cancelContactBackupJobForAccount(contactsPreferenceActivity, + contactsPreferenceActivity.getAccount()); + } + + arbitraryDataProvider.storeOrUpdateKeyValue(account, PREFERENCE_CONTACTS_AUTOMATIC_BACKUP, + String.valueOf(bool)); + } + + private boolean checkAndAskForContactsReadPermission() { + final ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + + // check permissions + if ((PermissionUtil.checkSelfPermission(contactsPreferenceActivity, Manifest.permission.READ_CONTACTS))) { + return true; + } else { + // Check if we should show an explanation + if (PermissionUtil.shouldShowRequestPermissionRationale(contactsPreferenceActivity, + android.Manifest.permission.READ_CONTACTS)) { + // Show explanation to the user and then request permission + Snackbar snackbar = Snackbar.make(getView().findViewById(R.id.contacts_linear_layout), + R.string.contacts_read_permission, + Snackbar.LENGTH_INDEFINITE) + .setAction(R.string.common_ok, new View.OnClickListener() { + @Override + public void onClick(View v) { + requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, + PermissionUtil.PERMISSIONS_READ_CONTACTS_AUTOMATIC); + } + }); + + DisplayUtils.colorSnackbar(contactsPreferenceActivity, snackbar); + + snackbar.show(); + + return false; + } else { + // No explanation needed, request the permission. + requestPermissions(new String[]{Manifest.permission.READ_CONTACTS}, + PermissionUtil.PERMISSIONS_READ_CONTACTS_AUTOMATIC); + return false; + } + } + } + + @OnClick(R.id.contacts_datepicker) + public void openCleanDate() { + openDate(null); + } + + public void openDate(@Nullable Date savedDate) { + final ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + + String backupFolderString = getResources().getString(R.string.contacts_backup_folder) + OCFile.PATH_SEPARATOR; + OCFile backupFolder = contactsPreferenceActivity.getStorageManager().getFileByPath(backupFolderString); + + Vector backupFiles = contactsPreferenceActivity.getStorageManager().getFolderContent(backupFolder, + false); + + Collections.sort(backupFiles, new Comparator() { + @Override + public int compare(OCFile o1, OCFile o2) { + if (o1.getModificationTimestamp() == o2.getModificationTimestamp()) { + return 0; + } + + if (o1.getModificationTimestamp() > o2.getModificationTimestamp()) { + return 1; + } else { + return -1; + } + } + }); + + Calendar cal = Calendar.getInstance(); + int year; + int month; + int day; + + if (savedDate == null) { + year = cal.get(Calendar.YEAR); + month = cal.get(Calendar.MONTH) + 1; + day = cal.get(Calendar.DAY_OF_MONTH); + } else { + year = savedDate.getYear(); + month = savedDate.getMonth(); + day = savedDate.getDay(); + } + + if (backupFiles.size() > 0 && backupFiles.lastElement() != null) { + datePickerDialog = new DatePickerDialog(contactsPreferenceActivity, this, year, month, day); + datePickerDialog.getDatePicker().setMaxDate(backupFiles.lastElement().getModificationTimestamp()); + datePickerDialog.getDatePicker().setMinDate(backupFiles.firstElement().getModificationTimestamp()); + + datePickerDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + selectedDate = null; + } + }); + + datePickerDialog.show(); + } else { + Toast.makeText(contactsPreferenceActivity, R.string.contacts_preferences_something_strange_happened, + Toast.LENGTH_SHORT).show(); + } + } + + @Override + public void onStop() { + super.onStop(); + if (datePickerDialog != null) { + datePickerDialog.dismiss(); + } + } + + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + if (datePickerDialog != null) { + outState.putBoolean(KEY_CALENDAR_PICKER_OPEN, datePickerDialog.isShowing()); + + if (datePickerDialog.isShowing()) { + outState.putInt(KEY_CALENDAR_DAY, datePickerDialog.getDatePicker().getDayOfMonth()); + outState.putInt(KEY_CALENDAR_MONTH, datePickerDialog.getDatePicker().getMonth()); + outState.putInt(KEY_CALENDAR_YEAR, datePickerDialog.getDatePicker().getYear()); + } + } + } + + @Override + public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { + final ContactsPreferenceActivity contactsPreferenceActivity = (ContactsPreferenceActivity) getActivity(); + selectedDate = new Date(year, month, dayOfMonth); + + String backupFolderString = getResources().getString(R.string.contacts_backup_folder) + OCFile.PATH_SEPARATOR; + OCFile backupFolder = contactsPreferenceActivity.getStorageManager().getFileByPath(backupFolderString); + Vector backupFiles = contactsPreferenceActivity.getStorageManager().getFolderContent( + backupFolder, false); + + // find file with modification with date and time between 00:00 and 23:59 + // if more than one file exists, take oldest + Calendar date = Calendar.getInstance(); + date.set(year, month, dayOfMonth); + + // start + date.set(Calendar.HOUR, 0); + date.set(Calendar.MINUTE, 0); + date.set(Calendar.SECOND, 1); + date.set(Calendar.MILLISECOND, 0); + date.set(Calendar.AM_PM, Calendar.AM); + Long start = date.getTimeInMillis(); + + // end + date.set(Calendar.HOUR, 23); + date.set(Calendar.MINUTE, 59); + date.set(Calendar.SECOND, 59); + Long end = date.getTimeInMillis(); + + OCFile backupToRestore = null; + + for (OCFile file : backupFiles) { + if (start < file.getModificationTimestamp() && end > file.getModificationTimestamp()) { + if (backupToRestore == null) { + backupToRestore = file; + } else if (backupToRestore.getModificationTimestamp() < file.getModificationTimestamp()) { + backupToRestore = file; + } + } + } + + if (backupToRestore != null) { + Fragment contactListFragment = ContactListFragment.newInstance(backupToRestore, + contactsPreferenceActivity.getAccount()); + + FragmentTransaction transaction = contactsPreferenceActivity.getSupportFragmentManager(). + beginTransaction(); + transaction.replace(R.id.frame_container, contactListFragment); + transaction.addToBackStack(null); + transaction.commit(); + } else { + Toast.makeText(contactsPreferenceActivity, R.string.contacts_preferences_no_file_found, + Toast.LENGTH_SHORT).show(); + } + } +} diff --git a/src/main/java/com/owncloud/android/ui/preview/ImageViewCustom.java b/src/main/java/com/owncloud/android/ui/preview/ImageViewCustom.java index 167ae59b88..97be7039ef 100644 --- a/src/main/java/com/owncloud/android/ui/preview/ImageViewCustom.java +++ b/src/main/java/com/owncloud/android/ui/preview/ImageViewCustom.java @@ -1,6 +1,5 @@ package com.owncloud.android.ui.preview; -import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -45,7 +44,6 @@ public class ImageViewCustom extends ImageView { super(context, attrs, defStyle); } - @SuppressLint("NewApi") @Override protected void onDraw(Canvas canvas) { if(IS_ICS_OR_HIGHER && checkIfMaximumBitmapExceed(canvas) || IS_VERSION_BUGGY_ON_RECYCLES ) { @@ -109,10 +107,8 @@ public class ImageViewCustom extends ImageView { * @param canvas Canvas where the view will be drawn into. * @return boolean True means that the bitmap is too big for the canvas. */ - @SuppressLint("NewApi") private boolean checkIfMaximumBitmapExceed(Canvas canvas) { - return mBitmapWidth > canvas.getMaximumBitmapWidth() - || mBitmapHeight > canvas.getMaximumBitmapHeight(); + return mBitmapWidth > canvas.getMaximumBitmapWidth() || mBitmapHeight > canvas.getMaximumBitmapHeight(); } diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java index 8bb8f561f1..c3cb92309e 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -109,7 +109,6 @@ public class PreviewImageActivity extends FileActivity implements // to keep our UI controls visibility in line with system bars visibility mFullScreenAnchorView.setOnSystemUiVisibilityChangeListener (new View.OnSystemUiVisibilityChangeListener() { - @SuppressLint("InlinedApi") @Override public void onSystemUiVisibilityChange(int flags) { boolean visible = (flags & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0; @@ -441,9 +440,7 @@ public class PreviewImageActivity extends FileActivity implements return true; } - @SuppressLint("InlinedApi") public void toggleFullScreen() { - boolean visible = (mFullScreenAnchorView.getSystemUiVisibility() & View.SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0; diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java b/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java index 59617f349e..d1f983831c 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -19,7 +19,6 @@ package com.owncloud.android.ui.preview; import android.accounts.Account; -import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.res.Resources; @@ -31,6 +30,7 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.PictureDrawable; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.support.annotation.DrawableRes; import android.support.annotation.StringRes; @@ -549,7 +549,6 @@ public class PreviewImageFragment extends FileFragment { } } - @SuppressLint("InlinedApi") private void showLoadedImage(LoadImage result) { final ImageViewCustom imageView = mImageViewRef.get(); Bitmap bitmap = result.bitmap; @@ -575,20 +574,23 @@ public class PreviewImageFragment extends FileFragment { } layers[1] = bitmapDrawable; LayerDrawable layerDrawable = new LayerDrawable(layers); - if (result.ocFile.getMimetype().equalsIgnoreCase("image/png") ) { - layerDrawable.setLayerHeight(0, convertDpToPixel(bitmap.getHeight(), getActivity())); - layerDrawable.setLayerHeight(1, convertDpToPixel(bitmap.getHeight(), getActivity())); - layerDrawable.setLayerWidth(0, convertDpToPixel(bitmap.getWidth(), getActivity())); - layerDrawable.setLayerWidth(1, convertDpToPixel(bitmap.getWidth(), getActivity())); - } else { - layerDrawable.setLayerHeight(0, convertDpToPixel(bitmapDrawable.getIntrinsicHeight(), - getActivity())); - layerDrawable.setLayerHeight(1, convertDpToPixel(bitmapDrawable.getIntrinsicHeight(), - getActivity())); - layerDrawable.setLayerWidth(0, convertDpToPixel(bitmapDrawable.getIntrinsicWidth(), - getActivity())); - layerDrawable.setLayerWidth(1, convertDpToPixel(bitmapDrawable.getIntrinsicWidth(), - getActivity())); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (result.ocFile.getMimetype().equalsIgnoreCase("image/png")) { + layerDrawable.setLayerHeight(0, convertDpToPixel(bitmap.getHeight(), getActivity())); + layerDrawable.setLayerHeight(1, convertDpToPixel(bitmap.getHeight(), getActivity())); + layerDrawable.setLayerWidth(0, convertDpToPixel(bitmap.getWidth(), getActivity())); + layerDrawable.setLayerWidth(1, convertDpToPixel(bitmap.getWidth(), getActivity())); + } else { + layerDrawable.setLayerHeight(0, convertDpToPixel(bitmapDrawable.getIntrinsicHeight(), + getActivity())); + layerDrawable.setLayerHeight(1, convertDpToPixel(bitmapDrawable.getIntrinsicHeight(), + getActivity())); + layerDrawable.setLayerWidth(0, convertDpToPixel(bitmapDrawable.getIntrinsicWidth(), + getActivity())); + layerDrawable.setLayerWidth(1, convertDpToPixel(bitmapDrawable.getIntrinsicWidth(), + getActivity())); + } } imageView.setImageDrawable(layerDrawable); } else { @@ -664,7 +666,8 @@ public class PreviewImageFragment extends FileFragment { } private void toggleImageBackground() { - if (getFile() != null && (getFile().getMimetype().equalsIgnoreCase("image/png") || + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && getFile() != null + && (getFile().getMimetype().equalsIgnoreCase("image/png") || getFile().getMimetype().equalsIgnoreCase("image/svg+xml")) && getActivity() != null && getActivity() instanceof PreviewImageActivity && getResources() != null) { PreviewImageActivity previewImageActivity = (PreviewImageActivity) getActivity(); diff --git a/src/main/java/com/owncloud/android/utils/DisplayUtils.java b/src/main/java/com/owncloud/android/utils/DisplayUtils.java index a6af423123..379f190634 100644 --- a/src/main/java/com/owncloud/android/utils/DisplayUtils.java +++ b/src/main/java/com/owncloud/android/utils/DisplayUtils.java @@ -81,7 +81,10 @@ import com.owncloud.android.utils.svg.SvgDrawableTranscoder; import org.greenrobot.eventbus.EventBus; import org.parceler.Parcels; +import java.io.BufferedReader; +import java.io.IOException; import java.io.InputStream; +import java.io.InputStreamReader; import java.math.BigDecimal; import java.net.IDN; import java.text.DateFormat; @@ -647,4 +650,27 @@ public class DisplayUtils { activity.startActivity(recentlyAddedIntent); } } + + + /** + * Get String data from a InputStream + * + * @param inputStream The File InputStream + */ + public static String getData(InputStream inputStream){ + + BufferedReader buffreader = new BufferedReader(new InputStreamReader(inputStream)); + String line; + StringBuilder text = new StringBuilder(); + try { + while (( line = buffreader.readLine()) != null) { + text.append(line); + text.append('\n'); + } + } catch (IOException e) { + Log_OC.e(TAG,e.getMessage()); + } + return text.toString(); + } + } diff --git a/src/main/java/com/owncloud/android/utils/PermissionUtil.java b/src/main/java/com/owncloud/android/utils/PermissionUtil.java index f0a326664b..8e39d0dc53 100644 --- a/src/main/java/com/owncloud/android/utils/PermissionUtil.java +++ b/src/main/java/com/owncloud/android/utils/PermissionUtil.java @@ -52,36 +52,4 @@ public class PermissionUtil { new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSIONS_WRITE_EXTERNAL_STORAGE); } - - /** - * request the read permission for contacts - * - * @param activity The target activity. - */ - public static void requestReadContactPermission(Activity activity, int permission) { - ActivityCompat.requestPermissions(activity, - new String[]{Manifest.permission.READ_CONTACTS}, - permission); - } - - /** - * request the write permission for contacts - * - * @param activity The target activity. - */ - public static void requestWriteContactPermission(Activity activity) { - ActivityCompat.requestPermissions(activity, - new String[]{Manifest.permission.WRITE_CONTACTS}, - PERMISSIONS_WRITE_CONTACTS); - } - - /** - * request the write permission for contacts - * - * @param fragment The target fragment. - */ - public static void requestWriteContactPermission(android.support.v4.app.Fragment fragment) { - fragment.requestPermissions(new String[]{Manifest.permission.WRITE_CONTACTS}, - PERMISSIONS_WRITE_CONTACTS); - } } diff --git a/src/main/res/layout/contactlist_fragment.xml b/src/main/res/layout/contactlist_fragment.xml index f9543f808d..ae0f7eda1d 100644 --- a/src/main/res/layout/contactlist_fragment.xml +++ b/src/main/res/layout/contactlist_fragment.xml @@ -21,6 +21,7 @@ - + android:background="@color/white" + android:orientation="vertical" + android:visibility="gone"> + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/contactlist_list_item.xml b/src/main/res/layout/contactlist_list_item.xml index 96f5c620fa..6d5ad5ed38 100644 --- a/src/main/res/layout/contactlist_list_item.xml +++ b/src/main/res/layout/contactlist_list_item.xml @@ -18,7 +18,6 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . --> - diff --git a/src/main/res/layout/contacts_backup_fragment.xml b/src/main/res/layout/contacts_backup_fragment.xml new file mode 100644 index 0000000000..6f2518cb16 --- /dev/null +++ b/src/main/res/layout/contacts_backup_fragment.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/res/layout/contacts_preference.xml b/src/main/res/layout/contacts_preference.xml index fb4a59172f..217ceb8b1b 100644 --- a/src/main/res/layout/contacts_preference.xml +++ b/src/main/res/layout/contacts_preference.xml @@ -28,7 +28,7 @@ @@ -36,88 +36,14 @@ - + android:id="@+id/frame_container"> - - - - - - - - - - - - - - - - - - + + + + + + + diff --git a/src/main/res/raw/custom_error.html b/src/main/res/raw/custom_error.html new file mode 100644 index 0000000000..187dc5febc --- /dev/null +++ b/src/main/res/raw/custom_error.html @@ -0,0 +1,4 @@ + +

Sorry

+Modified + \ No newline at end of file diff --git a/src/main/res/values-cs-rCZ/strings.xml b/src/main/res/values-cs-rCZ/strings.xml index 03aa07a1d9..f6d06fb9dd 100644 --- a/src/main/res/values-cs-rCZ/strings.xml +++ b/src/main/res/values-cs-rCZ/strings.xml @@ -13,10 +13,24 @@ Odeslat Seřadit Seřadit podle + Řadit podle + A - Z + Z - A + První nejnovější + První nejstarší + První největší Všechny soubory + Domů + Oblíbené + Fotky Na přístroji + Nedávno přidané + Nedávno změněné + Sdíleno Nastavení Nahrání + Aktivity + Upozornění %1$s z %2$s použito Zavřít Otevřít @@ -25,6 +39,8 @@ Účty Spravovat účty Zámek bezpečnostního kódu + Zámek otiskemprstu + Nebyly nastaveny žádné otisky prstů. Zobrazit skryté soubory Okamžité nahrávání obrázků Okamžitě nahrávat vytvořené fotografie @@ -81,6 +97,8 @@ Pro tento typ souboru nebyla nalezena aplikace! V tomto adresáři nejsou žádné soubory. V této složce nebylo nic nalezeno + Žádné výsledky + Zatím není nic oblíbeno Zkusit hledat v jiné složce? Nic k nahrání Nahrajte nějaký obsah, nebo aktivujte okamžité nahrání! @@ -95,7 +113,7 @@ Upraven: Stáhnout Synchronizovat - Soubor byl v průběhu odesílání přejmenován na %1$s + Soubor byl během nahrávání přejmenován na %1$s Náhled seznamu Sdílet Ano @@ -122,10 +140,10 @@ Název adresáře Odesílám … %1$d%% Odesílám %2$s - Odesílání úspěšné + Nahráno %1$s nahráno Odesílání selhalo - Odesílání %1$s nemohlo být dokončeno + Nepodařilo se nahrát %1$s Nahrání selhalo, je třeba se znovu přihlásit Nahrání Aktuální @@ -142,21 +160,21 @@ Místní soubor nenalezen Chyba oprávnění Konflikt - Aplikace byla ukončena + Aplikace ukončena Neznámá chyba - Čekání na wifi připojení + Čeká se na Wi-Fi připojení Čekání na nahrávání Stahuji … %1$d%% Stahuji %2$s - Stažení úspěšné + Staženo %1$s staženo Stažení selhalo - Stažení %1$s nemohlo být dokončeno + Nepodařilo se stáhnout %1$s Ještě nestaženo Stažení selhalo, je třeba se znovu přihlásit Vybrat účet Synchronizace selhala - Synchronizace selhala, je třeba se znovu přihlásit + Synchronizace se nezdařila, musíte se znovu přihlásit. Synchronizace %1$s nemohla být dokončena Chybné heslo pro %1$s Nalezeny konflikty @@ -192,12 +210,12 @@ Neposkytnut žádný účet Soubor není v platném účtu Nepodporovaný kodek - Multimediální soubor nelze přečíst - Multimediální soubor není správně kódován + Nepodařilo se přečíst soubor médií + Soubor médií má neplatné kódování Vypršel čas při pokusu o přehrání Multimediální soubor nelze proudově odesílat Multimediální soubor nemůže být přehrán s výchozím přehrávačem - Chyba zabezpečení při pokusu o přehrání %1$s + Při pokusu o přehrání %1$s došlo k bezpečnostní chybě Chyba vstupu při pokusu o přehrání %1$s Neočekávaná chyba při pokusu o přehrání %1$s Tlačítko Přetočit @@ -215,7 +233,7 @@ Zadaný uživatel neodpovídá uživateli tohoto účtu Nastala neznámá chyba Nelze najít hostitele - Instance serveru nenalezena + Server nenalezen Serveru trvalo příliš dlouho odpovědět Chybný formát adresy serveru Inicializace SSL selhala @@ -239,19 +257,21 @@ Nastavit jako dostupné offline Zrušit nastavení dostupnosti offline + Nastavit jako oblíbené + Zrušit jako oblíbené Přejmenovat Odstranit Opravdu chcete odstranit %1$s? Opravdu chcete odstranit %1$s a jeho obsah? Pouze místní - Úspěšně odstraněno + Odstraněno Odstranění nelze dokončit Zadejte nový název Místní kopii nelze přejmenovat, zkuste jiný nový název Přejmenování nelze dokončit - Vzdálený soubor nemohl být zkontrolován + Nepodařilo se zkontrolovat vzdálený soubor Obsah souboru je již synchronizován - Adresář nemohl být vytvořen + Nepodařilo se vytvořit složku Zakázané znaky: / \\ < > : \" | ? * Jméno souboru obsahuje aelspoň jeden neplatný znak Název nemůže být prázdný @@ -301,7 +321,7 @@ 12:23:45 Nahrávat pouze přes wifi - Nahrávat obrázky pouze přes wifi + Nahrávat obrázky pouze na Wi-Fi Nahrávat videa pouze přes wifi Nahrávat pouze při nabíjení Nahrávat pouze při nabíjení @@ -312,8 +332,9 @@ místní verze serverová verze - Omlouváme se za to! Náhled obrázku + Nelze zobrazit obrázek + %1$s nelze zkopírovat do místního adresáře %2$s Adresář pro okamžité nahrání Místní adresář @@ -321,7 +342,7 @@ Používat podadresáře Ukládat v podadresářích podle roku a měsíce - Je nám líto, ale sdílení není na vašem serveru povoleno. Kontaktujte svého správce systému. + Sdílení není na vašem serveru povoleno. Prosím, kontaktujte vašeho administrátora. Nelze sdílet. Zkontrolujte prosím že soubor existuje Při pokusu o sdílení tohoto souboru či adresáře nastala chyba Nelze ukončit sdílení. Zkontrolujte prosím že soubor existuje @@ -345,7 +366,8 @@ Při čekání na odpověď serveru se vyskytla chyba, operace nemohla být dokončena Při čekání na odpověď serveru se vyskytla chyba, operace nemohla být dokončena Operace nemohla být dokončena, server je nedostupný - Nemáte oprávnění %s + + Nemáte oprávnění k %s přejmenovat tento soubor smazat tento soubor sdílet tento soubor @@ -366,16 +388,16 @@ Čištění… Obnovování konfigurace účtů… Dokončeno - CHYBA: Nedostatek volného prostoru - CHYBA: Do souboru nelze zapisovat + CHYBA: Nedostatečné místo + CHYBA: Soubor není zapisovatelný CHYBA: Soubor nelze číst CHYBA: Nextcloud adresář již existuje CHYBA: V průběhu migrace CHYBA: V průběhu aktualizace indexu Datový adresář již existuje, co teď? - Přepsat - Použít existující + Nahradit + Použít Účty Přidat účet @@ -384,7 +406,7 @@ Logy Historie odesílání - Nenalezena aplikace pro odesílání logů. Nainstalujte prosím emailovou aplikaci. + Nebyla nalezena aplikace k odesílání protokolů. Prosím, nainstalujte e-mailového klienta. %1$s logy aplikace pro Android Nahrávání dat … @@ -397,14 +419,14 @@ Nelze přesunout. Zkontrolujte prosím že soubor existuje Není možné adresář přesunout do vlastního podadresáře - Soubor již v cílovém adresáři existuje + Soubor již v cílové složce existuje Při pokusu o přesun tohoto souboru či adresáře nastala chyba pro přesun tohoto souboru Nelze zkopírpovat. Zkontrolujte prosím že soubor existuje Není možné adresář zkopírovat do jeho vlastního podadresáře - Soubor již v cílovém adresáři existuje + Soubor již v cílové složce existuje Při pokusu o zkopírování tohoto souboru či adresáře došlo k chybě pro zkopírování tohoto souboru @@ -480,8 +502,8 @@ Opakování selhalo Vyčištění selhalo - Vyčištění úspěšné - Vyčistit všechny ukončené + Vyčištěno + Vyčistit dokončená nahrávání Zobrazení v mřížce Zobrazení v seznamu @@ -495,16 +517,17 @@ Soubor nebyl nalezen v místním souborovém systému Opravdu chcete odstranit vybrané položky? Opravdu chcete odstranit vybrané položky a jejich obsah? - Čekání na zahájení nabíjení + Čekání na nabití Hledat Toto je Nextcloud funkce, prosím nahrát Více Automatické nahrávání Zúčastnit se Pomoz nám testovat - Našel jsi chybu? Něco nefunguje? + Našli jste chybu? Něco podivného? Nahlásit chybu na Github Chceš nám pomoci testovat další verzi? + Testovat noční verzi Zahrnuje všechny nadcházející funkce a pohybuje se na hraně stability. Mohou se vyskytnout chyby, a pokud ano, nahlašte nám je prosím. Předběžná verze Předběžná verze nebo také Release Candidate (RC) je stabilní stav připravované, finální verze. Přihlas se jako tester v Play store nebo si najdi a instaluj hodící se verzi z F-Droid pod \"Verze\". @@ -512,7 +535,6 @@ Diskutovat na IRC: <a href="%1$s">#nextcloud-mobile</a> Pomozte ostatním na <a href="%1$s">fóru</a> <a href="%1$s">Přeložte</a> aplikaci - Přispět jako vývojář, detaily pod <a href="https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a> Přesunout do… Kopírovat do… Vybrat adresář… @@ -528,7 +550,10 @@ vybráno %d - Zadejte jméno a typ souboru k nahrání + Načítání aktivit… + Prosíme, vraťte se později. + + Jméno a typ vstupního souboru k nahrání Jméno souboru Typ souboru Soubor textového úryvku(.txt) @@ -544,7 +569,7 @@ Bezpečné místo pro všechna vaše data - Přistupujte, sdílejte a ochraňte své soubory doma, ale i ve své firmě + Přistupujte, sdílejte a ochraňte své domácí a pracovní soubory Multi účet Připojte se ke všem svým cloudům @@ -554,9 +579,12 @@ Přeskočit + Prosím, naskenujte svůj otisk prstu + Otisk prstu nerozpoznán + Celé jméno - Email + E-mail Telefonní číslo Adresa Webová stránka @@ -564,4 +592,18 @@ Uživatelské informace + + Zatím žádná aktivita + Došlo k chybě + O aplikaci + + Obnovit poslední zálohu + Obnovit + Záloha + Poslední záloha + Je třeba oprávnění ke čtení seznamu kontaktů + Zvolte datum + Nikdy + + Přijato nové upozornění diff --git a/src/main/res/values-de-rDE/strings.xml b/src/main/res/values-de-rDE/strings.xml index b2deac4823..d8eace745d 100644 --- a/src/main/res/values-de-rDE/strings.xml +++ b/src/main/res/values-de-rDE/strings.xml @@ -1,6 +1,6 @@ - %1$s Android-App + %1$s Android App Version %1$s Konto aktualisieren Hochladen @@ -13,7 +13,7 @@ Senden Sortieren Sortiere nach - Sortiere nach + Sortieren nach A - Z Z - A Neueste zuerst @@ -46,60 +46,61 @@ Fingerabdruck-Sperre Keine Fingerabdrücke eingerichtet. Versteckte Dateien anzeigen - Sofortiger Bilderupload - Fotos von der Kamera sofort hochladen - Sofortiger Videoupload - Videos von der Kamera sofort hochladen + Sofortiges Hochladen von Bildern + Laden Sie mit der Kamera gemachte Fotos sofort hoch + Sofortiges Hochladen von Videos + Laden Sie mit der Kamera gemachte Videos sofort hoch Protokollierung aktivieren - Dies wird zur Protokollierung von Problemen benutzt - Protokollverlauf - Dies zeigt die gespeicherten Protokolle + Dies wird zur Protokollierung von Problemen genutzt + Protokollierungs-Historie + Dies zeigt die gespeicherten Protokollierungen Verlauf löschen Kalender & Kontakte synchronisieren DAVdroid (v1.3.0+) für aktuelles Konto einrichten Serveradresse des Kontos für die DAVdroid-Nutzung konnte nicht ermittelt werden - Weder Google Play Store noch F-Droid App installiert - Kalender- & Kontakte-Synchronisierung erfolgreich konfiguriert + Weder F-Droid noch Google-Play sind installiert + Kalender- & Adress-Synchronisation konfigurieren Hilfe - Dies einem Freund empfehlen + Einem Freund empfehlen Rückmeldungen Impressum Geteilten Speicherort merken - Geteilten Upload-Speicherort merken + Zuletzt verwendeten, geteilten Upload-Speicherort merken - %1$s auf Ihrem Smartphone ausprobieren! - Ich empfehle Ihnen die Nutzung von %1$s auf Ihrem Smartphone!\nSie können die App hier herunterladen: %2$s + Probieren Sie %1$s auf Ihrem Smartphone! + Ich empfehle Ihnen die Nutzung von %1$s auf Ihrem Smartphone!\nLaden Sie es hier herunter: %2$s Server überprüfen Server-Adresse https://… Benutzername Passwort - Sie haben bislang keinen Server?\nHier klicken um Server-Anbieter zu finden + Sie haben noch keinen Server?\nKlicke hier um Server-Anbieter zu finden Dateien Verbinden Hochladen Hochladeordner auswählen Kein Konto gefunden - Es sind keine %1$s-Konten auf Ihrem Gerät eingerichtet. Bitte richten Sie zuerst ein Konto ein. + Es sind keine %1$s Konten auf Ihrem Gerät eingerichtet. Bitte erstellen Sie zuerst ein Konto. Einrichten Beenden Keine Datei zum Hochladen %1$s kann einen Textteil als Datei hochladen Empfangene Daten enthalten keine gültige Datei. - Datei kann nicht hochgeladen werden + Diese Datei kan nicht hochgeladen werden %1$s darf eine empfangene Datei nicht lesen - Hochzuladende Datei wurde an seinem Ort nicht gefunden. Prüfen Sie, dass die Datei existiert. - Es ist ein Fehler beim Kopieren dieser Datei in einen temporären Ordner aufgetreten. Bitte versuchen Sie erneut die Datei zu senden. + Die zum Hochladen ausgewählte Datei kann nicht gefunden werden. Bitte prüfe ob die Datei existiert. + + Es ist ein Fehler beim Kopieren dieser Datei in einen temporären Ordner aufgetreten. Bitte erneut versuchen die Datei zu senden. Upload Option: - In Nextcloud Ordner verschieben - Hochladen und Datei im ursprünglichen Ordner behalten - Lösche Datei aus dem ursprünglichen Ordner + Datei in Nextcloud Ordner verschieben + Hochladen und im Quellordner behalten + Hochladen und Datei im Quellordner löschen Gerade eben - Keine Dateien vorhanden - Laden Sie Inhalte hoch oder synchronisieren Sie sie mit Ihren Geräten! - Favorisieren Sie einige Dateien oder synchronisieren Sie Ihre Geräte! - Dateien und Ordner, die Sie als Favoriten kennzeichnen, werden hier erscheinen - Keine favorisierten Dateien in Ihrem Verlauf gefunden! + Keine Dateien vorhanden + Laden Sie Inhalt hoch oder synchronisieren Sie mit Ihren Geräten. + Favorisieren Sie einige Dateien oder synchronisieren Sie Ihre Geräte. + Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier + Keine favorisierten Dateien in Ihrem Verlauf gefunden. Lade… Es wurde keine App für diesen Dateityp gefunden! Es befinden sich keine Dateien in diesem Ordner. @@ -107,22 +108,21 @@ Keine Ergebnisse Noch keine Favoriten vorhanden Noch nichts geteilt - Dateien und Ordner, die Sie teilen, werden hier erscheinen + Von dir geteilte Dateien und Ordner werden hier erscheinen Keine Videos Keine Fotos - In einem anderen Ordner suchen? + Vielleicht befindet es sich in einem anderen Ordner? Keine, innerhalb der letzten 7 Tage, geänderten Dateien gefunden - Keine Dateien in Ihrem Verlauf gefunden, -  die in den letzten 7 Tagen geändert wurden! - Keine kürzlich hinzu gefügten Dateien gefunden - Keine kürzlich hinzu gefügten Dateien in Ihrem Verlauf gefunden! - Laden Sie Fotos hoch oder aktivieren Sie den Sofort-Upload! - Keine Fotos in Ihrem Verlauf gefunden! - Laden Sie einige Videos hoch oder aktivieren Sie den Sofort-Upload! - Keine Videos in Ihrem Verlauf gefunden! + Keine Dateien gefunden, die in den letzten 7 Tagen geändert wurden. + Keine kürzlich hinzugefügten Dateien gefunden + Keine kürzlich hinzu gefügten Dateien gefunden! + Laden Sie Fotos hoch oder aktivieren Sie den Sofortupload! + Keine Fotos gefunden. + Laden Sie einige Videos hoch oder aktivieren Sie den Sofortupload. + Keine Videos gefunden. Keine Uploads verfügbar - Laden Sie Inhalte hoch oder aktivieren Sie den Sofort-Upload! - Laden Sie Inhalte hoch oder aktivieren Sie den Sofort-Upload! + Laden Sie Inhalte hoch oder aktivieren Sie den Sofortupload. + Laden Sie Inhalte hoch oder aktivieren Sie den Auto Upload! Ordner Ordner Datei @@ -134,19 +134,19 @@ Geändert: Herunterladen Synchronisieren - Datei wurde während des Uploads zu %1$s umbenannt - Listenlayout + Datei während des Hochladens in %1$s umbenannt + Layout der Liste Teilen Ja Nein OK Upload entfernen - Hochladen wiederholen + Versuchen Sie es erneut hochzuladen Synchronisation abbrechen Abbrechen Zurück Speichern - Speichern & Schließen + Speichern & verlassen Fehler Lade … unbekannt @@ -156,23 +156,23 @@ Passwort ändern Benutzerkonto löschen Das Konto %s löschen?\n\nDas Löschen kann nicht rückgängig gemacht werden. - Konto erstellen - Hochladen von … + Benutzerkonto erstellen + Dateien hochladen von … Ordnername Hochladen … %1$d%% Hochladen %2$s - Hochladen erfolgreich + Hochgeladen %1$s hochgeladen Hochladen fehlgeschlagen - Hochladen von %1$s konnte nicht abgeschlossen werden - Hochladen fehlgeschlagen, Sie müssen sich erneut anmelden. + Konnte %1$s nicht hochladen + Hochladen fehlgeschlagen, erneute Anmeldung erforderlich Uploads Aktuell Fehlgeschlagen (Tippen zum Wiederholen) Hochgeladen Fertiggestellt Abgebrochen - Pausiert + pausiert Verbindungsfehler Hochladen wird in Kürze erneut versucht Zugangsdaten falsch @@ -181,137 +181,137 @@ Lokale Datei nicht gefunden Berechtigungsfehler Konflikt - Die Anwendung wurde beendet + App beendet Unbekannter Fehler - Warte auf WLAN-Verbindung - Warten auf das Hochladen + Warte auf W-Lan-Verbindung + Warte auf Hochladen Herunterladen … - %1$d%% beim Laden von %2$s - Herunterladen erfolgreich - %1$s wurde erfolgreich heruntergeladen + %1$d%% Herunterladen %2$s + Heruntergeladen + %1$s heruntergeladen Herunterladen fehlgeschlagen - Herunterladen von %1$s konnte nicht abgeschlossen werden - Noch nicht heruntergeladen - Herunterladen fehlgeschlagen, Sie müssen sich erneut anmelden. + Konnte %1$s nicht herunterladen + Noch nicht Heruntergeladen + Herunterladen fehlgeschlagen, erneute Anmeldung erforderlich Konto auswählen Synchronisation fehlgeschlagen - Synchronisation fehlgeschlagen, Sie müssen sich erneut anmelden. + Synchronisation fehlgeschlagen. Sie müssen sich erneut anmelden Synchronisation von %1$s konnte nicht abgeschlossen werden - Ungültiges Passwort für %1$s + Falsches Passwort für %1$s Konflikte gefunden - %1$d Synchronisationsdateien konnten nicht synchronisiert werden. - Synchronisationsdateien konnten nicht synchronisiert werden. + %1$d synchron zu haltende Dateien konnten nicht synchronisiert werden. + Synchronhalten schlug fehl. Inhalte von %1$d Dateien konnten nicht synchronisiert werden (%2$d Konflikte) Einige lokale Dateien wurden vergessen - %1$d Dateien aus dem %2$s Ordner konnten nicht kopiert werden nach - Seit Version 1.3.16 werden Dateien die von diesem Gerät aus hochgeladen werden in den lokalen Ordner %1$s kopiert um Datenverlust zu vermeiden, wenn eine einzelne Datei mit mehreren Accounts synchronisiert wird.\n\nInfolge dieser Änderung wurden alle Dateien, die mit vorherigen Versionen dieser App hochgeladen wurden, in den Ordner %2$s verschoben. Jedoch ist während der Account-Synchronisation ein Fehler aufgetreten, der das Abschließen dieses Vorgangs verhindert. Sie können die Datei(en) entweder wie sie sind belassen und den Link zu %3$s entfernen oder die Datei(en) in den %1$s Ordner verschieben und den Link zu %4$s beibehalten.\n\nUnten befindet sich eine Liste der lokalen Datei(en) und der mit ihnen verbundenen Remote-Datei(en) in %5$s. - Das Verzeichnis %1$s existiert nicht mehr - Verschiebe alle + %1$d Dateien aus dem %2$s Verzeichnis konnten nicht kopiert werden nach + Seit Version 1.3.16 werden Dateien die von diesem Gerät aus hochgeladen werden in den lokalen Ordner %1$s kopiert um Datenverlust zu vermeiden, wenn eine einzelne Datei mit mehreren Accounts synchronisiert wird.\n\nInfolge dieser Änderung wurden alle Dateien, die mit vorherigen Versionen dieser App hochgeladen wurden, in den Ordner %2$s verschoben. Jedoch ist während der Konto-Synchronisation ein Fehler aufgetreten, der das Abschließen dieses Vorgangs verhindert hat. Die Datei(en) können entweder wie sie sind belassen und den Link zu %3$s entfernt werden oder die Datei(en) in den Ordner %1$s verschoben und den Link zu %4$s beibehalten werden.\n\nUnten befindet sich eine Liste der lokalen Datei(en) und der mit ihnen verbundenen Remote-Datei(en) in %5$s. + Der Ordner %1$s existiert nicht mehr + Alle verschieben Alle Dateien wurden verschoben Einige Dateien konnten nicht verschoben werden Lokal: %1$s - Entfernte Freigabe: %1$s + Remote: %1$s Es steht nicht genügend Speicherplatz zur Verfügung, um die ausgewählten Dateien in das Verzeichnis %1$s zu kopieren. Sollen diese stattdessen verschoben werden? - Bitte geben Sie ihre PIN ein + Bitte geben Sie Ihre PIN ein Bitte PIN eingeben - Die PIN wird jedes mal wenn die App gestartet wird abgefragt - Bitte PIN erneut eingeben + Die PIN wird jedes mal beim Start der App abgefragt + Bitte Ihre PIN nochmals eingeben PIN entfernen Die PINs stimmen nicht überein PIN nicht korrekt PIN entfernt PIN gespeichert - %1$s Musikplayer - %1$s (läuft) - %1$s (lädt) - %1$s Wiedergabe beendet + %1$s Musik Player + %1$s (wird abgespielt) + %1$s (wird geladen) + %1$s Wiedergabe Beendet Keine Mediendatei gefunden Kein Konto angegeben - Datei ist nicht in einem gültigen Account - Nicht unterstützter Media-codec - Mediendatei konnte nicht gelesen werden - Mediendatei nicht korrekt kodiert - Wartezeit für Wiedergabe abgelaufen - Mediendatei kann nicht gestreamt werden - Die Mediendatei kann nicht mit dem vorinstallierten Media Player abgespielt werden - Sicherheitsfehler bei der Wiedergabe von %1$s - Eingabefehler beim Versuch %1$s abzuspielen - Unerwarteter Fehler beim Versuch %1$s wiederzugeben - Zurückspulknopf - Wiedergabe- oder Pause-Knopf - Vorspul-Knopf + Die Datei befindet sich nicht in einem gültigen Konto + Medien-Codec wird nicht unterstützt + Konnte die Mediendatei nicht lesen + Mediendatei ist nicht korrekt encodiert + Wartezeit beim Abspielversuch abgelaufen + Die Mediendatei kann nicht gestreamt werden + Diese Mediendatei konnte nicht mit dem Standardplayer geöffnet werden + Sicherheitsfehler beim Versuch %1$s wiederzugeben + Eingabefehler beim Versuch %1$s wiederzugeben + Ein unerwarteter Fehler ist aufgetreten beim Versuch %1$s wiederzugeben + Rückspulknopf + Wiedergabe-/Pause Knopf + Vorspul Knopf - Erhalte Genehmigung … - Anmeldeversuch … + Genehmigung erhalten … + Der Versuch, sich anzumelden … Keine Netzwerkverbindung Sichere Verbindung nicht verfügbar. Verbindung hergestellt - Teste Verbindung + Verbindung testen Fehlerhafte Server Konfiguration Ein Benutzerkonto für den gleichen Benutzer und Server existiert auf diesem Gerät bereits Der eingegebene Benutzer passt nicht zu dem Benutzer dieses Benutzerkontos Ein unbekannter Fehler ist aufgetreten! - Konnte den Host nicht finden. - Server-Installation nicht gefunden + Konnte den Host nicht finden + Server nicht gefunden Der Server braucht zu lange für eine Antwort. - Fehlerhaftes Format Ihrer Serveradresse + Falsches Adress-Format für den Server SSL-Initialisierung fehlgeschlagen. SSL-Server-Identität konnte nicht überprüft werden Unbekannte Server-Version - Konnte keine Verbindung aufbauen. + Verbindung konnte nicht hergestellt werden Sichere Verbindung hergestellt Falscher Benutzername oder Passwort - Legitimierung nicht erfolgreich - Zugriff durch den Legitimierungsserver abgelehnt - Unerwarteter Zustand; bitte geben Sie die Adresse des Servers nochmals ein - Ihre Legitimierung ist abgelaufen. Bitte Legitimierung nochmals durchführen - Bitte geben Sie Ihr aktuelles Passwort ein + Autorisierung nicht erfolgreich + Zugriff durch den Autorisierungsserver abgelehnt + Unerwarteter Zustand; Bitte gib die Adresse des Servers erneut ein + Die Autorisierung ist abgelaufen. Bitte Autorisierung nochmals durchführen + Bitte gib das aktuelle Passwort ein Ihre Sitzung ist abgelaufen. Bitte erneut verbinden - Verbinde mit dem Authentifizierungs-Server… - Der Server unterstützt diese Legitimierungsmethode nicht + Verbinden zum Authentifizierungs-Server ... + Der Server unterstützt diese Authentifizierung-Methode nicht %1$s unterstützt nicht mehrere Benutzerkonten - Ihr Server gibt keine korrekte Benutzer-ID zurück, bitte kontaktiere einen Administrator - Die Authentifizierung gegenüber dem Server konnte nicht durchgeführt werden - Das Benutzerkonto ist bislang auf dem Gerät nicht vorhanden + Ihr Server gibt keine korrekte Benutzer-ID zurück, bitte kontaktieren Sie einen Administrator + Kann sich nicht auf diesem Server authentifizieren + Das Benutzerkonto ist bis jetzt noch nicht auf dem Gerät vorhanden Als Offline verfügbar markieren - Markierung Offline verfügbar entfernen + Offline verfügbar Markierung entfernen Als Favorit markieren Markierung als Favorit entfernen Umbenennen Entfernen - Möchten Sie %1$s wirklich löschen? - Möchten Sie wirklich %1$s und dessen Inhalte entfernen? + Möchten Sie %1$s wirklich entfernen? + Wollen Sie %1$s und deren Inhalte wirklich löschen? Nur lokal - Erfolgreich entfernt + Entfernt Entfernen fehlgeschlagen - Geben Sie einen neuen Namen ein - Die lokale Kopie konnte nicht umbenannt werden. Versuchen Sie es mit einem anderen Namen. + Gib einen neuen Namen ein + Die lokale Kopie konnte nicht umbenannt werden. Versuche es mit einem anderen Namen. Die Umbenennung konnte nicht abgeschlossen werden. Die entfernte Datei konnte nicht überprüft werden Dateiinhalte bereits synchronisiert - Ordner konnte nicht erstellt werden + Verzeichnis konnte nicht erstellt werden Verbotene Zeichen: / \\ < > : \" | ? * Der Dateiname enthält mindestens ein ungültiges Zeichen Dateiname darf nicht leer sein - Einen Moment warten - Prüfe gespeicherte Anmeldeinformationen - Ein unerwartetes Problem ist aufgetreten. Bitte versuchen Sie, die Datei in einer anderen App zu öffnen. - Es wurde keine Datei ausgewählt. + Bitte warten... + Überprüfe gespeicherte Anmeldeinformationen + Ein unerwartetes Problem ist aufgetreten. Bitte versuche, die Datei in einer anderen App zu öffnen + Keine Datei gewählt Link senden an … Kopiere Datei vom privatem Speicher Anmelden mit oAuth2 - Verbinde mit dem oAuth2-Server… + Verbinde mit dem oAuth2-Server... Die Identität der Website konnte nicht überprüft werden - Das Zertifikat des Servers ist nicht vertrauenswürdig - Das Zertifikat des Servers ist abgelaufen - Das Gültigkeitsdatum des Serverzertifikats liegt in der Zukunft - - Die Adresse stimmt nicht mit dem im Zertifikat angegebenen Hostnamen überein - Möchten Sie diesem Zertifikat trotzdem vertrauen? + - Die Adresse stimmt nicht mit dem im Zertifikat angegebenen Hostnamen überein + Soll diesem Zertifikat trotzdem vertraut werden? Das Zertifikat konnte nicht gespeichert werden Details Ausblenden @@ -325,54 +325,54 @@ Ort: Gültigkeit: Von: - An: + Bis: Signatur: Algorithmus: - Dieser Hash-Algorithmus ist auf Ihrem Handy nicht Verfügbar. + Dieser Algorithmus-Auszug ist auf Ihrem Handy nicht verfügbar. Fingerabdruck: - Es ist ein Problem beim Laden des Zertifikats aufgetreten. + Beim Laden des Zertifikats ist ein Fehler aufgetreten. Das Zertifikat konnte nicht angezeigt werden. - Keine Informationen über den Fehler Dies ist ein Platzhalter platzhalter.txt - PNG Bild + PNG-Bild 389 KB - 18.05.2012 12:23 + 18.5.2012 12:23 12:23:45 - Nur über WLAN hochladen - Fotos nur über WLAN hochladen - Videos nur über WLAN hochladen - Hochladen nur während des Ladens - Hochladen nur während des Ladens + Nur über W-Lan hochladen + Bilder nur über W-Lan hochladen + Videos nur über W-Lan hochladen + Nur während des Ladens hochladen + Nur während des Ladens hochladen /SofortUpload - Dateikonflikt - Welche Datei möchten Sie behalten? Wenn Sie beide Versionen auswählen, wird der lokalen Datei eine Zahl ans Ende ihres Dateinamens angehängt. + Dateikonfilikt + Welche Datei soll behalten werden? Wenn Sie beide Versionen wählen, wird der lokalen Datei eine Zahl am Ende des Dateinamens angefügt. Beide behalten - lokale Version - Server-Version + Lokale Version + Serverversion - Das tut mir leid! + Entschuldigung. Bildvorschau Bild kann nicht angezeigt werden %1$s konnte nicht in den lokalen %2$s Ordner kopiert werden - Pfad zum sofortigen Bilder-Upload - Lokaler Ordner - Server-Ordner - Verwende Unterordner - Speichere in Unterordnern basierend auf Jahr und Monat + Sofort-Upload-Ordner + Lokales Verzeichnis + Entferntes Verzeichnis + Unterordner benutzen + In Unterordnern speichern, basierend auf Jahr und Monat - Entschuldigung, das Teilen ist auf Ihrem Server nicht aktiviert. Bitte kontaktiere Sie Ihren Administrator. - Teilen nicht möglich. Prüfen Sie, ob die Datei existiert + Teilen ist auf Ihrem Server nicht aktiviert. Bitte kontaktieren Sie den Administrator. + Teilen nicht möglich. Prüfe, ob die Datei existiert Es ist ein Fehler beim Freigeben der Datei oder des Ordners aufgetreten. - Entfernen der Freigabe nicht möglich. Prüfen Sie, ob die Datei existiert + Entfernen der Freigabe nicht möglich. Prüfe, dass die Datei existiert Es ist ein Fehler beim Entfernen der Freigabe für diese Datei oder den Ordner aufgetreten. - Aktualisierung der Datei nicht möglich. Prüfen Sie, ob die Datei existiert + Aktualisierung der Datei nicht möglich. Prüfe, ob die Datei existiert Es ist ein Fehler beim Aktualisieren der Freigabe aufgetreten Passwort eingeben - Sie müssen ein Passwort eingeben + Si müssen ein Passwort eingeben Senden @@ -384,84 +384,85 @@ Kritischer Fehler: Operationen können nicht ausgeführt werden - Es ist ein Fehler bei der Verbindung mit dem Server aufgetreten. - Es ist ein Fehler während des Wartens auf den Server aufgetreten, die Operation kann nicht ausgeführt werden - Es ist ein Fehler während des Wartens auf den Server aufgetreten, die Operation kann nicht ausgeführt werden + Es ist ein Fehler beim Verbinden mit dem Server aufgetreten. + Es ist ein Fehler beim Warten auf den Server aufgetreten, die Operation konnte nicht abgeschlossen werden + Es ist ein Fehler beim Warten auf den Server aufgetreten, die Operationkonnte nicht abgeschlossen werden Die Operation kann nicht abgeschlossen werden, der Server ist nicht erreichbar - Sie haben keine Berechtigung %s + + Dir fehlt die Erlaubnis %s diese Datei umzubenennen diese Datei zu löschen diese Datei zu teilen diese Datei nicht mehr zu teilen zum Aktualisieren dieser Freigabe - eine Datei zu erstellen - in diesem Order etwas hochzuladen + diese Datei zu erstellen + diesen Ordner hochzuladen Diese Datei steht auf dem Server nicht mehr zur Verfügung Aktualisiere Speicherort Beenden Bereite Migration vor… Prüfe Zielort… - Speichere Konteneinstellung… - Warte auf Abschluss der Synchronisierungen… + Sichere Konfiguration der Konten… + Warte auf die Fertigstellung der Synchronisationen… Verschiebe Dateien… Aktualisiere Index… Aufräumen… - Konteneinstellung wiederherstellen… + Konfiguration der Konten wiederherstellen… Abgeschlossen - FEHLER: Nicht genügend Speicherplatz + FEHLER: zu wenig Platz FEHLER: Datei kann nicht geschrieben werden - FEHLER: Datei nicht lesbar + FEHLER: Datei kann nicht gelesen werden FEHLER: Nextcloud Ordner existiert bereits - FEHLER: Während der Migration - FEHLER: Während der Aktualisierung des Indixes + FEHLER: Migration fehlgeschlagen + FEHLER: Während der Aktualisierung des Indexes - Datenordner existiert bereits, was soll getan werden? + Datenordner existiert bereits, was soll geschehen? Überschreiben - Verwende Bestehenden + Verwende bestehenden Konten Konto hinzufügen Konten verwalten - Die gesicherte Verbindung wird auf eine unsichere Route weitergeleitet. + Die gesicherte Verbindung wird durch eine ungesicherte Route geleitet. Protokolle - Verlauf senden - Keine App zum Versenden der Meldungen gefunden. Bitte installieren Sie eine Mail-App! + versende die Chronik + Es wurde keine App gefunden die Logs verschicken kann. Bitte installiere eine App die E-Mails verschicken kann. %1$s Android-App Meldungen - Lade Daten … + Daten werden geladen … - Authentifizierung erforderlich + Legitimierung benötigt Falsches Passwort Verschieben Kopieren - Nichts vorhanden. Sie können einen Ordner hinzufügen! + Noch nichts vorhanden. Sie können einen Ordner hinzufügen. Auswählen - Verschieben nicht möglich. Bitte überprüfen Sie, ob die Datei existiert - Es ist nicht möglich einen Ordner eine Ebene tiefer zu verschieben + Verschieben nicht möglich. Prüfe, ob die Datei existiert + Es ist nicht möglich, einen Ordner in einen seiner Unterordner zu verschieben Die Datei ist bereits im Zielordner vorhanden - Es ist ein Fehler beim Verschieben dieser Datei oder dieses Ordners aufgetreten. + Es ist ein Fehler beim Verschieben der Datei oder des Ordners aufgetreten. um diese Datei zu verschieben - Kopieren nicht möglich. Bitte überprüfen Sie, ob die Datei existiert + Kopieren nicht möglich. Prüfe, dass die Datei existiert Es ist nicht möglich, einen Ordner in einen seiner Unterordner zu kopieren - Die Datei ist bereits im Zielordner vorhanden - Es ist ein Fehler beim Kopieren dieser Datei oder dieses Ordners aufgetreten - um diese Datei zu kopieren + Die Datei existiert bereits im Zielverzeichnis + Es ist ein Fehler beim Kopieren der Datei oder des Ordners aufgetreten. + diese Datei zu kopieren - Sofortiges Hochladen + sofort hochladen Details - Pfad zum sofortigen Video-Upload + Video Speicherpfad wählen Bei der Synchronisation konnte %1$s Ordner nicht fertig gestellt werden geteilt - Mit Ihnen + Mit Dir - %1$s hat \"%2$s\" mit Ihnen geteilt - \"%1$s\" wurde mit Ihnen geteilt + %1$s hat \"%2$s\" mit Dir geteilt + \"%1$s\" wurde mit Dir geteilt Verbindung aktualisieren Serveradresse @@ -479,8 +480,8 @@ %1$d Dateien, %2$d Ordner Originaldatei wird… Originaldatei wird… - Datei kopieren - Datei verschieben + kopiere Datei + verschiebe Datei Alle auswählen im Originalordner behalten @@ -490,27 +491,27 @@ Allgemein Teilen - %1$s teilen - Mit Benutzern und Gruppen teilen - Bis jetzt hast du noch keine Dateien mit anderen geteilt - Benutzer oder Gruppe hinzufügen + Teile %1$s + Mit Benutzern oder Gruppen teilen + Es wurden noch keine Dateien mit Benutzern geteilt + Füge Benutzer oder Gruppe hinzu Link teilen - Ein Ablaufdatum setzen + Setze ein Ablaufdatum Passwortschutz Gesichert Bearbeitung erlauben Dateiliste verbergen - Link erstellen - Teilen mit … - Teilen mit %1$s + Link erhalten + Teile mit … + Teile mit %1$s Suche - Nach Benutzern und Gruppen suchen + Nutzer und Gruppen suchen %1$s (Gruppe) - %1$s (entfernte Freigabe) + %1$s (remote) %1$s (E-Mail) - %1$s ( auf %2$s ) + %1$s ( at %2$s ) Entschuldigung, Ihre Serverversion erlaubt das Teilen mit Nutzern innerhalb der Clients nicht. \nBitte kontaktieren Sie Ihren Administrator kann teilen @@ -521,20 +522,20 @@ Freigabe löschen Erledigt - Wiederholung fehlgeschlagen + Fehlgeschlagene erneut versuchen Entferne Fehlversuche Entferne erfolgreiche Uploads Alles aufräumen - Zur Rasteransicht wechseln - Zur Listenansicht wechseln + Rasteransicht + Listenansicht - Speicher verwalten + Verwalte Speicherplatz Einstellungen, Datenbank und Server-Zertifikate von %1$s\'s Daten werden dauerhaft gelöscht.\n\nHerunter geladene Dateien bleiben unangetastet.\n\nDieser Vorgang kann eine Zeit dauern. - Lösche Daten + Daten löschen Einige Dateien konnten nicht gelöscht werden. - Weitere Berechtigungen erforderlich für das Hoch- und Herunterladen von Dateien + Sie haben nicht die erforderlichen Rechte, um Dateien hoch- oder herunterzuladen. Die Datei wurde im lokalen Dateisystem nicht gefunden Wollen Sie die ausgewählten Einträge wirklich löschen? Wollen Sie die ausgewählten Einträge und deren Inhalte wirklich löschen? @@ -542,29 +543,29 @@ Suche Dies ist eine Nextcloud Funktion, bitte updaten. Mehr - Auto-Upload + Automatisches Hochladen Mitmachen - Helfen Sie uns beim Testen - Fehler gefunden? Merkwürdiges Verhalten? + Hilf uns Testen + Fehler gefunden? Komisches Verhalten? Fehler melden auf Github - Möchten Sie uns beim Testen der nächsten Version unterstützen? - Testen Sie die Beta-Version - Dies beinhaltet neue Funktionalitäten und ist nicht vollumfänglich qualitätsgesichert. Es können daher Fehler/Bugs auftreten, melden Sie uns diese bitte. - Vorabversionen + Interessiert uns beim Test der nächsten Version zu unterstützen? + Teste die Entwicklerversion + Dies beinhaltet neue Funktionalitäten und ist nicht vollumfänglich qualitätsgesichert. Es können daher Fehler/Bugs auftreten, melde uns diese bitte. + Vorabversion Eine Vorabversion, auch Release Candidate (RC) genannt, ist ein stabiler Stand der kommenden, finalen Version. Ein Test in der eigenen Umgebung hilft uns diese Stabilität sicherzustellen. Melden Sie sich als Tester im Play Store an oder suchen und installieren Sie die passende Version bei F-Droid unter „Versionen“. Aktiv etwas beitragen - An Diskussionen im IRC teilnehmen: <a href=\"%1$s\">#nextcloud-mobile</a> - Helfen Sie anderen im <a href="%1$s">Forum</a> - Die App <a href=\"%1$s\">übersetzen</a> - Als Entwickler einen Beitrag leisten, Details unter <a href="https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a> + An Chats teilnehmen auf IRC: <a href="%1$s">#nextcloud-mobile</a> + Hilf anderen im <a href="%1$s">Forum</a> + Die App <a href="%1$s">Übersetzen</a> + Zum Überprüfen, Ändern und Schreiben von Quellcode schaue bitte unter <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> für weitere Details. Verschieben nach… Kopieren nach… - Ordner auswählen… - Ordner laden… - Keine Medienordner gefunden. - Auto Upload Einstellungen + Wähle Verzeichnis… + Lade Verzeichnisse… + Keine Medienverzeichnisse gefunden. + Einstellungen Auto-Hochladen Einstellungen - Der Auto-Upload wurde vollständig überarbeitet. Bitte über das Hauptmenü zum Auto-Upload gehen und neu konfigurieren. Bitte entschuldigen Sie die Unannehmlichkeiten.\n\nViel Vergnügen mit den neuen und erweiterten Möglichkeiten des Auto-Uploads! + Sofortiger Upload wurde vollständig überarbeitet. Bitte über das Hauptmenü zum Auto Upload gehen und neu configurieren. Bitte entschuldige die Unannehmlichkeiten.\n\nViel Vergnügen mit den neuen und erweiterten Möglichkeiten des Auto Uploads. Für %1$s %d ausgewählt @@ -576,14 +577,14 @@ Lade Benachrichtigungen… Keine Benachrichtigungen - Bitte sehen Sie später noch einmal nach. + Bitte später noch einmal nachsehen. Dateinamen und -typ zum Hochladen eingeben Dateiname Dateityp - Schnipsel-Textdatei (.txt) - Website-Verknüpfungsdatei (%s) - Google Maps-Verknüpfungsdatei (%s) + Schnipsel Textdatei (.txt) + Internet Abkürzungs-Datei (%s) + Google Maps Abkürzungs-Datei (%s) Standard SD Karte %1$d @@ -619,19 +620,20 @@ Bislang keine Aktivitäten - Dieser Stream zeigt Ereignisse wie\nHinzugekommenes, Änderungen & und Freigaben an + Dieser Stream zeigt Ereignisse wie\nHinzugekommenes, Änderungen und Freigaben an Fehler aufgetreten Über - Adressen-Sicherung - Sicherung jetzt erstellen + Kontakte-Sicherung + Adressen wiederherstellen + Sicherung jetzt starten Letztes Backup wiederherstellen Wiederherstellen Sicherung Adressen-Sicherung Letzte Sicherung - Lese-Zugriffs-Erlaubnis für Adressen ist erforderlich - Schreib-Erlaubnis für Adressen ist erforderlich + Leseberechtigung auf Kontakte erforderlich + Schreibberechtigung auf Kontakte erforderlich Adressen wiederherstellen Ausgewählte Adressen wiederherstellen Konto für den Import auswählen @@ -639,11 +641,13 @@ Datum auswählen nie Keine Datei gefunden + Wir können Ihr letztes Backup nicht finden! Sicherung geplant und wird in Kürze starten Import geplant und wird in Kürze starten Neue Benachrichtigung erhalten + Abmelden diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index 92b5c5c514..71fca6342c 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -46,10 +46,10 @@ Fingerabdruck-Sperre Keine Fingerabdrücke eingerichtet. Versteckte Dateien anzeigen - Sofortiger Bilder-Upload - Lade Fotos von der Kamera sofort hoch - Sofortiger Video-Upload - Lade Videos von der Kamera sofort hoch + Sofortiges Hochladen von Bildern + Lade mit der Kamera gemachte Fotos sofort hoch + Sofortiges Hochladen von Videos + Lade mit der Kamera gemachte Videos sofort hoch Protokollierung aktivieren Dies wird zur Protokollierung von Problemen genutzt Protokollierungs-Historie @@ -58,17 +58,17 @@ Kalender & Kontakte synchronisieren DAVdroid (v1.3.0+) für aktuelles Konto einrichten Serveradresse des Kontos für die DAVdroid-Nutzung konnte nicht ermittelt werden - Weder Google Play Store noch F-Droid App installiert - Kalender- & Kontakte-Synchronisierung erfolgreich konfiguriert + Weder F-Droid noch Google-Play sind installiert + Kalender- & Adress-Synchronisation konfigurieren Hilfe - Empfehle dies einem Freund + Einem Freund empfehlen Rückmeldungen Impressum Geteilten Speicherort merken - Geteilten Upload-Speicherort merken + Zuletzt verwendeten, geteilten Upload-Speicherort merken Probiere %1$s auf Deinem Smartphone! - Ich empfehle Dir die Nutzung von %1$s auf Deinem Smartphone!\nLade es hier herunter: %2$s + "Ich empfehle Dir die Nutzung von %1$s auf Deinem Smartphone!\nLade es hier herunter: %2$s" Server überprüfen Server-Adresse https://… @@ -86,20 +86,21 @@ Keine Datei zum Hochladen %1$s kann einen Textteil als Datei hochladen Empfangene Daten enthalten keine gültige Datei. - Datei kann nicht hochgeladen werden + Diese Datei kan nicht hochgeladen werden %1$s darf eine empfangene Datei nicht lesen - Hochzuladende Datei wurde an ihrem Ort nicht gefunden. Prüfe, ob die Datei existiert. + Die zum Hochladen ausgewählte Datei kann nicht gefunden werden. Bitte prüfe ob die Datei existiert. + Es ist ein Fehler beim Kopieren dieser Datei in einen temporären Ordner aufgetreten. Bitte erneut versuchen die Datei zu senden. Upload Option: Datei in Nextcloud Ordner verschieben Hochladen und im Quellordner behalten Hochladen und Datei im Quellordner löschen Gerade eben - Keine Dateien vorhanden - Lade Inhalt hoch oder synchronisiere mit Deinen Geräten! - Favorisiere einige Dateien oder synchronisiere deine Geräte! + Keine Dateien vorhanden + Lade Inhalt hoch oder synchronisiere mit Deinen Geräten. + Favorisiere einige Dateien oder synchronisiere deine Geräte. Dateien und Ordner, die als Favoriten markiert werden, erscheinen hier - Keine favorisierten Dateien in deinem Verlauf gefunden! + Keine favorisierten Dateien in deinem Verlauf gefunden. Lade… Es wurde keine App für diesen Dateityp gefunden! Es befinden sich keine Dateien in diesem Ordner. @@ -110,19 +111,18 @@ Von dir geteilte Dateien und Ordner werden hier erscheinen Keine Videos Keine Fotos - Soll in einem anderen Ordner nachgesehen werden? + Vielleicht befindet es sich in einem anderen Ordner? Keine, innerhalb der letzten 7 Tage, geänderten Dateien gefunden - Keine Dateien in deinem Verlauf gefunden, - die in den letzten 7 Tagen geändert wurden! - Keine kürzlich hinzu gefügten Dateien gefunden - Keine kürzlich hinzu gefügten Dateien in deinem Verlauf gefunden! + Keine Dateien gefunden, die in den letzten 7 Tagen geändert wurden. + Keine kürzlich hinzugefügten Dateien gefunden + Keine kürzlich hinzu gefügten Dateien gefunden! Lade Fotos hoch oder aktiviere den Sofortupload! - Keine Fotos in deinem Verlauf gefunden! - Lade einige Videos hoch oder aktiviere den Sofortupload! - Keine Videos in deinem Verlauf gefunden! + Keine Fotos gefunden. + Lade einige Videos hoch oder aktiviere den Sofortupload. + Keine Videos gefunden. Keine Uploads verfügbar - Lade Inhalt hoch oder aktiviere den Sofortupload! - Lade Inhalt hoch oder aktiviere den Sofortupload! + Lade Inhalte hoch oder aktiviere den Sofortupload. + Lade Inhalte hoch oder aktiviere den Auto Upload! Ordner Ordner Datei @@ -134,14 +134,14 @@ Geändert: Herunterladen Synchronisation - Datei wurde wärend des Uploads in %1$s umbenannt + Datei während des Hochladens in %1$s umbenannt Layout der Liste Teilen Ja Nein OK Upload entfernen - Hochladen erneut versuchen + Versuche erneut hochzuladen Synchronisation abbrechen Abbrechen Zurück @@ -161,10 +161,10 @@ Ordnername Hochladen … %1$d%% Hochladen %2$s - Hochladen erfolgreich + Hochgeladen %1$s hochgeladen Hochladen fehlgeschlagen - Hochladen von %1$s konnte nicht abgeschlossen werden + Konnte %1$s nicht hochladen Hochladen fehlgeschlagen, erneute Anmeldung erforderlich Uploads Aktuell @@ -181,21 +181,21 @@ Lokale Datei nicht gefunden Berechtigungsfehler Konflikt - Die Anwendung wurde beendet + App beendet Unbekannter Fehler - Warten auf Drahtlos-Verbindung + Warte auf W-Lan-Verbindung Warte auf Hochladen Herunterladen … %1$d%% Herunterladen %2$s - Herunterladen erfolgreich + Heruntergeladen %1$s heruntergeladen Herunterladen fehlgeschlagen - Herunterladen von %1$s konnte nicht abgeschlossen werden + Konnte %1$s nicht herunterladen Noch nicht Heruntergeladen Herunterladen fehlgeschlagen, erneute Anmeldung erforderlich Konto auswählen Synchronisation fehlgeschlagen - Synchronisation fehlgeschlagen, erneute Anmeldung erforderlich. + Synchronisation fehlgeschlagen. Du mußt Dich erneut anmelden Synchronisation von %1$s konnte nicht abgeschlossen werden Falsches Passwort für %1$s Konflikte gefunden @@ -204,8 +204,8 @@ Inhalte von %1$d Dateien konnten nicht synchronisiert werden (%2$d Konflikte) Einige lokale Dateien wurden vergessen %1$d Dateien aus dem %2$s Verzeichnis konnten nicht kopiert werden nach - Seit Version 1.3.16 werden Dateien die von diesem Gerät aus hochgeladen werden in den lokalen Ordner %1$s kopiert um Datenverlust zu vermeiden, wenn eine einzelne Datei mit mehreren Accounts synchronisiert wird.\n\nInfolge dieser Änderung wurden alle Dateien, die mit vorherigen Versionen dieser App hochgeladen wurden, in den Ordner %2$s verschoben. Jedoch ist während der Konto-Synchronisation ein Fehler aufgetreten, der das Abschließen dieses Vorgangs verhindert hat. Die Datei(en) können entweder wie sie sind belassen und den Link zu %3$s entfernt werden oder die Datei(en) in den Ordner %1$s verschoben und den Link zu %4$s beibehalten werden.\n\nUnten befindet sich eine Liste der lokalen Datei(en) und der mit ihnen verbundenen Remote-Datei(en) in %5$s. - Das Verzeichnis %1$s existiert nicht mehr + Seit Version 1.3.16 werden Dateien die von diesem Gerät aus hochgeladen werden in den lokalen Ordner %1$s kopiert um Datenverlust zu vermeiden, wenn eine einzelne Datei mit mehreren Accounts synchronisiert wird.\n\nInfolge dieser Änderung wurden alle Dateien, die mit vorherigen Versionen dieser App hochgeladen wurden, in den Ordner %2$s verschoben. Jedoch ist während der Konto-Synchronisation ein Fehler aufgetreten, der das Abschließen dieses Vorgangs verhindert hat. Die Datei(en) können entweder wie sie sind belassen und den Link zu %3$s entfernt werden oder die Datei(en) in den Ordner %1$s verschoben und den Link zu %4$s beibehalten werden.\n\nUnten befindet sich eine Liste der lokalen Datei(en) und der mit ihnen verbundenen Remote-Datei(en) in %5$s. + Der Ordner %1$s existiert nicht mehr Verschiebe alle Alle Dateien wurden verschoben Einige Dateien konnten nicht verschoben werden @@ -229,12 +229,12 @@ %1$s Wiedergabe Beendet Keine Mediendatei gefunden Kein Konto angegeben - Datei ist nicht in einem gültigen Konto + Die Datei befindet sich nicht in einem gültigen Konto Medien-Codec wird nicht unterstützt - Mediendatei konnte nicht gelesen werden - Mediendatei nicht korrekt encodiert + Konnte die Mediendatei nicht lesen + Mediendatei ist nicht korrekt encodiert Wartezeit beim Abspielversuch abgelaufen - Mediendatei kann nicht gestreamt werden + Die Mediendatei kann nicht gestreamt werden Diese Mediendatei konnte nicht mit dem Standardplayer geöffnet werden Sicherheitsfehler beim Versuch %1$s wiederzugeben Eingabefehler beim Versuch %1$s wiederzugeben @@ -253,14 +253,14 @@ Ein Benutzerkonto für den gleichen Benutzer und Server existiert auf diesem Gerät bereits Der eingegebene Benutzer passt nicht zu dem Benutzer dieses Benutzerkontos Ein unbekannter Fehler ist aufgetreten! - Konnte den Host nicht finden. - Server-Installation nicht gefunden + Konnte den Host nicht finden + Server nicht gefunden Der Server braucht zu lange für eine Antwort. - falsches Server-Adress Format + Falsches Adress-Format für den Server SSL-Initialisierung fehlgeschlagen. SSL-Server-Identität konnte nicht überprüft werden Unbekannte Server-Version - Verbindung konnte nicht aufgebaut werden + Verbindung konnte nicht hergestellt werden Sichere Verbindung hergestellt Falscher Benutzername oder Passwort Autorisierung nicht erfolgreich @@ -283,9 +283,9 @@ Umbenennen Entfernen Möchtest Du %1$s wirklich entfernen? - Soll %1$s und dessen Inhalt wirklich entfernt werden? + Willst Du %1$s deren Inhalte wirklich löschen? Nur lokal - Erfolgreich entfernt + Entfernt Entfernen fehlgeschlagen Gib einen neuen Namen ein Die lokale Kopie konnte nicht umbenannt werden. Versuche es mit einem anderen Namen. @@ -296,15 +296,15 @@ Verbotene Zeichen: / \\ < > : \" | ? * Der Dateiname enthält mindestens ein ungültiges Zeichen Dateiname darf nicht leer sein - Bitte warte einen Moment. + Bitte warten... Überprüfe gespeicherte Anmeldeinformationen Ein unerwartetes Problem ist aufgetreten. Bitte versuche, die Datei in einer anderen App zu öffnen - Es wurde keine Datei ausgewählt. + Keine Datei gewählt Link senden an … Kopiere Datei vom privatem Speicher Anmelden mit oAuth2 - Verbinde mit dem oAuth2-Server. + Verbinde mit dem oAuth2-Server... Die Identität der Website konnte nicht überprüft werden - Das Zertifikat des Servers ist nicht vertrauenswürdig @@ -341,11 +341,11 @@ 18.5.2012 12:23 12:23:45 - Nur über WLAN hochladen - Bilder nur über Wifi hochladen - Videos nur über Wifi hochladen - Hochladen nur während des Ladens - Hochladen nur während des Ladens + Nur über W-Lan hochladen + Bilder nur über W-Lan hochladen + Videos nur über W-Lan hochladen + Nur während des Ladens hochladen + Nur während des Ladens hochladen /SofortUpload Dateikonfilikt Welche Datei soll behalten werden? Wenn du beide Versionen wählst, wird der lokalen Datei eine Zahl am Ende des Dateinamens angefügt. @@ -353,7 +353,7 @@ Lokale Version Serverversion - Das tut mir leid! + Entschuldigung. Bildvorschau Bild kann nicht angezeigt werden @@ -364,7 +364,7 @@ Unterordner benutzen In Unterordnern speichern, basierend auf Jahr und Monat - Entschuldigung, das Teilen ist auf deinem Server nicht aktiviert. Bitte kontaktiere deinen Administrator. + Teilen ist auf Deinem Server nicht aktiviert. Bitte kontaktiere den Administrator. Teilen nicht möglich. Prüfe, ob die Datei existiert Es ist ein Fehler beim Freigeben der Datei oder des Ordners aufgetreten. Entfernen der Freigabe nicht möglich. Prüfe, dass die Datei existiert @@ -388,32 +388,33 @@ Es ist ein Fehler beim Warten auf den Server aufgetreten, die Operation konnte nicht abgeschlossen werden Es ist ein Fehler beim Warten auf den Server aufgetreten, die Operationkonnte nicht abgeschlossen werden Die Operation kann nicht abgeschlossen werden, der Server ist nicht erreichbar - Sie haben keine Berechtigung %s + + Dir fehlt die Erlaubnis %s diese Datei umzubenennen diese Datei zu löschen diese Datei zu teilen diese Datei nicht mehr zu teilen zum Aktualisieren dieser Freigabe - eine Datei zu erstellen - in diesen Order etwas hochzuladen + diese Datei zu erstellen + diesen Ordner hochzuladen Diese Datei steht auf dem Server nicht mehr zur Verfügung Aktualisiere Speicherort Beenden Bereite Migration vor… Prüfe Zielort… - Speichere Konteneinstellung… - Warte auf Abschluss der Synchronisierungen… + Sichere Konfiguration der Konten… + Warte auf die Fertigstellung der Synchronisationen… Verschiebe Dateien… Aktualisiere Index… Aufräumen… - Konteneinstellung wiederherstellen… + Konfiguration der Konten wiederherstellen… Abgeschlossen - FEHLER: Nicht genügend Speicherplatz + FEHLER: zu wenig Platz FEHLER: Datei kann nicht geschrieben werden - FEHLER: Datei nicht lesbar + FEHLER: Datei kann nicht gelesen werden FEHLER: Nextcloud Ordner existiert bereits - FEHLER: Während der Migration + FEHLER: Migration fehlgeschlagen FEHLER: Während der Aktualisierung des Indexes Datenordner existiert bereits, was soll geschehen? @@ -435,7 +436,7 @@ Falsches Passwort Verschieben Kopieren - Noch nichts vorhanden. Sie können einen Ordner hinzufügen! + Noch nichts vorhanden. Du kannst einen Ordner hinzufügen. Auswählen Verschieben nicht möglich. Prüfe, ob die Datei existiert @@ -454,7 +455,7 @@ sofort hochladen Details - Sofortupload-Video-Ordner + Video Speicherpfad wählen Bei der Synchronisation konnte %1$s Ordner nicht fertig gestellt werden geteilt @@ -556,7 +557,7 @@ An Chats teilnehmen auf IRC: <a href="%1$s">#nextcloud-mobile</a> Hilf anderen im <a href="%1$s">Forum</a> Die App <a href="%1$s">Übersetzen</a> - Als Entwickler einen Beitrag leisten, Details unter <a href="https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a> + Zum Überprüfen, Ändern und Schreiben von Quellcode schaue bitte unter <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> für weitere Details. Verschieben nach… Kopieren nach… Wähle Verzeichnis… @@ -564,7 +565,7 @@ Keine Medienverzeichnisse gefunden. Einstellungen Auto-Hochladen Einstellungen - Sofortiger Upload wurde vollständig überarbeitet. Bitte über das Hauptmenü zum Auto Upload gehen und neu configurieren. Bitte entschuldige die Unannehmlichkeiten.\n\nViel Vergnügen mit den neuen und erweiterten Möglichkeiten des Auto Uploads! + Sofortiger Upload wurde vollständig überarbeitet. Bitte über das Hauptmenü zum Auto Upload gehen und neu configurieren. Bitte entschuldige die Unannehmlichkeiten.\n\nViel Vergnügen mit den neuen und erweiterten Möglichkeiten des Auto Uploads. Für %1$s %d ausgewählt @@ -619,19 +620,20 @@ Bislang keine Aktivitäten - Dieser Stream zeigt Ereignisse wie\nHinzugekommenes, Änderungen & und Freigaben an + Dieser Stream zeigt Ereignisse wie\nHinzugekommenes, Änderungen und Freigaben an Fehler aufgetreten Über - Adressen-Sicherung - Sicherung jetzt erstellen + Kontakte-Sicherung + Adressen wiederherstellen + Sicherung jetzt starten Letztes Backup wiederherstellen Wiederherstellen Sicherung Adressen-Sicherung Letzte Sicherung - Lese-Zugriffs-Erlaubnis für Adressen ist erforderlich - Schreib-Erlaubnis für Adressen ist erforderlich + Leseberechtigung auf Kontakte erforderlich + Schreibberechtigung auf Kontakte erforderlich Adressen wiederherstellen Ausgewählte Adressen wiederherstellen Konto für den Import auswählen @@ -639,11 +641,13 @@ Datum auswählen nie Keine Datei gefunden + Wir können dein letztes Backup nicht finden! Sicherung geplant und wird in Kürze starten Import geplant und wird in Kürze starten Neue Benachrichtigung erhalten + Abmelden diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index 9148029045..8457464dcd 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -46,10 +46,10 @@ Κλείδωμα με αποτύπωμα Δεν έχει οριστεί αποτύπωμα Εμφάνιση κρυφών αρχείων - Άμεση μεταφόρτωση εικόνων - Άμεση μεταφόρτωση φωτογραφιών από την κάμερα + Άμεσες μεταφορτώσεις φωτογραφιών + Άμεση μεταφόρτωση φωτογραφιών που λήφθησαν από την φωτογραφική μηχανή Άμεση μεταφόρτωση βίντεο - Άμεση μεταφόρτωση των βίντεο από την κάμερα + Άμεση μεταφόρτωση βίντεο που λήφθησαν από την φωτογραφική μηχανή Ενεργοποίηση καταγραφής ιστορικού Χρησιμοποιείται για την καταγραφή προβλημάτων Καταγραφή ιστορικού @@ -58,23 +58,16 @@ Συγχρονισμός ημερολογίου & επαφών Ρυθμίστε το DAVdroid (v1.3.0+) για τον τρέχον λογαριασμό Η διεύθυνση του διακομιστή για τον λογαριασμό δεν μπορεί να καθοριστεί για το DAVdroid - Δεν είναι εγκατεστημένα το Google Play ή το F-Droid - Επιτυχής ρύθμιση συγχρονισμού ημερολογίου & επαφών + Δεν είναι εγκατεστημένο το F-droid αλλά ούτε και το Google Play Βοήθεια Προτείνετε σε φίλο Aνάδραση Αποτύπωμα - Απομνημόνευση θέσης διαμοιρασμού - Απομνημόνευση τελευταιας τοποθεσίας διαμοιρασμού μεταφορτώσεων - - Δοκιμή %1$s στο κινητό σας! - Θα ήθελα να σε προσκαλέσω να χρησιμοποιήσεις το %1$s στο κινητό σου!\\nΛήψη από εδώ: %2$s - - Έλεγχος διακομιστή + Δοκιμή %1$s στο κινητό σας! + Έλεγχος διακομιστή Διεύθυνση διακομιστή https://… Όνομα χρήστη Συνθηματικό - Δεν έχετε ακόμα διακομιστή;\\nΚάντε κλικ εδώ για να πάρετε έναν από ένα πάροχο Αρχεία Σύνδεση Μεταφόρτωση @@ -88,20 +81,12 @@ Τα ληφθέντα δεδομένα δεν περιλαμβάνουν έγκυρο αρχείο. Το αρχείο δεν μπορεί να μεταφορτωθεί Ο %1$s δεν επιτρέπεται να αναγνώσει ένα ληφθέν αρχείο - Το αρχείο προς αποστολή δεν βρέθηκε στην τοποθεσία. Παρακαλώ ελέγξτε εάν υπάρχει το αρχείο. - Παρουσιάστηκε σφάλμα κατά την αντιγραφή του αρχείου στον προσωρινό φάκελο. Παρακαλούμε δοκιμάστε να στείλετε ξανά. Επιλογή μεταφόρτωσης: Μετακίνηση αρχείου στον φάκελο Nextcloud Διατήρηση του αρχείου στον πηγαίο φάκελο Διαγραφή αρχείου από τον πηγαίο φάκελο δευτερόλεπτα πριν - Δεν υπάρχουν αρχεία - Μεταφόρτωση περιεχομένου ή συγχρονισμός με τις συσκευές σας! - Σημειώστε ως αγαπημένα ορισμένα αρχεία ή συγχρονίστε τα με τις συσκευές σας! - Τα αρχεία ή οι φάκελοι που σημειώσατε ως αγαπημένα θα εμφανιστούν εδώ - Δεν βρέθηκαν αρχεία σημειωμένα ως αγαπημένα για το ερώτημά σας! Φόρτωση… - Δεν βρέθηκε εφαρμογή για τον τύπο αρχείου! Δεν υπάρχουν αρχεία σε αυτό τον φάκελο. Κανενα αποτέλεσμα σε αυτον τον φάκελο Κανένα αποτέλεσμα @@ -109,19 +94,7 @@ Τα αρχεία και οι φάκελοι που διαμοιράζεστε θα εμφανίζονται εδώ Κανένα βίντεο Καμιά φωτογραφία - Θα δοκιμάστε αναζήτηση και σε άλλο φάκελο; - Δεν βρέθηκαν αρχεία που να έχουν τροποποιηθεί τις τελευταίες 7 ημέρες - Δεν βρέθηκαν αρχεία για το αίτημά σας που να έχουν τροποποιηθεί - τις τελευταίες 7 ημέρες! - Δεν βρέθηκαν πρόσφατα προστεθημένα αρχεία - Δεν βρέθηκαν πρόσφατα προστεθημένα αρχεία για το αίτημά σας! - Μεταφόρτωση μερικών φωτογραφιών ή ενεργοποιήστε την αυτόματη μεταφόρτωση! - Δεν βρέθηκαν φωτογραφίες για το αίτημά σας! - Μεταφορτώστε μερικά βίντεο ή ενεργοποιήστε την αυτόματη μεταφόρτωση! - Δεν βρέθηκε βίντεο για το αίτημά σας! Μη διαθέσιμες μεταφορτώσεις - Μεταφορτώστε περιεχόμενο ή ενεργοποιήστε την άμεση μεταφόρτωση! - Μεταφορτώστε περιεχόμενο ή ενεργοποιήστε την αυτόματη μεταφόρτωση! φάκελος φάκελοι αρχείο @@ -133,14 +106,11 @@ Τροποποιήθηκε: Λήψη Συγχρονισμός - Το αρχείο μετονομάστηκε σε %1$s κατά τη μεταφόρτωση - Διάταξη λίστας Διαμοιρασμός Ναι Όχι Εντάξει Αφαίρεση μεταφόρτωσης - Επανάληψη μεταφόρτωσης Ακύρωση συγχρονισμού Ακύρωση Επιστροφή @@ -160,10 +130,9 @@ Όνομα φακέλου Μεταφόρτωση … %1$d%% Μεταφορτώνονται %2$s - Επιτυχημένη μεταφόρτωση + Μεταφορτώθηκε Το %1$s μεταφορτώθηκε Η μεταφόρτωση απέτυχε - Η μεταφόρτωση του %1$s δεν ήταν δυνατόν να ολοκληρωθεί Η μεταφόρτωση απέτυχε, πρέπει να επανασυνδεθείτε Μεταφορτώσεις Τρέχουσα @@ -180,37 +149,30 @@ Δεν βρέθηκε το τοπικό αρχείο Σφάλμα δικαιωμάτων Διένεξη - Η εφαρμογή τερματίστηκε Άγνωστο σφάλμα - Αναμονή για σύνδεση wifi + Αναμονή σύνδεσης Wi-Fi Αναμονή για μεταφόρτωση Λαμβάνονται … %1$d%% Λαμβάνονται %2$s - Επιτυχημένη λήψη + Ληφθέντα %1$s ελήφθησαν Αποτυχημένη λήψη - Η λήψη του %1$s δεν μπόρεσε να ολοκληρωθεί Δεν έχει ληφθεί ακόμα Αποτυχία λήψης, πρέπει να εισέλθετε ξανά Επιλογή λογαριασμού Αποτυχία συγχρονισμού - Αποτυχία συγχρονισμού, χρειάζεται να εισέλθετε ξανά - Ο συγχρονισμός του %1$s δεν μπόρεσε να ολοκληρωθεί - Μη έγκυρο συνθηματικό για %1$s + Εσφαλμένο συνθηματικό για τον %1$s Βρέθηκαν διενέξεις %1$d αρχεία σε αναμονή προς συγχρονισμό δεν μπόρεσαν να συγχρονιστούν Τα αρχεία σε αναμονή προς συγχρονισμού απέτυχαν Τα περιεχόμενα των %1$d αρχείων δεν μπόρεσαν να συγχρονιστούν (%2$d διενέξεις) Ορισμένα τοπικά αρχεία ξεχάστηκαν %1$d αρχεία από τον %2$s φάκελο δεν ήταν δυνατό να αντιγραφούν σε - Από την έκδοση 1.3.16, τα αρχεία που μεταφορτώθηκαν από αυτήν τη συσκευή αντιγράφηκαν στον τοπικό φάκελο %1$s για να αποτραπεί η απώλεια δεδομένων όταν ένα αρχείο είναι συγχρονισμένο με πολλαπλούς λογαριασμούς. \n\nΛόγω αυτής της αλλαγής, όλα τα αρχεία που μεταφορτώθηκαν με προηγούμενες εκδόσεις αυτής της εφαρμογής αντιγράφηκαν στον φάκελο %2$s. Ωστόσο, ένα σφάλμα εμπόδισε την ολοκλήρωση αυτής της λειτουργίας κατά το συγχρονισμό του λογαριασμού. Μπορείτε είτε να αφήσετε το(α) αρχείο(α) όπως είναι και να καταργήσετε τη σύνδεση με το %3$s ή να μετακινήσετε τα αρχεία στο φάκελο %1$s και να διατηρήσετε τη σύνδεση με το %4$s. \n\nΑπαριθμημένα πιο κάτω είναι τα τοπικά αρχεία(ο) και τα απομακρυσμένα αρχεία(ο) στο %5$s με τα οποία συνδέονταν. - Ο φάκελος %1$s δεν υπάρχει πια Μετακίνηση όλων Όλα τα αρχεία μετακινήθηκαν Μερικά αρχεία δεν μπόρεσαν να μετακινηθούν Τοπικά: %1$s Απομακρυσμένα: %1$s - Δεν υπάρχει αρκετός διαθέσιμος αποθηκευτικός χώρος για να αντιγραφούν τα επιλεγμένα αρχεία στον φάκελο %1$s. Θα θέλατε να τα μετακινήσετε αντί αυτού; Παρακαλούμε εισάγετε τον κωδικό πρόσβασης Εισάγετε τον κωδικό πρόσβασης @@ -228,16 +190,10 @@ %1$s αναπαραγωγή τελείωσε Δεν βρέθηκαν αρχεία πολυμέσων Δεν δόθηκε λογαριασμός - Το αρχείο δεν βρίσκεται σε έγκυρο λογαριασμό + Το αρχείο δεν είναι έγκυρος λογαριασμός Δεν υποστηρίζεται η μορφή κωδικοποιήσης πολυμέσων Αδυναμία ανάγνωσης αρχείου πολυμέσων - Εσφαλμένη κωδικοποίηση αρχείου πολυμέσων Λήξη χρόνου κατά την προσπάθεια αναπαραγωγής - Το αρχείο πολυμέσων δεν μπορεί να μεταδοθεί - Το αρχείο πολυμέσων δεν μπορεί να αναπαραχθεί με την παρεχόμενη εφαρμογή αναπαραγωγής πολυμέσων - Σφάλμα ασφαλείας κατά την προσπάθεια αναπαραγωγής του %1$s - Σφάλμα εισόδου κατά την προσπάθεια αναπαραγωγής του %1$s - Απροσδόκητο σφάλμα κατά την προσπάθεια αναπαραγωγής του %1$s Κουμπί ταχείας κίνησης πίσω Κουμπί αναπαραγωγής ή παύσης Κουμπί γρήγορης προώθησης @@ -249,32 +205,24 @@ Εδραίωση σύνδεσης Έλεγχος σύνδεσης Εσφαλμένες ρυθμίσεις διακομιστή - Ένας λογαριασμός για τον ίδιο χρήστη και διακομιστή υπάρχει ήδη στη συσκευή Ο χρήστης που εισάγατε δεν ταιριάζει με το χρήστη αυτού του λογαριασμού Παρουσιάστηκε άγνωστο σφάλμα! - Δεν βρέθηκε κεντρικός υπολογιστής - Δεν βρέθηκε εγκατεστημένος διακομιστής + Αδυναμία εύρεσης κεντρικού υπολογιστή + Δεν βρέθηκε διακομιστής Ο διακομιστής αργεί πολύ να απαντήσει Εσφαλμένη μορφή διεύθυνσης διακομιστή Η αρχικοποίηση του SSL απέτυχε - Αδυναμία επιβεβαίωσης της ταυτότητας του διακομιστή SSL Μη αναγνωρίσιμη έκδοση διακομιστή - Αδυναμία δημιουργίας σύνδεσης Επιτεύχθηκε ασφαλής σύνδεση Εσφαλμένο όνομα χρήστη ή συνθηματικό Ανεπιτυχής πιστοποίηση Άρνηση πρόσβασης από τον διακομιστή πιστοποίησης - Απροσδόκητη κατάσταση, παρακαλoύμε εισάγετε ξανά τη διεύθυνση του διακομιστή Η πιστοποιίησή σας έληξε. Παρακαλούμε εξουσιοδοτήστε ξανά Παρακαλούμε εισάγετε το τρέχον συνθηματικό Η συνεδρία σας έληξε. Παρακαλούμε συνδεθείτε ξανά - Σύνδεση με το διακομιστή πιστοποίησης ... Ο διακομιστής δεν υποστηρίζει αυτή τη μέθοδο πιστοποίησης Ο %1$s δεν υποστηρίζει πολλαπλούς λογαριασμούς - Ο διακομιστής σας δεν επιστρέφει το σωστό αναγνωριστικό χρήστη, παρακαλούμε επικοινωνήστε τον διαχειριστή Αδυαμία πιστοποίησης με αυτόν το διακομιστή - Ο λογαριασμός δεν υπάρχει ακόμα στη συσκευή - Ορισμός ως διαθέσιμο εκτός σύνδεσης Αναίρεση ορισμού ως διαθέσιμο εκτός σύνδεσης Ορισμός ως αγαπημένο @@ -282,36 +230,29 @@ Μετονομασία Αφαίρεση Θέλετε να αφαιρέσετε το %1$s; - Θέλετε να αφαιρέσετε το %1$s και τα περιεχόμενά του; Μόνο τοπικά - Επιτυχής αφαίρεση + Αφαιρέθηκε Αποτυχημένη αφαίρεση Εισάγετε νέο όνομα - Το τοπικό αντίγραφο δεν ήταν δυνατόν να μετονομαστεί. Παρακαλούμε επιλέξτε ένα διαφορετικό όνομα. - Η μετονομασία δεν μπόρεσε να ολοκληρωθεί - Αδυναμία ελέγχου του απομακρυσμένου αρχείου Τα περιεχόμενα του αρχείου έχουν ήδη συγχρονιστεί - Ο φάκελος δεν μπορεί να δημιουργηθεί + Αδυναμία δημιουργίας φακέλου Απαγορευμένοι χαρακτήρες: / \\ < > : \" | ? * Το όνομα αρχείου περιέχει έναν τουλάχιστον μη έγκυρο χαρακτήρα Το όνομα αρχείου δεν μπορεί να είναι κενό - Παρακαλούμε περιμένετε + Παρακαλούμε περιμένετε... Γίνεται έλεγχος αποθηκευμένων διαπιστευτηρίων - Μη αναμενόμενο πρόβλημα, παρακαλώ ελέγξτε το αρχείο από διαφορετική εφαρμογή Δεν επιλέχθηκε αρχείο Αποστολή συνδέσμου σε … Γίνεται αντιγραφή αρχείου από ιδιωτικό αποθηκευτικό χώρο Σύνδεση με oAuth2 - Γίνεται σύνδεση στο διακομιστή oAuth2... - Η ταυτότητα της σελίδας δεν μπορεί να επληθευτεί - Το πιστοποιητικό του διακομιστή δεν είναι έμπιστο - Το πιστοποιητικό του διακομιστή έχει λήξει - Οι έγκυρες ημερομηνίες του πιστοποιητικού του διακομιστή είναι στο μέλλον - Η URL δεν ταιριάζει με το όνομα του συστήματος στο πιστοποιητικό Θέλετε να θεωρείται έμπιστο το πιστοποιητικό παρ\' όλα αυτά; - Το πιστοποιητικό δεν ήταν δυνατόν να αποθηκευτεί + Αδυναμία αποθήκευσης πιστοποιητικού Λεπτομέρειες Απόκρυψη Εκδόθηκε για: @@ -347,12 +288,11 @@ Μεταφόρτωση μόνο κατά τη διάρκεια φόρτισης /InstantUpload Διένεξη αρχείων - Ποια αρχεία θέλετε να διατηρήσετε; Αν επιλέξετε και τις δύο εκδόσεις, θα προστεθεί ένας αριθμός στο όνομα του τοπικού αρχείου. Διατήρηση και των δύο τοπική έκδοση έκδοση διακομιστή - Σας ζητούμε συγγνώμη γι\'αυτό! + Σας ζητούμε συγγνώμη. Προεπισκόπηση εικόνας Αδυναμία προβολής εικόνας @@ -363,7 +303,6 @@ Χρήση υποφακέλων Αποθήκευση σε υποφακέλους με βάση το χρόνο και μήνα - Λυπούμαστε, ο διαμοιρασμός δεν είναι διαθέσιμος στο διακομιστή σας. Παρακαλούμε επικοινωνήστε με τον διαχειριστή. Αδυναμία διαμοιρασμού. Παρακαλούμε ελέγξτε αν υπάρχει ο φάκελος Παρουσιάστηκε σφάλμα κατά την προσπάθεια διαμοιρασμού αυτού του αρχείου ή φακέλου Αδυναμία αναίρεσης κοινής χρήσης. Παρακαλώ ελέγξτε αν το αρχείο υπάρχει @@ -377,56 +316,39 @@ Αντιγραφή συνδέσμου Αντιγράφηκε στο πρόχειρο - Δεν ελήφθη κείμενο για αντιγραφή στο πρόχειρο Μη αναμενόμενο σφάλμα κατά την αντιγραφή στο πρόχειρο Κείμενο που αντιγράφηκε από τον %1$s - Κρίσιμο σφάλμα: αδύνατη η εκτέλεση λειτουργιών - - Παρουσιάστηκε σφάλμα κατά τη σύνδεση με το διακομιστή. - Παρουσιάστηκε σφάλμα κατά την αναμονή για τον διακομιστή. Η λειτουργία δεν μπορεί να ολοκληρωθεί - Παρουσιάστηκε σφάλμα κατά την αναμονή για τον διακομιστή. Η λειτουργία δεν μπορεί να ολοκληρωθεί - Η λειτουργία δεν μπορεί να ολοκληρωθεί. Ο διακομιστής δεν είναι διαθέσιμος - Δεν έχετε δικαιώματα %s για να μετονομάσετε αυτό το αρχείο για να διαγράψετε αυτό το αρχείο για να διαμοιραστείτε αυτό το αρχείο για να αναιρέσετε το διαμοιρασμό αυτού του αρχείου για να ενημερώσετε αυτό τον διαμοιρασμό - για να δημιουργήσετε το αρχείο - για να μεταφορτώσετε σε αυτό το φάκελο + για να δημιουργήσετε αυτό το αρχείο + για να μεταφορτώσετε αυτό το αρχείο Αυτό το αρχείο δεν είναι πια διαθέσιμο στον διακομιστή Ενημέρωση διαδρομής αποθηκευτικού χώρου Ολοκλήρωση - Προετοιμασία για μεταφορά… Γίνεται έλεγχος προορισμού… - Γίνεται αποθήκευση ρυθμίσεων λογαριασμών… - Αναμονή για τους μη ολοκληρωμένους συγχρονισμούς… Γίνεται μετακίνηση δεδομένων… Γίνεται ενημέρωση ευρετηρίου… Γίνεται εκκαθάριση… - Γίνεται επαναφορά ρυθμίσεων λογαριασμών… Ολοκληρώθηκε ΣΦΑΛΜΑ: Ανεπαρκής αποθηκευτικός χώρος ΣΦΑΛΜΑ: Το αρχείο δεν είναι εγγράψιμο ΣΦΑΛΜΑ: Το αρχείο δεν είναι αναγνώσιμο ΣΦΑΛΜΑ: Υπάρχει ήδη ο κατάλογος Nextcloud - ΣΦΑΛΜΑ: Κατά την μεταφορά ΣΦΑΛΜΑ: Κατά την ενημέρωση ευρετηρίου - Ο φάκελος των δεδομένων υπάρχει ήδη, τι να κάνω; Αντικατάσταση - Χρήση υπάρχοντος + Χρήση Λογαριασμοί Προσθήκη λογαριασμού Διαχείριση λογαριασμών - Η ασφαλής σύνδεση ανακατευθύνεται μέσω μιας μη ασφαλούς διαδρομής. - - Αρχεία καταγραφών + Αρχεία καταγραφών Αποστολή ιστορικού - Δεν εντοπίστηκε εφαρμογή αποστολής ιστορικού συστήματος. Παρακαλούμε εγκαταστήστε μια εφαρμογή ηλεκτρονικού ταχυδρομείου. %1$s ιστορικό της εφαρμογής Android Φόρτωση δεδομένων … @@ -434,27 +356,20 @@ Εσφαλμένο συνθηματικό Μετακίνηση Αντιγραφή - Δεν υπάρχει τίποτα εδώ. Μπορείτε να προσθέσετε ένα φάκελο! Επιλέξτε - Αδύνατη η μετακίνηση. Παρακαλώ ελέγξτε αν το αρχείο υπάρχει - Δεν είναι δυνατό να μετακινηθεί ο φάκελος σε έναν απογονικό - Το αρχείο υπάρχει ήδη στο φάκελο προορισμού Παρουσιάστηκε σφάλμα κατά την προσπάθεια μετακίνησης αυτού του αρχείου ή φακέλου για μετακίνηση αυτού του αρχείου Αδυναμία αντιγραφής. Παρακαλούμε ελέγξτε αν το αρχείο υπάρχει - Δεν είναι δυνατό να αντιγραφεί ο φάκελος σε απογονικό - Το αρχείο υπάρχει ήδη στο φάκελο προορισμού Παρουσιάστηκε σφάλμα κατά την προσπάθεια αντιγραφής αυτού του αρχείου ή φακέλου για αντιγραφή αυτού του αρχείου Άμεσες μεταφορτώσεις Λεπτομέρειες - Φάκελος άμεσης μεταφόρτωσης βίντεο - Ο συγχρονισμός του φακέλου %1$s δεν μπόρεσε να ολοκληρωθεί + Ο συγχρονισμός του φακέλου %1$s δεν μπόρεσε να ολοκληρωθεί διαμοιρασμένα με εσάς @@ -495,7 +410,7 @@ Προσθήκη χρήστη ή ομάδας Διαμοιρασμός συνδέσμου Ορισμός ημερομηνίας λήξης - Προστασία συνθηματικού + Προστασία με συνθηματικό Ασφαλίστηκε Επιτρέπεται η επεξεργασία Απόκρυψη λίστας αρχείου @@ -511,7 +426,6 @@ %1$s (ηλ. ταχυδρομείο) %1$s ( στο %2$s ) - Δεν επιτρέπεται ο διαμοιρασμός μεταξύ χρηστών μέσω πελατών, σε αυτή την έκδοση διακομιστή. \nΕπικοινωνήστε με το διαχειριστή δυνατότητα διαμοιρασμού δυνατότητα επεξεργασίας δημιουργία @@ -520,50 +434,34 @@ Διακοπή διαμοιρασμού ολοκληρώθηκε - Αποτυχία επανάληψης Αποτυχία εκκαθάρισης - Επιτυχία εκκαθάρισης - Ολοκλήρωση εκκαθάρισης όλων - Προβολή πλέγματος Προβολή λίστας Διαχείριση χώρου - Τα πιστοποιητικά ρυθμίσεων, βάσης δεδομένων και διακομιστή από τα δεδομένα %1$s\'s θα διαγραφούν μόνιμα.\n\nΤα ληφθέντα αρχεία θα παραμείνουν ανέπαφα.\n\nΑυτή η διαδικασία ενδεχομένως να διαρκέσει αρκετά. Εκκαθάριση δεδομένων Μερικά αρχεία δεν μπορούν να διαγραφούν. - Επιπλέον διακαιώματα απαιτούνται για μεταφόρτωση & λήψη αρχείων. - Το αρχείο δεν βρέθηκε στο τοπικό σύστημα αρχείων Θέλετε να αφαιρέσετε τα επιλεγμένα αντικείμενα; Θέλετε να αφαιρέσετε τα επιλεγμένα αντικείμενα με τα περιεχόμενά τους; - Αναμονή για φόρτιση συσκευής Αναζήτηση Αυτό είναι χαρακτηριστικό του Nextcloud, παρακαλούμε ενημερώστε. Μάθετε περισσότερα Αυτόματη μεταφόρτωση Συμμετοχή - Βοηθήστε μας στις δοκιμές - Βρήκατε σφάλμα; Κάτι σας φαίνεται παράξενο; Αναφέρετε σφάλμα στο Github - Σας ενδιαφέρει να μας βοηθήσετε να δοκιμάσουμε την επόμενη έκδοση; Δοκιμή της εκδοσης προς ανάπτυξη - Αυτή περιέχει όλες τις επερχόμενες λειτουργίες και δαθέτει ότι τελευταίο έχει ενσωματωθεί. Σφάλματα/λάθη μπορεί να προκύψουν. Σας παρακαλούμε να μας τα αναφέρετε. Release candidate - Η υποψήφια κυκλοφορία (RC) είναι ένα στιγμιότυπο της επερχόμενης έκδοσης και αναμένεται να είναι σταθερή. Η δοκιμή της μεμονωμένης εγκατάστασής σας θα βοηθήσει στην εξασφάλιση αυτού. Εγγραφείτε για δοκιμές στο Play store ή χειροκίνητα αναζητείστε στο τμήμα \"εκδόσεις\" στο F-Droid. Ενεργή συνεισφορά Συμμετέχετε στη συνομιλία στο IRC: <a href=\"%1$s\">#nextcloud-mobile</a> Βοηθήστε χρήστες στο <a href=\"%1$s\">forum</a> <a href=\"%1$s\">Μεταφράστε</a> την εφαρμογή - Συνεισφέρετε ως προγραμματιστής, για περισσότερες λεπτομέρειες δείτε <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> Μετακίνηση σε… Αντιγραφή σε… Επιλογή φακέλου… Φόρτωση φακέλων… Δεν βρέθηκαν φάκελοι πολυμέσων. - Προτιμήσεις αυτόματης μεταφόρτωσης Ρυθμίσεις - Η άμεση μεταφόρτωση έχει ανανεωθεί τελείως. Παρακαλούμε δείτε το κυρίως μενού και ρυθμίστε ξανά την αυτόματη μεταφόρτωση. Σας ζητούμε συγγνώμη για την ενόχληση\n\nΑπολαύστε τις νέες και εκτεταμένες δυνατότητες της αυτόματης μεταφόρτωσης! Για %1$s %d επιλέχθηκε @@ -577,7 +475,6 @@ Καμία ειδοποίηση Παρακαλούμε ελέγξτε ξανά αργότερα. - Εισαγωγή ονόματος και τύπου αρχείου μεταφόρτωσης Όνομα αρχείου Τύπος αρχείου Απόσπασμα αρχείου κειμένου(.txt) @@ -593,8 +490,6 @@ Μια ασφαλής τοποθεσία για όλα σας τα δεδομένα - Πρόσβαση, διαμοιρασμός & προστασία των αρχείων σας στο σπίτι και στην εταιρία σας - Πολλαπλός λογαριασμός Σύνδεση με όλα τα clouds σας @@ -608,7 +503,7 @@ Πλήρες όνομα - Ηλεκτρονικό ταχυδρομείο + E-mail Αριθμός τηλεφώνου Διεύθυνση Ιστοσελίδα @@ -618,22 +513,19 @@ Καμία δραστηριότητα ακόμα - Σε αυτήν τη ροή θα εμφανιστούν γενονότα όπως\nπροσθήκες, αλλαγές & κοινόχρηστα Παρουσιάστηκε σφάλμα Περί Αντίγραφο ασφαλείας επαφών - Δημιουργία αντιγράφου ασφαλείας τώρα + Ανάκτηση επαφών + Αντίγραφο ασφαλείας τώρα Επαναφορά τελευταίου αντιγράφου ασφαλείας Επαναφορά Αντίγραφο ασφαλείας Αντίγραφο ασφαλείας επαφών Τελευταίο αντίγραφο ασφαλείας - Απαιτείτούνται δικαιώματα ανάγνωσης για τις επαφές - Απαιτείτούνται δικαιώματα εγγραφής για τις επαφές Επαναφορά επαφών Επαναφορά επιλεγμένων επαφών - Επιλογή λογαριασμού για εισαγωγή Επιλογή ημερομηνίας ποτέ Δεν βρέθηκε αρχείο @@ -642,6 +534,7 @@ Νέα ενημέρωση ελήφθη + Έξοδος diff --git a/src/main/res/values-es-rMX/strings.xml b/src/main/res/values-es-rMX/strings.xml index 5fa58784b2..720ed0f44c 100644 --- a/src/main/res/values-es-rMX/strings.xml +++ b/src/main/res/values-es-rMX/strings.xml @@ -47,7 +47,7 @@ No se ha establecido ninguna huella digital. Mostrar archivos escondidos Carga instantánea de imágenes - Cargar instantáneamente las fotografías tomadas por la cámara + Cargar instantaneamente las fotografías tomadas por la cámara Carga instantánea de video Cargar instantáneamente los videos grabados por la cámara Habilitar registro @@ -58,23 +58,23 @@ Sincronizar calendario & contactos Configurar DAVdroid (v1.3.0+) para la cuenta actual La dirección del servidor para la cuenta no se pudo resolver para DAVdroid - No han instalado las aplicaciones Google Play store o F-Droid - El calendario & contactos se configuraron exitosamente + No ha sido instalado F-Droid o Google Play + Configuración de la sincronizacion del calendario & contactos Ayuda Recomendar a un amigo Retroalimentación Exención de responsabilidad Recordar la ubicación del elemento compartido - Recordar la última ubicación del elemento compartido cargado. + Recordar la ubicación del elemento compartido más recientemente usado Prueba  %1$s en tu teléfono inteligente! - ¡Quisiera invitarlo a usar %1$s en su teléfono inteligente!\\nDescargue aquí: %2$s + Quisiera invitarlo a usar %1$s en su teléfono inteligente\nDescargue aquí: %2$s Verficar el servidor Dirección del servidor https://… Nombre de usuario Contraseña - Aún no tiene un servidor? \nDa click aquí para obtener uno de un proveedor + Aún no tiene un servidor? \nHaga click aquí para obtener uno de un proveedor Archivos Conectar Cargar @@ -86,43 +86,43 @@ No hay un archivo para cargar %1$s no puede cargar una fragmento de texto como un archivo. La información recibida no contiene un archivo válido. - El archivo no se puede cargar + Este archivo no puede ser cargado %1$s no tiene permitido leer un archivo recibido - El archivo a cargar no ha sido encontrado en su ubicación. Favor de verificar si el archivo existe. - Se presentó un error al copiar el archivo a una carpeta temporal. Favor de intentar enviarlo de nuevo. + El archivo seleccionado para cargar no fue encontrado. Favor de verificar si el archivo existe. + No fue posible copiar el archivo a una carpeta temporal. Favor de intentar enviarlo de nuevo. Opción de carga: Mover el archivo a la carpeta de Nextcloud Mantener el archivo en la carpeta de origen Borrar el archivo de la carpeta de origen hace algunos segundos No hay archivos aquí - ¡Cargue algún contenido o sincronice con sus dispositivos! - ¡Marque algunos archivos como favoritos o sincronice con sus dispositivos! + Cargue algún contenido o sincronice con sus dispositivos. + Marque algunos archivos como favoritos o sincronice con sus dispositivos. Los archivos y carpetas que marque como favoritos se mostrarán aquí - ¡No se encontraron archivos marcados como favoritos en su consulta! + Su búsqueda no regresó archivos marcados como favoritos. Cargando… - ¡No se encontró una aplicación para este tipo de archivo! + No se cuenta con una aplicación que maneje este tipo de achivo. No hay archivos en esta carpeta No hay resultados en esta carpeta No hay resultados - Aún no hay favoritos + Aún no hay nada marcado como favorito Aún no hay nada compartido Los archivos y carpetas que comparta se mostrarán aquí. No hay videos No hay fotos - ¿Intentó buscar en otra carpeta? + ¿Tal vez está dentro de una carpeta diferente? No se encontraron archivos que hayan sido modificado en los últimos 7 días - ¡No se encontraron archivos para su búsqueda que hayan sido modificados -en los últimos 7 días! + Su búsqueda no encontró archivos que hayan sido modificados +en los últimos 7 días. No se encontraron archivos agregados recientemente - ¡No se encontraron archivos agregados recientemente para su consulta! - ¡Cargue algunas fotos o active la carga automática! - ¡Ninguna foto fue encontrada para su búsqueda! - ¡Cargue algunos videos o active la carga automática! - ¡No se encontraron videos para su búsqueda! + Su búsqueda no encontró archivos recientemente agregados. + Cargue algunas fotos o active la carga automática. + Su búsqueda no encontró fotografías. + Cargue algunos videos o active la carga automática. + Su búsqueda no encontró videos. No hay cargas disponibles - ¡Cargue nuevo contenido o active la carga instantánea! - ¡Cargue algún contenido o active la carga automática! + Cargue algún contenido o active la carga instantánea + Cargue algún contenido o active la carga automática carpeta carpetas archivo @@ -135,7 +135,7 @@ en los últimos 7 días! Descargar Sincronizar El archivo se renombró como %1$s durante la carga - Vista de lista + Vista enlistada Compartir No @@ -161,10 +161,10 @@ en los últimos 7 días! Nombre de la carpeta Cargando … %1$d%% Cargando %2$s - Carga exitosa + Cargado %1$s cargado Falla en la carga - La carga de %1$s no pudo ser completada + No fue posible cargar %1$s Falla en la carga, necesita autenticarse de nuevo Cargas Actual @@ -181,22 +181,22 @@ en los últimos 7 días! No se encontró el archivo local Error de permisos Conflicto - La aplicación ha cerrado inesperadamente + La aplicación ha sido terminada Error desconocido - Esperando conexión Wi-Fi + Aguardando conectividad Wi-Fi Esperando para cargar Descargando … %1$d%% Descargando %2$s - Descarga exitosa + Descargado %1$s descargado Falla en la descarga - La descarga de %1$s no pudo ser completada + No fue posible descargar %1$s Aún no ha descargado Falla en la descarga, necesita ingresar a su cuenta de nuevo Elija una cuenta Falla en la sincronización - Falla en la sincronización; necesita ingresal a su cuenta de nuevo - La sincronización de %1$s no pudo ser completada + Falla en la sincronización, necesita volver a inicar sesión + No fue posible completar la sincronización de %1$s Contraseña inválida para %1$s Se encontraron conflictos %1$d archivos mantenidos-en-sincronización no pudieron ser sinconizados @@ -204,14 +204,14 @@ en los últimos 7 días! El contenido de%1$d archivos no pudo ser sincronizado (%2$d conflictos) Algunos archivos locales se han perdido %1$d archivos de la carpeta %2$s no pudieron ser copiadas - A partir de la versión 1.3.16, los archivos cargados desde este dispositivo son copiados a la carpeta local %1$s para prevenir pérdidas de datos cuando un archivo es sincronizado entre cuentas múltiples.\n\nDebido a este cambio, todos los archivos subidos en versiones anteriores de esta aplicación fueron copiadas a la carpeta %2$s. Sin embargo, un error evitó completar esta operación durante la sincronización de la cuenta. Usted puede dejar el(los) archivo(s) como están y eliminar la liga a %3$s, o bien mover el(los) archivo(s) a la carpeta %1$s y mantener la liga a %4$s.\n\nSe enlistan a continuación los archivos locales y remotos en %5$s a donde estaban ligados. - La carpeta %1$s ya no existe. + A partir de la versión 1.3.16, los archivos cargados desde este dispositivo son copiados a la carpeta local %1$s para prevenir perdidas de datos cuando un archivo se sincroniza entre múltiples cuentas. \n\nDervado de este cambio, todos los archivos cargados con versiones anteriores de la aplicación fueron copiados a la carpeta %2$s. Sin embargo, un error evitó que se completara esta operación durante la sincronizacion de la cuenta. Usted puede dejar el(los) archivo(s) como está(n) y eliminar la liga a %3$s, o bine, mover el(los) archivo(s) a la carpeta %1$s y mantener la liga a%4$s.\n\nSe enlistan a continuación los archivos locales asi como los archivos remotos en %5$s a donde estaban ligados. + La carpeta %1$s ya no existe Mover todo Todos los archivos fueron movidos Algunos archivos no puderon ser movidos Local: %1$s Remoto: %1$s - No hay suficiente espacio para copair los archivos seleccionados a la carpeta %1$s. Le gustaría moverlos? + El espacio insuficiente evita que se copien los archivos seleccionados dentro de la carpeta %1$s. ¿Le gustaría moverlos ahí en su lugar? Favor de ingresar su código de seguridad Ingrese su código de seguridad @@ -229,15 +229,15 @@ en los últimos 7 días! %1$s reproducción finalizada No se encontró el archivo No se ha proporcionado una cuenta - No se ha encontrado el archivo en una cuenta válida + El archivo no está en una cuenta válida Codec no soportado - El archivo no ha podido ser leído - El archivo no ha sido codificado correctamente - Tiempo de espera expirado al intentar reproducir - Archivo de medio no puede ser transmitido como flujo - El archivo de medios no se puede reproducir con el reproductor predeterminado + No fue posible leer el archivo de medios + El archivo de medios tiene una codificacion incorrecta + El intento de reproducir el archivo agotó el tiempo de espera. + Archivo de medio no puede ser transformado a un flujo + El reproductor predeterminado no puede reproducir el archivo de medios Se presentó un error de seguridad al intentar reproducir %1$s - Se presentó un error en la entrada de datos al intentar reproducir %1$s + Se presentó un error de entrada al intentar reproducir %1$s Se presentó un error inesperado al intentar reproducir %1$s Botón de rebobinar Botón de reproducir o pausar @@ -250,13 +250,13 @@ en los últimos 7 días! Conexión establecida Probando conexión La configuración del servidor está mal formada. - Una cuenta para el mismo usuario y servidor ya existe en el dispositivo + Ya existe una cuenta en el dispositivo para el mismo usuario y servidor El usuario ingresado no corresponde con el usuario de esta cuenta ¡Se presentó un error desconocido! No fue posible encontrar el servidor - No se encontró la instancia del servidor + El servidor no se encontró El servidor tardó demasiado en responder - Formato de dirección del servidor erróneo + El formato de dirección para el servidor es erróneo Falla en la inicialización de SSL No fue posible verificar la identidad del servidor SSL Versión del servidor no reconocida @@ -265,14 +265,14 @@ en los últimos 7 días! Nombre de usuario o contraseña incorrecto Autorización no exitosa Acceso denegado por el servidor de autorización - Estado inesperado; Favor de reingresar la dirección del servidor + Estado inesperado, favor de reingresar la dirección del servidor Su autorización ha expirado. Favor de volver a autorizar Por favor ingrese su contraseña actual Su sesión ha expirado. Favor de conectarse de nuevo - Conectando al servidor de autenticación ... + Conectando al servidor de autenticación... El servidor no soporta este método de autenticación %1$s no soporta cuentas múltiples - El servidor no está regresando un Id de usuario correcto, favor de contactar al adminitrador + Su servidor no está regresando un ID de usuario correcto, favor de contactar al adminitrador No es posible autenticarse en este servidor La cuenta aún no existe en el dispositivo @@ -283,28 +283,28 @@ en los últimos 7 días! Renombrar Eliminar ¿Realmente desea eliminar %1$s? - ¿Desea realmente eliminar %1$s y sus contenidos? + ¿Realmente quiere eliminar %1$s y sus contenidos? Sólo local - Eliminado exitosamente + Eliminado Falla al eliminar Ingrese un nombre nuevo - No ha sido posible cambiar el nombre de la copia local, intente ingresar un nombre differente - No se pudo completar el renombrado - El archivo remoto no pudo ser verificado + No fue posible renombar la copia local, intente con un nombre diferente + No fue posible renombrar el servidor + No fue posible verificar el archivo remoto Los contenidos del archivo ya han sido sincronizados - La carpeta no pudo ser creada + No fue posible crear la carpeta Caracteres inválidos: / \\ < > : \" | ? * El nombre del archivo contiene al menos un caracter inválido. El nombre del archivo no puede estar vacío - Espere un momento + Espere un momento... Verificando credenciales almacenadas - Problema inesperado; favor de seleccionar el archivo de una aplicación diferente  - No se ha seleccionado un archivo + Problema inesperado, favor de seleccionar el archivo desde una aplicación diferente + No se ha seleccionado algún archivo Enviar la liga a … Copiando el archivo desde almacenamiento privado Iniciar sesión con oAuth2 - Conectando al servidor oAuth2... + Conectando al servidor OAuth 2... La identidad del sitio no pudo ser verificada - El certificado del servidor no es de confianza @@ -312,7 +312,7 @@ en los últimos 7 días! - Las fechas del certificado del servidor están en el futuro - La URL no corresponde con el nombre del servidor en el certificado ¿Desea confiar en este certificado de todas formas? - El certificado no pudo ser guardado + No fue posible guardar el certificado Detalles Ocultar Emitido para: @@ -341,9 +341,9 @@ en los últimos 7 días! 2012/05/18 12:23 PM 12:23:45 - Cargar sólo mediante WiFi - Cargar imágenes a través de WiFi únicamente - Cargar videos a través de WiFi únicamente + Cargar sólo mediante Wi-Fi + Cargar imágenes sólo a través de Wi-Fi + Cargar videos sólo a través de Wi-Fi Cargar archivos sólo con el dispositivo conectado a la toma de corriente Cargar archivos sólo con el dispositivo conectado a la toma de corriente /CargasInstantáneas @@ -353,9 +353,9 @@ en los últimos 7 días! versión local versión de servidor - ¡Disculpas por eso! + Disculpe. Vista previa de imagen - La imagen no puede ser mostrada + No es posible mostrar la imagen %1$s no pudo ser copiado a la carpeta local %2$s Carpeta de carga instantánea @@ -364,7 +364,7 @@ en los últimos 7 días! Usar sub carpetas Almacenar en sub carpetas con base en el año y mes - Lo sentimos, no se permite compartir en su servidor. Favor de contactar a su adminstrador. + No se permite compartir en su servidor. Favor de contactar a su adminstrador. No fue posible compartir. Favor de revisar si el archivo existe Se presentó un error al trtatar de compartir este archivo o carpeta Falla al dejar de compartir. Favor de revisar si existe el archivo @@ -382,52 +382,53 @@ en los últimos 7 días! Se presentó un error inesperado al copiar al portapapeles Texto copiado desde %1$s - Error crítico: no se pueden realizar operaciones + Error crítico: No se pueden realizar operaciones - Se presentó un error al conectarse con el servidor - Se presentó un error al esperar respuesta del servidor; la operación no pudo ser completada - Se presentó un error al esperar respuesta del servidor; la operación no pudo ser completada - La operación no pudo ser completada; el servidor no está disponible - Usted no cuenta con los permisos %s + Se presentó un error durante la conexión alel servidor. + Se presentó un error al esperar respuesta del servidor. La operación no pudo ser completada. + Se presentó un error al esperar respuesta del servidor La operación no pudo ser completada. + La operación no pudo ser completada. El servidor no está disponible + + No se le permite %s para renombrar este archivo para borrar este archivo para compartir este archivo para dejar de compartir este archivo para actualizar este recurso compartido para crear el archivo - para cargar esta carpeta + para cargar a esta carpeta El archivo ya no se encuentra disponible en el servidor Actualizando la ruta de almacenamiento Terminar - Preparando para la migración… + Preparando la migración… Verificando el destino… Guardando la configuración de las cuentas… - En espera de las sincronizaciones incompletas… + Esperando que todas las sincronizaciones terminen… Moviendo información… Actualizando índice… Limpiando… - Restaurando configuración de cuentas… + Guardando la configuración de las cuentas… Terminado - ERROR: No cuenta con espacio suficiente - ERROR: El archivo no se puede escribir + ERROR: Espacio insuficiente + ERROR: No se puede escribir el archivo ERROR: El archivo no se puede leer ERROR: El directorio de Nextcloud ya existe - ERROR: Durante la migración - ERROR: Durante la actualización del índice + ERROR: Falla durante la migración + ERROR: Falla durante la actualización del índice - La carpeta de datos ya existe. ¿Qué desa hacer? - Anular - Usar existente + La carpeta de datos ya existe. Elija una de las siguientes: + Remplazar + Usar Cuentas Agregar cuenta Administrar cuentas - La conexión segura se está redirigiendo a través de una ruta insegura + La conexión segura se está redirigiendo a través de una ruta insegura. Registros Enviar histórico - No se cuenta con una aplicación para el envío de bitácoras. Favor de instalar una aplicación de correo electrónico. + No se encontró alguna aplicación para el envío de bitácoras. Favor de instalar un cliente de correo electrónico.  %1$s bitácora de aplicación Android Cargando información … @@ -435,10 +436,10 @@ en los últimos 7 días! Contraseña incorrecta Mover Copiar - No hay nada aquí. ¡Puede agregar una carpeta! + No hay nada aquí. Puede agregar una carpeta. Seleccionar - Falla al mover. Favor de revisar si el archivo existe + No fue posible mover el archivo. Favor de verificar si existe. No es posible mover una carpeta dentro de una de sus sub carpetas El archivo ya existe en la carpeta de destino Se presentó un error al intentar mover este archivo o carpeta @@ -512,7 +513,7 @@ en los últimos 7 días! %1$s (correo electrónico) %1$s ( a las %2$s ) - Lo sentimos, su versión del servidor no permite compartir con usuarios entre clientes.\nFavor de contactar a su adminsitrador + Actualice la versión del servidor para permitir compartir entre usuarios desde dentro de sus clientes.\nFavor de contactar a su adminsitrador puede compartir puede editar crear @@ -521,42 +522,42 @@ en los últimos 7 días! Dejar de compartir terminado - Falla en el reintento + El reintento falló Borrar fallidos - Borrar exitosos - Borrar todos + Borrados + Borrar cargas terminadas Vista de cuadrícula Vista de lista Administrar espacio - Los ajustes, base de datos y certificados del servior de %1$s serán borrados permanentemente.\n\nLos archivos descargados se mantendrán sin cambios.\n\nEste proceso puede tomar algo de tiempo. + Los ajustes, base de datos y certificados del servior de los datos de %1$s serán borrados permanentemente.\n\nLos archivos descargados se mantendrán sin cambios.\n\nEste proceso puede tomar algo de tiempo. Borrar datos No fue posible borrar algunos archivos - Se requieren permisos adicionales para cargar & descargar archivos. - No se encontró el archivo en el disco local + Se requieren permisos adicionales para cargar y descargar archivos. + No se encontró el archivo en sistema de archivos local ¿Realmente desea eliminar los elementos seleccionados? ¿Realmente desea eliminar los elementos seleccionados y su contenido? - Esperando la regarga del dispositivo + Aguardando la regarga del dispositivo Buscar Esta es una característica de Nextcloud, favor de actualizar. Conozca más Carga automática Participe - Ayúdenos a probar + Ayúdenos probando ¿Encontró una falla? ¿Hay algo raro? Reportar un tema en Github - ¿Le interesaría ayudarnos a probar la siguiente Versión? + ¿Le interesaría ayudarnos a probar la siguiente versión? Probar la versión de desarrollo - Esto incluye todas las próximas características y es lo más nuevo. Fallas/errores pueden ocurrir y si es el caso, favor de reportarnoslos. + Esto incluye todas las últimas funcionalidades y es lo más nuevo. Fallas/errores pueden ocurrir y si es el caso, favor de reportarnoslos.  Candidato a lanzamiento - El candidato a lanzamiento (CL) es una foto del más próximo lanzamiento y se espera que sea estable. Las pruebas a su configuración individual podría ayudarnos a asegurar esto. Regístrese para hacer pruebas en la Play Store o consulte directamente la sección de  \"versiones\" en F-Droid. + El candidato a lanzamiento (CL) es una foto del más próximo lanzamiento y se espera que sea estable. Las pruebas a su configuración individual podrían ayudarnos a asegurar esto. Regístrese para hacer pruebas en la Play Store o consulte directamente la sección de \"versiones\" en F-Droid. Contribuya activamente Únase a las conversaciones en IRC: <a href=\"%1$s\">#nextcloud-mobile</a> Ayude a los demás en el <a href=\"%1$s\">foro</a> <a href=\"%1$s\">Traduzca</a> la aplicación - Contribuya como desarrollador, consulte <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUIR.md</a> para más detalles + Revise, corrija y escriba código, consulte <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUIR.md</a> para más detalles Mover a… Copiar a… Seleccione la carpeta… @@ -564,7 +565,7 @@ en los últimos 7 días! No se encontraron carpetas de medios Preferencias de carga automática Ajustes - La carga instantánea ha sido completamente moderinzada. Favor de ver el menú principal y reconfigurar sus cargas automáticas. Disculpenos por los inconvenientes. \n\nDisfrute de las nuevas y extendidas capacidades de cargas automáticas. + La carga instantánea ha sido completamente moderinzada. Reconfigure su carga automática desde el menu principal. \n\nDisfrute de las nuevas y extendidas capacidades de la carga automática. Para %1$s %d seleccionado @@ -578,7 +579,7 @@ en los últimos 7 días! No hay notificaciones Favor de verificar más tarde. - Ingrese el nombre del archivo y el tipo del archivo a cargar + Ingrese el nombre y el tipo del archivo a cargar Nombre de archivo Tipo de archivo Archivo snippet de texto(.txt) @@ -594,7 +595,7 @@ en los últimos 7 días! Un lugar seguro para todos sus datos - Acceda, comparta  & proteja todos sus archivos de casa y de su empresa + Acceda, comparta y proteja sus archivos en casa y la oficina Multi cuenta Conéctese a todas sus nubes @@ -619,31 +620,34 @@ en los últimos 7 días! Aún no hay actividades - Este flujo le mostrará eventos tales como \nagregados, cambios & compartidos + Este flujo le mostrará eventos tales como \nagregados, cambios & elementos compartidos Se presentó un error Acerca de - Respaldo de contactos + Respaldar contactos + Restaurar contactos Respaldar ahora Restaurar el último respaldo Restaurar Respaldar Respaldo de contactos Último respaldo - Se requieren permisos de lectura para los contactos - Se requieren permisos de escritura para los contactos + Se requiere el permiso para leer la lista de contactos + Se requiere el permiso para cambiar la lista de contactos Restaurar contactos Restaurar los contactos seleccionados - Seleccione la cuenta para importar - ¡Sin permisos, nada ha sido importado! + Seleccione la cuenta a importar + ¡No se otorgaron permisos, nada fue importado! Seleccione una fecha nunca No se encontraron archivos + ¡Su último respaldo no fue encontrado! El respaldo está calendarizado y deberá iniciar en breve La importación está calendarizada y deberá iniciar en breve No se han recibido nuevas notificaciones + Salir de la sesión diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index a55d659165..5175f47e0b 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -34,6 +34,7 @@ Ajustes Subidas Actividades + Notificaciones %1$s de %2$s utilizado Cerrar Abrir @@ -42,11 +43,13 @@ Cuentas Gestionar cuentas Contraseña + Bloqueo con huella dactilar + No se han configurado huellas dactilares Mostrar archivos ocultos Subida instantánea de imágenes - Sube instantáneamente las fotos tomadas con la cámara - Subidas instantáneas de video - Sube instantáneamente los vídeos grabados con la cámara + Subir instantáneamente imágenes de la cámara + Subida instantánea de vídeo + Subir instantáneamente vídeos grabajdos con la cámara Habilitar registro Esto es usado para registrar problemas Historial del registro @@ -55,23 +58,23 @@ Sincronizar calendario y contactos Configurar DAVdroid (v1.3.0 +) de la cuenta actual La dirección del Servidor para su cuenta no ha podido ser resuelta por DAVdroid - No está instalada la aplicación de Google Play ni la de F-Droid - Calendario & contactos se ha sincronizado exitosamente + Ni F-Droid ni Google Play están instalados + Sincronización de calendario y contactos configurada Ayuda Recomendar a un amigo Observaciones Pie de imprenta - Recordar la ubicación de los archivos compartidos - Recordar la ubicación de los últimos archivos compartidos subidos + Recordar la localización del compartido + Recordar la localización del compartido más recientemente usado ¡Prueba %1$s en su smarthphone! - ¡Quiero invitarle a usar %1$s en su smartphone!\nDescárgalo aquí: %2$s + Quiero invitarte a usar %1$s en tu móvil.\nDescárgalo aquí: %2$s Verificar servidor Dirección del servidor https://… Nombre de usuario Contraseña - ¿No tiene un servidor aun?\nHaga click aquí para obtener uno desde un proveedor + ¿No tienes todavía un servidor?\Pulsa aquí para conseguir uno de un proveedor Archivos Conectar Subir @@ -83,42 +86,43 @@ Ningún archivo para subir %1$s No se puede subir un texto como si fuera un archivo. No hay ningún archivo válido en los datos recibidos. - No se puede subir el archivo + Este archivo no puede subirse %1$s No está autorizado a leer el archivo. - El archivo a subir no se encuentra. Compruebe que el archivo existe. - Ha ocurrido un error al copiar a la carpeta temporal. Por favor intentelo de nuevo. + No se encuentra el archivo seleccionado para subir. Por favor, comprueba que el archivo existe. + No se pudo copiar el archivo a una carpeta temporal. Intenta volver a enviarlo. Configuraciones de subida: Mover el archivo a la carpeta de Nextcloud Mantener el archivo en la carpeta original Borrar archivo de la carpeta original hace segundos No hay archivos aquí - ¡Suba algun contenido o sincronice con sus dispositivos! - ¡Marque algun archivos como favoritos o sincronice con sus dispositivos! - Los archivos y carpetas que marque como favoritos aparecerán aquí - ¡No se encontraron archivos favoritos en su consulta! + Sube algún contenido o sincroniza con tus dispositivos. + Marca como favoritos algunos archivos o sincronízalos con tus dispositivos. + Los archivos y carpetas que marques como favoritos aparecerán aquí + Tu búsqueda no encontró ningún archivo favorito. Cargando… - ¡Aplicación no encontrada para el tipo de archivo! + No hay una app configurada para manejar este tipo de archivos. No hay archivos en esta carpeta. No hay resultados en esta carpeta Sin resultados + Nada marcado como favorito todavía Aún no hay nada compartido Aquí aparecerán los archivos y carpetas que usted comparta No hay videos No hay fotos - ¿Ha intentado buscar en otra carpeta? - No se modificaron archivos en los últimos 7 días - ¡No se encontraron para su consulta, archivos que - fueran modificados en los últimos 7 días! - No se encontraron archivos agregados recientemente - ¡No se encontraron archivos agregados recientemente para su consulta! - ¡Suba algunos archivos o active la subida automática! - ¡No hay fotos encontradas para su consulta! - ¡Suba unos videos o active la subida automática! - ¡No se encontraron videos para su consulta! + ¿Quizás está en una carpeta diferente? + No se encontraron archivos modificados en los últimos 7 días. + Tu búsqueda no encontró archivos modificados + en los últimos 7 días. + No se encontraron archivos recientemente añadidos + Tu búsqueda no encontró archivos recientemente añadidos. + Sube algunas imágenes o activa la subid automática. + Tu búsqueda no encontró fotos. + Sube algunos vídeos o activa la subida automática. + Tu búsqueda no encontró vídeos. No hay subidas disponibles - ¡Suba algún contenido o active subidas instantáneas! - ¡Suba con tenido o active la subida automática! + Sube algún contenido o activa la subida instantánea. + Sube algún contenido o active la subida automática. carpeta carpetas archivo @@ -130,14 +134,14 @@ Modificado: Descargar Sincronizar - El archivo fue renombrado como %1$s durante la subida - Listar diseño + Archivo renombrado a %1$s durante la subida + Formato de lista Compartir No Aceptar Quitar los datos para subir - Reintentar la subida + Volver a intentar la subida Cancelar sincronización Cancelar Volver @@ -157,10 +161,10 @@ Nombre de la carpeta Subiendo … %1$d%% Subiendo %2$s - Subido con éxito + Subido %1$s subido Error en la subida - La subida de %1$s no se pudo completar + No se pudo subir %1$s Subida fallida, necesita volver a iniciar sesión Subidas Actual @@ -179,29 +183,29 @@ Conflicto La aplicación se ha interrumpido Error desconocido - Esperando a la conexión wifi + Esperando la conexóin Wi-Fi Esperando para subir Descargando … %1$d%% Descargado de %2$s - Descarga completa + Descargado %1$s descargado Falló la descarga - La descarga de %1$s no se pudo completar + No se pudo descargar %1$s No descargado La descarga falló, necesita volver a iniciar sesión Elija una cuenta Sincronización fallida - Sincronización fallida, necesita volver a iniciar sesión - La sincronización de %1$s no pudo ser completada - Contraseña no válida para %1$s + La sincronización falló, tienes que volver a iniciar sesión + No se pudo completar la sincronización de %1$s + Contraseña errónea para %1$s Se encontraron conflictos No se pudo mantener sincronizados los contenidos de %1$d archivos Fallos en la sincronización de contenidos Los contenidos de %1$d archivos no pudieron sincronizarse (%2$d conflictos) Algunos archivos locales se han perdido %1$d archivos en la carpeta %2$s no pudieron ser copiados a - A partir de la versión 1.3.16, los archivos subidos desde este dispositivo se copian en la carpeta local %1$s para evitar la pérdida de datos cuando se sincroniza un único archivo con varias cuentas.\n\nDebido a este cambio, todos los archivos subidos con versiones anteriores de esta aplicación fueron copiados a la carpeta %2$s. Sin embargo, un error impidió que se completara esta operación durante la sincronización de la cuenta. Puede dejar los archivos tal cual como están y eliminar el enlace hacia %3$s o mover los archivos a la carpeta %1$s y mantener el enlace hacia %4$s.\n\nAbajo se muestran los archivos locales y los archivos remotos en %5$s a los que fueron enlazados. - La carpeta local %1$s no existe. + A partir de la versión 1.3.16, los archivos subidos desde este dispositivo se copian en la carpeta local %1$s para evitar la pérdida de datos cuando se sincroniza un único archivo con varias cuentas.\n\nDebido a este cambio, todos los archivos subidos con versiones anteriores de esta aplicación fueron copiados a la carpeta %2$s. Sin embargo, un error impidió que se completara esta operación durante la sincronización de la cuenta. Puede dejar los archivos tal cual como están y eliminar el enlace hacia %3$s o mover los archivos a la carpeta %1$s y mantener el enlace hacia %4$s.\n\nDebajo se muestran los archivos locales y los archivos remotos en %5$s a los que fueron enlazados. + La carpeta %1$s ya no existe Mover todo Todos los archivos fueron movidos No se han podido mover algunos archivos @@ -228,11 +232,11 @@ El archivo no está en una cuenta válida Códec no soportado El archivo de medios no pudo ser leído - Archivo no codificado correctamente + El archivo de medios tiene una codificación incorrecta Tiempo de espera agotado en el intento de reproducción El archivo de medios no puede ser transmitido - El archivo de medios no se puede reproducir con el reproductor de medios por defecto - Error de seguridad al intentar reproducir %1$s + El reproductor por defecto no puede reproducir el archivo de medios + Se encontró un error de seguridad intentando reproducir %1$s Error de entrada al intentar reproducir %1$s Error inesperado al intentar reproducir %1$s Botón de rebobinado @@ -249,28 +253,28 @@ Ya existe una cuenta en este dispositivo con los mismos datos de usuario y servidor El usuario introducido no concuerda con el usuario de esta cuenta Ocurrió un error desconocido - Error: no se pudo encontrar el host - Instancia de servidor no encontrada + No se pudo encontrar el host + Servidor no encontrado El servidor ha tardado demasiado en responder Formato de dirección del servidor incorrecto Falló la inicialización SSL - No fue posible verificar la identidad del servidor SSL + No se ha podido verificar la identidad del servidor SSL No se reconoce la versión del servidor No se ha podido establecer la conexión Conexión segura establecida Nombre de usuario o contraseña incorrectos Autorización fallida Acceso denegado por el servidor de autorización - Estado inesperado; por favor introduzca su dirección de correo de nuevo + Estado inesperado; por favor, introduce de nuevo la dirección del servidor Su autorización ha expirado. Por favor, autorice de nuevo Por favor introduzca su contraseña actual Su sesión ha expirado. Por favor conéctese de nuevo - Conectando al servidor de autentificación + Conectando al servidor de autentificación... El servidor no soporta este método de autenticación %1$s no soporta cuentas múltiples Su servidor no está retornando una identificación de usuario correcta; contacte a un administrador No puede autenticarse a este servidor - Aún no existe la cuenta en el dispositivo + La cuenta no existe todavía en el dispositivo Marcar el modo disponible a desconectado Desmarcar el modo disponible de desconectado @@ -279,23 +283,23 @@ Renombrar Borrar ¿Está seguro que quiere eliminar %1$s? - ¿Realmente desea eliminar %1$s y todo su contenido? + ¿Realmente deseas eliminar %1$s y todo su contenido? Sólo local - Borrado correctamente + Eliminado El borrado no se pudo completar Introduzca un nombre nuevo - No se pudo cambiar el nombre de la copia local, trate con un nombre differente - No se pudo cambiar el nombre + No se ha podido cambiar el nombre de la copia local, prueba un nombre diferente + No se ha podido dar un nombre nuevo al servidor No se ha podido comprobar el archivo remoto Ya está sincronizado - No se pudo crear la carpeta + No se ha podido crear la carpeta Caracteres ilegales: / \\ < > : \" | ? * Nombre de archivo contiene al menos un carácter no válido El nombre de archivo no puede estar vacío - Espere un momento + Espere un momento... Comprobando las credenciales guardadas - Problema inesperado; por favor, pruebe otra app para seleccionar el archivo - No hay archivos seleccionados. + Problema inesperado; por favor, selecciona el archivo en una app diferente + No hay archivos seleccionados Enviar enlace a … Copiando el archivo desde el almacenamiento privado. @@ -308,7 +312,7 @@ - El certificado del servidor es de una fecha que aún no ha llegado - La URL no coincide con el nombre de dominio del certificado ¿Confía de todas formas en este certificado? - No se pudo guardar el certificado + No se ha podido guardar el certificado Detalles Ocultar Emitido para: @@ -337,11 +341,11 @@ 2012/05/18 12:23 PM 12:23:45 - Subir únicamente por WiFi - Subir fotos por wifi únicamente - Subir archivos por wifi únicamente - Subir solo al cargar - Subir solo al cargar + Subir solamente por Wi-Fi + Subir fotos solamente por Wi-Fi + Subir vídeos solamente por Wi-Fi + Subir solamente al cargar + Subir solamente al cargar /InstantUpload Conflicto con archivo ¿Qué archivos desea mantener? Si selecciona ambas versiones, el archivo local tendrá un número añadido a su nombre. @@ -351,7 +355,7 @@ ¡Lo sentimos! Previsualización de imagen - La foto no puede ser mostrada. + No se puede mostrar la imagen %1$s se pudo copiar a la carpeta local %2$s Carpeta para subida instantánea @@ -360,7 +364,7 @@ Usar subcarpetas Archivar en subcarpetas basadas en año y mes. - Lo siento, la función compartir no está activada en su servidor. Contacte a su administrador. + La función Compartir no está activada en su servidor. Contacte a su administrador. No se puede compartir. Revise si el archivo existe Ocurrió un error al tratar de compartir este archivo o carpeta No se puede dejar de compartir. Revise si el archivo existe @@ -378,19 +382,20 @@ Error inesperado al copiar al portapapeles Texto copiado de %1$s - Error crítico: no es posible realizar operaciones + Error crítico: no se puede realizar operaciones Ocurrió un error al conectarse con el servidor. - Ocurrió un error al esperar la respuesta del servidor, la operación no se pudo realizar - Ocurrió un error al esperar la respuesta del servidor, la operación no se pudo realizar - La operación no se pudo completar; el servidor no está disponible + Ha ocurrido un error al esperar la respuesta del servidor. La operación no se ha podido completar. + Ha ocurrido un error al esperar la respuesta del servidor. La operación no se ha podido completar. + La operación no se ha podido completar. El servidor no está disponible + No tiene permiso %s para renombrar este archivo para eliminar este archivo para compartir este archivo para descompartir este archivo para actualizar este comparto - para crear el archivo + para crear este archivo para subir archivos a esta carpeta Este archivo ya no se encuentra en el servidor @@ -399,7 +404,7 @@ Preparando la migración… Comprobando destino… Guardando configuración de cuentas… - Esperando sincronizaciones no finalizadas… + Esperando que todas las sincronizaciones terminen… Moviendo datos… Actualizando índice… Limpiando… @@ -409,21 +414,21 @@ ERROR: El archivo no se puede escribir ERROR: El archivo no se puede leer ERROR: El directorio de Nextcloud ya existe - ERROR: Al migrar - ERROR: Al actualizar el índice + ERROR: Fallo durante la migración + ERROR: Fallo al actualizar el índice - La carpeta de datos ya existe. ¿Qué hacer? - Anular - Usar existente + La carpeta de datos ya existe. Escoge una de las opciones: + Reemplazar + Usar Cuentas Agregar cuenta Administrar cuentas - La conexión segura está siendo redirigida por una ruta insegura. + La conexión segura está siendo redirigida a través de una ruta insegura. Registros Mandar historial. - Aplicación para enviar registros no fue encontrada. Por favor instale una aplicación de correo. + No se ha encontrado ningua app para enviar los registros. Por favor, instala un cliente de correo electrónico. Se han encontrado %1$s aplicaciones de registros para Android Cargando datos … @@ -431,26 +436,26 @@ Contraseña incorrecta Mover Copiar - Nada por aquí. ¡Puede agregar una carpeta! + Nada por aquí. Puedes agregar una carpeta. Elegir - No se puede mover. Revise si el archivo existe - No se puede mover una carpeta dentro de una de sus subcarpetas. + No se puede mover el archivo. Comprueba si existe + No se puede mover una carpeta dentro de una de sus propias subcarpetas. El archivo ya existe en la carpeta de destino Hubo un error al tratar de mover este archivo o carpeta mover este archivo No se puede copiar. Revise si existe el archivo - No se puede copiar una carpeta dentro de una de sus subcarpetas. - El archivo ya existe en el directorio de destino + No se puede copiar una carpeta dentro de una de sus propias subcarpetas. + El fichero ya existe en el directorio de destino Hubo un error al tratar de copiar este archivo o carpeta copiar este archivo Subidas instantáneas Detalles - Carpeta para subida instantánea de vídeos + Carpeta para subida instantáneo de vídeos La sincronización de la carpeta %1$s no se pudo completar compartido @@ -508,7 +513,7 @@ %1$s (correo electrónico) %1$s ( en %2$s ) - Lo siento, su versión de servidor no permite compartir con usuarios desde los clientes.\nPor favor, contacte con su administrador + Actualiza la versión del servidor para permitir compartir entre usuarios desde sus clientes.\nPor favor, contacta con tu administrador puede compartir puede editar crear @@ -517,10 +522,10 @@ Parar de compatir hecho - Reintento fallido + Nuevo intento fallido Limpieza fallida Limpieza exitosa - Limpiar todo al finalizar + Limpiar subidas finalizadas Vista en cuadrícula Ver lista @@ -530,8 +535,8 @@ Limpiar datos No se han podido eliminar algunos archivos - Se requieren permisos adicionales para subir & y descargar archivos. - El archivo no se encuentra en el servidor local de archivos. + Se necesitan permisos adicionales para subir y descargar archivos. + El archivo no se encuentra en el sistema de archivos local. ¿Está seguro de que quiere eliminar los elementos seleccionados? ¿Está seguro de que quiere eliminar los elementos seleccionados y sus contenidos? Esperando la carga del dispositivo @@ -541,17 +546,18 @@ Subida automática Participar Ayúdanos a realizar pruebas - ¿Encontró un error? ¿Algo está mal? + ¿Encontraste un error? ¿Algo va mal? Informar de un problema en Github - ¿Está interesado en ayudarnos a probar la próxima versión? - Esto incluye todas las características por llegar y está muy avazado en lo último. Pueden ocurrir fallos y errores, que si sucede, por favor infórmanos. + ¿Estás interesado en ayudarnos a probar la próxima versión? + Probar la versión de desarrollo + Esto incluye todas las características por llegar y está muy avazado en lo último. Pueden ocurrir fallos y errores y, si suceden infórmanos, por favor. Versión a ser liberada - La versión a ser liberada (release candidate - RC) es una instantánea de la próxima versión y se espera que sea estable. Probar su configuración individual podría ayudar a asegurar esto. Regístrese para probarla en Play Store o busque manualmente en la sección \"versiones\" de F-Droid. + La versión a ser liberada (release candidate - RC) es una instantánea de la próxima versión y se espera que sea estable. Probar su configuración individual podría ayudar a asegurar esto. Regístrate para probarla en Play Store o busca manualmente en la sección \"versiones\" de F-Droid. Colabore activamente Únase a la conversación en IRC: <a href=\"%1$s\">#nextcloud-mobile</a> Ayude a otros en el foro <a href=\"%1$s\"></a>. <a href=\"%1$s\">Traducen</a> la app - Contribuya como desarrollador, vea <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> para más detalles + Revisa, corrige y escribe código, lee <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> para más detalles Mover a… Copiar a… Elija carpeta… @@ -559,7 +565,7 @@ No se han encnotrado carpetas de medios. Preferencias de subida automática Configuración - La subida instantánea ha sido completamente renovada. Por favor, vaya al menú principal y reconfigure sus subidas instantáneas. Disculpe las molestias.\n\n¡Disfrute las nuevas y extendidas capacidades de la subida automática! + La subida instantánea ha sido completamente renovada. Reconfigura tus subidas instantáneas en el menú principal.\n\n¡Disfruta las nuevas y extendidas capacidades de la subida automática! Durante %1$s %d seleccionado @@ -569,7 +575,11 @@ Cargando actividades… No se encontró actividad. - Ingrese nombre y tipo de archivo de subida + Cargando notificaciones… + No hay notificaciones + Por favor, comprúebalo más tarde. + + Introduce el nombre y tipo de archivo para subir Nombre de archivo Tipo de archivo Archivo de texto recortado (.txt) @@ -585,7 +595,7 @@ Un lugar seguro para tus datos - Acceda, comparta y proteja sus archivos en casa y en su empresa + Accede, comparte y protege tus archivos en casa y en el trabajo Múltiples cuentas Conectar con todas sus nubes @@ -595,6 +605,9 @@ Omitir + Por favor, escanea tu dedo + Dedo no reconocido + Nombre completo Correo electrónico @@ -607,5 +620,34 @@ Aun no hay actividad - Esta secuencia le mostrará eventos como\nagregados, cambios& recursos compartidos - + Esta secuencia le mostrará eventos como\ninclusiones, cambios y archivos compartidos + Ha ocurrido un error + Acerca de + + Copia de seguridad de los contactos + Restaurar los contactos + Realizar la copia de seguridad ahora + Restaurar la última copia de seguridad + Restaurar + Copia de seguridad + Copia de seguridad de los contactos + Última copia de seguridad + Se necesita el permiso para leer la lista de contactos + SE necesita el permiso para cambiar la lista de contactos + Restaurar contactos + Restaurar los contactos seleccionados + Escoge la cuenta para importar + No se han concedido permisos. ¡No se ha importado nada! + Escoge fecha + nunca + No se ha encontrado ningún archivo + ¡No podemos encontrar tu última copia de seguridad! + Copia de seguridad programada. Comenzará en breve + Importación programada. Comenzará en breve + + + Nueva notificación recibida + Desconectar + + + diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index 643830614f..31764c2bd1 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -46,10 +46,10 @@ Verrouillage par empreinte digitale Aucune empreinte digitale n\'a été installée. Afficher les fichiers masqués - Téléversement immédiat des photos - Téléverser immédiatement les photos prises par la caméra - Téléversement immédiat des vidéos - Téléverser immédiatement les vidéos prises par la caméra + Téléversements immédiats de photos + Téléverser immédiatement les photos prises par l\'appareil photo + Téléversements immédiats de vidéos + Téléverser immédiatement les vidéos prises par l\'appareil photo Activer la journalisation Cela est utilisé pour la journalisation des problèmes Historique de la journalisation @@ -59,7 +59,7 @@ Configurer DAVdroid (v1.3.0+) pour le compte actuel Une adresse de serveur pour le compte pourrait ne pas être résolue par DAVdroid Aucune application Google Play store ou F-Droid installée - La synchronisation de l\'agenda & des contacts a bien été configurée. + Synchronisation de l\'agenda & des contacts configurée Aide Recommander à un ami Nous contacter par mail @@ -68,7 +68,7 @@ Mémoriser le dernier emplacement de téléversement Essayez %1$s sur votre smartphone ! - J\'aimerais vous inviter à utiliser %1$s sur votre smartphone !\nTéléchargez-le ici : %2$s. + J\'aimerais vous inviter à utiliser %1$s sur votre smartphone.\nTéléchargez-la ici : %2$s. Vérifier le serveur Adresse du serveur https://… @@ -88,41 +88,40 @@ Les données reçues n\'incluent aucun fichier valide Le fichier ne peut pas être téléversé %1$s n\'est pas autorisé à lire un fichier reçu - Le fichier à téléverser n\'a pas été trouvé dans son emplacement. Merci de vérifier si ce fichier existe. - Une erreur est survenue lors de la copie du fichier vers un dossier temporaire. Merci de recommencer votre envoi. + Le fichier à téléverser n\'a pas été trouvé. Merci de vérifier si ce fichier existe. + Impossible de copier le fichier vers un dossier temporaire. Merci de recommencer votre envoi. Option de téléversement : Déplacer le fichier dans le dossier Nextcloud Conserver le fichier dans le dossier original Supprimer le fichier du dossier original à l\'instant - Aucun fichier - Déposez du contenu ou synchronisez vos appareils ! - Mettez certains fichiers en favoris ou synchronisez vos appareils ! + Aucun fichier ici + Déposez du contenu ou synchronisez vos appareils. + Mettez certains fichiers en favoris ou synchronisez vos appareils. Les fichiers et dossiers ajoutés à vos favoris apparaîtront ici - Auncun fichier mis en favori trouvé qui correspond à votre requête ! + Auncun fichier mis en favori trouvé qui correspond à votre requête. Chargement… - Aucune application trouvée pour ce type de fichier ! + Aucune application trouvée pour ce type de fichier. Aucun fichier n\'est présent dans ce dossier. Aucun résultat dans ce dossier Aucun résultat - Aucun favoris pour l\'instant + Rien n\'est mis en favoris pour l\'instant Rien n\'est partagé pour l\'instant Les fichiers et dossiers que vous partagez apparaîtront ici Aucune vidéo Aucune photo - Essayez de chercher dans un autre dossier ? + Il se trouve peut-être dans un autre dossier ? Aucun fichier modifié au cours des 7 derniers jours trouvé - Aucun fichier trouvé qui correspond à votre requête qui a été modifié - durant les 7 derniers jours ! - Auncun fichier ajouté récemment trouvé - Auncun fichier ajouté récemment trouvé qui correspond à votre requête ! - Téléversez des photos ou activez le téléversement automatique ! - Aucune photo trouvée qui correspond à votre requête ! - Téléversez des vidéos ou activez le téléversement automatique ! - Aucune vidéo trouvée qui correspond à votre requête ! + Votre recherche n\'a pas retourné de fichiers modifiés dans les 7 derniers jours. + Aucun fichier ajouté récemment trouvé + Votre recherche n\'a pas renvoyée de fichiers récement ajoutés. + Téléversez des photos ou activez le téléversement automatique. + Aucune photo trouvée qui correspond à votre requête. + Téléversez des vidéos ou activez le téléversement automatique. + Aucune vidéo trouvée qui correspond à votre requête. Aucun historique de téléversement - Téléversez du contenu ou activez le téléversement instantané ! - Téléversez du contenu ou activez le téléversement instantané ! + Téléversez du contenu ou activez le téléversement instantané. + Téléversez du contenu ou activez le téléversement automatique. dossier dossiers fichier @@ -161,10 +160,10 @@ Nom du dossier Téléversement… Téléversement de %2$s : %1$d%% - Envoi terminé + Téléversé %1$s téléversé Échec du téléversement - Le téléversement de %1$s a échoué + Impossible de téléverser %1$s Le téléversement a échoué, vous devez vous reconnecter Historique des envois Actuellement @@ -183,21 +182,21 @@ Conflit L\'application a été arrêtée Erreur inconnue - En attente d\'une connexion wifi + En attente d\'une connexion WiFi En attente de téléversement Téléchargement en cours… Téléchargement de %2$s : %1$d%% effectués - Réception terminée + Téléchargé %1$s téléchargé Le téléchargement a échoué - Le téléchargement de %1$s a échoué + Impossible de télécharger %1$s Pas encore téléchargé Le téléchargement a échoué, vous devez vous reconnecter Choisissez un compte La synchronisation a échoué La synchronisation a échoué, vous devez vous reconnecter - La synchronisation de %1$s a échoué - Mot de passe invalide pour %1$s + Impossible de terminer la synchronisation de %1$s + Mauvais mot de passe pour %1$s Des conflits ont été trouvés %1$d fichiers à garder synchronisés n\'ont pu être synchronisés La synchronisation des fichiers a échoué @@ -231,7 +230,7 @@ Aucun compte fourni Le fichier n\'est pas dans un compte valide Le codec de ce média n\'est pas pris en charge - Le fichier média ne peut pas être lu + Impossible de lire le fichier média Le fichier média n\'est pas correctement encodé Délai dépassé pour la lecture du morceau Le fichier média ne peut pas être diffusé @@ -285,7 +284,7 @@ Voulez-vous vraiment supprimer %1$s ? Voulez-vous vraiment supprimer %1$s et ses contenus ? Local seulement - Suppression terminée avec succès + Supprimé Échec de la suppression Entrez un nouveau nom La version locale ne peut être renommée ; veuillez réessayer avec un nom différent @@ -296,10 +295,10 @@ Caractères interdits : / \\ < > : \" | ? * Le nom de fichier contient au moins un caractère invalide Le nom du fichier ne peut pas être vide - Veuillez patienter + Veuillez patienter... Vérification des identifiants enregistrés Problème inattendu ; veuillez sélectionner le fichier depuis une autre application - Aucun fichier n\'était sélectionné + Aucun fichier sélectionné Envoyer le lien vers … Copie du fichier depuis le stockage privé @@ -353,7 +352,7 @@ version locale version serveur - Désolé à propos de cela ! + Désolé. Prévisualisation de l\'image L\'image ne peut pas être affichée @@ -382,12 +381,13 @@ Erreur inattendue lors de la copie vers le presse-papiers Texte copié depuis %1$s - Erreur critique : impossible de réaliser les opérations + Erreur critique : Impossible de réaliser les opérations Une erreur est survenue pendant la connexion au serveur. Une erreur est survenue pendant l\'attente du serveur. L\'opération n\'a pas pu être effectuée Une erreur est survenue pendant l\'attente du serveur. L\'opération n\'a pas pu être effectuée - Impossible de réaliser l\'opération, le serveur n\'est pas accessible. + Impossible de réaliser l\'opération. Le serveur n\'est pas accessible + Vous n\'avez pas la permission %s de renommer ce fichier de supprimer ce fichier @@ -409,15 +409,15 @@ Nettoyage… Restauration de la configuration des comptes… Terminé - ERREUR : Espace insufisant + ERREUR : Espace insuffisant ERREUR : Le fichier n\'est pas modifiable - ERREUR : Le fichier est illisible + ERREUR : Le fichier n\'est pas lisible ERREUR : Le dossier Nextcloud existe déjà - ERREUR : Lors de la migration - ERREUR : Lors de la mise à jour de l\'index + ERREUR : Echec lors de la migration + ERREUR : Echec lors de la mise à jour de l\'index - Le dossier de données existe déjà, que souhaitez-vous faire ? - Écraser + Le dossier de données existe déjà. Choisissez une des options suivantes : + Remplacer Conserver le dossier actuel Comptes @@ -435,10 +435,10 @@ Mot de passe incorrect Déplacer Copier - Il n\'y a rien ici. Vous pouvez ajouter un dossier ! + Il n\'y a rien ici. Vous pouvez ajouter un dossier. Valider - Impossible de déplacer. Vérifiez que le fichier existe + Impossible de déplacer le fichier. Vérifiez que le fichier existe Il n\'est pas possible de déplacer un dossier vers un de ses descendants Le fichier existe déjà dans le dossier de destination Une erreur est survenue lors de la tentative de déplacement de ce fichier ou dossier @@ -496,7 +496,7 @@ Ajouter un Utilisateur ou un Groupe Partager par lien public Indiquer une date d\'expiration - Protéger par un mot de passe + Protéger avec un mot de passe Sécurisé Permettre la modification Masquer la liste des fichiers @@ -521,10 +521,10 @@ Terminer le partage Terminé - Relancer les échoués + Réessayer les téléversements échoués Effacer les échoués - Effacer les envoyés - Effacer tous les terminés + Effacé + Effacer tous les téléversements terminés Affichage Mosaïque Affichage Liste @@ -534,7 +534,7 @@ Effacer les données Certains fichiers n\'ont pu être supprimés. - Des permissions supplémentaires sont exigées pour téléverser & télécharger des fichiers. + Des permissions supplémentaires sont exigées pour téléverser et télécharger des fichiers. Le fichier n\'a pas été trouvé sur le système de fichier local Voulez-vous vraiment supprimer les éléments sélectionnés ? Voulez-vous vraiment supprimer les éléments sélectionnés et leurs contenus ? @@ -544,27 +544,27 @@ En apprendre plus Téléversement automatique Participer - Aidez-nous à améliorer Nextcloud + Aidez nous en le testant Vous avez trouvé un bug ? Quelque chose vous semble étrange ? Signaler un problème sur Github Vous avez envie de nous aider en testant les futures versions ? Testez la version Bêta La version Beta inclut les dernières fonctionnalités qui sont encore toutes fraîches. Des erreurs peuvent se produire et si c\'est le cas, merci de nous les signaler. Testez la version Release Candidate - La version « release candidate » (RC) est un instantanné de la dernière version supposée stable. Le test de votre configuration pourrait nous aider à nous assurer que cette version est entièrement stable. Inscrivez vous pour être testeur sur le Play store ou allez jeter un œil dans la section \"versions\" de F-Droid. + La version « release candidate » (RC) est un instantanné de la prochaine version et est supposée stable. Le test de votre configuration pourrait nous aider à nous assurer que cette version est entièrement stable. Inscrivez vous pour être testeur sur le Play store ou allez jeter un œil dans la section \"versions\" de F-Droid. Participez activement Rejoignez la discussion sur IRC <a href=\"%1$s\">#nextcloud-mobile</a>. Aidez les autres sur le <a href=\"%1$s\">forum</a>. <a href=\"%1$s\">Traduisez</a> l\'application. - Vous êtes développeur ? Consultez <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a>. + Vous êtes développeur ? Consultez <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> pour plus d\'informations Déplacer vers… Copier vers… Sélectionner le dossier… Chargement des dossiers… Aucun dossier média trouvé. - Préférences du téléversement automatique + Préférences pour le téléversement automatique Paramètres - Le téléversement immédiat a été complètement réorganisé. Merci de bien vouloir accéder au menu principal et de reconfigurer votre téléversement automatique. Désolé pour le désagrément.\n\nProfitez des nouvelles capacités étendues du téléversement automatique ! + Le téléversement immédiat a été complètement réorganisé. Merci de bien vouloir accéder au menu principal et de reconfigurer votre téléversement automatique.\n\nProfitez des nouvelles capacités étendues du téléversement automatique. Pour %1$s %d sélectionné @@ -619,16 +619,17 @@ Aucune activité pour le moment - Ce flux affichera des événements comme\n des ajouts, des changements & des partages + Ce flux liste les événements tels que\nles ajouts, les modifications et les partages Une erreur est survenue À propos Copie de sauvegarde des contacts + Restaurer les contacts Sauvegarder maintenant Restaurer la dernière copie de sauvegarde Restaurer Copie de sauvegarde - Copie de sauvegarde des contacts + Sauvegarde des contacts Dernière copie de sauvegarde L\'autorisation de lecture des contacts est nécessaire L\'autorisation d\'écriture des contacts est nécessaire @@ -639,11 +640,13 @@ Choisir la date jamais Aucun fichier trouvé + Nous ne trouvons pas votre dernière copie de sauvegarde ! Sauvegarde planifiée et va commencer prochainement Importation planifiée et va commencer prochainement Nouvelle notification reçue + Se déconnecter diff --git a/src/main/res/values-nb-rNO/strings.xml b/src/main/res/values-nb-rNO/strings.xml index 109c16ed41..cca06b033f 100644 --- a/src/main/res/values-nb-rNO/strings.xml +++ b/src/main/res/values-nb-rNO/strings.xml @@ -1,6 +1,6 @@ - %1$s Android app + %1$s Android-program versjon %1$s Oppdater konto Last opp @@ -46,10 +46,10 @@ Fingeravtrykkslås Det har ikke blitt satt opp noen fingeravtrykk. Vis skjulte filer - Umiddelbare bildeopplastninger - Last opp bilder tatt av kameraet umiddelbart - Umiddelbar opplasting av filmer - Last opp filmer tatt opp av kameraet umiddelbart + Umiddelbar opplasting av bilder + Last opp bilder tatt med kameraet med én gang + Umiddelbar opplasting av video + Last opp videoer tatt med kameraet med én gang Aktiver loggføring Denne er brukt til å loggføre problemer Loggføringshistorikk @@ -58,23 +58,16 @@ Synkroniser kalender & kontakter Sett opp DAVdroid (v1.3.0+) for nåværende konto Tjeneradressen for kontoen ble ikke funnet for DAVdroid - Ingen Google Play butikk eller F-Droid app er installert - Kalender & kontaktsynkronisering ble satt opp + Hverken F-droid eller Google play er installert Hjelp Anbefal til en venn Tilbakemelding Avtrykk - Husk delt plassering - Husk sist delt plassering for opplasting - - Prøv %1$s på smarttelefonen din! - Jeg ønsker å invitere deg til å bruke %1$s på smarttelefonen din!\nLast ned her: %2$s - - Sjekk tjener + Prøv %1$s på smarttelefonen din! + Sjekk tjener Tjeneradresse https://... Brukernavn Passord - Har du ingen tjener enda?\nKlikk her for å opprette en hos en tilbyder Filer Koble til Last opp @@ -86,43 +79,29 @@ Ingen fil å laste opp %1$s kan ikke laste opp tekst som en fil. Mottatte data inneholder ingen gyldig fil. - Filen kan ikke lastes opp + Denne filen kan ikke lastes opp %1$s er har ikke tilgang til å se mottatt fil - Filen som skulle lastes opp ble ikke funnet der den skulle være. Vennligst sjekk at filen finnes. - En feil oppstod under kopiering av filen til en midlertidig mappe. Vennligst prøv å sende på nytt. + Fil valgt for opplasting ble ikke funnet. Sjekk hvorvidt filen eksisterer. + Kunne ikke kopiere fil til midlertidig mappe. Prøv å sende igjen. Alternativer for opplasting: Flytt filen til Nextcloud mappen Behold filen i kildemappe Slett filen fra kildemappen for få sekunder siden Ingen filer her - Last opp innhold eller synkroniser med enhetene dine. - Marker noen filer som favoritter eller synkroniser enhetene dine! - Filer og mapper du markerer som favoritter vil vises her - Din spørring returnerte ingen filer markert som favoritter! Laster… - Ingen applikasjon funnet for filtypen! Det er ingen filer i denne mappen. Ingen resultater i denne mappen Ingen resultater - Ingen favoritter ennå Ingenting delt enda Filer og mapper som du deler vil bli vist her Ingen videoer Ingen bilder - Vil du prøve i en annen mappe? - Fant ingen filer endret de siste syv dagene - Spørringen din returnerte ingen filer endret - de siste syv dagene! Fant ingen nylig tillagte filer - Din spørring returnerte ingen filer som nylig er blitt lagt til! - Last opp noen bilder eller aktiver automatisk opplasting! - Din spørring returnerte ingen bilder! - Last opp noen videoer eller skru på automatisk opplasting! - Din spørring returnerte ingen vidoer! + Søket ditt frambragte ingen nylig tillagte filer. + Last opp noen bilder eller aktiver automatisk opplasting. + Ditt søk frambragte ingen bilder. Ingen opplastinger tilgjengelig - Last opp innhold eller aktiver umiddelbar opplasting. - Last opp noe innhold eller aktiver automatisk opplasting! mappe mapper fil @@ -134,14 +113,11 @@ Endret: Last ned Synkroniser - Filnavnet ble endret til %1$s under opplasting - Listevisning Delt ressurs Ja Nei Ok Fjern opplasting - Prøv å laste opp igjen. Avbryt synkronisering Avbryt Tilbake @@ -161,10 +137,10 @@ Mappenavn Laster opp … %1$d%% Laster opp %2$s - Opplasting fullført + Opplastet %1$s lastet opp Opplasting feilet - Opplasting av %1$s kunne ikke fullføres + Kunne ikke laste opp %1$s Opplasting feilet, du må logge inn på nytt Opplastinger Nåværende @@ -181,37 +157,30 @@ Finner ikke lokal fil Tillatelsesfeil Konflikt - Applikasjonen ble avsluttet Ukjent feil - Venter på trådløstilkobling Venter på å laste opp Laster ned … %1$d%% Laster ned %2$s - Nedlasting fullført + Nedlastet %1$s lastet ned Nedlasting feilet - Nedlasting av %1$s kunne ikke fullføres + Kunne ikke laste ned %1$s Ikke lastet ned enda Nedlasting mislyktes, du må logge inn på nytt Velg konto Synkronisering feilet - Synkronisering feilet, du må logge inn på nytt - Synkronisering av %1$s kunne ikke fullføres - Ugyldig passord for %1$s + Feil passord for %1$s Konflikter funnet %1$d hold-i-synk filer kunne ikke synkroniseres Holdt-i-synk -filer mislyktes Innholdet av %1$d filer kunne ikke synkroniseres (%2$d konflikter) Noen lokale filer ble glemt %1$d filer fra %2$s mappen kunne ikke kopieres til - Fra versjon 1.3.16 blir filer som lastes opp fra denne enheten kopiert inn i den lokale mappen %1$s for å forhindre tap av data når samme fil synkroniseres med flere kontoer.\n\nPga. denne endringen ble alle filer som er blitt lastet opp med tidligere versjoner av denne appen, kopiert til mappe %2$s. Imidlertid kunne ikke denne kopieringen fullføres under konto-synkroniseringen pga. en feil. Du kan enten la filen(e) ligge der de ligger og fjerne lenken til %3$s, eller flytte filene til mappe %1$s og beholde lenken til %4$s.\n\nNedenfor finner du en liste over de lokale filene og de eksterne filene i %5$s som de var lenket til. - Mappen %1$s finnes ikke lengre Flytt alle Alle filer ble flyttet Noen filer kunne ikke fjernes Lokal: %1$s Ekstern: %1$s - Det er ikke nok plass til å kopiere de valgte filene inn i mappen %1$s. Vil du flytte dem i stedet? Sett inn passordet ditt Skriv inn passordet ditt @@ -229,16 +198,7 @@ %1$s avspilling avsluttet Ingen mediafil funnet Ingen konto angitt - Filen er ikke i en gyldig konto Ustøttet mediakodek - Mediafilen kunne ikke leses - Mediafilen er ikke riktig kodet - Tidsavbrudd under avspillingsforsøk - Mediafilen kan ikke strømmes - Mediafilen kan ikke spilles med forvalgt mediaspiller - Sikkerhetsfeil under avspilling av %1$s - Inndatafeil under avspilling av %1$s - Uventet feil under avspilling av %1$s Spol tilbake Spill eller pause Spol fremover @@ -250,32 +210,22 @@ Tilkobling opprettet Tester forbindelsen Feil i tjenerkonfigurasjon - En konto for samme bruker og tjener finnes allerede på enheten Den innskrevne brukeren samsvarer ikke med brukeren av denne kontoen Ukjent feil oppstod! - Fant ikke tjener - Finner ikke tjenerinstans + Fant ikke vert Tjeneren brukte for lang tid på å svare - Feil format på tjeneradresse Oppstart av SSL mislyktes - Kunne ikke verifisere SSL-tjenerens identitet Ukjent tjenerversjon - Klarte ikke å opprette tilkobling Sikker tilkobling opprettet Feil brukernavn eller passord Mislykket autorisasjon Tilgang nektet av autorisasjonstjener - Uventet tilstand. Legg inn tjeneradressen på nytt Autorisasjonen din har gått ut. Autoriser igjen Legg inn nåværende passord Økta di har gått ut. Koble til igjen - Kobler til autentiseringstjener.. Tjeneren støtter ikke denne autorisasjonsmetoden %1$s støtter ikke flere kontoer - Tjeneren din svarer ikke med korrekt bruker-ID, vennligst ta kontakt med en administrator Kan ikke autentisere mot denne tjeneren - Kontoen eksisterer ikke på enheten enda - Sett som tilgjengelig frakoblet Fjern som tilgjengelig frakoblet Sett som favoritt @@ -283,36 +233,26 @@ Endre navn Fjern Vil du virkelig fjerne %1$s? - Vil du virkelig fjerne %1$s inkludert innholdet? Kun lokalt - Fjerning var vellykket + "Fjernet" Fjerning mislyktes Skriv inn et nytt navn - Lokal kopi kunne ikke endre navn; prøv et annet navn - Klarte ikke å endre navn - Eksterne filer kunne ikke sjekkes filinnhold er allerede synkronisert - Mappe kunne ikke opprettes Forbudte tegn: / \\ < > : \" | ? * Filnavnet inneholder minst ett ulovlig tegn Filnavn kan ikke være tomt - Vent et øyeblikk + Vent et øyeblikk… Sjekker lagrede påloggingsdetaljer - Uventet problem; vennligst velg filen fra en annen applikasjon - Ingen fil ble valgt Send lenke til … Kopierer fil fra privat lager Logg inn med oAuth2 - Kobler til oAuth2 tjener... - Identiteten til siden kunne ikke bekreftes - Tjenerens sertifikat er ikke til å stole på - Tjenerens sertifikat er utløpt - Tjenersertifikatets gyldige datoer er i fremtiden - Nettadressen samsvarer ikke med vertsnavnet i sertifikatet Vil du stole på dette sertifikatet likevel? - Sertifikatet kunne ikke lagres Detaljer Skjul Utstedt til: @@ -341,21 +281,17 @@ 18.05.2012 12:23 12:23:45 - Last opp kun via Wi-Fi - Last opp bilder kun via Wi-Fi - Last kun opp filmer via Wi-Fi - Last kun opp under lading - Last kun opp under lading + Bare last opp på Wi-Fi + Bare last opp bilder på Wi-Fi /Direkteopplasting Filkonflikt - Hvilke filer ønsker du å beholder? Hvis du velger begge versjonene, får den lokale filen lagt til et tall i navnet. Behold begge lokal versjon tjenerversjon - Beklager! + Beklager. Bildeforhåndsvisning - Bildet kan ikke vises + Kunne ikke vise bilde %1$s kunne ikke kopieres til lokal mappe %2$s Mappe for umiddelbar opplasting @@ -364,7 +300,6 @@ Bruk undermapper Lagre filer i undermapper basert på år og måned - Beklager, deling er ikke skrudd på for din tjener. Ta kontakt med administratoren. Kan ikke dele. Sjekk om filen eksisterer. Det skjedde en feil under deling av denne filen eller mappen Kan ikke fjerne deling. Sjekk om filen eksisterer. @@ -378,56 +313,32 @@ Kopier lenke Kopiert til utklippstavlen - Ingen tekst ble mottatt for kopi til utklippstavlen Uventet feil ved kopiering til utklippstavle Teksten ble kopiert fra %1$s - Kritisk feil: Kan ikke utføre operasjonene - - En feil oppstod ved oppretting av forbindelse til tjeneren. - En feil oppstod ved venting på svar fra tjeneren. Operasjonen kunne ikke utføres - En feil oppstod ved venting på svar fra tjeneren. Operasjonen kunne ikke utføres - Operasjonen kunne ikke fullføres. Tjeneren er utilgjengelig - Du har ikke tillatelse til %s å gi denne filen nytt navn å slette denne filen å dele denne filen å avslutte deling av denne filen å oppdatere denne delingen - å opprette filen - å laste opp i denne mappen Filen finnes ikke på tjeneren lenger Oppdaterer sti for lagring Fullfør - Forebereder migrering… Sjekker mål… - Lagrer kontokonfigurasjon… - Venter på uferdig synkronisering… Flytter data… Oppdaterer index… Rydder… - Gjenoppretter kontokonfigurasjon… Fullført - FEIL: Ikke nok plass - FEIL: Filen er skrivebeskyttet - FEIL: er ikke lesbar FEIL: Nextcloudmappen finnes allerede - FEIL: Under migrering - FEIL: Under oppdatering av indeks - - Datamappe finnes fra før, hva skal gjøres? - Overstyr - Bruk eksisterende + Erstatt + Bruk Kontoer Legg til en konto Håndter kontoer - Sikker tilkobling videresendes gjennom en usikker rute. - - Logger + Logger Send historikk - Fant inget program til forsendelse av logger. Installer e-post-program. %1$s Android applikasjons-logger Laster data … @@ -435,27 +346,20 @@ Feil passord Flytt Kopier - Ingenting her. Du kan legge til en mappe! Velg - Kan ikke flytte. Sjekk om filen eksisterer. - Det er ikke mulig å flytte en mappe inn i sin egen undermappe - Filen finnes allerede i målmappen En feil oppstod ved flytting av denne filen eller mappen å flytte denne filen Kan ikke kopiere. Sjekk om filen eksisterer - Det er ikke mulig å kopiere en mappe inn i sin egen undermappe - Filen finnes allerede i målmappen En feil oppstod ved kopiering av denne filen eller mappen å kopiere denne filen Umiddelbare opplastinger Detaljer - Mappe for umiddelbar opplasting av filmer - Synkronisering av %1$s mappe kunne ikke fullføres + Synkronisering av %1$s mappe kunne ikke fullføres delt med deg @@ -496,7 +400,6 @@ Legg til bruker eller gruppe Del lenke Sett utløpsdato - Passordbeskyttet Sikret Tillat redigering Skjul filliste @@ -512,7 +415,6 @@ %1$s (e-post) %1$s ( hos %2$s ) - Beklager, tjenerversjonen din tillater ikke klienter å dele med brukere. \nKontakt systemadministratoren kan dele kan endre opprette @@ -521,50 +423,35 @@ Avslutt deling ferdig - Forsøkte igjen, feilet. + Nytt forsøk mislyktes Sletting feilet - Sletting vellykket - Slett alle ferdige - Rutenett-visning Listevisning Håndter plass - Innstillinger, database og tjenersertifikater fra %1$s\'s filer vil bli slettet. \n\nNedlastede filer blir urørt.\n\nDette kan ta noe tid. Nullstill data Noen filer kunne ikke fjernes. - Flere tillatelser trengs for å laste opp & ned filer. - Filen ble ikke funnet i lokalt filsystem Vil du virkelig fjerne de valgte elementene? Vil du virkelig fjerne de valgte elementene og dets innhold? - Venter på lading av enhet. Søk Dette er en Nextcloud funksjon, vennligst oppdater. Lær mer Auto-opplasting Delta - Hjelp oss å teste - Funnet en feil? Føles noe rart? Meld en feil på Github - Er du interessert i å hjelpe oss å teste ned neste versjonen? Test utvikler-versjonen - Dette inkluderer alle kommende funksjoner og er helt på kanten. Feil/feilmeldinger kan oppstå og i sådant fall, meld fra om dem til oss. Release candidate - Release candidate (RC) er en pakke av den kommende utgaven og er forventet å være stabil. Ved å teste denne med ditt oppsett vil kunne hjelpe oss å sikre dette. Meld deg på for testen i Play butikken eller se i versjonsseksjonen i F-Droid. Bidra aktivt Delta i chat på IRC: <a href="%1$s">#nextcloud-mobile</a> Hjelp andre på <a href="%1$s">forumet</a> <a href="%1$s">Oversette</a> app\'en - Bidra som en utvikler, se <a href="https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a> for detaljer Flytt til… Kopier til… Velg mappe… Laster inn mapper… Ingen mediamapper funnet. - Innstillinger for auto-opplasting Innstillinger - Umiddelbar opplasting er fullstendig omarbeidet. Se hovedmenyen og konfigurer auto-opplasting på nytt. Beklager uleiligheten.\n\nTa i bruk de nye og utvidede mulighetene i auto-opplasting. For %1$s %d valgt @@ -578,7 +465,6 @@ Ingen varsler Kom innom senere og ta en titt. - Legg inn filnavn og -type for opplasting Filnavn Filtype Textfil-snutt(.txt) @@ -594,8 +480,6 @@ Et trygt hjem for alle dine data - Benytt, del & beskytt filene dine hjemme og i din bedrift - Multi-konto Foren alle skyene dine @@ -619,23 +503,17 @@ Ingen aktivitet enda - Denne strømmen vil vise hendelser som\nf.eks. innlegging, endring og deling Feil oppstod Om - Sikkerhetskopiering av kontakter - Sikkerhetskopier nå Gjenopprett fra siste sikkerhetskopiering Gjenopprett Sikkerhetskopier Sikkerhetskopi av kontakter Siste sikkerhetskopi - Lesetilgang til kontaktliste trengs - Skrivetilgang til kontaktliste trengs Gjenopprett kontakter Gjenopprett valgte kontakter - Velg konto for import - Ingen tilgang, ingenting importert! + Velg konto å importere Velg dato aldri Ingen fil funnet @@ -644,6 +522,4 @@ Nytt varsel mottatt - - - + diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index d580d28513..9256bbf842 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -47,9 +47,9 @@ Er zijn geen vingerafdrukken ingesteld. Verborgen bestanden weergeven Directe upload van afbeeldingen - Direct uploaden van foto\'s genomen met de camera + Direct vanaf camera uploaden van afbeeldingen Directe upload van video\'s - Direct uploaden van video\'s opgenomen met de camera + Direct vanaf de camera uploaden video\'s Logging inschakelen Dit wordt gebruikt om problemen te loggen. Logging-geschiedenis @@ -58,23 +58,24 @@ Synchroniseren agenda & contactpersonen DAVdroid (v1.3.0+) voor huidige account instellen Serveradres voor dit account kon niet worden gevonden voor DAVdroid - Geen Google Play- of F-Droid-app geïnstalleerd - Agenda- & contactpersonensynchronisatie met succes ingesteld + Noch F-droid, noch Google Play is geïnstalleerd + Agenda & contactpersonen sync instellingen Help - Aanbevelen bij een vriend + Aanbevelen bij vriend Feedback afdruk Onthoud de share locatie - Onthoud de laatste upload locatie + Onthoud de laatst gebruikte share locatie Probeer %1$s op je smartphone! - Ik nodig je uit om eens %1$s op je smartphone te proberen!\nDownload hier: %2$s + Ik wil je uitnodigen om %1$s op je smartphone te gebruiken.\nDownload hier: %2$s Controleer server Serveradres https://… Gebruikersnaam Wachtwoord - Heb je nog geen server?\nKlik hier om er een van een provider te krijgen + Heb je nog geen server?\n +Kies er eentje van een provider. Bestanden Verbinden Uploaden @@ -86,42 +87,43 @@ Niets te uploaden %1$s kan niet een stuk tekst als bestand uploaden. Ontvangen gegevens bevatten geen geldig bestand. - Bestand kan niet worden geüpload + Dit bestand kan niet worden geüpload %1$s heeft geen toestemming om een ontvangen bestand te lezen - Het te uploaden bestand is hier niet. Controleer of het bestand wel bestaat. + Voor upload geselecteerde bestand niet gevonden. Controleer of het bestaat. Er trad een fout op bij het kopiëren van het bestand naar een tijdelijke map. Probeer het opnieuw te versturen. Uploadoptie: Verplaats bestand naar Nextcloud-map Bewaar het bestand in de bronmap Verwijder bestand uit bronmap seconden geleden - Hier zijn geen bestanden - Upload bestanden of synchroniseer met je apparaten! + Hier geen bestanden + Upload je inhoud of synchroniseer met je apparaten. Maak enkele bestanden favoriet of synchroniseer met je apparaten! Bestanden en mappen gemarkeerd als favoriet worden hier getoond Geen favoriete bestanden gevonden voor je zoekopdracht! - Laden … - Geen app gevonden voor dit bestandsformaat! + Laden… + Er is geen app ingesteld om dit bestandformaat te behandelen. Er staan geen bestanden in deze map. Geen resultaten in deze map Geen resultaten - Nog geen favorieten + Nog niets als favoriet gemarkeerd Nog niets gedeeld Bestanden en mappen die je deelt, worden hier getoond Geen video\'s Geen foto\'s - In een andere map kijken? - Geen bestanden gevonden die  de laatste 7 dagen zijn gewijzigd - Geen gewijzigde bestanden gevonden voor je zoekopdracht die de laatste 7 dagen zijn gewijzigd! - Geen recent toegevoegde bestanden gevoden + Misschien staat het in een andere map? + Geen bestanden gevonden die de afgelopen 7 dagen werden gewijzigd + Je zoekopdracht vond geen bestanden die + in de laatste 7 dagen werden gewijzigd. + Geen recent toegevoegde bestanden gevonden Geen recent toegevoegde bestanden gevonden voor je zoekopdracht! - Upload enkele foto\'s of activeer auto-upload! - Geen foto\'s voor je zoekopdracht gevonden! - Upload enkele videos of activeer auto-upload! - Geen video\'s voor je zoekopdracht gevonden! + Upload enkele foto\'s of activeer auto-upload. + Geen foto\'s voor je zoekopdracht. + Upload enkele video\'s of activeer auto-upload. + Geen video\'s voor je zoekopdracht. Geen uploads beschikbaar - Upload bestanden of activeer directe uploads! - Upload enkele gegevens of activeer auto upload! + Upload enkele gegevens of activeer directe upload. + Upload enkele gegevens of activeer auto-upload. map mappen bestand @@ -133,14 +135,14 @@ Aangepast: Downloaden Synchroniseren - Bestand is tijdens het uploaden hernoemd naar %1$s + Bestand hernoemd naar %1$s tijdens de upload Lijstoverzicht Delen Ja Nee OK Upload verwijderen - Upload opnieuw proberen + Opnieuw uploaden Synchronisatie annuleren Annuleren Terug @@ -160,10 +162,10 @@ Mapnaam Uploaden … %1$d%% Uploaden van %2$s - Uploaden gelukt + Geüpload %1$s geüpload Uploaden mislukt - Uploaden van %1$s kon niet voltooid worden + Kon %1$s niet uploaden Uploaden mislukt, je moet opnieuw inloggen Uploads Huidige @@ -180,31 +182,31 @@ Lokaal bestand niet gevonden Permissiefout Conflict - App werd gesloten + App afgesloten Onbekende fout - Wachten op wifi-verbinding + Wachten op Wi-Fi verbinding Wachten om te uploaden Downloaden … %1$d%% Downloaden van %2$s - Downloaden gelukt + Gedownload %1$s gedownload. Downloaden mislukt - Downloaden van %1$s kon niet worden voltooid + Kon %1$s niet downloaden Nog niet gedownload Downloaden mislukt, je moet opnieuw inloggen Account kiezen Synchronisatie mislukt Synchronisatie mislukt, je moet opnieuw inloggen Synchronisatie van %1$s kon niet worden voltooid - Ongeldig wachtwoord voor %1$s + Onjuist wachtwoord voor %1$s Conflicten gevonden %1$d gesynchroniseerd te houden bestanden konden niet worden gesynchroniseerd Gesynchroniseerd te houden bestanden mislukt Inhoud van %1$d bestanden kon niet worden gesynchroniseerd (%2$d conflicten) Een paar lokale bestanden werden vergeten %1$d bestanden uit de %2$s-map konden niet worden gekopieerd naar - Vanaf versie 1.3.16 worden bestanden die vanaf dit apparaat worden geüpload ook gekopieerd naar de lokale map %1$s om gegevensverlies te voorkomen als een enkel bestand wordt gesynchroniseerd met meerdere accounts.\n\nDoor deze aanpassing werden alle bestanden die met een eerdere versie zijn geüpload gekopieerd naar de map %2$s. Maar een fout voorkwam het succesvol afronden van deze actie tijdens het synchroniseren. Je kunt de/het bestand(en) laten staan zoals ze nu zijn en de link naar %3$s verwijderen, of je kunt de bestanden verplaatsen naar de map %1$s en de link naar %4$s laten staan.\n\nHieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar verwezen. - Map %1$s bestaat niet meer + Vanaf versie 1.3.16 worden bestanden die vanaf dit apparaat worden geüpload ook gekopieerd naar de lokale map %1$s om gegevensverlies te voorkomen als een enkel bestand wordt gesynchroniseerd met meerdere accounts.\n\nDoor deze aanpassing werden alle bestanden die met een eerdere versie zijn geüpload gekopieerd naar de map %2$s. Maar een fout voorkwam het succesvol afronden van deze actie tijdens het synchroniseren. Je kunt de/het bestand(en) laten staan zoals ze nu zijn en de link naar %3$s verwijderen, of je kunt de bestanden verplaatsen naar map %1$s en de link naar %4$s laten staan.\n\nHieronder staan de lokale bestanden en de externe bestanden in %5$s waar ze naar verwezen. + Map %1$s bestaat niet meer Alles verplaatsen Alle bestanden zijn verplaatst Een paar bestanden konden niet worden verplaatst @@ -228,15 +230,15 @@ %1$s afspelen beëindigd Geen mediabestand gevonden Geen account opgegeven - Bestand niet in een geldig account + Het bestand hoort niet bij een geldig account Niet-ondersteunde mediacodec - Mediabestand kon niet worden gelezen + Kon het mediabestand niet lezen Mediabestand niet goed gecodeerd - Time-out tijdens het spelen + Time-out tijdens het afspelen Mediabestand kan niet worden gestreamd Mediabestand kan niet worden afgespeeld met de standaard mediaplayer Beveiligingsfout bij afspelen %1$s - Invoerfout bij afspelen %1$1s + Invoerfout bij afspelen %1$s Onverwachte fout bij afspelen %1$s Terugpoelknop Speel- of pauzeknop @@ -252,10 +254,10 @@ Er bestaat al een account voor deze gebruiker en server op dit apparaat De opgegeven gebruiker komt niet overeen met de gebruiker van dit account Onbekende fout opgetreden! - Kon host niet vinden - Serverinstantie niet gevonden + Kon server niet vinden + Server niet gevonden De server reageerde niet op tijd - Verkeerd serveradresformaat + Verkeerd adresformaat voor server SSL-initialisatie mislukt Kon de identiteit van de SSL-server niet verifiëren Niet-herkende serverversie @@ -264,16 +266,16 @@ Verkeerde gebruikersnaam of wachtwoord Autorisatie niet succesvol Toegang geweigerd door autorisatieserver - Onverwachte toestand; voer nogmaals het serveradres in + Onverwachte toestand; voer het serveradres opnieuw in Je autorisatie is verstreken. Autoriseer opnieuw Voer het huidige wachtwoord in Je sessie is verstreken. Verbind opnieuw - Verbinden met authenticatieserver … + Verbinden met authenticatieserver... De server ondersteunt deze authenticatiemethode niet %1$s ondersteunt het gebruik van meerdere accounts niet Je server geeft geen goede userid terug, neem contact op met je beheerder Kan niet autenticeren tegen deze server - Het account bestaat nog niet in dit apparaat + Account bestaan nog niet op dit apparaat Offline beschikbaar maken Niet langer offline beschikbaar maken @@ -284,26 +286,26 @@ Wil je %1$s echt verwijderen? Wil je %1$s en de inhoud ervan werkelijk verwijderen? Alleen lokaal - Succesvol verwijderd + Verwijderd Verwijderen mislukt Voer een nieuwe naam in Lokale kopie kon niet worden hernoemd; probeer een andere naam - Hernoemen kon niet worden voltooid - Extern bestand kon niet worden gecontroleerd + Kon de server geen nieuwe naam geven + Kon extern bestand niet controleren Bestandsinhoud is al gesynchroniseerd - Map kon niet worden aangemaakt + Kan map niet aanmaken Verboden tekens: / \\ < > : " | ? * De bestandsnaam bevat ten minste één ongeldig teken Bestandsnaam mag niet leeg zijn - Even geduld + Even geduld... Opgeslagen inloggegevens nakijken Onverwacht probleem; probeer het bestand met een andere app te selecteren - Er werd geen bestand geselecteerd + Geen bestand geselecteerd Verstuur link naar … Bestand vanaf privéopslag kopiëren Inloggen met oAuth2 - Verbinden met oAuth2-server … + Verbinden met OAuth 2 server… De identiteit van de site kan niet worden gecontroleerd - Het servercertificaat wordt niet vertrouwd @@ -335,16 +337,16 @@ Dit is een plaatshouder plaatshouder.txt - PNG-afbeelding + PNG afbeelding 389 KB 2012/05/18 12:23 12:23:45 - Alleen via wifi uploaden - Afbeeldingen alleen via WiFi uploaden - Videos alleen via WiFi uploaden - Alleen tijdens opladen uploaden - Alleen tijdens opladen uploaden + Alleen uploaden via Wi-Fi + Alleen afbeeldingen uploaden via Wi-Fi + Alleen video\'s uploaden via Wi-Fi + Alleen uploaden bij opladen + Alleen uploaden bij opladen /InstantUpload Bestandsconflict Welke bestanden wil je bewaren? Als je beide versies selecteert zal het lokale bestand een volgnummer aan de naam toegevoegd krijgen. @@ -352,9 +354,9 @@ lokale versie serverversie - Sorry hiervoor! + Sorry. Voorvertoning van afbeelding - Afbeelding kan niet worden getoond + Kan afbeelding niet tonen %1$s kon niet worden gekopieerd naar de lokale map %2$s Directe-uploadmap @@ -387,6 +389,7 @@ Er trad een fout op bij het wachten op de server, de verwerking kon niet plaatsvinden Er trad een fout op bij het wachten op de server, de verwerking kon niet plaatsvinden De verwerking kon niet plaatsvinden, de server is niet beschikbaar + Je mist autorisatie %s om dit bestand te hernoemen om dit bestand te verwijderen @@ -399,14 +402,14 @@ Opslagpad bijwerken Afronden - Voorbereiden van migratie … + Voorbereiden van migratie… Doelmap controleren … - Accountconfiguratie opslaan … - Wachten op onvoltooide synchronisaties … + Accountconfiguratie opslaan… + Wachten op onvoltooide synchronisaties… Gegevens verplaatsen … Index bijwerken … Opruimen … - Accountconfiguratie herstellen … + Accountconfiguratie herstellen… Afgerond FOUT: Niet genoeg ruimte FOUT: Bestand niet beschrijfbaar @@ -416,8 +419,8 @@ FOUT: Tijdens bijwerken index Gegevensmap bestaat al, wat te doen? - Overschrijven - Bestaande gebruiken + Vervangen + Gebruiken Accounts Account toevoegen @@ -543,8 +546,8 @@ Meer weten Automatisch uploaden Meedoen - Help ons testen - Foutje gevonden? Of iets raars? + Help bij testen + Bug gevonden? Rare dingen? Meld het op Github Geïnteresseerd om ons te helpen de volgende versie te testen? Test de dev versie @@ -555,7 +558,7 @@ Doe mee met de chat op IRC: <a href="%1$s">#nextcloud-mobile</a> Help andere gebruikers in de <a href="%1$s">forums</a> <a href="%1$s">Vertaal</a> de app - Doe mee als ontwikkelaar, zie <a href="https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a> voor details + Review, voeg toe en schrijf code, bekijk <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> voor details Verplaats naar … Kopieer naar … Kies map … @@ -643,6 +646,7 @@ Nieuwe meldingen ontvangen + Uitloggen diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index 41a82e3dbb..32e7c2b4ae 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -43,11 +43,13 @@ Konta Zarządzaj kontami Blokada hasłem + Blokada odciskiem palca + Brak skonfigurowanych odcisków palców Pokaż ukryte pliki - Natychmiastowa wysyłka obrazów - Wysyłaj od razu zdjęcia zrobione aparatem - Natychmiastowa wysyłka wideo - Wysyłaj od razu filmy nagrane aparatem + Natychmiastowe wysyłanie zdjęć + Wyślij zdjęcia z aparatu + Natychmiastowe wysyłanie wideo + Wyślij filmy nagrane aparatem Włącz logowanie To jest używane do logowania problemów Historia logowania @@ -56,19 +58,14 @@ Synchronizuj kalendarz i kontakty Skonfiguruj DAVdroid (v1.3.0+) dla obecnego konta Adres serwera dla konta nie mógł został przekonwertowany do DAVdroid - Brak aplikacji Google Play lub F-Droida - Synchronizacja kontaktów i kalendarza została skonfigurowana pomyślnie + F-droid i Google Play nie są zainstalowane Pomoc Poleć znajomemu Opinie Stopka - Zapamiętaj lokalizację udostępnienia - Zapamiętaj ostatnią lokalizację wysyłania - - Wypróbuj %1$s na swoim smartfonie! - Zapraszam do użycia %1$s na swoim smartfonie!\nŚciągnij tutaj: %2$s - - Sprawdź serwer + Zapamiętaj położenie udostępnienia + Wypróbuj %1$s na swoim smartfonie! + Sprawdź serwer Adres serwera https://... Nazwa użytkownika Hasło @@ -84,42 +81,41 @@ Brak plików do przesłania %1$s nie można przesłać części tekstu jako pliku. Odebrane dane nie zawierają prawidłowego pliku. - Plik nie może być przesłany + Ten plik nie może być wysłany %1$s nie jest autoryzowany do odczytu odebranego pliku - Plik do wysłania nie został znaleziony w swojej lokalizacji. Proszę sprawdzić czy w ogóle istnieje. - Wystąpił błąd podczas kopiowania pliku do folderu tymczasowego. Proszę spróbować przesłać go ponownie. + Wybrany plik nie został znaleziony. Proszę sprawdzić czy plik istnieje. + Nie udało się skopiować pliku do folderu tymczasowego. Spróbuj ponownie. Opcja wysłania: Przenieś plik do folderu Nextcloud Zachowaj plik w katalogu źródłowym Skasuj plik z katalogu źródłowego sekund temu - Nie ma tu plików - Wyślij pliki lub zsynchronizuj z twoimi urządzeniami! - Oznacz pliki jako ulubione lub synchrozniuj ze swoimi urządzeniami! - Pliki i foldery oznaczone jako ulubione pokażą się tutaj - Nie znaleziono ulbionych plików dla twojego zapytania! + Brak plików + Wyślij zawartość lub synchronizuj ją ze swoimi urządzeniami + Dodaj pliki do ulubionych lub synchronizuj je ze swoimi urządzeniami + Tutaj znajdziesz pliki i foldery oznaczone jako ulubione + Twoje wyszukiwanie nie zwróciło żadnych ulubionych plików Wczytywanie… - Brak aplikacji dla tego typu plików! + Brak aplikacji dla tego typu plików. Nie ma plików w tym folderze. Brak wyników w tym folderze Brak wyników + Brak ulubionych Nic nie jest jeszcze współdzielone Pliki i foldery, które współdzielisz pokażą się tutaj Brak plików wideo Brak zdjęć - Spróbować szukać w innym folderze? - Nie znaleziono plików zmodyfikowanych w ostatnich 7 dniach - Żadne pliki z twojego zapytania, które zostały zmodyfikowane - w ostatnich 7 dniach nie zostały znalezione! - Nie znaleziono żadnych ostatnio dodanych plików - Nie znaleziono żadnych ostatnio dodanych plików dla twojego zapytania! - Wyślij zdjęcia lub aktywuj automatyczne wysyłanie! - Żadnych zdjęć nie znaleziono dla twojego zapytania! - Wyślij wideo lub aktywuj automatycznze wysyłanie! - Żadnych plików wideo nie znaleziono dla twojego zapytania! + Nie znaleziono żadnych plików zmodyfikowanych w ciągu ostatnich 7 dni + Twoje wyszukiwanie nie zwróciło żądnych plików zmodyfikowanych w ciągu ostatnich 7 dni  + NIe znaleziono żadnych ostatnio dodanych plików + Twoje wyszukiwanie nie zwróciło żadnych ostatnio dodanych plików + Wyślij zdjęcia lub włącz automatyczne wysyłanie + Twoje wyszukiwanie nie zwróciło żadnych zdjęć + Wyślij pliki wideo lub włącz automatyczne wysyłanie + Twoje wyszukiwanie nie zwróciło żadnych plików wideo Brak dostępnych danych do wysłania - Wyślij jakieś dane lub włącz wysyłanie natychmiastowe! - Wyślij jakąś zawartość lub aktywuj automatyczne wysyłanie! + Wyślij zawartość lub włącz wysyłanie natychmiastowe. + Wyślij zawartość lub włącz wysyłanie automatyczne. folder foldery plik @@ -131,14 +127,13 @@ Zmodyfikowano: Pobierz Synchronizuj - Podczas wysyłania nazwa pliku została zmieniona na %1$s - Wygląd listy + Podczas wysyłania zmieniono nazwę pliku na %1$s Udostępnij Tak Nie OK Usuń - Spróbuj przesłać jeszcze raz + Ponów wysyłanie Anuluj synchronizację Anuluj Wróć @@ -158,10 +153,10 @@ Nazwa folderu Wysyłam … %1$d%% Wysyłanie %2$s - Wysyłanie zakończone powodzeniem + Wysłano Wysłano %1$s Wysyłanie nie powiodło się - Wysyłanie %1$s nie powiodło się + Nie udało się wysłać %1$s Błąd przy wysyłaniu zaloguj się ponownie Wysłane Obecny @@ -178,37 +173,36 @@ Nie odnaleziono pliku lokalnego Błąd uprawnień Konflikt - Program został zatrzymany + Aplikacja została zatrzymana Nieznany błąd - Oczekiwanie na połączenie bezprzewodowe + Oczekiwanie na połączenie Wi-Fi Oczekuję na przesyłanie Pobieranie … %1$d%% Pobieranie %2$s - Pobieranie zakończone + Pobrano %1$s pobrano Pobieranie nieudane - Pobieranie %1$s nie powiodło się + Nie udało się pobrać %1$s Jeszcze nie pobrane Błąd podczas pobierania, zaloguj się ponownie Wybierz konto Nieudana synchronizacja - Nieudana synchronizacja, zaloguj się ponownie - Nie udało się zakończyć synchronizacji %1$s - Niepoprawne hasło dla %1$s + Synchronizacja nieudana, zaloguj się ponownie + Nie udało się zsynchronizować %1$s + Błędne hasło dla %1$s Znaleziono konflikty %1$d synchronizowanych plików nie może zostać zsynchronizowanych Synchronizacja plików nie powiodła się Zawartość %1$d plików nie może zostać synchronizowana (%2$d konfliktów) Niektóre lokalne pliki zostały zgubione. %1$d plików z folderu %2$s nie udało się się przekopiować - Od wersji 1.3.16, pliki wysyłane z tego urządzenia są kopiowane do lokalnego folderu %1$s aby zapobiec utracie danych gdy pojedynczy plik jest synchronizowany z wieloma kontami.\n\nZ powodu tej zmiany, wszystkie pliki wysłane za pomocą poprzedniej wersji tej aplikacji były kopiowane do folderu %2$s. Jednakże, błąd uniemożliwiał dokończenie tej operacji podczas synchronizacji konta. Możesz albo pozostawić plik(i) tak jak jest i usunąć link do %3$s lub przenieść plik(i) do folderu %1$s i pozostawić link do %4$s.\n\nPoniżej plik(i) lokalny i plik(i) zdalny w %5$s, do którego zostały zlinkowane. - Folder %1$s nie istnieje. + Folder %1$s nie istnieje Przenieś wszystko Wszystkie pliki zostały przeniesione Niektóre pliki nie mogły być przeniesione Lokalnie: %1$s Zdalnie: %1$s - Nie ma wystarczającego miejsca, aby skopiować wybrane pliki do folderu %1$s. Czy w zamian chciałbyś je tam przenieść? + Brak wystarczającego miejsca, aby skopiować wybrane pliki do folderu %1$s. Czy w zamian chcesz je tam przenieść? Wymyśl kod PIN. Wpisz kod PIN. @@ -226,15 +220,14 @@ %1$s odtwarzanie zakończone Nie znaleziono plików multimedialnych Nie znaleziono konta - Plik na nieprawidłowym koncie Nieobsługiwany kodek multimediów - Błąd odczytu pliku multimedialnego - Błąd kodowania pliku multimedialnego - Upłynął limit czasu podczas próby odtwarzania - Plik mediów nie może być przesyłany strumieniowo - Plik multimediów nie może być odtworzony we wbudowanym odtwarzaczu - Błąd zabezpieczeń podczas próby odtworzenia %1$s - Błąd wprowadzania podczas próby odtworzenia %1$s + NIe można odczytać pliku + Nieprawidłowe kodowanie pliku multimedialnego + Upłynął limit czasu podczas próby odtwarzania pliku + Plik multimedialny nie może być przesyłany strumieniowo + Wbudowany odtwarzacz multimediów nie może odtworzyć pliku + Napotkano błąd zabezpieczeń podczas próby odtwarzania %1$s + Błąd danych wejściowych podczas próby odtwarzania %1$s Nieoczekiwany błąd podczas próby odtworzenia %1$s Przycisk przewijania do tyłu Przycisk odtwarzania / pauzowania @@ -247,31 +240,28 @@ Połączenie nawiązane Testowanie połączenia Uszkodzona konfiguracja serwera - Konto tego samego użytkownika i serwera już istnieje na tym urządzeniu Podany login nie pasuje do użytkowników Wystąpił nieznany błąd! - Nie mogę znaleźć hosta - Nie znaleziono instancji serwer + Nie znaleziono hosta + Nie znaleziono serwera Serwer zbyt długo nie odpowiadał - Nieprawidłowy format adresu serwera + Błędny format adresu serwera Inicjowanie SSL nie powiodło się - Nie można zweryfikować tożsamości SSL serwera + Nie udało się zweryfikować tożsamości serwera SSL Nie rozpoznano wersji serwera - Nie można ustanowić połączenia + Nie udało się ustanowić połączenia Nawiązano bezpieczne połączenie Zła nazwa użytkownika lub hasło Nieudana autoryzacja Dostęp zabroniony przez serwer autoryzacji - Nieoczekiwany stan. Podaj ponownie adres serwera Twoja sesja wygasła. Proszę zaloguj się ponownie Podaj aktualne hasło Twoja sesja wygasła. Proszę zaloguj się ponownie - Łączenie z serwerem poświadczeń... + Łączenie z serwerem uwierzytelniania... Serwer nie obsługuje tej metody autoryzacji %1$s nie wspiera wielu kont - Twój serwer nie zwraca poprawnego identyfikatora użytkownika. Proszę skontaktuj się z administratorem. Błąd autoryzacji na tym serwerze - Konto jeszcze nie istnieje na tym urządzeniu. + Konto jeszcze nie istnieje na tym urządzeniu Udostępnij w trybie offline Wyłącz udostępnianie w trybie offline @@ -280,28 +270,28 @@ Zmień nazwę Usuń Czy naprawdę chcesz usunąć %1$s? - Czy naprawdę chcesz usunąć %1$s i jego zawartość? + Czy na pewno chcesz usunąć %1$s wraz z zawartością? Tylko lokalnie Usunięto Nie można usunąć Wprowadź nową nazwę - Nie można zmienić nazwy kopii lokalnej; spróbuj wybrać inną nazwę - Zmiana nazwy nie powiodła się - Nie można sprawdzić zdalnego pliku + Nie można zmienić nazwy kopii lokalne, użyj innej nazwy + Nie udało się nadać serwerowi nowej nazwy + Nie udało się sprawdzić zdalnego pliku Zawartość pliku została już synchronizowana - Folder nie może zostać utworzony + Nie udało się utworzyć folderu Znaki zabronione: / \\ < > : \" | ? * Nazwa pliku zawiera co najmniej jeden nieprawidłowy znak Nazwa pliku nie może być pusta. - Poczekaj chwilę + Proszę czekać... Sprawdzanie danych - Nieoczekiwany problem; spróbuj wybrać plik z innej aplikacji - Nie wybrano żadnych plików + Nieoczekiwany błąd, prosze wybrać plik z innej aplikacji + Nie wybrano żadnego pliku Wyślij link do … Kopiowanie pliku z prywatnego zasobu Loguj przez oAuth2 - Łączenie z serwerem oAuth2... + Łączenie z serwerem OAuth 2... Nie można zweryfikować tożsamości strony - Certyfikat serwera jest niezaufany @@ -309,7 +299,7 @@ - Certyfikat serwera jest wystawiony w przyszłości - URL nie pasuje do nazwy hosta w certyfikacie Zaakceptować certyfikat mimo wszystko? - Nie można zapisać certyfikatu + Nie udało się zapisac certyfikatu Szczegóły Ukryj Wydany dla: @@ -333,35 +323,35 @@ Tekst zastępczy placeholder.txt - Obraz PNG + obraz PNG 389 KB 2012/05/18 12:23 PM 12:23:45 - Wysyłaj tylko przez WiFi - Wysyłaj zdjęcia tylko przez WiFi - Wysyłaj filmy tylko przez WiFi + Wysyłaj tylko przez Wi-Fi + Wysyłaj zdjęcia tylko przez Wi-Fi + Wysyłaj pliki wideo tylko przez Wi-Fi Wysyłaj tylko podczas ładowania Wysyłaj tylko podczas ładowania /InstantUpload Konflikt pliku - Które pliki chcesz zachować? Jeśli wybierzesz obie wersje, do nazwy pliku lokalnego zostanie dodana liczba. + Które pliki chcesz zachować? Jeżeli wybierzesz obie wersje, do nazwy pliku lokalnego zostanie dodana liczba. Zatrzymaj oba wersja lokalna wersja zdalna - Przykro mi z tego powodu! + Przykro nam. Podgląd - Obraz nie może być pokazany + Nie można wyświetlić obrazu %1$s nie może zostać skopiowany do lokalnego folderu %2$s - Wysyłka obrazów do folderu + Folder natychmiastowego wysyłania Folder lokalny Folder zdalny Używaj podfolderów Zapisz w podfolderach opartych na roku oraz miesiącu - Przepraszam, ale współdzielenie nie jest dostępne na twoim serwerze. Prosze skontaktuj się z administratorem. + Współdzielenie nie jest włączone na serwerze. Skontaktuj się z administratorem. Nie można udostępnić. Proszę sprawdzić, czy plik istnieje Wystąpił błąd podczas udostępniania tego pliku lub folderu. Nie można wyłączyć udostępniania. Proszę sprawdzić, czy plik istnieje @@ -375,56 +365,54 @@ Skopiuj link Skopiuj do schowka - Nie odebrano tekstu, by skopiować go do schowka Wystąpił błąd podczas kopiowania do schowka Skopiowano tekst z %1$s - Błąd krytyczny: nie można wykonać operacji + Błąd krytyczny: Nie można wykonać operacji - Pojawił się błąd podczas łączenia z serwerem. - Pojawił się błąd podczas oczekiwania na serwer, operacja nie mogła zostać wykonana - Pojawił się błąd podczas oczekiwania na serwer, operacja nie mogła zostać wykonana - Nie można dokończyć operacji, serwer jest niedostępny - Nie masz uprawnień %s + Wystąpił błąd podczas łączenia z serwerem. + Wystąpił błąd podczas oczekiwania na serwer. Operacja nie mogła zostać wykonana. + Wystąpił błąd podczas oczekiwania na serwer. Operacja nie mogła zostać wykonana. + Nie można ukończyć operacji. Serwer jest niedostępny. + + %s nie masz uprawnień do zmiany nazwy tego pliku do usuwania tego pliku do współdzielenia tego pliku do zniesienia współdzielenia tego pliku aby uaktualnić ten udział - do utworzenia tego pliku - do wgrania tego folderu + do stworzenia tego pliku + do wysyłania do tego folderu Ten plik nie jest już dostępny na serwerze Ścieżka przechowywania aktualizacji Koniec - Przygotowanie do migracji… + Przygotowywanie migracji… Sprawdzanie docelowe… Zapisywanie konfiguracji konta… - Oczekiwanie na niedokończone synchronizacje… + Oczekiwanie na zakończenie synchronizacji… Przenoszenie danych… Aktualizacja indeksa… Czyszczenie… Przywracanie konfiguracji konta… Skończone - BŁĄD: Za mało miejsca - BŁĄD: Plik nie jest zapisywalny - BŁĄD: Nie można odczytać pliku + BŁĄD: Brak miejsca + BŁĄD: Plik nie do zapisu + BŁĄD: Plik nie do odczytu BŁĄD: Katalog Nextcloud już istnieje - BŁĄD: Podczas migracji - BŁĄD: Podczas aktualizacji indeksu + BŁĄD: Nieudana migracja + BŁĄD: Nieudana aktualizacja indeksu - Folder danych już istnieje, co zrobić? - Nadpisanie - Użyj istniejącego + Folder z danymi już istnieje. Wybierz jedną z następujących czynności: + Zamień + Użyj Konta Dodaj konto Zarządzaj kontami - Bezpieczne połączenie jest przekierowywane przez niezabezpieczone trasy. - - Logi + Logi Wyślij historię - Brak aplikacji do wysyłania logów. Zainstaluj klienta poczty. + Brak aplikacji do wysyłania logów. Zainstaluj klienta poczty e-mail. %1$s Logi aplikacji Android Ładowanie danych … @@ -432,26 +420,26 @@ Złe hasło Przenieś Skopiuj - Nic tu nie ma. Możesz dodać folder! + Pusto. Możesz dodać folder. Wybierz - Nie można przenieść. Proszę sprawdzić, czy plik istnieje - Nie jest możliwe przeniesienie folderu do potomka - Plik istnieje już w folderze docelowym + Nie można przenieść pliku. Sprawdź, czy plik istnieje. + Nie można przenieść folderu do jednego z jego podfolderów + Plik już istnieje w folderze docelowym Pojawił się błąd podczas próby przeniesienia tego pliku lub folderu aby przenieść ten plik Nie można skopiować. Sprawdź, czy plik istnieje - Nie można skopiować katalogu do jego podkatalogu - Plik istnieje już w folderze docelowym + Nie można skopiować folderu do jednego z jego podfolderów + Plik już istnieje w folderze docelowym Wystąpił błąd podczas próby kopiowania tego pliku lub folderu by skopiować ten plik - Automatyczne wysyłanie + Natychmiastowo wysłane Szczegóły - Wysyłka wideo do folderu + Folder wideo do natychmiastowego wysyłania Synchronizacja folderu %1$s nie może zostać zakończona udostępniony @@ -493,7 +481,7 @@ Dodaj użytkownika lub grupę Udostępnij link Ustaw datę wygaśnięcia - Zabezpieczone hasłem + Zabezpiecz hasłem Zabezpieczone Pozwól na edycję Schowaj listę plików @@ -509,7 +497,6 @@ %1$s (email) %1$s ( w %2$s ) - Przepraszam, ale wersja twojego serwera nie pozwala na współdzielenie z użytkownikami poprzez klienta. \nProszę skontaktuj się z administratorem. może współdzielić może edytować utwórz @@ -518,20 +505,19 @@ Cofnij udostępnianie zakończono - Wysyłanie ponowne się nie udało + Próba nieudana Wyczyść nieudane - Wyczyść udane - Wyszyczść wszystkie zakończone + Wyczyszczono + Wyczyść zakończone wysyłania Widok siatki Widok listy Zarządzaj przestrzenią - Ustawienia, baza danych i certyfikaty serwera %1$s zostaną trwale skasowane.\n\nPobrane pliki pozostaną na swoich miejscach.\n\nTen proces zajmie trochę czasu. Wyczyść dane Nie udało się usunąć niektórych plików. - Dodatkowe uprawnienia do wysyłania i ściągania plików. + Wymagane są dodatkowe uprawnienia do pobierania i wysyłania plików. Plik nie został znaleziony w lokalnym systemie plików Czy naprawdę chcesz usunąć zaznaczone elementy? Czy naprawdę chcesz usunąć zaznaczone elementy oraz ich zawartość? @@ -541,26 +527,20 @@ Dowiedz się więcej Automatyczne przesyłanie Wspieraj - Pomóż nam testować - Znaleziono błąd? Jest coś dziwnego? Zgłoś błąd na GitHubie - Chcesz pomóc nam testować następną wersję? - Zawiera to w sobie wszystkie nadchodzące funkcjonalności i jest bardzo ryzykowne. Mogą się pojawiać błędy. Jeśli będą proszę je do nas zgłosić. + Sprawdź wersję rozwojową Wydanie kandydujące - Release Candidate (RC) jest zarysem nadchodzącego wydania i oczekujemy że będzie stabilne. Testowanie indywidualnej konfiguracji może pomóc, aby to zapewnić. Zapisz się do testowania w sklepie Play lub ręcznie szukaj w sekcji \"wersje\" na F-Droid. Aktywni członkowie projektu Dołącz do chatu (IRC): <a href="%1$s">#nextcloud-mobile</a> Pomóż innym na <a href="%1$s">forum</a> <a href="%1$s">Tłumacz</a> aplikację - Wspomóż nas jako programista, po więcej szczegółów odwiedź <a href="https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a> Przenieś do… Skopiuj do… Wybierz folder… Ładowanie folderów… Nie znaleziono folderów multimedialnych. - Preferencje automatycznego przesyłania + Preferencje automatycznego wysyłania Ustawienia - Natychmiastowe wysyłanie zostało kompletnie zmienione. Proszę sprawdzić główne menu i zrekonfigurować automatyczne wysyłanie. Przepraszamy za niedogodności.\n\nCiesz się z nowych i rozbudowanych możliwości automatycznego wysyłania! Dla %1$s %d zaznaczony @@ -576,7 +556,7 @@ Brak powiadomień Proszę sprawdź później - Wprowadź nazwę i typ wysyłanego pliku + Wprowadź nazwę i typ pliku do wysłania Nazwa pliku Typ pliku Wstawka tekstowa file(.txt) @@ -592,7 +572,7 @@ Bezpieczny dom dla wszystkich danych - Przechowuj, współdziel i chroń swoje prywatne i służbowe dane + Dostęp do, współdzielenie i ochrona twoich plików w domu i w pracy Wiele kont Podłączenie się do wszystkich chmur @@ -602,6 +582,9 @@ Pominąć + Umieść palec na czytniku odcisku palca + Nie rozpoznano odcisku palca + Pełna nazwa E-mail @@ -614,9 +597,33 @@ Brak aktywności - Ten strumień pokaże zdarzenia jak\ndodatki, zmiany & udziały + Wystąpił błąd + O aplikacji + + Utwórz kopię zapasową kontaktów + Przywróć kontakty + Utwórz kopię zapasową + Przywróć ostatnią kopię zapasową + Przywróć + Kopia zapasowa + Kopia zapasowa kontaktów + Ostatnia kopia zapasowa + Potrzebne uprawnienia do odczytu kontaktów + Potrzebne uprawnienia do modyfikacji kontaktów + Przywróć kontakty + Przywróć wybrane kontakty + Wybierz konto do zaimportiwania + Nie nadano uprawnień, nic nie zostało zaimportowane! + Wybierz datę + nigdy + Nie znaleziono żadnych plików + Nie odnaleziono twojej ostatniej kopii zapasowej! + Kopia zapasowa została zaplanowana i wkrótce zostanie uruchomiona + Importowanie zostało zaplanowane i wkrótce zostanie uruchomione + Otrzymano nowe powiadomienie + Wyloguj diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml index 3b464afda1..c06d316826 100644 --- a/src/main/res/values-pt-rBR/strings.xml +++ b/src/main/res/values-pt-rBR/strings.xml @@ -47,9 +47,9 @@ Nenhuma impressão digital foi configurada. Mostrar arquivos ocultos Envio automático de imagens - Envia automaticamente as fotos tiradas com a câmera - Envio automático de vídeos - Envia automaticamente os vídeos feitos com a câmera + Enviar automaticamente as imagens tiradas pela câmera + Envio automático de vídeos. + Enviar automaticamente os vídeos gravados pela câmera Habilitar login Usado para registrar problemas Histórico de logins @@ -58,23 +58,23 @@ Configurar a sincronização do calendário e dos contatos Configurar o DAVdroid (v1.3.0+) para a conta em uso O endereço do servidor da conta não pôde ser reconhecido pelo DAVdroid - Não há um aplicativo F-Droid ou Google Play instalado - A sincronização do calendário e dos contatos foi configurada com sucesso + Nem F-droid nem Google Play estão instalados + Configuração da sincronização de calendário & contatos Ajuda Recomendar a um amigo Feedback Imprimir - Lembrar o local de compartilhamento - Lembrar o último local de envio de compartilhamento + Lembrar localização do compartilhamento + Lembrar localização do compartilhamento usado mais recentemente Tentar %1$s em seu smartfone! - Gostaria de convidá-lo a usar %1$s em seu smartphone!\nBaixe aqui: %2$s + Quero convidar você a usar %1$s em seu smartphone.\nBaixe daqui: %2$s Verificar servidor Endereço do servidor https://... Nome de usuário Senha - Ainda não tem um servidor?\nClique aqui para obter um de um fornecedor + Você não tem um servidor ainda?\nClique aqui para obter um de um provedor Arquivos Conectar Enviar @@ -86,22 +86,22 @@ Nenhum arquivo para envio %1$s não pôde enviar um pedaço de texto como um arquivo. Os dados recebidos não incluem um arquivo válido. - O arquivo não pôde ser enviado + Este arquivo não pôde ser enviado %1$s não tem permissão para ler um arquivo recebido - Arquivo para envio não foi encontrado em sua localização. Verifique se o arquivo existe. - Ocorreu um erro ao copiar o arquivo para uma pasta temporária. Por favor, tente enviar novamente. + O arquivo selectionado para envio não foi encontrado. Verifique se ele existe. + Não foi possível copiar o arquivo para uma pasta temporária. Tente reenviá-lo. Opção de envio: Mover o arquivo para a pasta do Nextcoud Manter o arquivo na pasta de origem Excluir o arquivo da pasta de origem segundos atrás Nenhum arquivo aqui - Faça o envio de conteúdo ou sincronize com seus dispositivos! - Favorite alguns arquivos ou sincronize com seus dispositivos! - Arquivos e pastas que você favoritar serão mostrados aqui - Nenhum arquivos favorito encontrado em sua pesquisa! + Enviar um conteúdo ou sincronizar com seus dispositivos. + Favoritar algum arquivo ou sincronizar com seus dispositivos. + Arquivos e pastas favoritas serão mostradas aqui + Sua pesquisa não retornou nenhum arquivo favorito. Carregando… - Nenhum aplicativo encontrado para esse tipo de arquivo! + Nenhuma aplicação definida para manipular este tipo de arquivo. Não existe nenhum arquivo nesta pasta. Nenhum resultado nesta pasta Sem resultados @@ -110,19 +110,19 @@ Arquivos e pastas que você compartilhar serão mostrados aqui Sem vídeos Sem fotos - Tentar encontrar em outra pasta? - Nenhum arquivo modificado nos últimos 7 dias - Nenhum arquivo modificado nos últimos 7 dias -foram encontrados para sua pesquisa! - Nenhum arquivo recentemente adicionado foi encontrado! - Nenhum arquivo recentemente adicionado foi encontrado para sua pesquisa! - Envie algumas fotos ou ative o envio automático! - Nenhuma foto foi encontrada para sua pesquisa! - Envie alguns vídeos ou ative o envio automático! - Nenhum vídeo encontrado para sua pesquisa! + Talvez seja uma pasta diferente? + Nenhum arquivo alterado nos últimos 7 dias foi encontrado + Sua pesquisa não encontrou arquivos alterados + nos últimos 7 dias. + Nenhum arquivo recente foi adicionado + Sua pesquisa não encontrou arquivos adicionados recentemente. + Enviar algumas fotos ou ativar o envio automático. + Sua pesquisa não encontrou fotos. + Enviar alguns vídeos ou ativar o envio automático. + Sua pesquisa não encontrou vídeos. Nenhum envio disponível - Envie algum conteúdo ou ative o envio automático! - Envie algum conteúdo ou ative o envio automático! + Enviar algum conteúdo ou ativar o envio automático. + Enviar algum conteúdo ou ativar o envio automático. pasta pastas arquivo @@ -135,13 +135,13 @@ foram encontrados para sua pesquisa! Baixar Sincronizar Arquivo renomeado para %1$s durante o envio - Layout da lista + Layout listado Compartilhar Sim Não OK Excluir arquivo enviado - Tentar enviar de novo + Retentar o envio Cancelar sincronização Cancelar Voltar @@ -161,10 +161,10 @@ foram encontrados para sua pesquisa! Nome da pasta Enviando … %1$d%% enviando %2$s - Envio bem sucedido + Enviado %1$s enviado Falha no envio - O envio de %1$s não pôde ser finalizado + Não foi possível enviar %1$s Falha no envio, você precisa reautenticar-se Envios Atual @@ -181,37 +181,37 @@ foram encontrados para sua pesquisa! Arquivo local não encontrado Erro de permissão Conflito - Aplicativo foi encerrado + Aplicativo finalizado Erro desconhecido - Aguardando conexão wi-fi + Esperando por conectividade Wi-Fi Aguardando para enviar Baixando … %1$d%% Baixando %2$s - Download realizado com sucesso + Baixado %1$s baixado Download falhou - Download de %1$s não pôde ser concluído + Não foi possível baixar %1$s Ainda não baixado Falha em baixar o arquivo, você precisa reautenticar-se Escolha a conta Falha na sincronização - Falha na sincronização, você precisa se logar novamente - A sincronização de %1$s não pôde ser finalizada - Senha inválida para %1$s + A sincronização falhou. Você precisa reautenticar-se + Não foi possível sincronizar %1$s + Senha errada para %1$s Conflitos encontrados %1$d arquivos \"manter sincronizados\" não puderam ser sincronizados Falha ao manter arquivos sincronizados O conteúdo de %1$d arquivos não puderam ser sincronizados (%2$d conflitos) Alguns arquivos locais foram esquecidos %1$d arquivos de %2$s não puderam ser copiados para a pasta - A partir da versão 1.3.16, os arquivos enviados a partir deste aparelho são copiados para a pasta local %1$s para evitar a perda de dados quando um único arquivo é sincronizado com várias contas. \n\nDevido a essa mudança, todos os arquivos enviados em versões anteriores deste aplicativo foram copiados para a pasta %2$s . No entanto, um erro impediu a conclusão dessa operação durante a sincronização da conta. Você pode tanto deixar os arquivos como estão e remover o link para %3$s, ou mover os arquivo(s) para a pasta %1$s e manter o link para %4$s. \n\nListados abaixo são os arquivo(s) locais, e os arquivo(s) remoto(s) em %5$s que estavam vinculados. - Pasta %1s não existe mais + A partir da versão 1.3.16, os arquivos enviados deste dispositivo serão copiados para a pasta local %1$s para evitar a perda de dados quando um único arquivo é sincronizado em várias contas.\n\nDevido à esta alteração, todos os arquivos enviados com versões anteriores deste aplicativo foram copiados para a pasta %2$s No entanto, um erro impediu a conclusão desta operação durante a sincronização da conta. Você pode deixar o (s) arquivo (s) como está e remover o link para %3$s ou mover os arquivos para a pasta %1$s e manter o link para %4$s.\n\nListados abaixo estão os arquivos locais e os arquivos remotos em %5$s taos quais eles foram vinculados. + A pasta %1$s não existe mais Mover todos Todos os arquivos foram movidos Alguns arquivos não puderam ser movidos Local: %1$s Remoto: %1$s - Não há espaço suficiente para copiar os arquivos selecionados para a pasta %1$s. Gostaria de movê-los em vez disso? + O espaço insuficiente está impedindo a cópia dos arquivos selecionados para a pasta %1$s. Ao invés de copiá-los , gostaria de movê-los para lá? Digite sua senha Digite o código de acesso @@ -229,16 +229,16 @@ foram encontrados para sua pesquisa! %1$s reprodução finalizada Nenhum arquivo de mídia encontrado Nenhuma conta fornecida - O arquivo não está em uma conta válida + O arquivo não é uma conta válida O codec de mídia não é suportado - O arquivo de mídia não pode ser lido - O arquivo de mídia não está corretamente codificado - Expirou o tempo durante a tentativa de reproduzir - O arquivo de mídia não pode ser transmitido - O arquivo de mídia não pode ser reproduzido com o stock media player - Erro de segurança tentando reproduzir %1$s + Não foi possível ler o arquivo de mídia + O arquivo de mídia tem uma codificação incorreta + Tempo esgotado tentando reproduzir o arquivo + O arquivo de mídia não pode ser enviado via streaming + O reprodutor de mídia não consegue reproduzir o arquivo de mídia + Errro de segurança enquanto se tentava reproduzir %1$s Erro de entrada tentando reproduzir %1$s - Erro inesperado tentando reproduzir %1$s + Erro inesperado euquanto se tentava reproduzir %1$s Botão rebobinar Botão reproduzir ou pausar Botão de avanço rápido @@ -250,31 +250,31 @@ foram encontrados para sua pesquisa! Conexão estabelecida Testando conexão... Configuração do servidor inválida - Já existe no dispositivo uma conta para o mesmo usuário e servidor + Uma conta para o mesmo usuário e servidor já existe no dispositivo As informações que o usuário digitou não correspondem ao usuário da conta Ocorreu um erro desconhecido! Não foi possível encontrar o host - Instância de servidor não encontrada + Servidor não encontrado O servidor demorou demais a responder - Formato de endereço de servidor errado + O formato de endereço do servidor está errado Inicialização SSL falhou Não foi possível verificar a identidade do servidor SSL Versão do servidor desconhecida - Não foi possível estabelecer conexão + Não foi possível estabelecer a conexão Conexão segura estabelecida Nome de usuário ou senha errado Autorização sem sucesso Acesso negado pelo servidor de autorização - Estado inesperado. Insira o endereço do servidor novamente + Estado inesperado. Entre o endereço do servidor novamente Sua autorização expirou. Por favor, autorize novamente Por favor, digite a senha atual Sua sessão expirou. Por favor, conecte-se novamente Conectando ao servidor de autenticação... O servidor não suporta este método de autenticação %1$s não suporta múltiplas contas - Seu servidor não está retornando um id de usuário correto. Por favor, entre em contato com um administrador + Seu servidor não está retornando um ID correto de usuário. Por favor, contacte o administrador Não é possível obter autenticação neste servidor - Conta ainda não existe no dispositivo + A conta ainda não existe no dispositivo Definir como disponível offline Definir como não disponível offline @@ -283,28 +283,28 @@ foram encontrados para sua pesquisa! Renomear Excluir Deseja realmente excluir %1$s? - Você deseja realmente excluir %1$s e seu conteúdo? + Você realmente quer remover %1$s e seu conteúdo? Somente local - Excluído com sucesso + Excluído Erro ao excluir Digite um novo nome - Cópia local não pôde ser renomeada. Tente outro nome - Renomeação não pôde ser finalizada - Arquivo remoto não pôde ser verificado + A cópia local não pôde ser renomeada. Tente um nome diferente + Não foi possível dar um nome novo ao servidor + Não foi possível verificar o arquivo remoto Conteúdo do arquivo já foi sincronizado - A pasta não pôde ser criada + Não foi possível criar a pasta Caracteres proibidos: / \\ < > : \" | ? * O nome do arquivo contém pelo menos um caractere inválido O nome do arquivo não pode estar vazio - Aguarde um momento + Aguarde um momento... Verificando credenciais salvas - Problema inesperado. Por favor, tente selecionar o arquivo com outro aplicativo - Nenhum arquivo foi selecionado + Problema inesperado. Por favor selecione o arquivo de um diferente aplicativo + Nenhum arquivo selecionado Enviar o link para … Copiando o arquivo da armazenagem privada Login com oAuth2 - Conectando-se a oAuth2 servidor... + Conectando ao servidor OAuth 2... A identidade do site não pôde ser verificada - O certificado do servidor não é confiável @@ -312,7 +312,7 @@ foram encontrados para sua pesquisa! - A data de expiração do certificado do servidor está no futuro - A URL do host não confere com o host do certificado Você confia nesse certificado mesmo assim? - O certificado não pôde ser salvo + Não foi possível salvar o certificado Detalhes Ocultar Emitido para: @@ -341,21 +341,21 @@ foram encontrados para sua pesquisa! 2012/05/18 12:23 PM 12:23:45 - Enviar somente via wifi - Enviar fotos apenas por Wi-Fi - Enviar vídeos apenas por Wi-Fi - Enviar apenas quando solicitado - Enviar apenas quando solicitado + Somente enviar por Wi-Fi + Somente enviar imagens por Wi-Fi + Somente enviar vídeos por Wi-Fi + Somente enviar quando carregando + Somente enviar quando carregando /Upload automático Conflito de arquivo - Quais arquivos você deseja manter? Se você selecionar ambas as versões, o arquivo local terá um número adicionado ao seu nome. + Quais arquivos você quer manter? Se você selecionar ambos, o arquivo local terá um número adicionado ao seu nome. Manter ambos versão local versão do servidor - Desculpe isso! + Desculpe. Pré-visualização da imagem - Imagem não pôde ser mostrada + Não foi possível mostrar a imagem %1$s não pôde ser copiado para pasta local %2$s Pasta de envio automático @@ -364,7 +364,7 @@ foram encontrados para sua pesquisa! Usar subpastas Armazena em subpastas baseado no ano e mês - Lamentamos, mas o compartilhamento não está ativado no servidor. Entre em contato com o administrador. + O compartilhamento não está habilitado em seu servidor. Por favor, contact o administrador. Não é possível compartilhar. Por favor verifique se o arquivo existe Ocorreu um erro durante a tentativa de compartilhar esse arquivo ou pasta Não é possível descompartilhar. Por favor verifique se o arquivo existe @@ -378,16 +378,17 @@ foram encontrados para sua pesquisa! Copiar link Copiado para área de transferência - Nenhum texto recebido para copiar para área de transferência + Nenhum texto foi recebido para copiar para a área de transferência Erro inesperado ao copiar para a área de transferência Texto copiado de %1$s - Erro crítico: não foi possível executar as operações + Erro crítico: Não foi possível executar as operações + + Um erro ocorreu durante a conexão ao servidor. + Um erro ocorreu quando esperava pelo servidor. Não foi possível completar a operação. + Um erro ocorreu quando esperava pelo servidor. Não foi possível completar a operação. + Não foi possível completar a operação. O servidor está indisponível - Ocorreu um erro durante a conexão com o servidor. - Ocorreu um erro enquanto se espera pelo servidor, a operação pode não ter sido executada - Ocorreu um erro enquanto se espera pelo servidor, a operação pode não ter sido executada - A operação não pôde ser concluída pois o servidor está indisponível Você não tem permissão %s para renomear este arquivo para excluir este arquivo @@ -400,34 +401,34 @@ foram encontrados para sua pesquisa! Atualizando caminho do armazenamento Finalizado - Preparando para migração… + Preparando migração… Verificando destino… - Salvando configuração de contas… - Aguardando por sincronismo não-finalizado… + Salvando configuração das contas… + Esperando por todas as sincronizações terminarem… Movendo dados… Atualizando index… Limpando… - Restaurando configurações de contas… + Restaurando a configuração das contas… Finalizado - ERRO: Espaço Insuficiente - ERRO: Arquivo não permite gravação - ERRO: Arquivo não permite leitura + ERRO: Espaço insuficiente + ERRO: Arquivo é somente leitura + ERRO: Arquivo não é legível ERRO: Diretório Nexcloud já existe - ERRO: Durante a Migração - ERRO: Durante atualização de índice + ERRO: Falha durante a migração + ERRO: Falha ao atualizar índice - Pasta de dados já existe, o que fazer? - Sobrescrever - Usar a existente + Pasta Data já existe. Escolha uma das seguintes: + Substituir + Usar Contas Adicionar uma conta Gerenciar contas - A conexão segura está redirecionada através de uma rota insegura. + A conexão segura foi redirecionada através de uma rota insegura. Logs Enviar histórico - Nenhum aplicativo para envio de logs foi encontrado. Por favor, instale um aplicativo de email. + Nenhum aplicativo para enviar registros foi encontrado. Por favor instale um cliente de email. %1$s logs do aplicativo Android Carregando dados … @@ -435,26 +436,26 @@ foram encontrados para sua pesquisa! Senha incorreta Mover Copiar - Nada aqui. Você pode adicionar uma pasta! + Não há nada aqui. Você pode adicionar uma pasta. Escolher - Não é possível mover. Por favor, verifique se o arquivo existe - Não é possível mover a pasta para uma descendente - O arquivo já existe na pasta de destino + Impossível mover o arquivo. Por favor verifique se ele existe. + Não é possível mover uma pasta para uma das suas próprias pastas subjacentes + O arquivo já está presente na pasta destino Ocorreu um erro ao tentar mover este arquivo ou pasta mover este arquivo Não é possível copiar. Por favor, verifique se o arquivo existe - Não é possível copiar uma pasta em uma descendente - O arquivo já existe na pasta de destino + Não é possível copiar uma pasta para uma das suas próprias pastas subjacentes + O arquivo já está presente na pasta destino Ocorreu um erro ao tentar copiar este arquivo ou pasta copiar este arquivo Envio automático Detalhes - Pasta de envio automático de vídeos + Pasta de vídeo para envios automáticos A sincronização da pasta %1$s não pôde ser finalizada compartilhado @@ -512,7 +513,7 @@ foram encontrados para sua pesquisa! %1$s (email) %1$s ( em %2$s ) - Lamentamos, mas a versão do seu servidor não permite compartilhar com utilizadores nos clientes.\nPor favor contacte o administrador + Atualize a versão do servidor para permitir compartilhamento entre usuários de dentro de seus clientes.\nPor favor, contacte o administrador pode compartilhar pode editar criar @@ -521,50 +522,50 @@ foram encontrados para sua pesquisa! Parar compartilhamento finalizado - Retentar falhou + Nova tentativa falhou Limpeza falhou - Limpo com sucesso - Limpar tudo finalizado + Limpo + Limpar envios termiandos Grade de exibição Lista de visualização Gerenciar o espaço - Definições, certificados de banco de dados e servidor de dados %1$s serão excluídos permanentemente. \n\nArquivos baixados serão mantidos inalterados. \n\nEste processo pode demorar algum tempo. + Configurações, banco de dados e certificados do servidor de dados de %1$s serão excluídos permanentemente.\n\nArquivos baixados serão mantidos intocados.\n\nEste processo pode levar um tempo. Limpar dados Alguns arquivos não puderam ser excluídos. - Permissões adicionais são necessárias para se enviar e baixar arquivos & . - O arquivo não foi encontrado no sistema de arquivos local + Permissões adicionais são necessárias para enviar ou baixar arquivos. + Arquivo não encontrado no sistema de arquivos local Deseja realmente excluir os itens selecionados? Deseja realmente excluir os itens selecionados e seus conteúdos? - Esperando o carregamento do dispositivo + Esperando carregar Pesquisar Este é um recurso do Nextcloud. Por favor, atualize. Saiba mais Envio automático Participar - Ajude-nos a testar - Encontrou um erro? Algo está estranho? + Ajuda para teste + Encontrou um erro? Comentários? Relate o problema no Github - Está interessado em ajudar-nos a testar a próxima versão? + Interessado em ajudar testando a próxima versão? Teste a versão dev - Isso inclui todos os próximos recursos. Erros pode ocorrer e irão. Por favor, reporte-os a nós. + Isso inclui todos os recursos futuros e está num limite perigoso. Erros podem ocorrer e acontecendo, por favor reporte-os à nós. Candidato a versão - O candidato à versão (RC) é um instantâneo do lançamento e espera-se que seja estável. Testar a sua configuração individual pode ajudar a garantir isso. Registre-se para testar na Play Store ou procure manualmente na seção \"versões\" na F-Droid. + O release candidate (RC) é um instantâneo da próxima versão e espera-se que seja estável. Testar sua configuração individual pode ajudar a garantir isso. Inscreva-se para testar na Play Store ou confira a seção \"versões\" no F-Droid. Contribuir ativamente Participe de uma conversa no IRC: <a href="%1$s">#nextcloud-mobile</a> Ajude outros no <a href="%1$s">forum</a> <a href="%1$s">Traduza</a> the app - Contribuir como desenvolvedor, veja <a href="https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a> para detalhes + Revisar, alterar e escrever código, veja <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> para detalhes Mover para… Copiar para… Escolha a pasta… Carregando pastas… Nenhuma pasta de mídia encontrada. - Preferências do envio automático + Preferências do auto envio Configurações - O envio automático foi completamente renovado. Por favor veja o menu principal e reconfigure o seu envio automático. Desculpe o inconveniente. \n\nAproveite as novas e extendidas capacidades do envio automático! + O envio automático foi completamente renovado. Reconfigure-o dentro do menu principal.\n\nCurta o novo e estendido envio automático. Para %1$s %d selecionado @@ -578,7 +579,7 @@ foram encontrados para sua pesquisa! Não há notificações Por favor verifique mais tarde. - Forneça o nome e o tipo de arquivo a enviar + Entre o nome e tipo de arquivo a enviar Nome do Arquivo Tipo do Arquivo Fragmento de arquivo texto (.txt) @@ -594,7 +595,7 @@ foram encontrados para sua pesquisa! Um local seguro para seus dados - Acesse, compartilhe & proteja seus dados em casa e na sua empresa + Acesse, compartilhe e proteja seus arquivos, em casa e no trabalho Multi contas Conectar em todas as suas Nuvens @@ -619,31 +620,34 @@ foram encontrados para sua pesquisa! Nenhuma atividade ainda - O stream irá mostrar eventos como\nadições, mudanças & compartilhamentos + O fluxo irá mostrar eventos como\nInclusões, alterações e compartilhamentos Um erro ocorreu Sobre - Backup dos contatos - Backup agora + Fazer backup dos contatos + Restaurar contatos + Fazer backup agora Retornar último backup Retornar Backup Backup dos contatos Último backup - A permissão de leitura dos contatos é necessária - A permissão de gravação dos contatos é necessária + Permissão para ler contatos é necessária + Permissão para alterar a lista de contatos é necessária Restaurar contatos Restaurar contatos selecionados - Escolha a conta a importar - Sem permissão. Nada foi importado! + Escolha a conta para importar + Nenhuma permissão foi dada, nada importado! Escolha a data nunca Nenhum arquivo encontrado + Não foi possível encontrar seu último backup! Backup agendado e irá iniciar em breve Backup importado e irá iniciar em breve Nova notificação recebida + Sair diff --git a/src/main/res/values-tr/strings.xml b/src/main/res/values-tr/strings.xml index 59218e18ba..24d9b4e1ec 100644 --- a/src/main/res/values-tr/strings.xml +++ b/src/main/res/values-tr/strings.xml @@ -46,10 +46,10 @@ Parmak izi kilidi Henüz bir parmak izi ayarlanmamış. Gizli dosyaları görüntüle - Fotoğraflar anında yüklensin - Kamera ile çekilen fotoğraflar anında yüklensin - Görüntüler anında yüklensin - Kamera ile çekilen görüntüler anında yüklensin + Anında fotoğraf yükleme + Kamera ile çekilen fotoğraflar anında yüklenir + Anında görüntü yükleme + Kamera ile çekilen görüntüler anında yüklenir Günlük kullanılsın Etkinleştirildiğinde sorunlar günlük dosyasına kaydedilir Günlük geçmişi @@ -58,14 +58,14 @@ Takvim ve kişiler eşitlensin Geçerli hesap için DAVdroid (v1.3.0+) kurulumu Hesabın sunucu adresi DAVdroid tarafından çözümlenemedi - Google Play mağazası yok ya da F-Droid uygulaması kurulmamış - Takvim ve kişi eşitlemesi ayarlandı + F-droid ya da Google Play kurulmamış + Takvim ve kişi eşitlemesi ayarları Yardım - Arkadaşınıza önerin + Arkadaşına öner Geri bildirim İzlenim - Konum paylaşma hatırlansın - Son paylaşma yükleme konumu hatırlansın + Paylaşılacak konum hatırlansın + Son kullanılan konumlar paylaşılmak üzere hatırlanır %1$s uygulamasını akıllı telefonunuzda deneyin! Akıllı telefonunda %1$s kullanmanı öneriyorum!\nBuradan indirebilirsin: %2$s @@ -74,7 +74,7 @@ Sunucu adresi https://… Kullanıcı Adı Parola - Henüz bir sunucunuz yok mu?\nBuraya tıklayarak bir hizmet sağlayıcıdan sunucu edinebilirsiniz + Henüz bir sunucunuz yok mu?\Hizmet sağlayıcılardan yararlanabilirsiniz Dosyalar Bağlan Yükle @@ -86,9 +86,9 @@ Yüklenecek bir dosya yok %1$s bir metin parçasını dosya olarak yükleyemez. Alınan verilerde geçerli bir dosya bulunamadı. - Dosya yüklenemedi + Bu dosya yüklenemez %1$s alınan bir dosyayı okumaya yetkili değil - Karşıya yüklenecek dosya konumunda bulunamadı. Lütfen dosyanın var olduğundan emin olun. + Yüklenmek üzere seçilmiş dosya bulunamadı. Lütfen dosyanın var olup olmadığını denetleyin. Dosya geçici bir klasöre kopyalanırken bir sorun çıktı. Lütfen yeniden göndermeyi deneyin. Yükleme seçeneği: Dosya Nextcloud klasörüne taşınsın @@ -96,31 +96,33 @@ Dosya kaynak klasörden silinsin saniye önce Burada herhangi bir dosya yok - Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin! - Bazı dosyaları sık kullanılanlara ekleyin ya da aygıtlarınızla paylaşın! + Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin. + Bazı dosyaları sık kullanılanlara ekleyin ya da aygıtlarınızla paylaşın. Sık kullanılanlara eklediğiniz dosya ve klasörler burada görüntülenir - Arama sonucunda sık kullanılan bir dosya bulunamadı! + Arama sonucunda sık kullanılan bir dosya bulunamadı. Yükleniyor… - Bu dosya türü için uygulama bulunamadı! + Bu dosya türü için uygulama bulunamadı. Bu klasörde herhangi bir dosya yok. Bu klasörde herhangi bir sonuç yok Herhangi bir sonuç bulunamadı + Henüz sık kullanılan bir öge yok Henüz hiçbir şey paylaşılmamış Paylaştığınız dosya ve klasörler burada görüntülenir Herhangi bir görüntü bulunamadı Herhangi bir fotoğraf bulunamadı Başka bir klasöre bakılmasını ister misiniz? Son 7 gün içinde değiştirilmiş herhangi bir dosya bulunamadı - Son 7 gün içinde değiştirilmiş herhangi bir dosya bulunamadı! + Arama sonucunda son 7 gün içinde düzenlenmiş + bir dosya bulunamadı. Geçenlerde eklenmiş herhangi bir dosya bulunamadı - Arama sonucunda geçenlerde eklenmiş bir dosya bulunamadı! - Bazı fotoğraflar yükleyin ya da otomatik yüklemeyi etkinleştirin! - Arama sonucunda herhangi bir fotoğraf bulunamadı! - Bazı görüntüler yükleyin ya da otomatik yüklemeyi etkinleştirin! - Arama sonucunda herhangi bir görüntü bulunamadı! + Arama sonucunda geçenlerde eklenmiş bir dosya bulunamadı. + Bazı fotoğraflar yükleyin ya da otomatik yüklemeyi etkinleştirin. + Arama sonucunda herhangi bir fotoğraf bulunamadı. + Bazı görüntüler yükleyin ya da otomatik yüklemeyi etkinleştirin. + Arama sonucunda herhangi bir görüntü bulunamadı. Herhangi bir yükleme yok - Buraya bazı içerikler yükleyin ya da anında yüklemeyi etkinleştirin! - Bazı içerikler yükleyin ya da otomatik yüklemeyi etkinleştirin! + Bazı içerikler yükleyin ya da anında yüklemeyi etkinleştirin. + Bazı içerikler yükleyin ya da otomatik yüklemeyi etkinleştirin. klasör klasör dosya @@ -202,7 +204,7 @@ %1$d dosya eşitlenemedi (%2$d çakışma) Bazı yerel dosyalar unutulmuş %2$s klasöründeki %1$d dosya şuraya kopyalanamadı - 1.3.16 sürümünden sonra, veri kaybının önlenebilmesi için bu aygıttan yüklenen dosyalar, bir dosya birden fazla hesapla eşitlendiğinde %1$s yerel klasörüne kopyalanır.\n\nBu değişiklikten dolayı, bu uygulamanın yüklenmiş tüm önceki sürümündeki dosyalar %2$s klasörüne kopyalandı. Ancak hesap eşitlemesi sırasında bu işlemin tamamlanmasını engelleyen bir hata oluştu. Dosyaları olduğu gibi bırakabilir ve %3$s bağlantısını kaldırabilir ya da dosyaları %1$s klasörüne taşıyıp %4$s bağlantısını koruyabilirsiniz.\n\nYerel dosyaları ve bağlı oldukları %5$s içindeki uzak dosyaların listesini aşağıda görebilirsiniz. + 1.3.16 sürümünden sonra, veri kaybının önlenebilmesi için bu aygıttan yüklenen dosyalar, bir dosya birden fazla hesapla eşitlendiğinde %1$s yerel klasörüne kopyalanır.\n\nBu değişiklikten dolayı, bu uygulamanın yüklenmiş tüm önceki sürümündeki dosyalar %2$s klasörüne kopyalandı. Ancak hesap eşitlemesi sırasında bu işlemin tamamlanmasını engelleyen bir sorun çıktı. Dosyaları olduğu gibi bırakabilir ve %3$s bağlantısını kaldırabilir ya da dosyaları %1$s klasörüne taşıyıp %4$s bağlantısını koruyabilirsiniz.\n\nYerel dosyaları ve bağlı oldukları %5$s içindeki uzak dosyaların listesini aşağıda görebilirsiniz. %1$s klasörü artık yok Tümünü taşı Tüm dosyalar taşındı @@ -251,8 +253,8 @@ Aygıt üzerinde aynı kullanıcı adı ve sunucu için bir hesap zaten var Yazdığınız kullanıcı adı bu hesabın kullanıcı adı ile eşleşmiyor Bilinmeyen bir sorun çıktı! - Sunucu bulunamadı - Sunucu kopyası bulunamadı + Sunucu adı bulunamadı + Sunucu bulunamadı Sunucu çok geç yanıt veriyor Sunucu adresi biçimi hatalı SSL başlatılamadı @@ -287,22 +289,22 @@ Silinemedi Yeni bir ad yazın Yerel kopya yeniden adlandırılamadı; farklı bir ad deneyin - Yeniden adlandırma tamamlanamadı + Sunucu yeniden adlandırılamadı Uzak dosya denetlenemedi Dosya içerikleri zaten eşitlenmiş Klasör oluşturulamadı İzin verilmeyen karakterler: / \\ < > : \" | ? * Dosya adında en az bir geçersiz karakter var Dosya adı boş olamaz - Biraz bekleyin + Biraz bekleyin... Kayıtlı kimlik bilgileri denetleniyor - Beklenmedik bir sorun çıktı; Lütfen başka bir uygulamadan dosya seçin - Herhangi bir dosya seçilmedi + Beklenmedik bir sorun çıktı, lütfen başka bir uygulamadan dosya seçin + Herhangi bir dosya seçilmemiş Bağlantıyı gönder… Dosya kişisel depolamadan kopyalanıyor oAuth2 ile oturum açın - oAuth2 sunucusuna bağlanılıyor… + OAuth2 sunucusuna bağlanılıyor… Sitenin kimliği doğrulanamadı - Sunucu sertifikasına güvenilmiyor @@ -339,7 +341,7 @@ 2012/05/18 12:23 ÖS 12:23:45 - Yalnız kablosuz ağ bağlıyken yüklensin + Yalnız kablosuz ağ üzerinden yüklensin Fotoğraflar yalnız kablosuz ağ üzerinden yüklensin Görüntüler yalnız kablosuz ağ üzerinden yüklensin Yalnız şarj edilirken yüklensin @@ -351,7 +353,7 @@ yerel sürümü sunucu sürümünü - Bundan dolayı üzgünüz! + Maalesef. Görsel önizleme Görsel görüntülenemedi @@ -362,7 +364,7 @@ Alt klasörler kullanılsın Yıla ve aya göre alt klasörlere kaydedilsin - Maalesef, sunucunuzda paylaşım etkin değil. Lütfen yöneticinizle görüşün. + Sunucunuzda paylaşım etkin değil. Lütfen yöneticinizle görüşün. Paylaşılamadı. Lütfen dosyanın var olup olmadığını denetleyin Bu dosya ya da klasör paylaşılmaya çalışılırken bir sorun çıktı Paylaşımı kaldırılamadı. Lütfen dosyanın var olup olmadığını denetleyin @@ -380,28 +382,29 @@ Panoya kopyalama sırasında beklenmeyen bir sorun çıktı Metin %1$s kaynağından kopyalandı - Ciddi hata: İşlemler gerçekleştirilemiyor + Ciddi sorun: İşlemler gerçekleştirilemiyor Sunucuya bağlanılırken bir sorun çıktı. - Sunucu beklenirken bir sorun çıktı, işlem tamamlanamadı - Sunucu beklenirken bir sorun çıktı; işlem tamamlanamadı - İşlem tamamlanamadı; sunucu kullanılamıyor + Sunucu beklenirken bir sorun çıktı, işlem tamamlanamadı. + Sunucu beklenirken bir sorun çıktı, işlem tamamlanamadı. + İşlem tamamlanamadı, sunucu kullanılamıyor + %s izniniz yok bu dosyayı yeniden adlandırın bu dosyayı silin bu dosyayı paylaşın bu dosyanın paylaşımını kaldırın bu paylaşımı güncelleyin - dosya oluşturun - bu klasöre yükleyin + bu dosyayı oluşturamazsınız + bu klasöre yükleyemezsiniz Bu dosya artık sunucuda yok Depolama yolu güncelleniyor Bitti - Aktarıma hazırlanıyor… + Aktarıma hazırlanılıyor… Hedef denetleniyor… Hesap ayarları kaydediliyor… - Eşitlemelerin tamamlanması bekleniyor… + Tüm eşitlemelerin tamamlanması bekleniyor… Veriler taşınıyor… Dizin güncelleniyor… Temizleniyor… @@ -411,12 +414,12 @@ HATA: Dosya yazılabilir değil HATA: Dosya okunabilir değil HATA: Nextcloud klasörü zaten var - HATA: Aktarımda bir sorun çıktı - HATA: Dizin güncellenirken bir sorun çıktı + HATA: Aktarımda sorun çıktı + HATA: Dizin güncellenirken sorun çıktı - Veri klasörü zaten var, ne yapmak istersiniz? - Üzerine yazılsın - Varolan kullanılsın + Veri klasörü zaten var, yapılacak işlemi seçin: + Değiştirilsin + Kullanılsın Hesaplar Hesap ekle @@ -436,15 +439,15 @@ Burada bir şey yok. Bir klasör ekleyebilirsiniz! Seçin - Taşınamadı. Lütfen dosyanın var olup olmadığını denetleyin - Bir klasör kendi alt klasörüne taşınamaz + Dosya taşınamadı. Lütfen dosyanın var olup olmadığını denetleyin + Bir klasör kendi alt klasörü olarak taşınamaz Dosya hedef klasörde zaten var Bu dosya ya da klasör taşınmaya çalışılırken bir sorun çıktı bu dosyayı taşıyın Kopyalanamadı. Lütfen dosyanın var olup olmadığını denetleyin - Bir klasör kendi alt klasörüne kopyalanamaz + Bir klasör kendi alt klasörü olarak kopyalanamaz Dosya hedef klasörde zaten var Bu dosya ya da klasör kopyalanmaya çalışılırken bir sorun çıktı bu dosyayı kopyalayın @@ -452,7 +455,7 @@ Anında yüklemeler Ayrıntılar - Anında yükleme görüntü klasörü + Anında görüntü yükleme klasörü %1$s klasörünün eşitlemesi tamamlanamadı sizinle @@ -494,7 +497,7 @@ Kullanıcı ya da grup ekle Paylaşım bağlantısı Son kullanma tarihini ayarla - Parola koruması + Parola ile korunsun Güvenli Düzenlenebilsin Dosya listeleme gizlensin @@ -510,7 +513,7 @@ %1$s (E-posta) %1$s (%2$s üzerinde) - Maalesef sunucu sürümünüz istemciler içindeki kullanıcılar ile paylaşıma izin vermiyor.\nLütfen yöneticinizle görüşün + Kullanıcıların istemcileri içinden paylaşım yapabilmesini sağlamak için sunucu sürümünüzü yükseltin.\nLütfen yöneticinizle görüşün paylaşabilir düzenleyebilir oluştur @@ -519,16 +522,16 @@ Paylaşımı durdur bitti - Yeniden denenemedi + Yeni girişim başarısız oldu Temizlenemedi Temizlendi - Tümü temizlendi + Tamamlanmış yüklemeleri temizle Tablo görünümü Liste görünümü Alan yönetimi - %1$s verilerinden ayarlar, veritabanı ve sunucu sertifikaları kalıcı olarak silinecek. \n\nİndirilen dosyalara dokunulmayacak.\n\nBu işlem biraz vakit alabilir. + %1$s verilerinden ayarlar, veritabanı ve sunucu sertifikaları kalıcı olarak silinecek. \n\nİndirilen dosyalara dokunulmayacak.\n\nBu işlem biraz zaman alabilir. Verileri temizle Bazı dosyalar silinemedi. @@ -545,16 +548,16 @@ Denememize yardımcı olun Bir hata mı buldunuz? Bir gariplik mi var? Github üzerinden bir sorun bildirin - Gelecek sürümler için bize yardımcı olmak ister misiniz? + Sonraki sürümü deneyerek bize yardımcı olmak ister misiniz? Geliştirici sürümünü deneyin Bu sürümde tüm yeni özellikler bulunur ve çok taze olduğundan hata ve sorunlar olabilir. Bir hata ya da soruna rastlarsanız bize iletin. Yayın adayı - Yayın adayı (Release Candidate, RC) yayınlanacak sürümün bir kopyasıdır ve kararlı olması beklenir. Kişisel olarak kullanmanız kararlı olduğundan emin olmamızı sağlar. Denemek için Play Store üzerinden kayıt olun ya da el ile F-Droid üzerindeki \"sürümlere\" bakın. + Yayın adayı (Release Candidate, RC) yayınlanacak sürümün bir kopyasıdır ve kararlı olması beklenir. Kişisel olarak kullanmanız kararlı olduğundan emin olmamızı sağlar. Denemek için Play Store üzerinden kayıt olun ya da el ile F-Droid üzerindeki \"sürümler\" bölümüne bakın. Etkin Katkıda Bulunun IRC sohbetine katılın: <a href=\"%1$s\">#nextcloud-mobile</a> <a href=\"%1$s\">forum</a> üzerinde diğer kişilere yardımcı olun Uygulamayı <a href="%1$s">çevirin</a> - Yazılımcı olarak katkıda bulunun! Ayrıntılı bilgi almak için <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">KATKIDA BULUNMA</a> sayfasına bakın + Yazılımcı olarak katkıda bulunun! Ayrıntılı bilgi almak için <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">KATKIDA BULUNMA.md</a> sayfasına bakın Taşı… Kopyala… Klasör seçin… @@ -562,7 +565,7 @@ Herhangi bir ortam klasörü bulunamadı. Otomatik yükleme ayarları Ayarlar - Anında yükleme tamamen elden geçirildi. Lütfen ama menüye giderek otomatik yükleme ayarlarınızı yeniden yapın. Verdiğimiz rahatsızlık için özür dileriz.\n\nYeni ve geliştirilmiş otomatik yükleme özellklerinin tadını çıkarın! + Anında yükleme tamamen elden geçirildi. Lütfen ama menüye giderek otomatik yükleme ayarlarınızı yeniden yapın.\n\nYeni ve geliştirilmiş otomatik yükleme özellklerinin tadını çıkarın. %1$s için %d seçili @@ -592,7 +595,7 @@ Verileriniz için güvenli bir yer! - Ev ya da iş yerinizdeki dosyalarınıza erişmek, paylaşmak ve korumak için kullanabilirsiniz + Ev ya da iş yerinizdeki dosyalarınıza erişin, paylaşın ve koruyun Birden çok hesap Tüm bulut hesaplarınıza bağlanın @@ -622,26 +625,29 @@ Hakkında Kişileri Yedekle - Şimdi yedekle + Kişileri Geri Yükle + Yedekle Son Yedeği Geri Yükle Geri Yükle Yedekle Kişileri Yedekle Son Yedek - Kişileri okuma izni gerekiyor - Kişilere yazma izni gerekiyor + Kişi listesini okuma izni gerekiyor + Kişi listesini düzenleme izni gerekiyor Kişileri geri yükle Seçilmiş kişileri geri yükle Alınacak hesabı seçin - İzin verilmemiş olduğundan hiçbir şey alınamadı! + Herhangi bir izin verilmemiş olduğundan hiçbir şey alınamadı! Tarih seçin asla Herhangi bir dosya bulunamadı + Son yedeğiniz bulunamadı! Yedekleme zamanlandı ve kısa süre sonra başlatılacak Alma işlemi zamanlandı ve kısa süre sonra başlatılacak Yeni bir bildirim var + Oturumu Kapat diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index f6046fd8a6..12ef642224 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -46,10 +46,10 @@ 指纹锁 指纹锁没有设置 显示隐藏文件 - 即时图片上传 - 即时上传相机拍摄的图片 - 即时上传视频 - 即时上传由相机拍摄的视频 + 立刻上传图片 + 立刻上传摄像头拍摄的图片 + 立刻上传视频 + 立刻上传摄像头拍摄的视频 开启日志 用于记录问题 历史日志 @@ -58,23 +58,17 @@ 同步日历和通讯录 为现在的用户设置DAVdroid(v1.3.0+) 用户目前的服务器地址对于DAVdroid不能被解析 - 没有安装谷歌或F-Droid的应用商店 - 日历和通讯录的同步设置成功 + F-droid或谷歌商店都没有装 + 日历&联系人同步设置 帮助 推荐给朋友 反馈 版本说明 - 记住共享位置 - 记住上次共享上传的位置 - - 在您的智能手机上试用 %1$s! - 我邀请你在智能手机上使用 %1$s\n下载路径:%2$s - - 检查服务器 + 在您的智能手机上试用 %1$s! + 检查服务器 服务器地址 https://... 用户名 密码 - 还没有服务器吗? \n点击这里从提供商那里获取一个 文件 连接 上传 @@ -86,23 +80,13 @@ 文件没有上传 %1$s不能把一段文字做为文件上传 得到的数据没有包括有效文件 - 文件无法被上传 %1$s 不让读取已经获得的文件 - 要上传的文件没有在本地发现,请检查文件是否存在 - - 当文件复制到临时文件夹时有错误发生,请重新发送 上传选项: 移动文件到Nextcloud文件夹 在原文件夹中保留文件 从原文件夹中删除文件 几秒前 - 这里没有文件 - 上传一些内容或者和你的设备同步 - 收藏一些文件或和你的设备同步! - 收藏的文件和文件夹会在这里显示 - 未找到你要搜索的收藏文件 加载中… - 没有找到程序打开文件格式! 在该文件夹中不存在文件。 此文件夹无结果 没有结果 @@ -110,18 +94,7 @@ 您共享的文件和文件夹将显示在这里 无视频 无照片 - 在其他文件夹找找试试? - 未找到 7 日内有更改的文件 - 未找到你要搜索的 7 日内有更改的文件! - 未找到最近添加的文件 - 未找到你要搜索的最近添加文件 - 上传一些照片或启用自动上传! - 未找到你要搜索的照片! - 上传一些视频或启用自动上传! - 未找到你要搜索的视频! 没有可以上传的 - 上传一些内容或者激活实时上传 - 上传一些内容或启用自动上传! 文件夹 文件夹 文件 @@ -133,14 +106,11 @@ 修改于: 下载 同步 - 上传过程中文件被更名为了 %1$s - 列表布局 共享 确定 移除上传任务 - 重试上传任务 取消同步 取消 返回 @@ -160,10 +130,8 @@ 文件夹名称 上传 … %1$d%% 上传 %2$s - 上传成功 %1$s 上传成功 上传失败 - %1$s 未能成功上传 上传失败,你需要重新登录 上传 当前 @@ -180,37 +148,27 @@ 本地文件未找到 权限错误 冲突 - 应该将被终止 未知错误 - 等待WiFi连接 等待上传... 下载中 … %1$d%% 下载中 %2$s - 下载成功 %1$s 下载成功 下载失败 - %1$s 下载未能完成 未下载完毕 下载失败,你需要重新登录 选择账户 同步失败 - 同步错误;你需要重新登陆 - %1$s 的同步无法完成 - %1$s 的密码错误 发现冲突 %1$d 文件无法同步 文件同步失败 无法同步 %1$d 文件内容(%2$d 冲突) 某些本地文件已被遗忘 %2$s 目录中的 %1$d 个文件不能被复制到 - 从 1.3.16 版起,从此设备上传的文件将被复制到本地的 %1$s 文件夹,以防止某个单一文件在多个账户间同步而造成的数据损失。\n\n 由于此项变化,此应用之前的版本上传的全部文件都已被复制到了 %2$s 文件夹。然而,账户同步期间有一个错误阻止了此操作的完成。您可能想保持文件不动,并移除指向 %3$s 的链接,或将文件移动到 %1$s 文件夹中并保持其到 %4$s 的链接。下面列出的是本地文件,以及它们被链接到的 %5$s 中的远程文件。 - 文件夹%1$s 已经不存在 移动所有 所有文件已被移动 某些文件无法被移动 本地: %1$s 远程:%1$s - 没有足够的空间把选上的文件复制到%1$s目录,你愿意改成转移他们吗? 请输入你的密码 输入您的密码 @@ -228,16 +186,7 @@ %1$s 播放完毕 没有发现播放文件 未提供账号 - 文件不在合法账户 不支持的编码格式 - 文件不可读 - 文件编码错误 - 播放超时 - 文件不支持流播 - 当前媒体播放器不支持。 - 尝试播放%1$s时保护错误 - 尝试播放%1$s时输入错误 - 尝试播放%1$s时未知错误 后退按钮 播放暂停按钮 快进按钮 @@ -249,32 +198,21 @@ 连接已建立。 测试连接 服务器配置不正确 - 此设备中已经存在同名同服务器的帐号 输入用户与此帐户的用户不符 发生未知错误! - 无法找到主机 - 未发现服务器实例 看起来服务器不太给力 - 错误的服务器地址 SSL初始化失败 - 无法验证 SSL 服务器的身份 不可辨识的服务器服务器版本 - 无法建立连接 安全连接已建立 用户名或密码错误 认证不成功 访问被认证服务器拒绝 - 未知状态,请重新输入服务器地址 你的授权已经过期。请重新授权。 请输入当前的密码 您的会话超时了,请重新连接 - 连接认证服务器... 服务器不支持这种验证方式 %1$s不支持多个账户 - 你的服务器没有返回正确的用户ID,请联系管理员 无法连接认证服务器 - 设备中还未存在该帐号 - 可以设置离线 不可以设置离线 加入收藏 @@ -282,36 +220,24 @@ 重命名 删除 你确定要删除%1$s? - 您确定要删除 %1$s 及其内容吗? 仅本地 - 成功删除 无法完成删除 请输出新的名字 - 本地副本无法重命名,请尝试另外的名字 - 重命名未完成 - 无法核实远程文件 文件内容已同步 - 文件夹无法创建 禁用字符: / \\ < > : \" | ? * 文件名中存在至少一个非法字符 文件名不能为空 - 请稍候 检查保存的证书 - 未预见错误,请从其它程序中选取文件 - 未选择文件 发送链接给 … 从私有存储中拷贝文件 使用oAuth2登陆 - 连接oAuth2 服务器... - 站点身份无法验证 - 不受信任的服务器证书 - 服务器证书过期 - 服务器证书时间比当前时间还晚 - 主机名与证书中的记录不匹配 是否信任此证书? - 证书无法保存 详细信息 隐藏 授权给: @@ -335,27 +261,17 @@ 占位符 点位符.txt - PNG图像格式 389字节 2012/05/18 下午12:23 12:23:45 - 只通过wifi上传 - 仅通过 WIFI 上传照片 - 仅通过 WIFI 上传图片。 - 只在充电时上传 - 只在充电时上传 /实时上传 文件冲突 - 您想要保留哪个文件?如果您同时选中了两个版本,本地的文件的文件名将被加上一个数字 保留两者 本地版本 服务器版本 - 对此抱歉! 图片预览 - 无法显示图片 - 无法复制 %1$s 到本地目录 %2$s 实时上传文件夹 本地文件夹 @@ -363,7 +279,6 @@ 使用子文件夹 基于年和月存于子文件夹 - 抱歉,你的服务器无法分享,请联系你的管理员 无法共享。请检查文件是否存在 共享文件或目录出错 无法取消共享。请检查文件是否存在 @@ -377,56 +292,29 @@ 复制链接 复制到剪贴板 - 没有取得文本可以复制到剪贴板 发生未预见的错误当复制到剪贴板 从%1$s复制文本 - 严重错误:无法执行操作 - - 连接到服务器时发生了一个错误。 - 当等待服务器时发生错误,操作不能完成 - 当等待服务器时发生错误,操作不能完成 - 操作无法无成,服务器不可用 - 你没有权限%s 重命名该文件 删除该文件 共享该文件 取消共享该文件 更新共享 - 创建文件 - 在此文件夹上传 该文件在服务器上不可用 更新存储路径 完成 - 正在准备迁移… 检查目的地… - 保存用户设置… - 正在同步,请等候… 正在转移数据… 更新目录… 清除… - 重新装入用户设置… 完成 - 错误:没有足够空间 - 错误:文件不可写 - 错误:文件不可读 错误:Nextcloud目录已经存在 - 错误:等待迁移 - 错误:正在更新目录 - - 数据目录已经存在,怎么办? - 覆盖 - 使用存在 - 账号 添加账号 管理账号 - 安全连接是通过一个非安全路由定向的。 - - 日志 + 日志 发送历史日志 - 无法发送日志,请安装邮箱应用。 %1$s Android 程序日志 加载数据 … @@ -434,27 +322,20 @@ 错误密码 移动 复制 - 这里还什么都没有。上传些东西吧! 选择 - 无法移动。请检查文件是否存在 - 无法把一个目录移动到它的下级 - 该文件已经存在在目标文件夹 尝试移动该文件或文件夹时发生错误 移动该文件 无法复制文件。请检查文件是否存在 - 将一个目录移动到它的子目录是不可能的 - 该文件已经存在在目标文件夹 尝试复制这个文件或文件夹时发生了错误 复制这个文件 即时上传 详细信息 - 实时上传视频目录 - %1$s同步未完成。 + %1$s同步未完成。 已共享 与你 @@ -495,7 +376,6 @@ 添加用户或组 分享链接 设置过期日期 - 密码保护 安全 允许编辑 隐藏文件列表 @@ -511,7 +391,6 @@ %1$s (邮件) %1$s ( 在 %2$s ) - 抱歉,你的服务器版本不允许你分享给用户在客户端,请联系管理员 可共享 可编辑 创建 @@ -520,50 +399,34 @@ 停止共享 完成 - 重试失败 清除失败 - 清除成功 - 清除所有完成任务 - 网格视图 列表视图 管理空间 - 在%1$s的数据中,设置、数据库和服务器认证都会永久性删除,\n\n下载目录会保存。\n\n这个过程会持续些时间。 清除数据 某些文件无法删除。 - 没有权限上传和下载文件。 - 在当地的文件系统中找不到这个文件 你是否真的要删除所选的项目? 你是否真的要删除所选的项目和它们的内容? - 请等待,设备在充电 搜索 这是一个Nextcloud的特征,请更新 学习更多 自动上传 参加 - 帮助我们测试 - 发现一个错误?事情很奇怪? 在GIthub在报告问题 - 有感兴趣帮我们测试下一个版本吗? 检查这个设备的版本 - 这包括所有即将加入的特性,有相当的风险。如果Bug 或错误发生,请向我们报告。 发行候选版本 - 候选发行版(RC)是下一个版本的快照,希望它是稳定的,你可以帮助测试以确认这一点。可以注册登陆在应用商店或手工在F-Droid的版本部分查找,并进行测试。 活跃的候选版 在IRC上加入这个会话: <a href="%1$s">#nextcloud-mobile</a> 帮助他人在 <a href="%1$s">论坛</a> <a href="%1$s">翻译</a> 应用程序 - 做为有贡献的开发者,可以看<a href="https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a>的细节 转移到… 复制到 选择文件夹… 加载文件夹… 没有发现媒体文件夹 - 自动上传喜欢的部分 设置 - 即时上传已经被完全更新,请查看主菜单,重新设置你的自动上传,很抱歉给你带来的不便。\n\n享受新的并已扩展的上传功能! 为%1$s %d被选择 @@ -576,7 +439,6 @@ 没有提示 请稍后核对 - 输入上传的文件名和文件类型 文件名 文件类型 片段文本文件(.txt) @@ -592,8 +454,6 @@ 给你所有的数据一个安全的家 - 在家里或公司,访问,分享,保护你的文件 - 多用户 联接你所有的云 @@ -607,7 +467,6 @@ 全名 - 电子邮件 电话号码 地址 网站 @@ -617,23 +476,16 @@ 暂无动态 - 瀑布流中会显示诸如添加\n更改&分享之类的事件 发生错误 关于 - 联系人备份 - 现在备份 恢复上次备份 恢复 备份 联系人备份 上次备份 - 需要联系人的读书权限 - 需要联系人的写权限 恢复联系人 恢复选中的联系人 - 选择客户导入 - 没有权限,无法导入! 选择时间 永远不 没有文件被发现 @@ -642,6 +494,4 @@ 收到新提示 - - - + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index d621d8997f..9b91220f2e 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -284,7 +284,7 @@ Rename Remove "Do you really want to remove %1$s?" - "Do you really want to remove %1$s the contents thereof?" + "Do you really want to remove %1$s and the contents thereof?" Local only "Removed" "Removal failed" @@ -633,7 +633,8 @@ About Backup contacts - Now + Restore contacts + Backup now Restore last backup Restore Backup @@ -648,6 +649,7 @@ Choose date never No file found + We can\'t find your last backup! Backup scheduled and will start shortly Import scheduled and will start shortly diff --git a/src/modified/java/com/owncloud/android/utils/PushUtils.java b/src/modified/java/com/owncloud/android/utils/PushUtils.java index efa8305161..8f34d08394 100644 --- a/src/modified/java/com/owncloud/android/utils/PushUtils.java +++ b/src/modified/java/com/owncloud/android/utils/PushUtils.java @@ -27,9 +27,12 @@ import android.content.Context; import android.text.TextUtils; import android.util.Base64; +import com.google.gson.Gson; import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; +import com.owncloud.android.datamodel.ArbitraryDataProvider; +import com.owncloud.android.datamodel.PushConfigurationState; import com.owncloud.android.db.PreferenceManager; import com.owncloud.android.lib.common.OwnCloudAccount; import com.owncloud.android.lib.common.OwnCloudClient; @@ -39,8 +42,12 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.notifications.RegisterAccountDeviceForNotificationsOperation; import com.owncloud.android.lib.resources.notifications.RegisterAccountDeviceForProxyOperation; +import com.owncloud.android.lib.resources.notifications.UnregisterAccountDeviceForNotificationsOperation; +import com.owncloud.android.lib.resources.notifications.UnregisterAccountDeviceForProxyOperation; import com.owncloud.android.lib.resources.notifications.models.PushResponse; +import org.apache.commons.httpclient.HttpStatus; + import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -65,7 +72,11 @@ public class PushUtils { private static final String KEYPAIR_PRIV_EXTENSION = ".priv"; private static final String KEYPAIR_PUB_EXTENSION = ".pub"; - public static String generateSHA512Hash(String pushToken) { + public static final String KEY_PUSH = "push"; + + private static ArbitraryDataProvider arbitraryDataProvider; + + private static String generateSHA512Hash(String pushToken) { MessageDigest messageDigest = null; try { messageDigest = MessageDigest.getInstance("SHA-512"); @@ -86,7 +97,7 @@ public class PushUtils { return result.toString(); } - public static int generateRsa2048KeyPair() { + private static int generateRsa2048KeyPair() { String keyPath = MainApp.getStoragePath() + File.separator + MainApp.getDataFolder() + File.separator + KEYPAIR_FOLDER; @@ -124,8 +135,59 @@ public class PushUtils { return -2; } + private static void deleteRegistrationForAccount(Account account) { + Context context = MainApp.getAppContext(); + OwnCloudAccount ocAccount = null; + arbitraryDataProvider = new ArbitraryDataProvider(MainApp.getAppContext().getContentResolver()); + + try { + ocAccount = new OwnCloudAccount(account, context); + OwnCloudClient mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). + getClientFor(ocAccount, context); + + RemoteOperation unregisterAccountDeviceForNotificationsOperation = new + UnregisterAccountDeviceForNotificationsOperation(); + + RemoteOperationResult remoteOperationResult = unregisterAccountDeviceForNotificationsOperation. + execute(mClient); + + if (remoteOperationResult.getHttpCode() == HttpStatus.SC_ACCEPTED) { + String arbitraryValue; + if (!TextUtils.isEmpty(arbitraryValue = arbitraryDataProvider.getValue(account, KEY_PUSH))) { + Gson gson = new Gson(); + PushConfigurationState pushArbitraryData = gson.fromJson(arbitraryValue, + PushConfigurationState.class); + RemoteOperation unregisterAccountDeviceForProxyOperation = + new UnregisterAccountDeviceForProxyOperation(context.getResources(). + getString(R.string.push_server_url), + pushArbitraryData.getDeviceIdentifier(), + pushArbitraryData.getDeviceIdentifierSignature(), + pushArbitraryData.getUserPublicKey()); + + remoteOperationResult = unregisterAccountDeviceForProxyOperation.execute(mClient); + + if (remoteOperationResult.isSuccess()) { + arbitraryDataProvider.deleteKeyForAccount(account, KEY_PUSH); + } + } + } + + + } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { + Log_OC.d(TAG, "Failed to find an account"); + } catch (AuthenticatorException e) { + Log_OC.d(TAG, "Failed via AuthenticatorException"); + } catch (IOException e) { + Log_OC.d(TAG, "Failed via IOException"); + } catch (OperationCanceledException e) { + Log_OC.d(TAG, "Failed via OperationCanceledException"); + } + } + public static void pushRegistrationToServer() { String token = PreferenceManager.getPushToken(MainApp.getAppContext()); + arbitraryDataProvider = new ArbitraryDataProvider(MainApp.getAppContext().getContentResolver()); + if (!TextUtils.isEmpty(MainApp.getAppContext().getResources().getString(R.string.push_server_url)) && !TextUtils.isEmpty(token)) { PushUtils.generateRsa2048KeyPair(); @@ -139,42 +201,57 @@ public class PushUtils { publicKey = "-----BEGIN PUBLIC KEY-----\n" + publicKey + "\n-----END PUBLIC KEY-----\n"; Context context = MainApp.getAppContext(); + String providerValue; + Gson gson = new Gson(); for (Account account : AccountUtils.getAccounts(context)) { - try { - OwnCloudAccount ocAccount = new OwnCloudAccount(account, context); - OwnCloudClient mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). - getClientFor(ocAccount, context); + if (!TextUtils.isEmpty(providerValue = arbitraryDataProvider.getValue(account, KEY_PUSH))) { + PushConfigurationState accountPushData = gson.fromJson(providerValue, + PushConfigurationState.class); + if (!accountPushData.getPushToken().equals(token) && !accountPushData.isShouldBeDeleted()) { + try { + OwnCloudAccount ocAccount = new OwnCloudAccount(account, context); + OwnCloudClient mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). + getClientFor(ocAccount, context); - RemoteOperation registerAccountDeviceForNotificationsOperation = - new RegisterAccountDeviceForNotificationsOperation(pushTokenHash, - publicKey, - context.getResources().getString(R.string.push_server_url)); + RemoteOperation registerAccountDeviceForNotificationsOperation = + new RegisterAccountDeviceForNotificationsOperation(pushTokenHash, + publicKey, + context.getResources().getString(R.string.push_server_url)); - RemoteOperationResult remoteOperationResult = registerAccountDeviceForNotificationsOperation. - execute(mClient); + RemoteOperationResult remoteOperationResult = registerAccountDeviceForNotificationsOperation. + execute(mClient); - if (remoteOperationResult.isSuccess()) { - PushResponse pushResponse = remoteOperationResult.getPushResponseData(); + if (remoteOperationResult.isSuccess()) { + PushResponse pushResponse = remoteOperationResult.getPushResponseData(); - RemoteOperation registerAccountDeviceForProxyOperation = new - RegisterAccountDeviceForProxyOperation( - context.getResources().getString(R.string.push_server_url), - token, pushResponse.getDeviceIdentifier(), pushResponse.getSignature(), - pushResponse.getPublicKey()); + RemoteOperation registerAccountDeviceForProxyOperation = new + RegisterAccountDeviceForProxyOperation( + context.getResources().getString(R.string.push_server_url), + token, pushResponse.getDeviceIdentifier(), pushResponse.getSignature(), + pushResponse.getPublicKey()); - remoteOperationResult = registerAccountDeviceForProxyOperation.execute(mClient); - PreferenceManager.setPushTokenLastSentTime(MainApp.getAppContext(), - System.currentTimeMillis()); + remoteOperationResult = registerAccountDeviceForProxyOperation.execute(mClient); + if (remoteOperationResult.isSuccess()) { + PushConfigurationState pushArbitraryData = new PushConfigurationState(token, + pushResponse.getDeviceIdentifier(), pushResponse.getSignature(), + pushResponse.getPublicKey(), false); + arbitraryDataProvider.storeOrUpdateKeyValue(account, KEY_PUSH, + gson.toJson(pushArbitraryData)); + } + } + } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { + Log_OC.d(TAG, "Failed to find an account"); + } catch (AuthenticatorException e) { + Log_OC.d(TAG, "Failed via AuthenticatorException"); + } catch (IOException e) { + Log_OC.d(TAG, "Failed via IOException"); + } catch (OperationCanceledException e) { + Log_OC.d(TAG, "Failed via OperationCanceledException"); + } + } else if (accountPushData.isShouldBeDeleted()) { + deleteRegistrationForAccount(account); } - } catch (com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundException e) { - Log_OC.d(TAG, "Failed to find an account"); - } catch (AuthenticatorException e) { - Log_OC.d(TAG, "Failed via AuthenticatorException"); - } catch (IOException e) { - Log_OC.d(TAG, "Failed via IOException"); - } catch (OperationCanceledException e) { - Log_OC.d(TAG, "Failed via OperationCanceledException"); } } } @@ -184,7 +261,7 @@ public class PushUtils { public static Key readKeyFromFile(boolean readPublicKey) { String keyPath = MainApp.getStoragePath() + File.separator + MainApp.getDataFolder() + File.separator + KEYPAIR_FOLDER; - ; + String privateKeyPath = keyPath + File.separator + KEYPAIR_FILE_NAME + KEYPAIR_PRIV_EXTENSION; String publicKeyPath = keyPath + File.separator + KEYPAIR_FILE_NAME + KEYPAIR_PUB_EXTENSION; diff --git a/src/modified/res/values/setup.xml b/src/modified/res/values/setup.xml index 5c7cb36d8d..65f1c89d7c 100644 --- a/src/modified/res/values/setup.xml +++ b/src/modified/res/values/setup.xml @@ -4,18 +4,18 @@ false - Nextcloud - nextcloud + Custom + custom com.custom.client.provider com.custom.client.provider.UsersAndGroupsSearch com.custom.client.provider.UsersAndGroupsSearch.action.SHARE_WITH com.custom.client.provider.Documents com.custom.client.provider.Files - nextcloud.db - nextcloud - nextcloud - nextcloud - Nextcloud + custom.db + custom + custom + custom + Custom Mozilla/5.0 (Android) ownCloud-android/%1$s