Merge pull request #44 from SimpleMobileTools/master

upd
This commit is contained in:
solokot 2018-10-23 12:56:20 +03:00 committed by GitHub
commit 21e93d8017
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
45 changed files with 435 additions and 232 deletions

View file

@ -7,7 +7,7 @@ buildscript {
propMinSdkVersion = 21
propTargetSdkVersion = propCompileSdkVersion
propVersionCode = 1
propVersionName = '5.1.6'
propVersionName = '5.2.0'
kotlin_version = '1.2.71'
}

View file

@ -83,9 +83,10 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc
(selectedKeys.clone() as HashSet<Int>).forEach {
val position = getItemKeyPosition(it)
if (position != -1) {
toggleItemSelection(false, position)
toggleItemSelection(false, position, false)
}
}
updateTitle()
selectedKeys.clear()
actBarTextView?.text = ""
actMode = null
@ -94,7 +95,7 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc
}
}
protected fun toggleItemSelection(select: Boolean, pos: Int) {
protected fun toggleItemSelection(select: Boolean, pos: Int, updateTitle: Boolean = true) {
if (select && !getIsItemSelectable(pos)) {
return
}
@ -112,17 +113,18 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc
notifyItemChanged(pos + positionOffset)
if (selectedKeys.isEmpty()) {
finishActMode()
return
if (updateTitle) {
updateTitle()
}
updateTitle(selectedKeys.size)
if (selectedKeys.isEmpty()) {
finishActMode()
}
}
private fun updateTitle(cnt: Int) {
private fun updateTitle() {
val selectableItemCount = getSelectableItemCount()
val selectedCount = Math.min(cnt, selectableItemCount)
val selectedCount = Math.min(selectedKeys.size, selectableItemCount)
val oldTitle = actBarTextView?.text
val newTitle = "$selectedCount / $selectableItemCount"
if (oldTitle != newTitle) {
@ -139,8 +141,9 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc
val min = Math.min(lastLongPressedItem, position)
val max = Math.max(lastLongPressedItem, position)
for (i in min..max) {
toggleItemSelection(true, i)
toggleItemSelection(true, i, false)
}
updateTitle()
position
}
}
@ -166,16 +169,17 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc
protected fun selectAll() {
val cnt = itemCount - positionOffset
for (i in 0 until cnt) {
toggleItemSelection(true, i)
toggleItemSelection(true, i, false)
}
lastLongPressedItem = -1
updateTitle()
}
protected fun setupDragListener(enable: Boolean) {
if (enable) {
recyclerView.setupDragListener(object : MyRecyclerView.MyDragListener {
override fun selectItem(position: Int) {
toggleItemSelection(true, position)
toggleItemSelection(true, position, true)
}
override fun selectRange(initialSelection: Int, lastDraggedIndex: Int, minReached: Int, maxReached: Int) {
@ -190,36 +194,36 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc
protected fun selectItemRange(from: Int, to: Int, min: Int, max: Int) {
if (from == to) {
(min..max).filter { it != from }.forEach { toggleItemSelection(false, it) }
(min..max).filter { it != from }.forEach { toggleItemSelection(false, it, true) }
return
}
if (to < from) {
for (i in to..from) {
toggleItemSelection(true, i)
toggleItemSelection(true, i, true)
}
if (min > -1 && min < to) {
(min until to).filter { it != from }.forEach { toggleItemSelection(false, it) }
(min until to).filter { it != from }.forEach { toggleItemSelection(false, it, true) }
}
if (max > -1) {
for (i in from + 1..max) {
toggleItemSelection(false, i)
toggleItemSelection(false, i, true)
}
}
} else {
for (i in from..to) {
toggleItemSelection(true, i)
toggleItemSelection(true, i, true)
}
if (max > -1 && max > to) {
(to + 1..max).filter { it != from }.forEach { toggleItemSelection(false, it) }
(to + 1..max).filter { it != from }.forEach { toggleItemSelection(false, it, true) }
}
if (min > -1) {
for (i in min until from) {
toggleItemSelection(false, i)
toggleItemSelection(false, i, true)
}
}
}
@ -295,7 +299,7 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc
if (actModeCallback.isSelectable) {
val currentPosition = adapterPosition - positionOffset
val isSelected = selectedKeys.contains(getItemSelectionKey(currentPosition))
toggleItemSelection(!isSelected, currentPosition)
toggleItemSelection(!isSelected, currentPosition, true)
} else {
itemClick.invoke(any)
}
@ -308,7 +312,7 @@ abstract class MyRecyclerViewAdapter(val activity: BaseSimpleActivity, val recyc
activity.startSupportActionMode(actModeCallback)
}
toggleItemSelection(true, currentPosition)
toggleItemSelection(true, currentPosition, true)
itemLongClicked(currentPosition)
}
}

View file

@ -33,7 +33,7 @@ class FileConflictDialog(val activity: Activity, val fileDirItem: FileDirItem, v
}
AlertDialog.Builder(activity)
.setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() })
.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
.setNegativeButton(R.string.cancel, null)
.create().apply {
activity.setupDialogStuff(view, this)

View file

@ -0,0 +1,88 @@
package com.simplemobiletools.commons.dialogs
import androidx.appcompat.app.AlertDialog
import com.simplemobiletools.commons.R
import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.extensions.*
import kotlinx.android.synthetic.main.dialog_rename_items.*
import kotlinx.android.synthetic.main.dialog_rename_items.view.*
import java.util.*
class RenameItemsDialog(val activity: BaseSimpleActivity, val paths: ArrayList<String>, val callback: () -> Unit) {
init {
val view = activity.layoutInflater.inflate(R.layout.dialog_rename_items, null)
AlertDialog.Builder(activity)
.setPositiveButton(R.string.ok, null)
.setNegativeButton(R.string.cancel, null)
.create().apply {
activity.setupDialogStuff(view, this, R.string.rename) {
showKeyboard(view.rename_items_value)
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
val valueToAdd = view.rename_items_value.value
val append = view.rename_items_radio_group.checkedRadioButtonId == rename_items_radio_append.id
if (valueToAdd.isEmpty()) {
callback()
dismiss()
return@setOnClickListener
}
if (!valueToAdd.isAValidFilename()) {
activity.toast(R.string.invalid_name)
return@setOnClickListener
}
val validPaths = paths.filter { activity.getDoesFilePathExist(it) }
val sdFilePath = validPaths.firstOrNull { activity.isPathOnSD(it) } ?: validPaths.firstOrNull()
if (sdFilePath == null) {
activity.toast(R.string.unknown_error_occurred)
dismiss()
return@setOnClickListener
}
var pathsCnt = validPaths.size
activity.handleSAFDialog(sdFilePath) {
for (path in validPaths) {
val fullName = path.getFilenameFromPath()
var dotAt = fullName.lastIndexOf(".")
if (dotAt == -1) {
dotAt = fullName.length
}
val name = fullName.substring(0, dotAt)
val extension = if (fullName.contains(".")) ".${fullName.getFilenameExtension()}" else ""
val newName = if (append) {
"$name$valueToAdd$extension"
} else {
"$valueToAdd$fullName"
}
val newPath = "${path.getParentPath()}/$newName"
if (activity.getDoesFilePathExist(newPath)) {
continue
}
activity.renameFile(path, newPath) {
if (it) {
pathsCnt--
if (pathsCnt == 0) {
callback()
dismiss()
}
} else {
activity.toast(R.string.unknown_error_occurred)
dismiss()
}
}
}
}
}
}
}
}
}

View file

@ -487,6 +487,11 @@ fun BaseSimpleActivity.deleteFile(fileDirItem: FileDirItem, allowDeleteFolder: B
fun BaseSimpleActivity.deleteFileBg(fileDirItem: FileDirItem, allowDeleteFolder: Boolean = false, callback: ((wasSuccess: Boolean) -> Unit)? = null) {
val path = fileDirItem.path
val file = File(path)
if (!file.canWrite()) {
callback?.invoke(false)
return
}
var fileDeleted = !path.startsWith(OTG_PATH) && ((!file.exists() && file.length() == 0L) || file.delete())
if (fileDeleted) {
rescanDeletedPath(path) {

View file

@ -87,8 +87,12 @@ fun String.getExifProperties(exif: ExifInterface): String {
exif.getAttribute(ExifInterface.TAG_EXPOSURE_TIME).let {
if (it?.isNotEmpty() == true) {
val exposureSec = Math.round(1 / it.toFloat())
exifString += "1/${exposureSec}s "
val exposureValue = it.toFloat()
exifString += if (exposureValue > 1f) {
"${exposureValue}s "
} else {
"1/${Math.round(1 / exposureValue)}s "
}
}
}

View file

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<selector>
<item
android:drawable="@color/activated_item_foreground"
android:state_selected="true"/>
</selector>
</item>
<item>
<ripple android:color="@color/pressed_item_foreground">
<item android:id="@android:id/mask">
<color android:color="@android:color/white"/>
</item>
</ripple>
</item>
</layer-list>

View file

@ -1,5 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/pressed_item_foreground" android:state_pressed="true"/>
<item android:drawable="@color/activated_item_foreground" android:state_selected="true"/>
</selector>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<selector>
<item
android:drawable="@color/activated_item_foreground"
android:state_selected="true"/>
</selector>
</item>
<item>
<ripple android:color="@color/pressed_item_foreground">
<item android:id="@android:id/mask">
<color android:color="@android:color/white"/>
</item>
</ripple>
</item>
</layer-list>

View file

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rename_items_holder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MyEditText
android:id="@+id/rename_items_value"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/activity_margin"
android:singleLine="true"
android:textCursorDrawable="@null"
android:textSize="@dimen/normal_text_size"/>
<RadioGroup
android:id="@+id/rename_items_radio_group"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/rename_items_radio_append"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:checked="true"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="@string/append_filenames"/>
<com.simplemobiletools.commons.views.MyCompatRadioButton
android:id="@+id/rename_items_radio_prepend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/normal_margin"
android:paddingBottom="@dimen/normal_margin"
android:text="@string/prepend_filenames"/>
</RadioGroup>
</LinearLayout>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">Extension cannot be empty</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Copy</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Fayl adı \'%s\' etibarsız simvollar ehtiva edir</string>
<string name="extension_cannot_be_empty">Uzantı boş ola bilməz</string>
<string name="source_file_doesnt_exist">Kök faylı %s yoxdur</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopyala</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">Extension cannot be empty</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Copy</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">El nom de l\'arxiu \'%s\' conté caràcters no vàlids</string>
<string name="extension_cannot_be_empty">La extensió no pot estar buida</string>
<string name="source_file_doesnt_exist">El fitxer %s no existeix</string>
<string name="prepend_filenames">Posar abans noms de fitxer</string>
<string name="append_filenames">Afegeix noms de fitxer (abans de l\'extensió de fitxer)</string>
<!-- Copy / Move -->
<string name="copy">Copiar</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Název souboru \'%s\' obsahuje neplatné znaky</string>
<string name="extension_cannot_be_empty">Přípona nemůže být prázdná</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopírovat</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filnavnet \"%s\" indeholder ugyldige tegn</string>
<string name="extension_cannot_be_empty">Filtypen kan ikke stå tom</string>
<string name="source_file_doesnt_exist">Kildefilen %s eksisterer ikke</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopier</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Dateiname \'%s\' anthält ungültige Zeichen</string>
<string name="extension_cannot_be_empty">Dateiendung darf nicht leer sein</string>
<string name="source_file_doesnt_exist">Quelldatei %s existiert nicht</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopieren</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Το όνομα \'%s\' περιέχει μη έγκυρους χαρακτήρες</string>
<string name="extension_cannot_be_empty">Η επέκταση δεν μπορεί να είναι κενή</string>
<string name="source_file_doesnt_exist">To αρχείο προέλευσης %s δεν υπάρχει</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Αντιγραφή</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">El nombre del archivo \'%s\' contiene caracteres no válidos</string>
<string name="extension_cannot_be_empty">La extensión no puede estar vacía</string>
<string name="source_file_doesnt_exist">El archivo %s no existe</string>
<string name="prepend_filenames">Preponer los nombres de archivo</string>
<string name="append_filenames">Adjuntar nombres de archivos (antes de la extensión de archivo)</string>
<!-- Copy / Move -->
<string name="copy">Copiar</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Tiedostonimi \'%s\' sisältää kiellettyjä merkkejä</string>
<string name="extension_cannot_be_empty">Tiedostomuoto ei voi olla tyhjä</string>
<string name="source_file_doesnt_exist">Lähdetiedostoa %s ei löydy</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopioi</string>

View file

@ -1,112 +1,114 @@
<resources>
<string name="ok">Ok</string>
<string name="ok">OK</string>
<string name="cancel">Annuler</string>
<string name="save_as">Enregistrer sous</string>
<string name="file_saved">Fichier sauvegardé avec succès</string>
<string name="invalid_file_format">Format de fichier invalide</string>
<string name="out_of_memory_error">Erreur excès de mémoire</string>
<string name="an_error_occurred">Une erreur est survenue: %s</string>
<string name="file_saved">Fichier enregistré</string>
<string name="invalid_file_format">Format de fichier incorrect</string>
<string name="out_of_memory_error">Erreur : mémoire insuffisante</string>
<string name="an_error_occurred">Une erreur est survenue : %s</string>
<string name="open_with">Ouvrir avec</string>
<string name="no_app_found">Aucune application valide trouvée</string>
<string name="set_as">Définir comme</string>
<string name="no_app_found">Aucune application disponible</string>
<string name="set_as">Définir en tant que</string>
<string name="value_copied_to_clipboard">Valeur copiée dans le presse-papier</string>
<string name="unknown">Inconnu</string>
<string name="always">Toujours</string>
<string name="never">Jamais</string>
<string name="details">Détails</string>
<string name="notes">Notes</string>
<string name="deleting_folder">Supprimer le dossier \'%s\'</string>
<string name="none">None</string>
<string name="label">Label</string>
<string name="deleting_folder">Suppression du dossier \'%s\'</string>
<string name="none">Aucun</string>
<string name="label">Libellé</string>
<!-- Favorites -->
<string name="favorites">Favoris</string>
<string name="add_favorites">Ajouter des favoris</string>
<string name="add_to_favorites">Ajouter aux favoris</string>
<string name="remove_from_favorites">Enlever des favoris</string>
<string name="remove_from_favorites">Supprimer des favoris</string>
<!-- Search -->
<string name="search">Recherche</string>
<string name="type_2_characters">Tapez au moins 2 caractères pour lancer la recherche.</string>
<string name="type_2_characters">Saisissez au moins deux caractères pour démarrer la recherche</string>
<!-- Filters -->
<string name="filter">Filtrer</string>
<string name="no_items_found">Aucun élément trouvé.</string>
<string name="change_filter">Changer le filtre</string>
<string name="no_items_found">Aucun élément trouvé</string>
<string name="change_filter">Modifier le filtre</string>
<!-- Permissions -->
<string name="no_storage_permissions">L\'autorisation d\'accès au stockage est requise</string>
<string name="no_contacts_permission">L\'autorisation d\'accès aux contacts est requise</string>
<string name="no_camera_permissions">L\'autorisation d\'accès à l\'appareil photo est requise</string>
<string name="no_audio_permissions">L\'autorisation d\'accès aux paramètres audios est requise</string>
<string name="no_storage_permissions">L\'autorisation d\'accès au stockage est nécessaire</string>
<string name="no_contacts_permission">L\'autorisation d\'accès aux contacts est nécessaire</string>
<string name="no_camera_permissions">L\'autorisation d\'accès à l\'appareil photo est nécessaire</string>
<string name="no_audio_permissions">L\'autorisation d\'accès aux paramètres audios est nécessaire</string>
<!-- Renaming -->
<string name="rename_file">Renommer le fichier</string>
<string name="rename_folder">Renommer le dossier</string>
<string name="rename_file_error">Impossible de renommer le fichier</string>
<string name="rename_folder_error">Impossible de renommer le dossier.</string>
<string name="rename_folder_empty">Le nom de dossier ne peut pas être vide.</string>
<string name="rename_folder_exists">Un dossier homonyme existe déjà.</string>
<string name="rename_folder_root">Impossible de renommer le dossier racine de la mémoire.</string>
<string name="rename_folder_ok">Dossier renommé avec succès</string>
<string name="renaming_folder">Renommage du dossier</string>
<string name="filename_cannot_be_empty">Le nom de fichier ne peut pas rester vide</string>
<string name="filename_invalid_characters">Le nom de fichier contient des caractères invalides</string>
<string name="filename_invalid_characters_placeholder">Le nom de fichier \'%s\' contient des caractères invalides</string>
<string name="rename_folder_error">Impossible de renommer le dossier</string>
<string name="rename_folder_empty">Impossible d\'utiliser un nom de dossier vide</string>
<string name="rename_folder_exists">Un dossier portant ce nom existe déjà</string>
<string name="rename_folder_root">Impossible de renommer le dossier racine de la mémoire</string>
<string name="rename_folder_ok">Dossier renommé</string>
<string name="renaming_folder">Modification en cours…</string>
<string name="filename_cannot_be_empty">Impossible d\'utiliser un nom de fichier vide</string>
<string name="filename_invalid_characters">Le nom de fichier contient des caractères incorrectes</string>
<string name="filename_invalid_characters_placeholder">Le nom du fichier \"%s\" contient des caractères incorrectes</string>
<string name="extension_cannot_be_empty">L\'extension ne peut pas rester vide</string>
<string name="source_file_doesnt_exist">Le fichier source %s n\'existe pas</string>
<string name="prepend_filenames">Ajouter un préfixe aux noms de fichiers</string>
<string name="append_filenames">Ajouter un suffixe aux noms de fichiers (avant l\'extension du fichier)</string>
<!-- Copy / Move -->
<string name="copy">Copier</string>
<string name="move">Déplacer</string>
<string name="copy_move">Copier / Déplacer</string>
<string name="copy_move">Copier ou déplacer</string>
<string name="copy_to">Copier vers</string>
<string name="move_to">Déplacer vers</string>
<string name="source">Source</string>
<string name="destination">Destination</string>
<string name="select_destination">Sélectionner la destination</string>
<string name="click_select_destination">Cliquez ici pour sélectionner la destination</string>
<string name="click_select_destination">Appuyez ici pour sélectionner la destination</string>
<string name="invalid_destination">Impossible d\'écrire dans la destination sélectionnée</string>
<string name="please_select_destination">Veuillez choisir une destination</string>
<string name="please_select_destination">Veuillez sélectionner une destination</string>
<string name="source_and_destination_same">La source et la destination ne peuvent pas être identiques</string>
<string name="copy_failed">Impossible de copier les fichiers</string>
<string name="copying">Copie…</string>
<string name="copying_success">Fichiers copiés avec succès</string>
<string name="copying">Copie en cours</string>
<string name="copying_success">Fichiers copiés</string>
<string name="copy_move_failed">Une erreur est survenue</string>
<string name="moving">Déplacement…</string>
<string name="moving_success">Fichiers déplacés avec succès</string>
<string name="moving">Déplacement en cours</string>
<string name="moving_success">Fichiers déplacés</string>
<string name="moving_success_partial">Certains fichiers n\'ont pu être déplacés</string>
<string name="copying_success_partial">Certains fichiers n\'ont pu être copiés</string>
<string name="no_files_selected">Aucun fichier sélectionné</string>
<string name="saving">Enregistrement…</string>
<string name="saving">Enregistrement en cours</string>
<string name="could_not_create_folder">Impossible de créer le dossier %s</string>
<string name="could_not_create_file">Impossible de créer le fichier %s</string>
<!-- Create new -->
<string name="create_new">Créer nouveau</string>
<string name="create_new">Créer un nouveau</string>
<string name="folder">Dossier</string>
<string name="file">Fichier</string>
<string name="create_new_folder">Créer un nouveau dossier</string>
<string name="name_taken">Un répertoire ou un fichier avec ce nom existe déjà</string>
<string name="invalid_name">Le nom contient des caractères invalides</string>
<string name="name_taken">Un répertoire ou un fichier portant ce nom existe déjà</string>
<string name="invalid_name">Le nom contient des caractères incorrectes</string>
<string name="empty_name">Veuillez saisir un nom</string>
<string name="unknown_error_occurred">Une erreur inconnue est survenue.</string>
<string name="unknown_error_occurred">Une erreur inconnue est survenue</string>
<!-- File operation conflicts -->
<string name="file_already_exists">Le fichier \"%s\" existe déjà</string>
<string name="file_already_exists_overwrite">Le fichier \"%s\" existe déjà. Ecraser?</string>
<string name="file_already_exists_overwrite">Le fichier \"%s\" existe déjà. Écraser ?</string>
<string name="folder_already_exists">Le répertoire \"%s\" existe déjà</string>
<string name="merge">Fusionner</string>
<string name="overwrite">Écraser</string>
<string name="skip">Passer</string>
<string name="append">Suffixer avec \'_1\'</string>
<string name="apply_to_all">Appliquer à tous les conflits</string>
<string name="append">Ajouter un suffixe \"_1\"</string>
<string name="apply_to_all">Appliquer pour tous</string>
<!-- File picker -->
<string name="select_folder">Sélectionner un dossier</string>
<string name="select_file">Sélectionner un fichier</string>
<string name="confirm_storage_access_title">Confirmer l\'accès au stockage externe</string>
<string name="confirm_storage_access_text">Veuillez choisir le dossier racine de la carte SD dans le prochain écran, pour accorder le droit d\'écriture</string>
<string name="confirm_storage_access_title">Confirmez l\'accès au stockage externe</string>
<string name="confirm_storage_access_text">Veuillez sélectionner le dossier racine de la carte SD sur le prochain écran, pour accorder le droit en écriture</string>
<string name="confirm_storage_access_text_sd">Si vous ne voyez pas la carte SD, essayez ceci</string>
<string name="confirm_selection">Confirmer la sélection</string>
@ -122,8 +124,8 @@
</plurals>
<plurals name="deleting_items">
<item quantity="one">Deleting %d item</item>
<item quantity="other">Deleting %d items</item>
<item quantity="one">Suppression d\' %d élément en cours…</item>
<item quantity="other">Suppression de %d éléments en cours…</item>
</plurals>
<!-- Storages -->
@ -131,17 +133,17 @@
<string name="internal">Interne</string>
<string name="sd_card">Carte SD</string>
<string name="root">Racine</string>
<string name="wrong_root_selected">Mauvais dossier sélectionné, veuillez sélectionner le dossier racine de votre carte SD</string>
<string name="sd_card_otg_same">Les chemins de la carte SD et du stockage USB OTG ne peuvent être similaires.</string>
<string name="app_on_sd_card">You seem to have the app installed on an SD card, that makes the app widgets unavailable. You won\'t even see them on the list of available widgets.
It is a system limitation, so if you want to use the widgets, you have to move the app back on the internal storage.</string>
<string name="wrong_root_selected">Dossier sélectionné incorrecte, veuillez sélectionner le dossier racine de votre carte SD</string>
<string name="sd_card_otg_same">Les chemins de la carte SD et du stockage USB OTG ne peuvent être similaires</string>
<string name="app_on_sd_card">L\'application semble installée sur une carte SD, ce qui empêche l\'utilisation des widgets de l\'applications. Ils n\'apparaîtront même pas dans la liste des widgets disponibles.
C\'est une limitation système. Si vous voulez utiliser le widget, vous devez déplacer l\'application vers la mémoire interne.</string>
<!-- File properties -->
<string name="properties">Propriétés</string>
<string name="path">Chemin</string>
<string name="items_selected">Eléments sélectionnés</string>
<string name="direct_children_count">Compte des enfants directs</string>
<string name="files_count">Compte total des fichiers</string>
<string name="items_selected">Éléments sélectionnés</string>
<string name="direct_children_count">Nombre total de fichiers enfants directs</string>
<string name="files_count">Nombre total de fichiers</string>
<string name="resolution">Résolution</string>
<string name="duration">Durée</string>
<string name="artist">Artiste</string>
@ -158,37 +160,37 @@
<string name="background_color">Couleur d\'arrière-plan</string>
<string name="text_color">Couleur du texte</string>
<string name="primary_color">Couleur primaire</string>
<string name="foreground_color">Couleur de fond</string>
<string name="app_icon_color">Couleur de fond de l\'îcone de l\'application</string>
<string name="foreground_color">Couleur d\'arrière-plan</string>
<string name="app_icon_color">Couleur d\'arrière-plan de l\'icône de l\'application</string>
<string name="restore_defaults">Restaurer les valeurs par défaut</string>
<string name="change_color">Changer couleur</string>
<string name="change_color">Modifier la couleur</string>
<string name="theme">Thème</string>
<string name="changing_color_description">Changer une couleur le basculera en thème personnalisé</string>
<string name="save">Sauvegarder</string>
<string name="discard">Rejeter</string>
<string name="changing_color_description">Modifier une couleur rend le thème \"personnalisé\"</string>
<string name="save">Enregistrer</string>
<string name="discard">Annuler</string>
<string name="undo_changes">Annuler les changements</string>
<string name="undo_changes_confirmation">Etes-vous sûr•e de vouloir annuler vos changements ?</string>
<string name="save_before_closing">Vous avez des changements non sauvegardés. Sauvegarder avant de quitter ?</string>
<string name="apply_to_all_apps">Appliquer ces couleurs à toutes les Applis Simples</string>
<string name="share_colors_success">Couleurs mises à jour. Un nouveau thème nommé \'Partagé\' a été ajouté, veuillez utiliser celui-ci pour mettre à jour les couleurs de toutes les applis à partir de maintenant.</string>
<string name="undo_changes_confirmation">Êtes-vous sûr(-e) de vouloir annuler vos changements ?</string>
<string name="save_before_closing">Vous avez des changements non enregistrés. Enregistrer avant de quitter ?</string>
<string name="apply_to_all_apps">Appliquer à l\'ensemble de la suite d\'applications Simples</string>
<string name="share_colors_success">Couleurs actualisées. Un nouveau thème nommé \"Partagé\" a été ajouté. Veuillez utiliser ce thème pour actualiser les couleurs de toutes les applications à partir de maintenant.</string>
<string name="purchase_thank_you">
<![CDATA[
Veuillez acquérir <a href="https://play.google.com/store/apps/details?id=com.simplemobiletools.thankyou">Un petit Merci</a> pour déverrouiller cette fonctionnalité et soutenir le développeur. Merci!
Veuillez acheter <a href="https://play.google.com/store/apps/details?id=com.simplemobiletools.thankyou">Un petit Merci</a> pour déverrouiller cette fonctionnalité et soutenir le développeur. Merci !
]]>
</string>
<!-- Themes -->
<string name="light_theme">Lumineux</string>
<string name="light_theme">Clair</string>
<string name="dark_theme">Sombre</string>
<string name="solarized">Solarisé</string>
<string name="dark_red">Noir et Rouge</string>
<string name="black_white">Noir &amp; Blanc</string>
<string name="black_white">Noir et Blanc</string>
<string name="custom">Personnalisé</string>
<string name="shared">Partagé</string>
<!-- What's new -->
<string name="whats_new">Quoi de neuf ?</string>
<string name="whats_new_disclaimer">* seules les mises à jour les plus importantes sont listées ici, elles sont toujours accompagnées de plus petites améliorations qui ne sont pas détaillées</string>
<string name="whats_new_disclaimer">* seules les mises à jour les plus importantes sont listées ici. Les améliorations mineures ne sont pas détaillées.</string>
<!-- Actionbar items -->
<string name="delete">Supprimer</string>
@ -196,24 +198,24 @@
<string name="rename">Renommer</string>
<string name="share">Partager</string>
<string name="share_via">Partager via</string>
<string name="select_all">Sélectionner tout</string>
<string name="select_all">Tout sélectionner</string>
<string name="hide">Masquer</string>
<string name="unhide">masquer</string>
<string name="hide_folder">Masquer dossier</string>
<string name="unhide_folder">masquer dossier</string>
<string name="temporarily_show_hidden">Afficher temporairement les fichiers masqués</string>
<string name="stop_showing_hidden">Arrêter d\'afficher les medias masqués</string>
<string name="maximum_share_reached">Vous ne pouvez pas partager autant de contenu à la fois</string>
<string name="empty_and_disable_recycle_bin">Empty and disable the Recycle Bin</string>
<string name="undo">Undo</string>
<string name="redo">Redo</string>
<string name="unhide">voiler</string>
<string name="hide_folder">Masquer le dossier</string>
<string name="unhide_folder">voiler le dossier</string>
<string name="temporarily_show_hidden">Afficher les fichiers masqués</string>
<string name="stop_showing_hidden">Ne plus afficher les médias masqués</string>
<string name="maximum_share_reached">Impossible de partager autant de contenu à la fois</string>
<string name="empty_and_disable_recycle_bin">Vider et désactiver la corbeille</string>
<string name="undo">Annuler</string>
<string name="redo">Répéter</string>
<!-- Sorting -->
<string name="sort_by">Trier par</string>
<string name="name">Nom</string>
<string name="size">Taille</string>
<string name="last_modified">Dernière modification</string>
<string name="date_taken">Date prise</string>
<string name="size">Dimension</string>
<string name="last_modified">Date de modification</string>
<string name="date_taken">Date de prise de vue</string>
<string name="title">Titre</string>
<string name="filename">Nom de fichier</string>
<string name="extension">Extension</string>
@ -222,43 +224,43 @@
<string name="use_for_this_folder">Utiliser pour ce dossier uniquement</string>
<!-- Confirmation dialog -->
<string name="proceed_with_deletion">Êtes-vous sûr•e de vouloir effectuer la suppression ?</string>
<string name="deletion_confirmation">Êtes-vous sûr•e de vouloir supprimer %s ?</string> <!-- Are you sure you want to delete 5 items? -->
<string name="move_to_recycle_bin_confirmation">Êtes-vous sûr•e de vouloir déplacer %s vers la corbeille ?</string> <!-- Are you sure you want to move 3 items into the Recycle Bin? -->
<string name="are_you_sure_delete">Are you sure you want to delete this item?</string>
<string name="are_you_sure_recycle_bin">Are you sure you want to move this item into the Recycle Bin?</string>
<string name="do_not_ask_again">Ne pas redemander pour cette session</string>
<string name="proceed_with_deletion">Êtes-vous sûr(-e) de vouloir effectuer la suppression ?</string>
<string name="deletion_confirmation">Êtes-vous sûr(-e) de vouloir supprimer %s ?</string> <!-- Are you sure you want to delete 5 items? -->
<string name="move_to_recycle_bin_confirmation">Êtes-vous sûr(-e) de vouloir déplacer %s vers la corbeille ?</string> <!-- Are you sure you want to move 3 items into the Recycle Bin? -->
<string name="are_you_sure_delete">Êtes-vous sûr(-e) de vouloir supprimer cet élément?</string>
<string name="are_you_sure_recycle_bin">Êtes-vous sûr(-e) de vouloir déplacer cet élément dans la corbeille ?</string>
<string name="do_not_ask_again">Ne plus demander pour cette session</string>
<string name="yes">Oui</string>
<string name="no">Non</string>
<plurals name="delete_warning">
<item quantity="one">WARNING: You are deleting %d folder</item>
<item quantity="other">WARNING: You are deleting %d folders</item>
<item quantity="one">ATTENTION : Vous supprimez %d dossier</item>
<item quantity="other">ATTENTION : Vous supprimez %d dossiers</item>
</plurals>
<!-- Password protection -->
<string name="pin">PIN</string>
<string name="enter_pin">Saisir PIN</string>
<string name="please_enter_pin">Veuillez saisir un PIN</string>
<string name="wrong_pin">PIN erroné</string>
<string name="repeat_pin">Répéter PIN</string>
<string name="pattern">Modèle</string>
<string name="insert_pattern">Insérer modèle</string>
<string name="wrong_pattern">Modèle erroné</string>
<string name="repeat_pattern">Répéter modèle</string>
<string name="enter_pin">Saisir le code PIN</string>
<string name="please_enter_pin">Veuillez saisir un code PIN</string>
<string name="wrong_pin">PIN incorrect</string>
<string name="repeat_pin">Saisissez à nouveau le code PIN</string>
<string name="pattern">Schéma</string>
<string name="insert_pattern">Dessinez un schéma</string>
<string name="wrong_pattern">Schéma incorrect</string>
<string name="repeat_pattern">Redessinez le schéma</string>
<string name="fingerprint">Empreinte</string>
<string name="add_fingerprint">Ajouter une empreinte</string>
<string name="place_finger">Veuillez placer votre doigt sur le capteur d\'empreintes digitales</string>
<string name="authentication_failed">L\'identification a échoué</string>
<string name="authentication_blocked">Identification bloquée, veuillez réessayer dans quelques instants</string>
<string name="no_fingerprints_registered">Vous n\'avez aucune empreinte digitale enregistrée, veuillez en ajouter dans les paramètres de votre appareil</string>
<string name="place_finger">Veuillez placer votre doigt sur le capteur d\'empreinte digitale</string>
<string name="authentication_failed">Échec de l\'identification</string>
<string name="authentication_blocked">Identification bloquée. Veuillez réessayer dans quelques instants.</string>
<string name="no_fingerprints_registered">Vous n\'avez aucune empreinte digitale enregistrée. Veuillez en ajouter depuis les paramètres de votre appareil</string>
<string name="go_to_settings">Aller aux Paramètres</string>
<string name="protection_setup_successfully">Mot de passe défini avec succès. Veuillez réinstaller l\'appli en cas d\'oubli.</string>
<string name="fingerprint_setup_successfully">Protection mise en place avec succès. Veuillez réinstaller l\'appli en cas d\'oubli.</string>
<string name="protection_setup_successfully">Mot de passe défini. Veuillez réinstaller l\'application en cas problèmes de réinitialisation.</string>
<string name="fingerprint_setup_successfully">Protection définie. Veuillez réinstaller l\'application en cas problèmes de réinitialisation.</string>
<!-- Times -->
<string name="yesterday">Yesterday</string>
<string name="today">Today</string>
<string name="yesterday">Hier</string>
<string name="today">Aujourd\'hui</string>
<string name="tomorrow">Demain</string>
<string name="seconds_raw">secondes</string>
<string name="minutes_raw">minutes</string>
@ -341,11 +343,11 @@
</plurals>
<!-- For example: Time remaining till the alarm goes off: 6 hours, 5 minutes -->
<string name="alarm_goes_off_in">Temps restant jusqu\'au déclenchement de l\'alarme : \n%s</string>
<string name="reminder_triggers_in">Time remaining till the reminder triggers:\n%s</string>
<string name="alarm_goes_off_in">Durée restante jusqu\'au déclenchement de l\'alarme :\n%s</string>
<string name="reminder_triggers_in">Durée restante jusqu\'au déclenchement du rappel :\n%s</string>
<string name="alarm_warning">Veuillez vérifier que l\'alarme fonctionne correctement avant de lui faire confiance. Elle pourrait ne pas fonctionner correctement, à cause de la politique d\'économie d\'énergie de votre appareil.</string>
<string name="reminder_warning">Veuillez vérifier que les rappels fonctionnent correctement avant de leur faire confiance. Ils pourraient ne pas fonctionner correctement, à cause de la politique d\'économie d\'énergie de votre appareil.</string>
<string name="notifications_disabled">Notifications of this application are disabled. Please go in your device settings for enabling them.</string>
<string name="notifications_disabled">Les notifications de cette application sont désactivées. Veuillez les activer depuis les paramètres de votre appareil.</string>
<!-- Alarms -->
<string name="alarm">Réveil</string>
@ -353,39 +355,39 @@
<string name="dismiss">Ignorer</string>
<string name="no_reminder">Pas de rappel</string>
<string name="at_start">Au démarrage</string>
<string name="system_sounds">Sonneries du système</string>
<string name="system_sounds">Sonneries système</string>
<string name="your_sounds">Vos sonneries</string>
<string name="add_new_sound">Ajouter une nouvelle sonnerie</string>
<string name="no_sound">Pas de son</string>
<string name="no_sound">Aucune sonnerie</string>
<!-- Settings -->
<string name="settings">Paramètres</string>
<string name="purchase_simple_thank_you">Purchase Simple Thank You</string>
<string name="purchase_simple_thank_you">Acheter Simple Thank You</string>
<string name="customize_colors">Personnaliser les couleurs</string>
<string name="customize_widget_colors">Personnaliser les couleurs du widget</string>
<string name="use_english_language">Utiliser l\'affichage en anglais</string>
<string name="avoid_whats_new">Ne pas montrer les nouveautés au démarrage</string>
<string name="show_hidden_items">Afficher les éléments cachés</string>
<string name="font_size">Taille police</string>
<string name="use_english_language">Utiliser la langue anglaise</string>
<string name="avoid_whats_new">Ne pas afficher les nouveautés au démarrage</string>
<string name="show_hidden_items">Afficher les éléments masqués</string>
<string name="font_size">Taille de la police</string>
<string name="small">Petite</string>
<string name="medium">Moyenne</string>
<string name="large">Large</string>
<string name="extra_large">Extra large</string>
<string name="password_protect_hidden_items">Visibilité des éléments protégés par un mot de passe</string>
<string name="password_protect_hidden_items">Afficher les éléments protégés par mot de passe</string>
<string name="password_protect_whole_app">Le mot de passe protège l\'ensemble de l\'application</string>
<string name="keep_last_modified">Garder la valeur de l\'ancienne modification lors de renommage/déplacement/copie de fichier</string>
<string name="show_info_bubble">Afficher une bulle d\'information des éléments qui s\'affichent lorsque vous faites glisser la barre de défilement</string>
<string name="prevent_phone_from_sleeping">Ne pas mettre en veille tant que l\'application est active.</string>
<string name="skip_delete_confirmation">Ne jamais montrer le dialogue de confirmation de suppression</string>
<string name="enable_pull_to_refresh">Activer le rafraîchissement en glissant à partir du haut</string>
<string name="use_24_hour_time_format">Utiliser le format horaire 24 heures.</string>
<string name="keep_last_modified">Conserver la valeur de l\'ancienne modification lors de la copie, du déplacement ou du renommage du fichier</string>
<string name="show_info_bubble">Afficher une bulle d\'information des éléments lors de l\'utilisation de la barre de défilement</string>
<string name="prevent_phone_from_sleeping">Ne pas mettre en veille tant que l\'application est active</string>
<string name="skip_delete_confirmation">Ne jamais afficher le dialogue de confirmation de suppression</string>
<string name="enable_pull_to_refresh">Activer l\'actualisation par glissement à partir du haut de l\'écran</string>
<string name="use_24_hour_time_format">Utiliser le format horaire sur 24 heures</string>
<string name="sunday_first">Démarrer la semaine le dimanche</string>
<string name="widgets">Widgets</string>
<string name="use_same_snooze">Toujours utiliser le même intervalle de répétition</string>
<string name="snooze_time">Temps de répétition</string>
<string name="snooze_time">Intervalle de répétition</string>
<string name="vibrate_on_button_press">Vibrer lors de l\'appui sur un bouton</string>
<string name="move_items_into_recycle_bin">Déplacer les éléments vers la corbeille au lieu de les supprimer</string>
<string name="recycle_bin_cleaning_interval">Interval de vidage de la corbeille</string>
<string name="recycle_bin_cleaning_interval">intervalle de vidage de la corbeille</string>
<string name="empty_recycle_bin">Vider la corbeille</string>
<string name="force_portrait_mode">Forcer le mode portrait</string>
@ -395,39 +397,39 @@
<string name="scrolling">Défilement</string>
<string name="file_operations">Opérations sur les fichiers</string>
<string name="recycle_bin">Corbeille</string>
<string name="saving_label">Saving</string>
<string name="startup">Startup</string>
<string name="text">Text</string>
<string name="saving_label">Enregistrement en cours…</string>
<string name="startup">Démarrage en cours…</string>
<string name="text">Texte</string>
<!-- Recycle Bin -->
<string name="restore_this_file">Restore this file</string>
<string name="restore_selected_files">Restore selected files</string>
<string name="restore_all_files">Restore all files</string>
<string name="recycle_bin_emptied">The Recycle Bin has been emptied successfully</string>
<string name="files_restored_successfully">Files have been restored successfully</string>
<string name="empty_recycle_bin_confirmation">Are you sure you want to empty the Recycle Bin? The files will be permanently lost.</string>
<string name="recycle_bin_empty">The Recycle Bin is empty</string>
<string name="restore_this_file">Récupérer ce fichier</string>
<string name="restore_selected_files">Récupérer les fichiers sélectionnés</string>
<string name="restore_all_files">Récupérer tous les fichiers </string>
<string name="recycle_bin_emptied">Corbeille vidée</string>
<string name="files_restored_successfully">Les fichiers récupérerés</string>
<string name="empty_recycle_bin_confirmation">Êtes-vous sûr(-e) de vouloir vider la corbeille ? Les fichiers seront définitivement supprimés.</string>
<string name="recycle_bin_empty">La corbeille est vide</string>
<plurals name="moving_items_into_bin">
<item quantity="one">Moving %d item into the Recycle Bin</item>
<item quantity="other">Moving %d items into the Recycle Bin</item>
<item quantity="one">Déplacement d\' %d élément dans la corbeille en cours…</item>
<item quantity="other">Déplacement de %d éléments dans la corbeille en cours…</item>
</plurals>
<!-- Import / Export -->
<string name="importing">Importer…</string>
<string name="exporting">Exporter…</string>
<string name="importing_successful">Importation réussie</string>
<string name="exporting_successful">Exportation réussie</string>
<string name="importing_failed">L\'importation a échoué</string>
<string name="exporting_failed">L\'exportation a échoué</string>
<string name="importing_some_entries_failed">L\'importation de certains items a échoué</string>
<string name="exporting_some_entries_failed">L\'exportation de certains items a échoué</string>
<string name="no_entries_for_exporting">Aucun item pouvant être exporté n\'a été trouvé</string>
<string name="importing_successful">Importation terminée</string>
<string name="exporting_successful">Exportation terminée</string>
<string name="importing_failed">Échec de l\'importation</string>
<string name="exporting_failed">Échec de l\'exportation</string>
<string name="importing_some_entries_failed">Échec de l\'importation de certains éléments</string>
<string name="exporting_some_entries_failed">Échec de l\'exportation de certains éléments</string>
<string name="no_entries_for_exporting">Aucun élément pouvant être exporté n\'a été trouvé</string>
<!-- OTG devices -->
<string name="otg">USB OTG</string>
<string name="confirm_otg_storage_access_text">Veuillez choisir le répertoire racine du périphérique USB OTG au prochain écran afin de pouvoir y accèder.</string>
<string name="wrong_root_selected_otg">Mauvais répertoire choisi, merci de sélectionner le répertoire racine du périphérique USB OTG.</string>
<string name="confirm_otg_storage_access_text">Veuillez sélectionner le répertoire racine du périphérique USB OTG sur l\'écran suivant afin de pouvoir y accéder</string>
<string name="wrong_root_selected_otg">Mauvais répertoire sélectionné. Veuillez sélectionner le répertoire racine du périphérique USB OTG.</string>
<!-- Dates -->
<string name="january">Janvier</string>
@ -466,8 +468,8 @@
<string name="sunday">Dimanche</string>
<string name="monday_letter">L</string>
<string name="tuesday_letter">M</string>
<string name="wednesday_letter">M</string>
<string name="tuesday_letter">Ma</string>
<string name="wednesday_letter">Me</string>
<string name="thursday_letter">J</string>
<string name="friday_letter">V</string>
<string name="saturday_letter">S</string>
@ -483,82 +485,83 @@
<!-- About -->
<string name="about">À propos</string>
<string name="website_label">Pour le code source, visitez</string>
<string name="email_label">Envoyez vos réactions et suggestions à</string>
<string name="website_label">Pour le code source, consultez</string>
<string name="email_label">Envoyez vos commentaires ou suggestions à</string>
<string name="more_apps_underlined"><u>Plus d\'applications</u></string>
<string name="third_party_licences_underlined"><u>Licences tierces</u></string>
<string name="invite_friends_underlined"><u>Inviter des amis</u></string>
<string name="share_text">Hey, viens voir %1$s à %2$s</string>
<string name="share_text">Salut, viens voir %1$s à %2$s</string>
<string name="invite_via">Inviter via</string>
<string name="rate_us_underlined"><u>Nous évaluer</u></string>
<string name="donate">Donner</string>
<string name="donate_underlined"><u>Donner</u></string>
<string name="donate">Effectuer un don</string>
<string name="donate_underlined"><u>Effectuer un don</u></string>
<string name="follow_us">Suivez-nous</string>
<string name="copyright">v %1$s\nCopyright © Simple Mobile Tools %2$d</string>
<string name="additional_info">Info supplémentaire</string>
<string name="app_version">Version appli : %s</string>
<string name="device_os">OS appareil : %s</string>
<string name="app_version">Version de l\'application : %s</string>
<string name="device_os">Système d\'exploitation de l\'appareil : %s</string>
<string name="donate_please">
<![CDATA[
Salut,<br><br>
nous espérons que vous appréciez cette appli. Elle ne contient aucune publicité, mais vous pouvez soutenir son développement en achetant l\'appli <a href="https://play.google.com/store/apps/details?id=com.simplemobiletools.thankyou">Un petit Merci</a>. Cela nous permettra également de ne plus vous montrer cette boite de dialogue.<br><br>
Bonjour,<br><br>
Nous espérons que vous appréciez cette application. Elle ne contient aucune publicité, mais vous pouvez soutenir son développement en achetant l\'application <a href="https://play.google.com/store/apps/details?id=com.simplemobiletools.thankyou">Un petit Merci</a>. Cela nous permettra également de ne plus vous montrer cette boite de dialogue.<br><br>
Merci !
]]>
</string>
<string name="purchase">Acheter</string>
<string name="update_thank_you">Veuillez mettre à jour Simple Merci à la dernière version</string>
<string name="before_asking_question_read_faq">Before you ask a question, please read the Frequently Asked Questions first, maybe the solution is there.</string>
<string name="read_it">Read it</string>
<string name="update_thank_you">Veuillez mettre à jour Simple Merci</string>
<string name="before_asking_question_read_faq">Avant de poser une question, consultez d\'abord la</string>
<string name="read_it">Consulter</string>
<!-- New app (do not translate anything on the 4th line) -->
<string name="new_app">
<![CDATA[
Hey,<br><br>
just letting you know that a new app has been released recently:<br><br>
Bonjour,<br><br>
Une nouvelle application a été publiée récemment :<br><br>
<a href="%1$s">%2$s</a><br><br>
You can download it by pressing the title.<br><br>
Thanks
Vous pouvez la télécharger en appuyant sur le titre.<br><br>
Merci
]]>
</string>
<!-- FAQ -->
<string name="frequently_asked_questions">Foire aux questions (FAQ)</string>
<string name="before_asking_question">Avant de poser une question, lisez d\'abord le</string>
<string name="faq_1_title_commons">Pourquoi je ne vois pas les widgets de cette appli dans la liste des widgets ?</string>
<string name="faq_1_text_commons">Probablement parce que l\'appli a été déplacée sur la carte SD. Android a une limitation qui fait qu\'il n\'affiche pas les widgets de cette appli dans ce cas. La seule solution consiste à replacer l\'appli dans le stockage interne via les paramètres du système.</string>
<string name="faq_2_title_commons">Je voudrais vous apporter mon support, mais je ne peux pas vous donner de l\'argent. Existe t-il un autre moyen ?</string>
<string name="faq_2_text_commons"> Bien sûr. Vous pouvez recommander ces applis et/ou donner de bonnes évaluations. Vous pouvez aussi nous aider en traduisant les applis dans une nouvelle langue, ou mettre à jour les traductions existantes. Vous pouvez trouver le guide à l\'adresse https://github.com/SimpleMobileTools/General-Discussion , ou juste m\'envoyer un mail à hello@simplemobiletools.com si vous avez besoin d\'aide.</string>
<string name="before_asking_question">Avant de poser une question, consultez d\'abord la</string>
<string name="faq_1_title_commons">Pourquoi ne vois-je pas les widgets de cette application dans la liste des widgets ?</string>
<string name="faq_1_text_commons">Probablement parce que l\'application a été déplacée sur la carte SD. Android a une limitation qui fait qu\'il n\'affiche pas les widgets de cette application dans ce cas. La seule solution consiste à déplacer l\'application vers le stockage interne depuis les paramètres système.</string>
<string name="faq_2_title_commons">Je voudrais vous apporter mon soutien, mais je ne peux pas vous donner de l\'argent. Y a-t-il autre chose que je puisse faire ?</string>
<string name="faq_2_text_commons">Oui, bien sûr. Vous pouvez recommander cette application et/ou mettre une bonne évaluation. Vous pouvez aussi nous aider en traduisant les applications dans une nouvelle langue, ou en actualisant les traductions existantes.
Vous pouvez trouver le guide à l\'adresse https://github.com/SimpleMobileTools/General-Discussion , ou simplement m\'envoyer un courriel à hello@simplemobiletools.com si vous avez besoin d\'aide.</string>
<string name="faq_3_title_commons">J\'ai effacé des fichiers par erreurs. Comment les récupérer ?</string>
<string name="faq_3_text_commons">C\'est malheureusement impossible, car les fichiers sont supprimés instantanément après le dialogue de confirmation et il n\'y a pas de corbeille.</string>
<string name="faq_4_title_commons">Je n\'aime pas les couleurs du widget. Puis-je la changer ?</string>
<string name="faq_4_title_commons">Je n\'aime pas les couleurs du widget. Puis-je les changer ?</string>
<string name="faq_4_text_commons">Oui, quand vous glissez le widget sur l\'écran d\'accueil un dialogue de configuration apparaît. Vous verrez des carrés en bas à gauche, en appuyant dessus vous pouvez choisir une nouvelle couleur. Vous pouvez aussi utiliser le curseur pour régler la transparence.</string>
<string name="faq_5_title_commons">Puis-je d\'une manière ou d\'une autre restaurer les fichiers supprimés ?</string>
<string name="faq_5_text_commons">Si ils ont déjà été supprimés, vous ne pouvez pas. Toutefois, vous pouvez activer l\'utilisation de la corbeille à la place de la suppression dans les paramètres de l\'app. Cela devrait seulement y déplacer les fichiers au lieu de les supprimer.</string>
<string name="faq_5_title_commons">Puis-je restaurer les fichiers supprimés ?</string>
<string name="faq_5_text_commons">S\'ils ont déjà été supprimés, vous ne pouvez pas. Toutefois, vous pouvez activer l\'utilisation de la corbeille à la place de la suppression dans les paramètres de l\'application. Les fichiers seront alors placés dans la corbeille plutôt que d\'être supprimés.</string>
<!-- License -->
<string name="notice">Cette application utilise les bibliothèques tierces suivantes pour me simplifier la vie. Merci.</string>
<string name="third_party_licences">Licences tierces</string>
<string name="kotlin_title">Kotlin (langage de programmation)</string>
<string name="subsampling_title">Subsampling Scale Image View (imageviews zoomables)</string>
<string name="subsampling_title">Subsampling Scale Image View (affichage par zoom des images)</string>
<string name="glide_title">Glide (chargement et mise en cache d\'image)</string>
<string name="picasso_title">Picasso (chargement et mise en cache d\'image)</string>
<string name="cropper_title">Android Image Cropper (découpe et rotation d\'image)</string>
<string name="cropper_title">Android Image Cropper (recadrage et rotation d\'image)</string>
<string name="rtl_viewpager_title">RtlViewPager (glissement de droite à gauche)</string>
<string name="joda_title">Joda-Time (remplacement de date Java)</string>
<string name="stetho_title">Stetho (débogage de bases de données)</string>
<string name="otto_title">Otto (bus d\'évenement)</string>
<string name="photoview_title">PhotoView (GIFs zoomables)</string>
<string name="pattern_title">PatternLockView (protection de modèle)</string>
<string name="otto_title">Otto (bus d\'événement)</string>
<string name="photoview_title">PhotoView (affichage par zoom des GIFs)</string>
<string name="pattern_title">PatternLockView (protection par schéma)</string>
<string name="reprint_title">Reprint (protection par empreinte digitale)</string>
<string name="gif_drawable_title">Gif Drawable (chargement des GIFs)</string>
<string name="autofittextview_title">AutoFitTextView (redimensionnement du texte)</string>
<string name="robolectric_title">Robolectric (framework de test)</string>
<string name="robolectric_title">Robolectric (structure de système de test)</string>
<string name="espresso_title">Espresso (assistant de test)</string>
<string name="gson_title">Gson (parser JSON)</string>
<string name="gson_title">Gson (analyseur JSON)</string>
<string name="leak_canary_title">Leak Canary (détecteur de fuite de mémoire)</string>
<string name="number_picker_title">Number Picker (customizable number picker)</string>
<string name="exoplayer_title">ExoPlayer (video player)</string>
<string name="panorama_view_title">VR Panorama View (displaying panoramas)</string>
<string name="sanselan_title">Apache Sanselan (reading image metadata)</string>
<string name="filters_title">Android Photo Filters (image filters)</string>
<string name="number_picker_title">Number Picker (sélecteur de numéro personnalisable)</string>
<string name="exoplayer_title">ExoPlayer (lecteur vidéo)</string>
<string name="panorama_view_title">VR Panorama View (affichage des panoramas)</string>
<string name="sanselan_title">Apache Sanselan (lecture de métadonnées d\'image)</string>
<string name="filters_title">Android Photo Filters (filtres d\'image)</string>
</resources>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">El nombre del archivo \'%s\' contiene caracteres no válidos</string>
<string name="extension_cannot_be_empty">La extensión no puede estar vacía</string>
<string name="source_file_doesnt_exist">El archivo %s no existe</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Copiar</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">Extension cannot be empty</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Copy</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Naziv datoteke \'%s\' sadrži nevažeće znakove</string>
<string name="extension_cannot_be_empty">Ekstenzija ne smije biti prazna</string>
<string name="source_file_doesnt_exist">Izvorišna datoteka %s ne postoji</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopiraj</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">Extension cannot be empty</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Copy</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">Extension Tidak Boleh Kosong</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Salin</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Il nome del file \'%s\' contiene caratteri non validi</string>
<string name="extension_cannot_be_empty">L\'estensione non può essere vuota</string>
<string name="source_file_doesnt_exist">Il file di origine %s non esiste</string>
<string name="prepend_filenames">Anteponi i nomi dei file</string>
<string name="append_filenames">Appendi i nomi dei file (prima dell\'estensione)</string>
<!-- Copy / Move -->
<string name="copy">Copia</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">Extension cannot be empty</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Copy</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">ファイル名 \'%s\' に無効な文字が含まれています</string>
<string name="extension_cannot_be_empty">拡張子は省略できません</string>
<string name="source_file_doesnt_exist">ソースファイル %s が存在しません</string>
<string name="prepend_filenames">ファイル名の前に追加</string>
<string name="append_filenames">ファイル名の後に追加 (拡張子の前)</string>
<!-- Copy / Move -->
<string name="copy">コピー</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">확장자가 비어있으면 안됨</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">복사</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Bylos pavadinimas \'%s\' susideda iš negalimų simbolių</string>
<string name="extension_cannot_be_empty">Papildinys negali būti paliktas tuščias</string>
<string name="source_file_doesnt_exist">Šaltinio byla %s neegzistuoja</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopijuoti</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">Extension cannot be empty</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopier</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Bestandsnaam \'%s\' bevat ongeldige tekens</string>
<string name="extension_cannot_be_empty">Extensie mag niet leeg zijn</string>
<string name="source_file_doesnt_exist">Bronbestand %s bestaat niet</string>
<string name="prepend_filenames">Voor bestandsnaam</string>
<string name="append_filenames">Na bestandsnaam (voor extensie)</string>
<!-- Copy / Move -->
<string name="copy">Kopiëren</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">Extension cannot be empty</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopier</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Nazwa \'%s\' zawiera niedozwolone znaki</string>
<string name="extension_cannot_be_empty">Rozszerzenie pliku nie może być puste</string>
   <string name="source_file_doesnt_exist">Plik źródłowy nie istnieje</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopiuj</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">O nome do arquivo \'%s\' contém caracteres inválidos</string>
<string name="extension_cannot_be_empty">A extensão não pode ficar em branco</string>
<string name="source_file_doesnt_exist">Arquivo de origem %s não existe</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Copiar</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">O nome \'%s\' contém caracteres inválidos</string>
<string name="extension_cannot_be_empty">A extensão não pode estar vazia</string>
<string name="source_file_doesnt_exist">O ficheiro de origem %s não existe</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Copiar</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Имя файла \"%s\" содержит недопустимые символы</string>
<string name="extension_cannot_be_empty">Расширение не может быть пустым</string>
<string name="source_file_doesnt_exist">Исходный файл \"%s\" не существует</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Копировать</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Názov súboru \'%s\' obsahuje neplatné znaky</string>
<string name="extension_cannot_be_empty">Prípona nesmie byť prázdna</string>
<string name="source_file_doesnt_exist">Zdrojový súbor %s neexistuje</string>
<string name="prepend_filenames">Pridať pred názvy súborov</string>
<string name="append_filenames">Pridať za názvy súborov (pred prípony)</string>
<!-- Copy / Move -->
<string name="copy">Kopírovať</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Ime \'%s\' vsebuje neveljavne znake</string>
<string name="extension_cannot_be_empty">Končnica ne more biti prazna</string>
<string name="source_file_doesnt_exist">Datoteka %s ne obstaja</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopiraj</string>
@ -587,7 +589,6 @@
<string name="glide_title">Glide (nalaganje in predpomnjevanje slik)</string>
<string name="picasso_title">Picasso (nalaganje in predpomnjevanje slik)</string>
<string name="cropper_title">Android Image Cropper (obrezovanje in rotacija slik)</string>
<string name="multiselect_title">RecyclerView MultiSelect (izbiranje večih elementov)</string>
<string name="rtl_viewpager_title">RtlViewPager (right to left swiping)</string>
<string name="joda_title">Joda-Time (nadomestitev za Java datume)</string>
<string name="stetho_title">Stetho (debugging databases)</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filnamnet \'%s\' innehåller ogiltiga tecken</string>
<string name="extension_cannot_be_empty">Filnamnstillägget får inte vara tomt</string>
<string name="source_file_doesnt_exist">Källfilen %s finns inte</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopiera</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Dosya adı \'%s\' geçersiz karakterler içeriyor</string>
<string name="extension_cannot_be_empty">Uzantı boş olamaz</string>
<string name="source_file_doesnt_exist">%s kaynak dosyası mevcut değil</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Kopyala</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">扩展名不能为空</string>
<string name="source_file_doesnt_exist">原文件 %s 不存在</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">复制</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">檔名 \'%s\' 包含無效字元</string>
<string name="extension_cannot_be_empty">副檔名不得空白</string>
<string name="source_file_doesnt_exist">原始檔案 %s 不存在</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">複製</string>

View file

@ -55,6 +55,8 @@
<string name="filename_invalid_characters_placeholder">Filename \'%s\' contains invalid characters</string>
<string name="extension_cannot_be_empty">Extension cannot be empty</string>
<string name="source_file_doesnt_exist">Source file %s doesn\'t exist</string>
<string name="prepend_filenames">Prepend filenames</string>
<string name="append_filenames">Append filenames (before file extension)</string>
<!-- Copy / Move -->
<string name="copy">Copy</string>

View file

@ -53,10 +53,6 @@
<item name="android:windowBackground">@color/theme_dark_background_color</item>
</style>
<style name="MyBorderlessBackgroundStyle">
<item name="android:background">?attr/selectableItemBackgroundBorderless</item>
</style>
<style name="Theme.Transparent" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>