Merge pull request #14115 from nextcloud/feature/copy-share-edit-assistant

Feature - Copy, Share, Edit Assistant
This commit is contained in:
Tobias Kaminsky 2024-12-11 10:14:45 +01:00 committed by GitHub
commit d5a91239cc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
89 changed files with 866 additions and 885 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -9,6 +9,7 @@ package com.nextcloud.client.assistant
import com.nextcloud.client.assistant.repository.AssistantRepository
import com.owncloud.android.AbstractOnServerIT
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
import com.owncloud.android.lib.resources.status.NextcloudVersion
import org.junit.Assert.assertTrue
import org.junit.Before
@ -35,7 +36,7 @@ class AssistantRepositoryTests : AbstractOnServerIT() {
val result = sut?.getTaskTypes()
assertTrue(result?.isSuccess == true)
val taskTypes = result?.resultData?.types
val taskTypes = result?.resultData
assertTrue(taskTypes?.isNotEmpty() == true)
}
@ -63,8 +64,14 @@ class AssistantRepositoryTests : AbstractOnServerIT() {
}
val input = "Give me some random output for test purpose"
val type = "OCP\\TextProcessing\\FreePromptTaskType"
val result = sut?.createTask(input, type)
val taskType = TaskTypeData(
"core:text2text",
"Free text to text prompt",
"Runs an arbitrary prompt through a language model that returns a reply",
null,
null
)
val result = sut?.createTask(input, taskType)
assertTrue(result?.isSuccess == true)
}

View file

@ -7,60 +7,53 @@
*/
package com.nextcloud.client.assistant
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.nextcloud.client.assistant.model.ScreenOverlayState
import com.nextcloud.client.assistant.model.ScreenState
import com.nextcloud.client.assistant.repository.AssistantRepositoryType
import com.owncloud.android.R
import com.owncloud.android.lib.resources.assistant.model.Task
import com.owncloud.android.lib.resources.assistant.model.TaskType
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import java.lang.ref.WeakReference
class AssistantViewModel(
private val repository: AssistantRepositoryType,
private val context: WeakReference<Context>
private val repository: AssistantRepositoryType
) : ViewModel() {
sealed class State {
data object Idle : State()
data object Loading : State()
data class Error(val messageId: Int) : State()
data class TaskCreated(val messageId: Int) : State()
data class TaskDeleted(val messageId: Int) : State()
}
private val _screenState = MutableStateFlow<ScreenState?>(null)
val screenState: StateFlow<ScreenState?> = _screenState
private val _state = MutableStateFlow<State>(State.Loading)
val state: StateFlow<State> = _state
private val _screenOverlayState = MutableStateFlow<ScreenOverlayState?>(null)
val screenOverlayState: StateFlow<ScreenOverlayState?> = _screenOverlayState
private val _selectedTaskType = MutableStateFlow<TaskType?>(null)
val selectedTaskType: StateFlow<TaskType?> = _selectedTaskType
private val _snackbarMessageId = MutableStateFlow<Int?>(null)
val snackbarMessageId: StateFlow<Int?> = _snackbarMessageId
private val _taskTypes = MutableStateFlow<List<TaskType>?>(null)
val taskTypes: StateFlow<List<TaskType>?> = _taskTypes
private val _selectedTaskType = MutableStateFlow<TaskTypeData?>(null)
val selectedTaskType: StateFlow<TaskTypeData?> = _selectedTaskType
private val _taskTypes = MutableStateFlow<List<TaskTypeData>?>(null)
val taskTypes: StateFlow<List<TaskTypeData>?> = _taskTypes
private var taskList: List<Task>? = null
private val _filteredTaskList = MutableStateFlow<List<Task>?>(null)
val filteredTaskList: StateFlow<List<Task>?> = _filteredTaskList
private val _isRefreshing = MutableStateFlow(false)
val isRefreshing: StateFlow<Boolean> = _isRefreshing
init {
fetchTaskTypes()
fetchTaskList()
}
@Suppress("MagicNumber")
fun createTask(input: String, type: String) {
fun createTask(input: String, taskType: TaskTypeData) {
viewModelScope.launch(Dispatchers.IO) {
val result = repository.createTask(input, type)
val result = repository.createTask(input, taskType)
val messageId = if (result.isSuccess) {
R.string.assistant_screen_task_create_success_message
@ -68,68 +61,68 @@ class AssistantViewModel(
R.string.assistant_screen_task_create_fail_message
}
_state.update {
State.TaskCreated(messageId)
}
updateSnackbarMessage(messageId)
delay(2000L)
fetchTaskList()
}
}
fun selectTaskType(task: TaskType) {
fun selectTaskType(task: TaskTypeData) {
_selectedTaskType.update {
filterTaskList(task.id)
task
}
fetchTaskList()
}
private fun fetchTaskTypes() {
viewModelScope.launch(Dispatchers.IO) {
val allTaskType = context.get()?.getString(R.string.assistant_screen_all_task_type)
val excludedIds = listOf("OCA\\ContextChat\\TextProcessing\\ContextChatTaskType")
val result = arrayListOf(TaskType(null, allTaskType, null))
val taskTypesResult = repository.getTaskTypes()
if (taskTypesResult.isSuccess) {
val excludedTaskTypes = taskTypesResult.resultData.types.filter { item -> item.id !in excludedIds }
result.addAll(excludedTaskTypes)
val result = taskTypesResult.resultData
_taskTypes.update {
result.toList()
result
}
selectTaskType(result.first())
} else {
_state.update {
State.Error(R.string.assistant_screen_task_types_error_state_message)
}
updateSnackbarMessage(R.string.assistant_screen_task_types_error_state_message)
}
}
}
fun fetchTaskList(appId: String = "assistant") {
fun fetchTaskList() {
viewModelScope.launch(Dispatchers.IO) {
_isRefreshing.update {
true
_screenState.update {
ScreenState.Refreshing
}
val result = repository.getTaskList(appId)
val taskType = _selectedTaskType.value?.id ?: return@launch
val result = repository.getTaskList(taskType)
if (result.isSuccess) {
taskList = result.resultData.tasks
filterTaskList(_selectedTaskType.value?.id)
_state.update {
State.Idle
taskList = result.resultData.tasks.filter { it.appId == "assistant" }
_filteredTaskList.update {
taskList?.sortedByDescending { task ->
task.id
}
}
updateSnackbarMessage(null)
} else {
_state.update {
State.Error(R.string.assistant_screen_task_list_error_state_message)
}
updateSnackbarMessage(R.string.assistant_screen_task_list_error_state_message)
}
_isRefreshing.update {
false
updateScreenState()
}
}
private fun updateScreenState() {
_screenState.update {
if (_filteredTaskList.value?.isEmpty() == true) {
ScreenState.EmptyContent
} else {
ScreenState.Content
}
}
}
@ -144,9 +137,7 @@ class AssistantViewModel(
R.string.assistant_screen_task_delete_fail_message
}
_state.update {
State.TaskDeleted(messageId)
}
updateSnackbarMessage(messageId)
if (result.isSuccess) {
removeTaskFromList(id)
@ -154,27 +145,15 @@ class AssistantViewModel(
}
}
fun resetState() {
_state.update {
State.Idle
fun updateSnackbarMessage(value: Int?) {
_snackbarMessageId.update {
value
}
}
private fun filterTaskList(taskTypeId: String?) {
if (taskTypeId == null) {
_filteredTaskList.update {
taskList
}
} else {
_filteredTaskList.update {
taskList?.filter { it.type == taskTypeId }
}
}
_filteredTaskList.update {
it?.sortedByDescending { task ->
task.id
}
fun updateScreenState(value: ScreenOverlayState?) {
_screenOverlayState.update {
value
}
}

View file

@ -8,7 +8,6 @@
package com.nextcloud.client.assistant
import android.app.Activity
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
@ -25,215 +24,256 @@ import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.Icon
import androidx.compose.material3.LinearProgressIndicator
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.pulltorefresh.PullToRefreshState
import androidx.compose.material3.pulltorefresh.pullToRefresh
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.nextcloud.client.assistant.component.AddTaskAlertDialog
import com.nextcloud.client.assistant.component.CenterText
import com.nextcloud.client.assistant.extensions.getInputTitle
import com.nextcloud.client.assistant.model.ScreenOverlayState
import com.nextcloud.client.assistant.model.ScreenState
import com.nextcloud.client.assistant.repository.AssistantMockRepository
import com.nextcloud.client.assistant.task.TaskView
import com.nextcloud.client.assistant.taskTypes.TaskTypesRow
import com.nextcloud.ui.composeActivity.ComposeActivity
import com.nextcloud.ui.composeComponents.alertDialog.SimpleAlertDialog
import com.nextcloud.ui.composeComponents.bottomSheet.MoreActionsBottomSheet
import com.owncloud.android.R
import com.owncloud.android.lib.resources.assistant.model.Task
import com.owncloud.android.lib.resources.assistant.model.TaskType
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
import com.owncloud.android.utils.DisplayUtils
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.lang.ref.WeakReference
@Suppress("LongMethod")
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AssistantScreen(viewModel: AssistantViewModel, activity: Activity) {
val state by viewModel.state.collectAsState()
val messageId by viewModel.snackbarMessageId.collectAsState()
val screenOverlayState by viewModel.screenOverlayState.collectAsState()
val selectedTaskType by viewModel.selectedTaskType.collectAsState()
val filteredTaskList by viewModel.filteredTaskList.collectAsState()
val isRefreshing by viewModel.isRefreshing.collectAsState()
val screenState by viewModel.screenState.collectAsState()
val taskTypes by viewModel.taskTypes.collectAsState()
var showAddTaskAlertDialog by remember { mutableStateOf(false) }
var showDeleteTaskAlertDialog by remember { mutableStateOf(false) }
var taskIdToDeleted: Long? by remember {
mutableStateOf(null)
}
val scope = rememberCoroutineScope()
val pullRefreshState = rememberPullToRefreshState()
@Suppress("MagicNumber")
Box(
modifier = Modifier.pullToRefresh(isRefreshing, pullRefreshState, onRefresh = {
scope.launch {
delay(1500)
viewModel.fetchTaskList()
modifier = Modifier.pullToRefresh(
screenState == ScreenState.Refreshing,
pullRefreshState,
onRefresh = {
scope.launch {
delay(1500)
viewModel.fetchTaskList()
}
}
})
)
) {
if (state == AssistantViewModel.State.Loading || isRefreshing) {
ShowScreenState(screenState, selectedTaskType, taskTypes, viewModel, filteredTaskList)
ShowLinearProgressIndicator(screenState, pullRefreshState)
AddFloatingActionButton(
modifier = Modifier
.align(Alignment.BottomEnd)
.padding(16.dp),
selectedTaskType,
viewModel
)
}
showSnackBarMessage(messageId, activity, viewModel)
ShowOverlayState(screenOverlayState, activity, viewModel)
}
@Composable
private fun ShowScreenState(
screenState: ScreenState?,
selectedTaskType: TaskTypeData?,
taskTypes: List<TaskTypeData>?,
viewModel: AssistantViewModel,
filteredTaskList: List<Task>?
) {
when (screenState) {
ScreenState.Refreshing -> {
CenterText(text = stringResource(id = R.string.assistant_screen_loading))
} else {
if (filteredTaskList.isNullOrEmpty()) {
EmptyTaskList(selectedTaskType, taskTypes, viewModel)
} else {
AssistantContent(
filteredTaskList!!,
taskTypes,
selectedTaskType,
viewModel,
showDeleteTaskAlertDialog = { taskId ->
taskIdToDeleted = taskId
showDeleteTaskAlertDialog = true
}
)
}
}
if (isRefreshing) {
LinearProgressIndicator(modifier = Modifier.fillMaxWidth())
} else {
LinearProgressIndicator(
progress = { pullRefreshState.distanceFraction },
modifier = Modifier.fillMaxWidth()
ScreenState.EmptyContent -> {
EmptyTaskList(selectedTaskType, taskTypes, viewModel)
}
ScreenState.Content -> {
AssistantContent(
filteredTaskList ?: listOf(),
taskTypes,
selectedTaskType,
viewModel
)
}
if (selectedTaskType?.name != stringResource(id = R.string.assistant_screen_all_task_type)) {
FloatingActionButton(
modifier = Modifier
.align(Alignment.BottomEnd)
.padding(16.dp),
onClick = {
showAddTaskAlertDialog = true
}
) {
Icon(Icons.Filled.Add, "Add Task Icon")
}
}
null -> Unit
}
}
ScreenState(state, activity, viewModel)
if (showDeleteTaskAlertDialog) {
taskIdToDeleted?.let { id ->
SimpleAlertDialog(
title = stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_title),
description = stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_description),
dismiss = { showDeleteTaskAlertDialog = false },
onComplete = { viewModel.deleteTask(id) }
)
}
}
if (showAddTaskAlertDialog) {
selectedTaskType?.let { taskType ->
AddTaskAlertDialog(
title = taskType.name,
description = taskType.description,
addTask = { input ->
taskType.id?.let {
viewModel.createTask(input = input, type = it)
}
},
dismiss = {
showAddTaskAlertDialog = false
}
)
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun ShowLinearProgressIndicator(screenState: ScreenState?, pullToRefreshState: PullToRefreshState) {
if (screenState == ScreenState.Refreshing) {
LinearProgressIndicator(modifier = Modifier.fillMaxWidth())
} else {
LinearProgressIndicator(
progress = { pullToRefreshState.distanceFraction },
modifier = Modifier.fillMaxWidth()
)
}
}
@Composable
private fun ScreenState(state: AssistantViewModel.State, activity: Activity, viewModel: AssistantViewModel) {
val messageId: Int? = when (state) {
is AssistantViewModel.State.Error -> {
state.messageId
}
is AssistantViewModel.State.TaskCreated -> {
state.messageId
}
is AssistantViewModel.State.TaskDeleted -> {
state.messageId
}
else -> {
null
private fun AddFloatingActionButton(
modifier: Modifier,
selectedTaskType: TaskTypeData?,
viewModel: AssistantViewModel
) {
FloatingActionButton(
modifier = modifier,
onClick = {
selectedTaskType?.let {
val newState = ScreenOverlayState.AddTask(it, "")
viewModel.updateScreenState(newState)
}
}
) {
Icon(Icons.Filled.Add, "Add Task Icon")
}
}
private fun showSnackBarMessage(messageId: Int?, activity: Activity, viewModel: AssistantViewModel) {
messageId?.let {
DisplayUtils.showSnackMessage(
activity,
stringResource(id = messageId)
activity.getString(it)
)
viewModel.resetState()
viewModel.updateSnackbarMessage(null)
}
}
@Suppress("LongMethod")
@Composable
private fun ShowOverlayState(state: ScreenOverlayState?, activity: Activity, viewModel: AssistantViewModel) {
when (state) {
is ScreenOverlayState.AddTask -> {
AddTaskAlertDialog(
title = state.taskType.name,
description = state.taskType.description,
defaultInput = state.input,
addTask = { input ->
state.taskType.let { taskType ->
viewModel.createTask(input = input, taskType = taskType)
}
},
dismiss = {
viewModel.updateScreenState(null)
}
)
}
is ScreenOverlayState.DeleteTask -> {
SimpleAlertDialog(
title = stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_title),
description = stringResource(id = R.string.assistant_screen_delete_task_alert_dialog_description),
dismiss = { viewModel.updateScreenState(null) },
onComplete = { viewModel.deleteTask(state.id) }
)
}
is ScreenOverlayState.TaskActions -> {
val actions = state.getActions(activity, onEditCompleted = { addTask ->
viewModel.updateScreenState(addTask)
}, onDeleteCompleted = { deleteTask ->
viewModel.updateScreenState(deleteTask)
})
MoreActionsBottomSheet(
title = state.task.getInputTitle(),
actions = actions,
dismiss = { viewModel.updateScreenState(null) }
)
}
else -> Unit
}
}
@OptIn(ExperimentalFoundationApi::class)
@Composable
private fun AssistantContent(
taskList: List<Task>,
taskTypes: List<TaskType>?,
selectedTaskType: TaskType?,
viewModel: AssistantViewModel,
showDeleteTaskAlertDialog: (Long) -> Unit
taskTypes: List<TaskTypeData>?,
selectedTaskType: TaskTypeData?,
viewModel: AssistantViewModel
) {
LazyColumn(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {
stickyHeader {
Column(modifier = Modifier.fillMaxSize()) {
taskTypes?.let {
TaskTypesRow(selectedTaskType, data = taskTypes) { task ->
viewModel.selectTaskType(task)
}
Spacer(modifier = Modifier.height(8.dp))
}
items(taskList) { task ->
TaskView(task, showDeleteTaskAlertDialog = { showDeleteTaskAlertDialog(task.id) })
Spacer(modifier = Modifier.height(8.dp))
LazyColumn(
modifier = Modifier
.fillMaxSize()
.padding(12.dp)
) {
items(taskList) { task ->
TaskView(
task,
showTaskActions = {
val newState = ScreenOverlayState.TaskActions(task)
viewModel.updateScreenState(newState)
}
)
Spacer(modifier = Modifier.height(8.dp))
}
}
}
}
@Composable
private fun EmptyTaskList(selectedTaskType: TaskType?, taskTypes: List<TaskType>?, viewModel: AssistantViewModel) {
val text = if (selectedTaskType?.name == stringResource(id = R.string.assistant_screen_all_task_type)) {
stringResource(id = R.string.assistant_screen_no_task_available_for_all_task_filter_text)
} else {
stringResource(
id = R.string.assistant_screen_no_task_available_text,
selectedTaskType?.name ?: ""
)
}
private fun EmptyTaskList(
selectedTaskType: TaskTypeData?,
taskTypes: List<TaskTypeData>?,
viewModel: AssistantViewModel
) {
val text = stringResource(
id = R.string.assistant_screen_no_task_available_text,
selectedTaskType?.name ?: ""
)
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {
TaskTypesRow(selectedTaskType, data = taskTypes) { task ->
viewModel.selectTaskType(task)
}
taskTypes?.let {
TaskTypesRow(selectedTaskType, data = taskTypes) { task ->
viewModel.selectTaskType(task)
}
Spacer(modifier = Modifier.height(8.dp))
Spacer(modifier = Modifier.height(8.dp))
}
CenterText(text = text)
}
@ -246,10 +286,7 @@ private fun AssistantScreenPreview() {
MaterialTheme(
content = {
AssistantScreen(
viewModel = AssistantViewModel(
repository = mockRepository,
context = WeakReference(LocalContext.current)
),
viewModel = AssistantViewModel(repository = mockRepository),
activity = ComposeActivity()
)
}
@ -263,10 +300,7 @@ private fun AssistantEmptyScreenPreview() {
MaterialTheme(
content = {
AssistantScreen(
viewModel = AssistantViewModel(
repository = mockRepository,
context = WeakReference(LocalContext.current)
),
viewModel = AssistantViewModel(repository = mockRepository),
activity = ComposeActivity()
)
}

View file

@ -22,9 +22,15 @@ import com.nextcloud.ui.composeComponents.alertDialog.SimpleAlertDialog
import com.owncloud.android.R
@Composable
fun AddTaskAlertDialog(title: String?, description: String?, addTask: (String) -> Unit, dismiss: () -> Unit) {
fun AddTaskAlertDialog(
title: String?,
description: String?,
defaultInput: String = "",
addTask: (String) -> Unit,
dismiss: () -> Unit
) {
var input by remember {
mutableStateOf("")
mutableStateOf(defaultInput)
}
SimpleAlertDialog(

View file

@ -9,13 +9,14 @@ package com.nextcloud.client.assistant.component
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.sp
import com.owncloud.android.R
@Composable
fun CenterText(text: String) {
@ -24,7 +25,7 @@ fun CenterText(text: String) {
text = text,
fontSize = 18.sp,
textAlign = TextAlign.Center,
color = MaterialTheme.colorScheme.onPrimaryContainer
color = colorResource(R.color.text_color)
)
}
}

View file

@ -9,34 +9,97 @@
package com.nextcloud.client.assistant.extensions
import android.content.Context
import com.nextcloud.utils.date.DateFormatPattern
import com.nextcloud.utils.date.DateFormatter
import com.owncloud.android.R
import com.owncloud.android.lib.resources.assistant.model.Task
import java.util.concurrent.TimeUnit
fun Task.getInputAndOutput(): String {
val inputText = input?.input ?: ""
val outputText = output?.output ?: ""
return "$inputText\n\n$outputText"
}
fun Task.getInput(): String? = input?.input
@Suppress("MagicNumber")
fun Task.statusData(): Pair<Int, Int> {
fun Task.getInputTitle(): String {
val maxTitleLength = 20
val title = getInput() ?: ""
return if (title.length > maxTitleLength) {
title.take(maxTitleLength) + "..."
} else {
title
}
}
@Suppress("MagicNumber")
fun Task.getStatusIcon(): Int {
return when (status) {
0L -> {
Pair(R.drawable.ic_unknown, R.string.assistant_screen_unknown_task_status_text)
"STATUS_UNKNOWN" -> {
R.drawable.ic_unknown
}
1L -> {
Pair(R.drawable.ic_clock, R.string.assistant_screen_scheduled_task_status_text)
"STATUS_SCHEDULED" -> {
R.drawable.ic_clock
}
2L -> {
Pair(R.drawable.ic_modification_desc, R.string.assistant_screen_running_task_text)
"STATUS_RUNNING" -> {
R.drawable.ic_modification_desc
}
3L -> {
Pair(R.drawable.ic_info, R.string.assistant_screen_successful_task_text)
"STATUS_SUCCESSFUL" -> {
R.drawable.ic_check_circle_outline
}
4L -> {
Pair(R.drawable.image_fail, R.string.assistant_screen_failed_task_text)
"STATUS_FAILED" -> {
R.drawable.image_fail
}
else -> {
Pair(R.drawable.ic_unknown, R.string.assistant_screen_unknown_task_status_text)
R.drawable.ic_unknown
}
}
}
// TODO add
fun Task.completionDateRepresentation(): String {
return completionExpectedAt ?: "TODO IMPLEMENT IT"
@Suppress("MagicNumber")
fun Task.getModifiedAtRepresentation(context: Context): String? {
if (lastUpdated == null) {
return null
}
val modifiedAt = lastUpdated!!.toLong()
val currentTime = System.currentTimeMillis() / 1000
val timeDifference = (currentTime - modifiedAt).toInt()
val timeDifferenceInMinutes = (timeDifference / 60)
val timeDifferenceInHours = (timeDifference / 3600)
return when {
timeDifference < 0 -> {
context.getString(R.string.common_now)
}
timeDifference < TimeUnit.MINUTES.toSeconds(1) -> {
context.resources.getQuantityString(R.plurals.time_seconds_ago, timeDifference, timeDifference)
}
timeDifference < TimeUnit.HOURS.toSeconds(1) -> {
context.resources.getQuantityString(
R.plurals.time_minutes_ago,
timeDifferenceInMinutes,
timeDifferenceInMinutes
)
}
timeDifference < TimeUnit.DAYS.toSeconds(1) -> {
context.resources.getQuantityString(
R.plurals.time_hours_ago,
timeDifferenceInHours,
timeDifferenceInHours
)
}
else -> {
DateFormatter.timestampToDateRepresentation(modifiedAt, DateFormatPattern.MonthWithDate)
}
}
}

View file

@ -0,0 +1,88 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
package com.nextcloud.client.assistant.model
import android.app.Activity
import com.nextcloud.client.assistant.extensions.getInput
import com.nextcloud.client.assistant.extensions.getInputAndOutput
import com.nextcloud.utils.extensions.showShareIntent
import com.owncloud.android.R
import com.owncloud.android.lib.resources.assistant.model.Task
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
import com.owncloud.android.utils.ClipboardUtil
sealed class ScreenOverlayState {
data class DeleteTask(val id: Long) : ScreenOverlayState()
data class AddTask(val taskType: TaskTypeData, val input: String) : ScreenOverlayState()
data class TaskActions(val task: Task) : ScreenOverlayState() {
private fun getInputAndOutput(): String = task.getInputAndOutput()
private fun getInput(): String? = task.getInput()
private fun getCopyToClipboardAction(activity: Activity): Triple<Int, Int, () -> Unit> {
return Triple(
R.drawable.ic_content_copy,
R.string.common_copy
) {
ClipboardUtil.copyToClipboard(activity, getInputAndOutput(), showToast = false)
}
}
private fun getShareAction(activity: Activity): Triple<Int, Int, () -> Unit> {
return Triple(
R.drawable.ic_share,
R.string.common_share
) {
activity.showShareIntent(getInputAndOutput())
}
}
private fun getEditAction(activity: Activity, onComplete: (AddTask) -> Unit): Triple<Int, Int, () -> Unit> {
return Triple(
R.drawable.ic_edit,
R.string.action_edit
) {
val taskType = TaskTypeData(
task.type,
activity.getString(R.string.assistant_screen_add_task_alert_dialog_title),
null,
null,
null
)
val newState = AddTask(taskType, getInput() ?: "")
onComplete(newState)
}
}
private fun getDeleteAction(onComplete: (DeleteTask) -> Unit): Triple<Int, Int, () -> Unit> {
return Triple(
R.drawable.ic_delete,
R.string.assistant_screen_task_more_actions_bottom_sheet_delete_action
) {
val newState = DeleteTask(task.id)
onComplete(newState)
}
}
fun getActions(
activity: Activity,
onEditCompleted: (AddTask) -> Unit,
onDeleteCompleted: (DeleteTask) -> Unit
): List<Triple<Int, Int, () -> Unit>> {
return listOf(
getShareAction(activity),
getCopyToClipboardAction(activity),
getEditAction(activity, onComplete = {
onEditCompleted(it)
}),
getDeleteAction(onComplete = {
onDeleteCompleted(it)
})
)
}
}
}

View file

@ -0,0 +1,14 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
package com.nextcloud.client.assistant.model
enum class ScreenState {
Refreshing,
EmptyContent,
Content
}

View file

@ -10,29 +10,24 @@ package com.nextcloud.client.assistant.repository
import com.nextcloud.utils.extensions.getRandomString
import com.owncloud.android.lib.common.operations.RemoteOperationResult
import com.owncloud.android.lib.resources.assistant.model.Task
import com.owncloud.android.lib.resources.assistant.model.TaskInput
import com.owncloud.android.lib.resources.assistant.model.TaskList
import com.owncloud.android.lib.resources.assistant.model.TaskType
import com.owncloud.android.lib.resources.assistant.model.TaskTypes
import com.owncloud.android.lib.resources.assistant.model.TaskOutput
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
@Suppress("MagicNumber")
class AssistantMockRepository(private val giveEmptyTasks: Boolean = false) : AssistantRepositoryType {
override fun getTaskTypes(): RemoteOperationResult<TaskTypes> {
return RemoteOperationResult<TaskTypes>(RemoteOperationResult.ResultCode.OK).apply {
resultData = TaskTypes(
listOf(
TaskType("1", "FreePrompt", "You can create free prompt text"),
TaskType("2", "Generate Headline", "You can create generate headline text")
)
)
override fun getTaskTypes(): RemoteOperationResult<List<TaskTypeData>> {
return RemoteOperationResult<List<TaskTypeData>>(RemoteOperationResult.ResultCode.OK).apply {
resultData = null
}
}
override fun createTask(input: String, type: String): RemoteOperationResult<Void> {
override fun createTask(input: String, taskType: TaskTypeData): RemoteOperationResult<Void> {
return RemoteOperationResult<Void>(RemoteOperationResult.ResultCode.OK)
}
@Suppress("LongMethod")
override fun getTaskList(appId: String): RemoteOperationResult<TaskList> {
override fun getTaskList(taskType: String): RemoteOperationResult<TaskList> {
val taskList = if (giveEmptyTasks) {
TaskList(listOf())
} else {
@ -44,75 +39,13 @@ class AssistantMockRepository(private val giveEmptyTasks: Boolean = false) : Ass
null,
"12",
"",
"Give me some long text 1",
"Lorem ipsum".getRandomString(100),
""
),
Task(
2,
"GenerateHeadline",
null,
"12",
"",
"Give me some text 2",
"Lorem".getRandomString(100),
"",
""
),
Task(
3,
"FreePrompt",
null,
"12",
"",
"Give me some text 3",
"Lorem".getRandomString(300),
"",
""
),
Task(
4,
"FreePrompt",
null,
"12",
"",
"Give me some text 4",
"Lorem".getRandomString(300),
"",
""
),
Task(
5,
"FreePrompt",
null,
"12",
"",
"Give me some text 5",
"Lorem".getRandomString(300),
"",
""
),
Task(
6,
"FreePrompt",
null,
"12",
"",
"Give me some text 6",
"Lorem".getRandomString(300),
"",
""
),
Task(
7,
"FreePrompt",
null,
"12",
"",
"Give me some text 7",
"Lorem".getRandomString(300),
"",
""
TaskInput("Give me some long text 1"),
TaskOutput("Lorem ipsum".getRandomString(100)),
1707692337,
1707692337,
1707692337,
1707692337,
1707692337
)
)
)

View file

@ -14,20 +14,20 @@ import com.owncloud.android.lib.resources.assistant.DeleteTaskRemoteOperation
import com.owncloud.android.lib.resources.assistant.GetTaskListRemoteOperation
import com.owncloud.android.lib.resources.assistant.GetTaskTypesRemoteOperation
import com.owncloud.android.lib.resources.assistant.model.TaskList
import com.owncloud.android.lib.resources.assistant.model.TaskTypes
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
class AssistantRepository(private val client: NextcloudClient) : AssistantRepositoryType {
override fun getTaskTypes(): RemoteOperationResult<TaskTypes> {
override fun getTaskTypes(): RemoteOperationResult<List<TaskTypeData>> {
return GetTaskTypesRemoteOperation().execute(client)
}
override fun createTask(input: String, type: String): RemoteOperationResult<Void> {
return CreateTaskRemoteOperation(input, type).execute(client)
override fun createTask(input: String, taskType: TaskTypeData): RemoteOperationResult<Void> {
return CreateTaskRemoteOperation(input, taskType).execute(client)
}
override fun getTaskList(appId: String): RemoteOperationResult<TaskList> {
return GetTaskListRemoteOperation(appId).execute(client)
override fun getTaskList(taskType: String): RemoteOperationResult<TaskList> {
return GetTaskListRemoteOperation(taskType).execute(client)
}
override fun deleteTask(id: Long): RemoteOperationResult<Void> {

View file

@ -9,14 +9,14 @@ package com.nextcloud.client.assistant.repository
import com.owncloud.android.lib.common.operations.RemoteOperationResult
import com.owncloud.android.lib.resources.assistant.model.TaskList
import com.owncloud.android.lib.resources.assistant.model.TaskTypes
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
interface AssistantRepositoryType {
fun getTaskTypes(): RemoteOperationResult<TaskTypes>
fun getTaskTypes(): RemoteOperationResult<List<TaskTypeData>>
fun createTask(input: String, type: String): RemoteOperationResult<Void>
fun createTask(input: String, taskType: TaskTypeData): RemoteOperationResult<Void>
fun getTaskList(appId: String): RemoteOperationResult<TaskList>
fun getTaskList(taskType: String): RemoteOperationResult<TaskList>
fun deleteTask(id: Long): RemoteOperationResult<Void>
}

View file

@ -1,58 +0,0 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
*/
package com.nextcloud.client.assistant.task
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.nextcloud.client.assistant.extensions.statusData
import com.owncloud.android.lib.resources.assistant.model.Task
@Composable
fun TaskStatus(task: Task, foregroundColor: Color) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 16.dp),
verticalAlignment = Alignment.CenterVertically
) {
val (iconId, descriptionId) = task.statusData()
Image(
painter = painterResource(id = iconId),
modifier = Modifier.size(16.dp),
colorFilter = ColorFilter.tint(foregroundColor),
contentDescription = "status icon"
)
Spacer(modifier = Modifier.width(6.dp))
Text(text = stringResource(id = descriptionId), color = foregroundColor)
/*
Spacer(modifier = Modifier.weight(1f))
Text(text = task.completionDateRepresentation(), color = foregroundColor)
Spacer(modifier = Modifier.width(6.dp))
*/
}
}

View file

@ -0,0 +1,144 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
*/
package com.nextcloud.client.assistant.task
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.nextcloud.client.assistant.extensions.getModifiedAtRepresentation
import com.nextcloud.client.assistant.extensions.getStatusIcon
import com.owncloud.android.lib.resources.assistant.model.Task
import com.owncloud.android.lib.resources.assistant.model.TaskInput
import com.owncloud.android.lib.resources.assistant.model.TaskOutput
import java.util.concurrent.TimeUnit
@Composable
fun TaskStatusView(task: Task, foregroundColor: Color) {
val context = LocalContext.current
Row(
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 16.dp),
verticalAlignment = Alignment.CenterVertically
) {
val iconId = task.getStatusIcon()
val description = task.getModifiedAtRepresentation(context)
Image(
painter = painterResource(id = iconId),
modifier = Modifier.size(16.dp),
colorFilter = ColorFilter.tint(foregroundColor),
contentDescription = "status icon"
)
description?.let {
Spacer(modifier = Modifier.width(6.dp))
Text(text = description, color = foregroundColor)
}
}
}
@Suppress("LongMethod", "MagicNumber")
@Composable
@Preview
private fun TaskStatusViewPreview() {
val currentTime = System.currentTimeMillis() / 1000
val tasks = listOf(
Task(
id = 1L,
type = "type1",
status = "STATUS_RUNNING",
userId = "user1",
appId = "app1",
input = TaskInput("input1"),
output = TaskOutput("output1"),
scheduledAt = currentTime.toInt(),
lastUpdated = currentTime.toInt()
),
Task(
id = 2L,
type = "type2",
status = "STATUS_SUCCESSFUL",
userId = "user2",
appId = "app2",
input = TaskInput("input2"),
output = TaskOutput("output2"),
lastUpdated = (currentTime - TimeUnit.MINUTES.toSeconds(5)).toInt()
),
Task(
id = 3L,
type = "type3",
status = "STATUS_RUNNING",
userId = "user3",
appId = "app3",
input = TaskInput("input3"),
output = TaskOutput("output3"),
lastUpdated = (currentTime - TimeUnit.HOURS.toSeconds(5)).toInt()
),
Task(
id = 4L,
type = "type4",
status = "STATUS_SUCCESSFUL",
userId = "user4",
appId = "app4",
input = TaskInput("input4"),
output = TaskOutput("output4"),
lastUpdated = (currentTime - TimeUnit.DAYS.toSeconds(5)).toInt()
),
Task(
id = 5L,
type = "type5",
status = "STATUS_SUCCESSFUL",
userId = "user5",
appId = "app5",
input = TaskInput("input5"),
output = TaskOutput("output5"),
lastUpdated = (currentTime - TimeUnit.DAYS.toSeconds(60)).toInt()
),
Task(
id = 7L,
type = "type7",
status = "STATUS_UNKNOWN",
userId = "user7",
appId = "app7",
input = TaskInput("input7"),
output = TaskOutput("output7"),
scheduledAt = null,
lastUpdated = null
)
)
LazyColumn {
items(tasks) {
TaskStatusView(it, foregroundColor = Color.White)
}
}
}

View file

@ -9,107 +9,116 @@ package com.nextcloud.client.assistant.task
import androidx.compose.animation.animateContentSize
import androidx.compose.animation.core.Spring
import androidx.compose.animation.core.spring
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.MaterialTheme
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.nextcloud.client.assistant.taskDetail.TaskDetailBottomSheet
import com.nextcloud.ui.composeComponents.bottomSheet.MoreActionsBottomSheet
import com.nextcloud.utils.extensions.getRandomString
import com.owncloud.android.R
import com.owncloud.android.lib.resources.assistant.model.Task
import com.owncloud.android.lib.resources.assistant.model.TaskInput
import com.owncloud.android.lib.resources.assistant.model.TaskOutput
@OptIn(ExperimentalFoundationApi::class)
@Suppress("LongMethod", "MagicNumber")
@Composable
fun TaskView(task: Task, showDeleteTaskAlertDialog: (Long) -> Unit) {
fun TaskView(task: Task, showTaskActions: () -> Unit) {
var showTaskDetailBottomSheet by remember { mutableStateOf(false) }
var showMoreActionsBottomSheet by remember { mutableStateOf(false) }
Column(
modifier = Modifier
.fillMaxWidth()
.clip(RoundedCornerShape(16.dp))
.background(MaterialTheme.colorScheme.primary)
.combinedClickable(onClick = {
showTaskDetailBottomSheet = true
}, onLongClick = {
showMoreActionsBottomSheet = true
})
.padding(start = 8.dp)
) {
Spacer(modifier = Modifier.height(8.dp))
task.input?.let {
Text(
text = it,
color = Color.White,
fontSize = 18.sp
)
}
Spacer(modifier = Modifier.height(16.dp))
task.output?.let {
HorizontalDivider(modifier = Modifier.padding(horizontal = 4.dp, vertical = 8.dp))
Text(
text = it.take(100),
fontSize = 12.sp,
color = Color.White,
modifier = Modifier
.height(100.dp)
.animateContentSize(
animationSpec = spring(
dampingRatio = Spring.DampingRatioLowBouncy,
stiffness = Spring.StiffnessLow
)
)
)
}
TaskStatus(task, foregroundColor = Color.White)
if (showMoreActionsBottomSheet) {
val bottomSheetAction = listOf(
Triple(
R.drawable.ic_delete,
R.string.assistant_screen_task_more_actions_bottom_sheet_delete_action
) {
showDeleteTaskAlertDialog(task.id)
Box {
Column(
modifier = Modifier
.fillMaxWidth()
.clip(RoundedCornerShape(8.dp))
.background(colorResource(R.color.primary))
.clickable {
showTaskDetailBottomSheet = true
}
)
.padding(16.dp)
) {
Spacer(modifier = Modifier.height(8.dp))
MoreActionsBottomSheet(
title = task.input,
actions = bottomSheetAction,
dismiss = { showMoreActionsBottomSheet = false }
)
task.input?.input?.let {
Text(
text = it,
color = Color.White,
fontSize = 18.sp,
textAlign = TextAlign.Left,
fontWeight = FontWeight.Bold,
modifier = Modifier.width(300.dp)
)
}
Spacer(modifier = Modifier.height(12.dp))
task.output?.output?.let {
val output = if (it.length >= 100) {
it.take(100) + "..."
} else {
it
}
Text(
text = output,
fontSize = 18.sp,
color = Color.White,
textAlign = TextAlign.Left,
modifier = Modifier
.animateContentSize(
animationSpec = spring(
dampingRatio = Spring.DampingRatioLowBouncy,
stiffness = Spring.StiffnessLow
)
)
)
}
TaskStatusView(task, foregroundColor = Color.White)
if (showTaskDetailBottomSheet) {
TaskDetailBottomSheet(task, showTaskActions = {
showTaskDetailBottomSheet = false
showTaskActions()
}) {
showTaskDetailBottomSheet = false
}
}
}
if (showTaskDetailBottomSheet) {
TaskDetailBottomSheet(task) {
showTaskDetailBottomSheet = false
}
IconButton(
modifier = Modifier.align(Alignment.TopEnd),
onClick = showTaskActions
) {
Icon(
imageVector = Icons.Filled.MoreVert,
contentDescription = "More button",
tint = Color.White
)
}
}
}
@ -118,20 +127,25 @@ fun TaskView(task: Task, showDeleteTaskAlertDialog: (Long) -> Unit) {
@Preview
@Composable
private fun TaskViewPreview() {
val output = "Lorem".getRandomString(100)
TaskView(
task = Task(
1,
"Free Prompt",
0,
"STATUS_COMPLETED",
"1",
"1",
"Give me text",
output,
"",
""
)
) {
}
TaskInput("What about other promising tokens like"),
TaskOutput(
"Several tokens show promise for future growth in the" +
"cryptocurrency market"
),
1707692337,
1707692337,
1707692337,
1707692337,
1707692337
),
showTaskActions = {
}
)
}

View file

@ -22,9 +22,13 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.widthIn
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.Text
@ -40,31 +44,53 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.nextcloud.client.assistant.task.TaskStatus
import com.nextcloud.client.assistant.task.TaskStatusView
import com.nextcloud.utils.extensions.getRandomString
import com.owncloud.android.R
import com.owncloud.android.lib.resources.assistant.model.Task
import com.owncloud.android.lib.resources.assistant.model.TaskInput
import com.owncloud.android.lib.resources.assistant.model.TaskOutput
@Suppress("LongMethod")
@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class)
@Composable
fun TaskDetailBottomSheet(task: Task, dismiss: () -> Unit) {
fun TaskDetailBottomSheet(task: Task, showTaskActions: () -> Unit, dismiss: () -> Unit) {
var showInput by remember { mutableStateOf(true) }
val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
ModalBottomSheet(
modifier = Modifier.padding(top = 32.dp),
containerColor = MaterialTheme.colorScheme.surface,
containerColor = colorResource(R.color.bg_default),
onDismissRequest = { dismiss() },
sheetState = sheetState
) {
LazyColumn(modifier = Modifier.fillMaxSize().padding(16.dp)) {
LazyColumn(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
) {
stickyHeader {
Row(
modifier = Modifier.fillMaxWidth().background(
color = colorResource(id = R.color.light_grey),
shape = RoundedCornerShape(8.dp)
)
modifier = Modifier.fillMaxWidth()
) {
Spacer(modifier = Modifier.weight(1f))
IconButton(onClick = showTaskActions) {
Icon(
imageVector = Icons.Filled.MoreVert,
contentDescription = "More button",
tint = colorResource(R.color.text_color)
)
}
}
Row(
modifier = Modifier
.fillMaxWidth()
.background(
color = colorResource(id = R.color.light_grey),
shape = RoundedCornerShape(8.dp)
)
) {
TextInputSelectButton(
Modifier.weight(1f),
@ -90,16 +116,19 @@ fun TaskDetailBottomSheet(task: Task, dismiss: () -> Unit) {
Spacer(modifier = Modifier.height(16.dp))
Column(
modifier = Modifier.fillMaxSize().background(
color = MaterialTheme.colorScheme.secondaryContainer,
shape = RoundedCornerShape(8.dp)
).padding(16.dp)
modifier = Modifier
.fillMaxSize()
.background(
color = MaterialTheme.colorScheme.secondaryContainer,
shape = RoundedCornerShape(8.dp)
)
.padding(16.dp)
) {
Text(
text = if (showInput) {
task.input ?: ""
task.input?.input ?: ""
} else {
task.output ?: stringResource(R.string.assistant_screen_task_output_empty_text)
task.output?.output ?: stringResource(R.string.assistant_screen_task_output_empty_text)
},
fontSize = 12.sp,
color = MaterialTheme.colorScheme.onPrimaryContainer,
@ -113,7 +142,7 @@ fun TaskDetailBottomSheet(task: Task, dismiss: () -> Unit) {
)
}
TaskStatus(task, foregroundColor = MaterialTheme.colorScheme.onPrimaryContainer)
TaskStatusView(task, foregroundColor = colorResource(R.color.text_color))
Spacer(modifier = Modifier.height(32.dp))
}
@ -147,14 +176,19 @@ private fun TaskDetailScreenPreview() {
task = Task(
1,
"Free Prompt",
0,
null,
"1",
"1",
"Give me text".getRandomString(100),
"output".getRandomString(300),
"",
""
)
TaskInput("Give me text".getRandomString(100)),
TaskOutput("output".getRandomString(300)),
1707692337,
1707692337,
1707692337,
1707692337,
1707692337
),
showTaskActions = {
}
) {
}
}

View file

@ -7,45 +7,60 @@
*/
package com.nextcloud.client.assistant.taskTypes
import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.FilledTonalButton
import android.annotation.SuppressLint
import androidx.compose.material3.ScrollableTabRow
import androidx.compose.material3.Tab
import androidx.compose.material3.TabRowDefaults
import androidx.compose.material3.TabRowDefaults.tabIndicatorOffset
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.owncloud.android.lib.resources.assistant.model.TaskType
import com.owncloud.android.R
import com.owncloud.android.lib.resources.assistant.model.TaskTypeData
@SuppressLint("ResourceType")
@Composable
fun TaskTypesRow(selectedTaskType: TaskType?, data: List<TaskType>?, selectTaskType: (TaskType) -> Unit) {
Row(
modifier = Modifier
.fillMaxWidth()
.horizontalScroll(rememberScrollState())
) {
data?.forEach { taskType ->
taskType.name?.let { taskTypeName ->
FilledTonalButton(
onClick = { selectTaskType(taskType) },
colors = ButtonDefaults.buttonColors(
containerColor = if (selectedTaskType?.id == taskType.id) {
Color.Unspecified
} else {
Color.Gray
}
)
) {
Text(text = taskTypeName)
}
fun TaskTypesRow(selectedTaskType: TaskTypeData?, data: List<TaskTypeData>, selectTaskType: (TaskTypeData) -> Unit) {
val selectedTabIndex = data.indexOfFirst { it.id == selectedTaskType?.id }.takeIf { it >= 0 } ?: 0
Spacer(modifier = Modifier.padding(end = 8.dp))
ScrollableTabRow(
selectedTabIndex = selectedTabIndex,
edgePadding = 0.dp,
containerColor = colorResource(R.color.actionbar_color),
indicator = {
TabRowDefaults.SecondaryIndicator(
Modifier.tabIndicatorOffset(it[selectedTabIndex]),
color = colorResource(R.color.primary)
)
}
) {
data.forEach { taskType ->
taskType.name?.let { taskTypeName ->
Tab(
selected = selectedTaskType?.id == taskType.id,
onClick = { selectTaskType(taskType) },
selectedContentColor = colorResource(R.color.text_color),
unselectedContentColor = colorResource(R.color.disabled_text),
text = { Text(text = taskTypeName) }
)
}
}
}
}
@Composable
@Preview
private fun TaskTypesRowPreview() {
val selectedTaskType = TaskTypeData("1", "Free text to text prompt", "", null, null)
val taskTypes = listOf(
TaskTypeData("1", "Free text to text prompt", "", null, null),
TaskTypeData("2", "Extract topics", "", null, null),
TaskTypeData("3", "Generate Headline", "", null, null),
TaskTypeData("4", "Summarize", "", null, null)
)
TaskTypesRow(selectedTaskType, taskTypes) { }
}

View file

@ -31,7 +31,6 @@ import com.owncloud.android.lib.common.utils.Log_OC
import com.owncloud.android.ui.activity.DrawerActivity
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import java.lang.ref.WeakReference
class ComposeActivity : DrawerActivity() {
@ -88,8 +87,7 @@ class ComposeActivity : DrawerActivity() {
nextcloudClient?.let { client ->
AssistantScreen(
viewModel = AssistantViewModel(
repository = AssistantRepository(client),
context = WeakReference(this)
repository = AssistantRepository(client)
),
activity = this
)

View file

@ -43,6 +43,7 @@ fun MoreActionsBottomSheet(title: String? = null, actions: List<Triple<Int, Int,
ModalBottomSheet(
modifier = Modifier.padding(top = 32.dp),
containerColor = colorScheme.surface,
onDismissRequest = {
dismiss()
},
@ -72,8 +73,8 @@ fun MoreActionsBottomSheet(title: String? = null, actions: List<Triple<Int, Int,
.launch { sheetState.hide() }
.invokeOnCompletion {
if (!sheetState.isVisible) {
action.third()
dismiss()
action.third()
}
}
}

View file

@ -9,7 +9,12 @@ package com.nextcloud.utils.date
enum class DateFormatPattern(val pattern: String) {
/**
* e.g. 10.11.2024 - 12:44
* 10.11.2024 - 12:44
*/
FullDateWithHours("dd.MM.yyyy - HH:mm")
FullDateWithHours("dd.MM.yyyy - HH:mm"),
/**
* Aug 3
*/
MonthWithDate("MMM d")
}

View file

@ -0,0 +1,26 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
package com.nextcloud.utils.date
import android.icu.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
object DateFormatter {
/**
* Converts a Unix timestamp (in milliseconds) into a formatted date string.
* For example, input 1733309160885 with "MMM d" pattern outputs "Dec 4".
*/
@Suppress("MagicNumber")
fun timestampToDateRepresentation(timestamp: Long, formatPattern: DateFormatPattern): String {
val date = Date(timestamp * 1000)
val format = SimpleDateFormat(formatPattern.pattern, Locale.getDefault())
return format.format(date)
}
}

View file

@ -7,6 +7,8 @@
package com.nextcloud.utils.extensions
import android.app.Activity
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
@ -17,3 +19,13 @@ fun AppCompatActivity.isActive(): Boolean = !isFinishing && !isDestroyed
fun AppCompatActivity.fragments(): List<Fragment> = supportFragmentManager.fragments
fun AppCompatActivity.lastFragment(): Fragment = fragments().last()
fun Activity.showShareIntent(text: String?) {
val sendIntent = Intent(Intent.ACTION_SEND).apply {
putExtra(Intent.EXTRA_TEXT, text)
type = "text/plain"
}
val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)
}

View file

@ -1,15 +0,0 @@
<!--
~ Nextcloud - Android Client
~
~ SPDX-FileCopyrightText: 2018-2024 Google LLC
~ SPDX-License-Identifier: Apache-2.0
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="#FF000000"
android:pathData="M440,680h80v-240h-80v240ZM480,360q17,0 28.5,-11.5T520,320q0,-17 -11.5,-28.5T480,280q-17,0 -28.5,11.5T440,320q0,17 11.5,28.5T480,360ZM480,880q-83,0 -156,-31.5T197,763q-54,-54 -85.5,-127T80,480q0,-83 31.5,-156T197,197q54,-54 127,-85.5T480,80q83,0 156,31.5T763,197q54,54 85.5,127T880,480q0,83 -31.5,156T763,763q-54,54 -127,85.5T480,880Z" />
</vector>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">منفذ البروكسي</string>
<string name="app_widget_description">عرض أداة واحدة من لوحة القيادة</string>
<string name="appbar_search_in">بحث في %s</string>
<string name="assistant_screen_all_task_type">الكل</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">أكتُب أيَّ نص</string>
<string name="assistant_screen_delete_task_alert_dialog_description">هل أنت متأكد أنك ترغب بحذف هذه المهمة؟</string>
<string name="assistant_screen_delete_task_alert_dialog_title">حذف مهمة</string>
<string name="assistant_screen_failed_task_text">فشل</string>
<string name="assistant_screen_loading">يتم الآن تحميل قائمة المهام؛ يرجى الانتظار...</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">لا توجد أي مهام متوفرة. حدِّد نوع المهمة لإنشاء واحدة جديدة.</string>
<string name="assistant_screen_no_task_available_text">لا توجد أي مهام متوفرة من النوع %s. يمكنك إنشاء مهمة جديدة من الشريط السفلي الجانبي.</string>
<string name="assistant_screen_running_task_text">قيد التجهيز</string>
<string name="assistant_screen_scheduled_task_status_text">مُجدول</string>
<string name="assistant_screen_successful_task_text">مُكتمل</string>
<string name="assistant_screen_task_create_fail_message">حدث خطأ أثناء إنشاء المهمة</string>
<string name="assistant_screen_task_create_success_message">تمّ إنشاء المهمة بنجاح</string>
<string name="assistant_screen_task_delete_fail_message">حدث خطأ أثناء حذف المهمة</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">نتيجة المهمة غير جاهة بعدُ.</string>
<string name="assistant_screen_task_types_error_state_message">تعذّر جلب أنواع المهام. قم رجاءً بالتحقُّق من اتصالك بالإنترنت.</string>
<string name="assistant_screen_top_bar_title">المُساعِد</string>
<string name="assistant_screen_unknown_task_status_text">غير معروف</string>
<string name="assistant_task_detail_screen_input_button_title">مُدخَلات</string>
<string name="assistant_task_detail_screen_output_button_title">المُخرَجَات</string>
<string name="associated_account_not_found">الحساب المرتبط غير موجود!</string>

View file

@ -24,15 +24,10 @@
<string name="app_config_base_url_title">URL base</string>
<string name="app_config_proxy_port_title">Puertu del proxy</string>
<string name="appbar_search_in">Buscar en: %s</string>
<string name="assistant_screen_all_task_type">Too</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escribi daqué</string>
<string name="assistant_screen_failed_task_text">Falló</string>
<string name="assistant_screen_scheduled_task_status_text">Planificóse</string>
<string name="assistant_screen_successful_task_text">Completóse</string>
<string name="assistant_screen_task_list_error_state_message">Nun ye posible dir en cata de la llista de xeres. Comprueba la conexón a internet.</string>
<string name="assistant_screen_task_types_error_state_message">Nun ye posible dir en cata de los tipos de xeres. Comprueba la conexón a internet.</string>
<string name="assistant_screen_top_bar_title">Asistente</string>
<string name="assistant_screen_unknown_task_status_text">Desconocí­u</string>
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
<string name="auth_account_not_new">Yá esiste nel preséu una cuenta pal mesmu usuariu y sirvidor</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Proxy Port</string>
<string name="app_widget_description">Shows one widget from dashboard</string>
<string name="appbar_search_in">Search in %s</string>
<string name="assistant_screen_all_task_type">All</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Type some text</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Are you sure you want to delete this task?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Delete Task</string>
<string name="assistant_screen_failed_task_text">Failed</string>
<string name="assistant_screen_loading">Task List are loading, please wait</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No task available. Select a task type to create a new task.</string>
<string name="assistant_screen_no_task_available_text">No task available for %s task type, you can create a new task from bottom right.</string>
<string name="assistant_screen_running_task_text">In Progress</string>
<string name="assistant_screen_scheduled_task_status_text">Scheduled</string>
<string name="assistant_screen_successful_task_text">Completed</string>
<string name="assistant_screen_task_create_fail_message">An error occurred while creating the task</string>
<string name="assistant_screen_task_create_success_message">Task successfully created</string>
<string name="assistant_screen_task_delete_fail_message">An error occurred while deleting the task</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">The task output is not ready yet.</string>
<string name="assistant_screen_task_types_error_state_message">Unable to fetch task types, please check your internet connection.</string>
<string name="assistant_screen_top_bar_title">Assistant</string>
<string name="assistant_screen_unknown_task_status_text">Unknown</string>
<string name="assistant_task_detail_screen_input_button_title">Input</string>
<string name="assistant_task_detail_screen_output_button_title">Output</string>
<string name="associated_account_not_found">Associated account not found!</string>

View file

@ -36,12 +36,7 @@
<string name="app_config_proxy_port_title">Порт на прокси сървъра</string>
<string name="app_widget_description">Показва един изпълним модул от таблото за управление</string>
<string name="appbar_search_in">Търсене в %s</string>
<string name="assistant_screen_all_task_type">Всички</string>
<string name="assistant_screen_failed_task_text">Неуспешно</string>
<string name="assistant_screen_scheduled_task_status_text">Планирано</string>
<string name="assistant_screen_successful_task_text">Завършен</string>
<string name="assistant_screen_task_delete_success_message">Задачата е успешно изтрита</string>
<string name="assistant_screen_unknown_task_status_text">Неизвестен</string>
<string name="associated_account_not_found">Свързания профил не е намерен!</string>
<string name="auth_access_failed">Достъп неуспешен: %1$s</string>
<string name="auth_account_does_not_exist">Профилът все още не съществува на устройството</string>

View file

@ -37,17 +37,11 @@
<string name="app_config_proxy_port_title">Porzh Proksi</string>
<string name="app_widget_description">Diskouez a ra ur widget dre daolenn-vourzh</string>
<string name="appbar_search_in">Klask e %s</string>
<string name="assistant_screen_all_task_type">Pep tra</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Skrivañ un tamm testenn</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Ha sur oc\'h e fell deoc\'h dilemel an trevell-mañ ?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Dilemel an trevell</string>
<string name="assistant_screen_failed_task_text">C\'hwitet</string>
<string name="assistant_screen_loading">O kargañ roll an trevelloù, gortozit ur pennadig</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">N\'eus trevell ebet evit c\'hoazh. Diuzit ur seurt trevell evit krouiñ unan nevez.</string>
<string name="assistant_screen_no_task_available_text">N\'eus trevell ebet evit %s seurt trevell, gallout a rit krouiñ unan nevez en traoñ a-zehoùt.</string>
<string name="assistant_screen_running_task_text">War ar stern</string>
<string name="assistant_screen_scheduled_task_status_text">Raktreset</string>
<string name="assistant_screen_successful_task_text">Echu</string>
<string name="assistant_screen_task_create_fail_message">C\'hoarvezet ez eus ur fazi en ur grouiñ an trevell</string>
<string name="assistant_screen_task_create_success_message">Trevell bet krouet ervat</string>
<string name="assistant_screen_task_delete_fail_message">C\'hoarvezet ez eus ur fazi en ur zilemel an trevell</string>
@ -56,7 +50,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Dilemel an trevell</string>
<string name="assistant_screen_task_types_error_state_message">N\'eus ket bet gallet tizhout ar seurtoù trevelloù, gwiriit ho kevreadenn genrouedad.</string>
<string name="assistant_screen_top_bar_title">Skoazeller</string>
<string name="assistant_screen_unknown_task_status_text">Dianv</string>
<string name="assistant_task_detail_screen_input_button_title">Enmont</string>
<string name="assistant_task_detail_screen_output_button_title">Ezvont</string>
<string name="associated_account_not_found">N\'eo ket bet kavet ar gont stag !</string>

View file

@ -45,17 +45,11 @@
<string name="app_config_proxy_port_title">Port del proxy</string>
<string name="app_widget_description">Mostra un giny del tauler</string>
<string name="appbar_search_in">Cerca a %s</string>
<string name="assistant_screen_all_task_type">Totes</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriu una mica de text</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Segur que voleu suprimir aquesta tasca?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Suprimeix la tasca</string>
<string name="assistant_screen_failed_task_text">Ha fallat</string>
<string name="assistant_screen_loading">S\'està carregant la llista de tasques, espereu</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hi ha cap tasca disponible. Seleccioneu un tipus de tasca per a crear una tasca nova.</string>
<string name="assistant_screen_no_task_available_text">No hi ha cap tasca disponible per al tipus de tasca %s. Podeu crear una tasca nova des de baix a la dreta.</string>
<string name="assistant_screen_running_task_text">En curs</string>
<string name="assistant_screen_scheduled_task_status_text">Planificat</string>
<string name="assistant_screen_successful_task_text">S\'ha completat</string>
<string name="assistant_screen_task_create_fail_message">S\'ha produït un error en crear la tasca</string>
<string name="assistant_screen_task_create_success_message">La tasca s\'ha creat correctament</string>
<string name="assistant_screen_task_delete_fail_message">S\'ha produït un error en suprimir la tasca</string>
@ -65,7 +59,6 @@
<string name="assistant_screen_task_output_empty_text">La sortida de la tasca encara no està a punt.</string>
<string name="assistant_screen_task_types_error_state_message">No s\'han pogut obtenir els tipus de tasques. Comproveu la connexió a Internet.</string>
<string name="assistant_screen_top_bar_title">Assistent</string>
<string name="assistant_screen_unknown_task_status_text">Desconegut</string>
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
<string name="assistant_task_detail_screen_output_button_title">Sortida</string>
<string name="associated_account_not_found">No s\'ha trobat el compte associat!</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Port proxy</string>
<string name="app_widget_description">Zobrazuje jeden ovládací prvek z nástěnky</string>
<string name="appbar_search_in">Hledat v %s</string>
<string name="assistant_screen_all_task_type">Vše</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Zadejte nějaký text</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Opravdu chcete tuto úlohu smazat?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Smazat úkol</string>
<string name="assistant_screen_failed_task_text">Nezdařilo se</string>
<string name="assistant_screen_loading">Načítá se seznam úkolů vyčkejte</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Není k dispozici žádný úkol. Aby bylo možné vytvořit nový úkol, vyberte jeho typ.</string>
<string name="assistant_screen_no_task_available_text">Pro typ úkolu %s nejsou k dispozici žádné úkoly nový úkol je možné vytvořit vpravo dole.</string>
<string name="assistant_screen_running_task_text">Probíhá</string>
<string name="assistant_screen_scheduled_task_status_text">Naplánováno</string>
<string name="assistant_screen_successful_task_text">Dokončeno</string>
<string name="assistant_screen_task_create_fail_message">Při vytváření úlohy se vyskytla chyba</string>
<string name="assistant_screen_task_create_success_message">Úloha byla úspěšně vytvořena</string>
<string name="assistant_screen_task_delete_fail_message">Při mazání úlohy se vyskytla chyba</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">Výstup z úkolu ještě není připraven.</string>
<string name="assistant_screen_task_types_error_state_message">Nedaří se získat typy úloh zkontrolujte připojení k Internetu.</string>
<string name="assistant_screen_top_bar_title">Asistent</string>
<string name="assistant_screen_unknown_task_status_text">Neznámé</string>
<string name="assistant_task_detail_screen_input_button_title">Vstup</string>
<string name="assistant_task_detail_screen_output_button_title">Výstup</string>
<string name="associated_account_not_found">Související účet nenalezen!</string>

View file

@ -36,21 +36,15 @@
<string name="allow_resharing">Tillad videredeling</string>
<string name="app_widget_description">Viser én widget fra dashboard</string>
<string name="appbar_search_in">Søg i %s</string>
<string name="assistant_screen_all_task_type">Alle</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Skriv noget tekst</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Er du sikker på du vil slette denne opgave?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Slet opgave</string>
<string name="assistant_screen_failed_task_text">Mislykkede</string>
<string name="assistant_screen_loading">Opgavelisten indlæser, vent venligst</string>
<string name="assistant_screen_running_task_text">I gang</string>
<string name="assistant_screen_scheduled_task_status_text">Planlagt</string>
<string name="assistant_screen_successful_task_text">Fuldført</string>
<string name="assistant_screen_task_create_success_message">Opgaven er oprettet</string>
<string name="assistant_screen_task_delete_fail_message">En fejl opstod under sletning af opgaven</string>
<string name="assistant_screen_task_delete_success_message">Opgaven er slettet</string>
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Slet opgave</string>
<string name="assistant_screen_top_bar_title">Assistent</string>
<string name="assistant_screen_unknown_task_status_text">Ukendt</string>
<string name="associated_account_not_found">Forbundet konto blev ikke fundet!</string>
<string name="auth_access_failed">Adgang fejlede: %1$s</string>
<string name="auth_account_does_not_exist">Kontoen findes endnu ikke på enheden</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Proxy-Port</string>
<string name="app_widget_description">Zeigt ein Widget aus dem Dashboard an</string>
<string name="appbar_search_in">Suche in %s</string>
<string name="assistant_screen_all_task_type">Alle</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Bitte einen Text eingeben</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Möchten Sie diese Aufgabe wirklich löschen?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Aufgabe löschen</string>
<string name="assistant_screen_failed_task_text">Fehlgeschlagen</string>
<string name="assistant_screen_loading">Aufgabenlisten werden geladen, bitte warten</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Keine Aufgabe verfügbar. Aufgabentyp auswählen, um eine neue Aufgabe zu erstellen.</string>
<string name="assistant_screen_no_task_available_text">Für den Aufgabentyp %s ist keine Aufgabe verfügbar. Sie können unten rechts eine neue Aufgabe erstellen.</string>
<string name="assistant_screen_running_task_text">In Bearbeitung</string>
<string name="assistant_screen_scheduled_task_status_text">Geplant</string>
<string name="assistant_screen_successful_task_text">Fertiggestellt</string>
<string name="assistant_screen_task_create_fail_message">Es ist ein Fehler beim Erstellen der Aufgabe aufgetreten</string>
<string name="assistant_screen_task_create_success_message">Aufgabe erfolgreich erstellt</string>
<string name="assistant_screen_task_delete_fail_message">Es ist ein Fehler beim Löschen der Aufgabe aufgetreten</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">Die Aufgabenausgabe ist noch nicht fertig.</string>
<string name="assistant_screen_task_types_error_state_message">Die Aufgabentypen können nicht abgerufen werden. Bitte überprüfen Sie Ihre Internetverbindung.</string>
<string name="assistant_screen_top_bar_title">Assistent</string>
<string name="assistant_screen_unknown_task_status_text">Unbekannt</string>
<string name="assistant_task_detail_screen_input_button_title">Eingabe</string>
<string name="assistant_task_detail_screen_output_button_title">Ausgabe</string>
<string name="associated_account_not_found">Verknüpftes Konto nicht gefunden!</string>

View file

@ -35,11 +35,7 @@
<string name="app_config_proxy_port_title">Θύρα διαμεσολαβητή</string>
<string name="app_widget_description">Εμφάνιση ενός γραφικού στοιχείου από τον πίνακα ελέγχου</string>
<string name="appbar_search_in">Αναζήτηση στο %s</string>
<string name="assistant_screen_all_task_type">\'Ολα</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Πληκτρολογήστε κάποιο κείμενο</string>
<string name="assistant_screen_failed_task_text">Απέτυχε</string>
<string name="assistant_screen_successful_task_text">Ολοκληρωμένες</string>
<string name="assistant_screen_unknown_task_status_text">Άγνωστο</string>
<string name="associated_account_not_found">Δεν βρέθηκε ο συνδεδεμένος λογαριασμός!</string>
<string name="auth_access_failed">Αποτυχία πρόσβασης: %1$s</string>
<string name="auth_account_does_not_exist">Ο λογαριασμός δεν υπάρχει ακόμα στη συσκευή</string>

View file

@ -31,9 +31,6 @@
<string name="advanced_settings">Detalaj agordoj</string>
<string name="allow_resharing">Permesi rekunhavigon</string>
<string name="appbar_search_in">Serĉi en 1%s</string>
<string name="assistant_screen_all_task_type">Ĉiuj</string>
<string name="assistant_screen_successful_task_text">Plenumita</string>
<string name="assistant_screen_unknown_task_status_text">Nekonata</string>
<string name="auth_access_failed">Aliro malsukcesis: %1$s</string>
<string name="auth_account_does_not_exist">La konto ankoraŭ ne aldoniĝis al tiu ĉi aparato</string>
<string name="auth_account_not_new">Konto pri samaj uzanto kaj servilo jam ekzistas tiuaparate</string>

View file

@ -37,17 +37,11 @@
<string name="app_config_proxy_port_title">Puerto del Proxy</string>
<string name="app_widget_description">Muestra un widget del panel</string>
<string name="appbar_search_in">Buscar en %s</string>
<string name="assistant_screen_all_task_type">Todos</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriba un texto</string>
<string name="assistant_screen_delete_task_alert_dialog_description">¿Está seguro que desea eliminar esta tarea?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Eliminar tarea</string>
<string name="assistant_screen_failed_task_text">Error</string>
<string name="assistant_screen_loading">Las listas de tareas están cargando, por favor espere</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hay tareas disponibles. Seleccione un tipo de tarea para crear una nueva.</string>
<string name="assistant_screen_no_task_available_text">No hay tareas del tipo %s, puede crear una nueva tarea desde la parte inferior derecha</string>
<string name="assistant_screen_running_task_text">En progreso</string>
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
<string name="assistant_screen_successful_task_text">Completado</string>
<string name="assistant_screen_task_create_fail_message">Ocurrió un error al crear la tarea</string>
<string name="assistant_screen_task_create_success_message">Tarea creada exitosamente</string>
<string name="assistant_screen_task_delete_fail_message">Ocurrió un error al eliminar la tarea</string>
@ -56,7 +50,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Eliminar tarea</string>
<string name="assistant_screen_task_types_error_state_message">No se pudieron obtener los tipos de tareas, por favor, revise su conexión a internet.</string>
<string name="assistant_screen_top_bar_title">Asistente</string>
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>

View file

@ -37,17 +37,11 @@
<string name="app_config_proxy_port_title">Puerto del Proxy</string>
<string name="app_widget_description">Muestra un widget del panel de control</string>
<string name="appbar_search_in">Buscar en %s</string>
<string name="assistant_screen_all_task_type">Todos</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escribe un texto</string>
<string name="assistant_screen_delete_task_alert_dialog_description">¿Está seguro que desea eliminar esta tarea?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Tarea eliminada</string>
<string name="assistant_screen_failed_task_text">Falló</string>
<string name="assistant_screen_loading">Lista de Tareas en lectura, espere por favor.</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hay tareas disponibles. Seleccione un tipo de tarea para crear una nueva.</string>
<string name="assistant_screen_no_task_available_text">No hay tareas del tipo %s, puede crear una nueva tarea desde la parte inferior derecha</string>
<string name="assistant_screen_running_task_text">En progreso</string>
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
<string name="assistant_screen_successful_task_text">Completado</string>
<string name="assistant_screen_task_create_fail_message">Ocurrió un error mientras creaba la tarea</string>
<string name="assistant_screen_task_create_success_message">Tarea creada con éxito</string>
<string name="assistant_screen_task_delete_fail_message">Ocurrió un error mientras eliminaba la tarea</string>
@ -56,7 +50,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Tarea eliminada</string>
<string name="assistant_screen_task_types_error_state_message">No se puede recuperar los tipos de tareas, comprueba la conexión a Internet.</string>
<string name="assistant_screen_top_bar_title">Asistente</string>
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>

View file

@ -31,9 +31,6 @@
<string name="advanced_settings">Configuración avanzada</string>
<string name="allow_resharing">Permitir volver a compartir</string>
<string name="appbar_search_in">Buscar en %s</string>
<string name="assistant_screen_all_task_type">Todos</string>
<string name="assistant_screen_successful_task_text">Completado</string>
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
<string name="associated_account_not_found">¡No se encontró la cuenta asociada!</string>
<string name="auth_access_failed">Error de acceso: %1$s</string>
<string name="auth_account_does_not_exist">La cuenta aún no ha sido agregada a este dispositivo </string>

View file

@ -30,9 +30,6 @@
<string name="add_to_cloud">Agregar a %1$s</string>
<string name="allow_resharing">Permitir volver a compartir</string>
<string name="appbar_search_in">Buscar en %s</string>
<string name="assistant_screen_all_task_type">Todos</string>
<string name="assistant_screen_successful_task_text">Completado</string>
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>
<string name="auth_access_failed">Error de acceso: %1$s</string>
<string name="auth_account_does_not_exist">La cuenta aún no ha sido agregada a este dispositivo </string>

View file

@ -36,12 +36,7 @@
<string name="app_config_proxy_port_title">Puerto del proxy</string>
<string name="app_widget_description">Muestra un widget del panel de control</string>
<string name="appbar_search_in">Compartir en %s</string>
<string name="assistant_screen_all_task_type">Todos</string>
<string name="assistant_screen_failed_task_text">Error</string>
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
<string name="assistant_screen_successful_task_text">Completado</string>
<string name="assistant_screen_task_delete_success_message">Tarea eliminada con éxito</string>
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>
<string name="auth_access_failed">Acceso fallido: %1$s</string>
<string name="auth_account_does_not_exist">La cuenta aún no ha sido agregada a este dispositivo </string>

View file

@ -37,17 +37,11 @@
<string name="app_config_proxy_port_title">Puerto del proxy</string>
<string name="app_widget_description">Muestra un widget del panel</string>
<string name="appbar_search_in">Buscar en %s</string>
<string name="assistant_screen_all_task_type">Todos</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriba algo de texto</string>
<string name="assistant_screen_delete_task_alert_dialog_description">¿Está seguro de eliminar esta tarea?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Eliminar tarea</string>
<string name="assistant_screen_failed_task_text">Falló</string>
<string name="assistant_screen_loading">Las listas de tareas están cargando, por favor espere</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hay tareas disponibles. Seleccione un tipo de tarea para crear una nueva.</string>
<string name="assistant_screen_no_task_available_text">No hay tareas disponibles para el tipo de tarea %s, puede crear una nueva tarea abajo a la derecha.</string>
<string name="assistant_screen_running_task_text">En proceso</string>
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
<string name="assistant_screen_successful_task_text">Completado</string>
<string name="assistant_screen_task_create_fail_message">Ocurrió un error al crear la tarea</string>
<string name="assistant_screen_task_create_success_message">Tarea creada exitosamente</string>
<string name="assistant_screen_task_delete_fail_message">Ocurrió un error al eliminar la tarea</string>
@ -56,7 +50,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Eliminar tarea</string>
<string name="assistant_screen_task_types_error_state_message">No se pudieron obtener los tipos de tareas, por favor, revise su conexión a internet.</string>
<string name="assistant_screen_top_bar_title">Asistente</string>
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
<string name="associated_account_not_found">¡No se encontró la cuenta asociada!</string>

View file

@ -38,17 +38,11 @@
<string name="app_config_proxy_port_title">Puerto del proxy</string>
<string name="app_widget_description">Muestra un widget del tablero</string>
<string name="appbar_search_in">Buscar en %s</string>
<string name="assistant_screen_all_task_type">Todo</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriba algo de texto</string>
<string name="assistant_screen_delete_task_alert_dialog_description">¿Está seguro de querer eliminar esta tarea?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Eliminar tarea</string>
<string name="assistant_screen_failed_task_text">Falló</string>
<string name="assistant_screen_loading">Las listas de tareas están cargando, por favor espere</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No hay tareas disponibles. Seleccione un tipo de tarea para crear una nueva.</string>
<string name="assistant_screen_no_task_available_text">No hay tareas disponibles para el tipo de tarea %s, puede crear una nueva tarea abajo a la derecha.</string>
<string name="assistant_screen_running_task_text">En progreso</string>
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
<string name="assistant_screen_successful_task_text">Completado</string>
<string name="assistant_screen_task_create_fail_message">Ocurrió un error al crear la tarea</string>
<string name="assistant_screen_task_create_success_message">Tarea creada exitosamente</string>
<string name="assistant_screen_task_delete_fail_message">Ocurrió un error al eliminar la tarea</string>
@ -57,7 +51,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Eliminar tarea</string>
<string name="assistant_screen_task_types_error_state_message">No se pudieron obtener los tipos de tareas, por favor, revise su conexión a internet.</string>
<string name="assistant_screen_top_bar_title">Asistente</string>
<string name="assistant_screen_unknown_task_status_text">Desconocido</string>
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
<string name="assistant_task_detail_screen_output_button_title">Salida</string>
<string name="associated_account_not_found">¡Cuenta asociada no encontrada!</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Proxy-ataka</string>
<string name="app_widget_description">Paneleko trepeta bat erakusten du</string>
<string name="appbar_search_in">Bilatu %s(e)n</string>
<string name="assistant_screen_all_task_type">Denak</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Idatzi testu bat</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Ziur zeregin hau ezabatu nahi duzula?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Ezabatu zeregina</string>
<string name="assistant_screen_failed_task_text">Huts egin du</string>
<string name="assistant_screen_loading">Zereginen zerrenda kargatzen ari da, itxaron mesedez</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Ez dago zereginik. Hautatu zeregin mota bat zeregin berri bat sortzeko.</string>
<string name="assistant_screen_no_task_available_text">Ez dago zereginik %s zeregin motarako, zeregin berri bat sor dezakezu behean eskuinean.</string>
<string name="assistant_screen_running_task_text">Abian</string>
<string name="assistant_screen_scheduled_task_status_text">Antolatuta</string>
<string name="assistant_screen_successful_task_text">Osatua</string>
<string name="assistant_screen_task_create_fail_message">Errore bat gertatu da zeregina sortzean</string>
<string name="assistant_screen_task_create_success_message">Zeregina behar bezala sortu da</string>
<string name="assistant_screen_task_delete_fail_message">Errore bat gertatu da zeregina ezabatzean</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">Zereginaren irteera ez dago prest oraindik.</string>
<string name="assistant_screen_task_types_error_state_message">Ezin dira zeregin motak eskuratu, egiaztatu Interneteko konexioa.</string>
<string name="assistant_screen_top_bar_title">Morroia</string>
<string name="assistant_screen_unknown_task_status_text">Ezezaguna</string>
<string name="assistant_task_detail_screen_input_button_title">Sarrera</string>
<string name="assistant_task_detail_screen_output_button_title">Irteera</string>
<string name="associated_account_not_found">Ez da aurkitu lotutako konturik</string>

View file

@ -38,13 +38,8 @@
<string name="app_config_proxy_port_title">پورت پروکسی</string>
<string name="app_widget_description">نمایش یک ابزارک از پیشخوان</string>
<string name="appbar_search_in">جستجو در %s</string>
<string name="assistant_screen_all_task_type">همه</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">مقداری متن را تایپ کنید</string>
<string name="assistant_screen_failed_task_text">Failed</string>
<string name="assistant_screen_scheduled_task_status_text">Scheduled</string>
<string name="assistant_screen_successful_task_text">نکمیل شده</string>
<string name="assistant_screen_task_delete_success_message">Task successfully deleted</string>
<string name="assistant_screen_unknown_task_status_text">ناشناخته</string>
<string name="associated_account_not_found">حساب مرتبط یافت نشد!</string>
<string name="auth_access_failed">دسترسی خطای %1$s</string>
<string name="auth_account_does_not_exist">حساب به این وسیله اضافه نشده است</string>

View file

@ -36,14 +36,10 @@
<string name="app_config_proxy_port_title">Välityspalvelimen portti</string>
<string name="app_widget_description">Näyttää yhden pienoissovelluksen konsolista</string>
<string name="appbar_search_in">Etsi kohteesta %s</string>
<string name="assistant_screen_all_task_type">Kaikki</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Syötä tekstiä</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Haluatko varmasti poistaa tämän tehtävän?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Poista tehtävä</string>
<string name="assistant_screen_failed_task_text">Epäonnistui</string>
<string name="assistant_screen_loading">Tehtävälista latautuu, odota</string>
<string name="assistant_screen_scheduled_task_status_text">Aikataulutettu</string>
<string name="assistant_screen_successful_task_text">Valmistui</string>
<string name="assistant_screen_task_create_fail_message">Tehtävän luonti epäonnistui</string>
<string name="assistant_screen_task_create_success_message">Tehtävä luotu</string>
<string name="assistant_screen_task_delete_fail_message">Tehtävän poisto epäonnistui</string>
@ -52,7 +48,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Poista tehtävä</string>
<string name="assistant_screen_task_types_error_state_message">Tehtävätyyppen haku epäonnistui, tarkista internetyhteytesi.</string>
<string name="assistant_screen_top_bar_title">Avustaja</string>
<string name="assistant_screen_unknown_task_status_text">Tuntematon</string>
<string name="associated_account_not_found">Liitettyä tiliä ei löydy!</string>
<string name="auth_access_failed">Pääsy epäonnistui: %1$s</string>
<string name="auth_account_does_not_exist">Tälle laitteelle ei ole vielä asennettu tiliä.</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Port Proxy</string>
<string name="app_widget_description">Affiche un widget du tableau de bord</string>
<string name="appbar_search_in">Recherche dans %s</string>
<string name="assistant_screen_all_task_type">Tout</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Tapez du texte</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Êtes-vous sûr de vouloir supprimer cette tâche ?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Supprimer la tâche</string>
<string name="assistant_screen_failed_task_text">Échec</string>
<string name="assistant_screen_loading">La liste des tâches charge, veuillez patienter</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Aucune tâche disponible. Sélectionner un type de tâche pour créer une nouvelle tâche.</string>
<string name="assistant_screen_no_task_available_text">Aucune tâche disponible pour le type de tâche %s, vous pouvez créer une nouvelle tâche en bas à droite.</string>
<string name="assistant_screen_running_task_text">En cours</string>
<string name="assistant_screen_scheduled_task_status_text">Planifié</string>
<string name="assistant_screen_successful_task_text">Terminé</string>
<string name="assistant_screen_task_create_fail_message">Une erreur est survenue lors de la création de la tâche</string>
<string name="assistant_screen_task_create_success_message">La tâche a bien été créée</string>
<string name="assistant_screen_task_delete_fail_message">Une erreur est survenue lors de la suppression de la tâche</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">Le résultat de la tâche n\'est pas encore prêt.</string>
<string name="assistant_screen_task_types_error_state_message">Impossible de récupérer les types des tâches, veuillez vérifier votre connexion Internet.</string>
<string name="assistant_screen_top_bar_title">Assistant</string>
<string name="assistant_screen_unknown_task_status_text">Inconnu</string>
<string name="assistant_task_detail_screen_input_button_title">Entrée</string>
<string name="assistant_task_detail_screen_output_button_title">Sortie</string>
<string name="associated_account_not_found">Compte associé introuvable !</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Port Seachfhreastalaí</string>
<string name="app_widget_description">Taispeáin giuirléid amháin ón deais</string>
<string name="appbar_search_in">Cuardaigh i %s</string>
<string name="assistant_screen_all_task_type">Gach</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Clóscríobh roinnt téacs</string>
<string name="assistant_screen_delete_task_alert_dialog_description">An bhfuil tú cinnte gur mhaith leat an tasc seo a scriosadh?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Scrios Tasc</string>
<string name="assistant_screen_failed_task_text">Theip</string>
<string name="assistant_screen_loading">Tá an Liosta Tasc á lódáil, fan go fóill, le do thoil</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Níl aon tasc ar fáil. Roghnaigh cineál taisc chun tasc nua a chruthú.</string>
<string name="assistant_screen_no_task_available_text">Níl aon tasc ar fáil do chineál taisc %s, is féidir leat tasc nua a chruthú ón mbun ar dheis.</string>
<string name="assistant_screen_running_task_text">Ar Siúl</string>
<string name="assistant_screen_scheduled_task_status_text">Sceidealta</string>
<string name="assistant_screen_successful_task_text">Críochnaithe</string>
<string name="assistant_screen_task_create_fail_message">Tharla earráid agus an tasc á chruthú</string>
<string name="assistant_screen_task_create_success_message">D\'éirigh leis an tasc a chruthú</string>
<string name="assistant_screen_task_delete_fail_message">Tharla earráid agus an tasc á scriosadh</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">Níl an t-aschur tasc réidh fós.</string>
<string name="assistant_screen_task_types_error_state_message">Ní féidir cineálacha tascanna a fháil, seiceáil do nasc idirlín le do thoil.</string>
<string name="assistant_screen_top_bar_title">Cúntóir</string>
<string name="assistant_screen_unknown_task_status_text">Anaithnid</string>
<string name="assistant_task_detail_screen_input_button_title">Ionchur</string>
<string name="assistant_task_detail_screen_output_button_title">Aschur</string>
<string name="associated_account_not_found">Cuntas gaolmhar gan aimsiú!</string>

View file

@ -31,8 +31,6 @@
<string name="add_to_cloud">Cuir ri %1$s</string>
<string name="allow_resharing">Ceadaich co-roinneadh às ùr</string>
<string name="appbar_search_in">Lorg am broinn %s</string>
<string name="assistant_screen_successful_task_text">Coileanta</string>
<string name="assistant_screen_unknown_task_status_text">Chan eil fhios</string>
<string name="associated_account_not_found">Cha deach an cunntas co-cheangailte a lorg!</string>
<string name="auth_access_failed">Dhfhàillig leis an inntrigeadh: %1$s</string>
<string name="auth_account_does_not_exist">Cha deach an cunntas a chur ris air an uidheam seo fhathast</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Porto do proxy</string>
<string name="app_widget_description">Amosa un trebello do taboleiro</string>
<string name="appbar_search_in">Buscar en %s</string>
<string name="assistant_screen_all_task_type">Todo</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Escriba algún texto</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Confirma que quere eliminar esta tarefa?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Eliminar tarefa</string>
<string name="assistant_screen_failed_task_text">Fallado</string>
<string name="assistant_screen_loading">Estase a cargar a lista de tarefas, agarde</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Non hai ningunha tarefa dispoñíbel. Seleccione un tipo de tarefa para crear unha nova tarefa.</string>
<string name="assistant_screen_no_task_available_text">Non hai ningunha tarefa dispoñible para o tipo de tarefa %s, pode crear unha nova desde a parte inferior dereita.</string>
<string name="assistant_screen_running_task_text">En proceso</string>
<string name="assistant_screen_scheduled_task_status_text">Programado</string>
<string name="assistant_screen_successful_task_text">Completado</string>
<string name="assistant_screen_task_create_fail_message">Produciuse un erro ao crear a tarefa</string>
<string name="assistant_screen_task_create_success_message">A tarefa creouse satisfactoriamente</string>
<string name="assistant_screen_task_delete_fail_message">Produciuse un erro ao eliminar a tarefa</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">A saída da tarefa aínda non está preparada.</string>
<string name="assistant_screen_task_types_error_state_message">Non é posíbel recuperar os tipos de tarefas. Comprobe a conexión a Internet.</string>
<string name="assistant_screen_top_bar_title">Asistente</string>
<string name="assistant_screen_unknown_task_status_text">Descoñecido</string>
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
<string name="assistant_task_detail_screen_output_button_title">Saída</string>
<string name="associated_account_not_found">Non se atopou unha conta asociada!</string>

View file

@ -34,9 +34,6 @@
<string name="app_config_base_url_title">Osnovni URL</string>
<string name="app_config_proxy_port_title">Proxy port</string>
<string name="appbar_search_in">Traži u %s</string>
<string name="assistant_screen_all_task_type">Sve</string>
<string name="assistant_screen_successful_task_text">Završeno</string>
<string name="assistant_screen_unknown_task_status_text">Nepoznata pogreška</string>
<string name="associated_account_not_found">Pripadajući račun nije pronađen!</string>
<string name="auth_access_failed">Neuspjeli pristup: %1$s</string>
<string name="auth_account_does_not_exist">Račun još nije dodan na ovaj uređaj</string>

View file

@ -40,13 +40,8 @@
<string name="app_config_proxy_port_title">Proxy portja</string>
<string name="app_widget_description">Egy modult jelenít meg a irányítópultról</string>
<string name="appbar_search_in">Keresés itt: %s</string>
<string name="assistant_screen_all_task_type">Összes</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Gépeljen be szöveget</string>
<string name="assistant_screen_failed_task_text">Sikertelen</string>
<string name="assistant_screen_scheduled_task_status_text">Ütemezve</string>
<string name="assistant_screen_successful_task_text">Teljesített</string>
<string name="assistant_screen_task_delete_success_message">Feladat sikeresen törölve</string>
<string name="assistant_screen_unknown_task_status_text">Ismeretlen</string>
<string name="associated_account_not_found">A kapcsolódó fiók nem található!</string>
<string name="auth_access_failed">Hozzáférési hiba: %1$s</string>
<string name="auth_account_does_not_exist">Az eszközön még nem létezik a fiók</string>

View file

@ -35,17 +35,11 @@
<string name="allow_resharing">Izinkan pembagian ulang</string>
<string name="app_widget_description">Menampilkan satu gawit dari dasbor</string>
<string name="appbar_search_in">Cari dalam %s</string>
<string name="assistant_screen_all_task_type">Semua</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Tulis beberapa teks</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Apakah Anda yakin ingin menghapus tugas ini?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Hapus Tugas</string>
<string name="assistant_screen_failed_task_text">Gagal</string>
<string name="assistant_screen_loading">Daftar Tugas sedang dimuat, mohon tunggu</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Tidak ada tugas yang tersedia. Pilih jenis tugas untuk membuat tugas baru.</string>
<string name="assistant_screen_no_task_available_text">Tidak ada tugas yang tersedia untuk jenis tugas %s, Anda dapat membuat tugas baru dari pojok kanan bawah.</string>
<string name="assistant_screen_running_task_text">Sedang Berlangsung</string>
<string name="assistant_screen_scheduled_task_status_text">Dijadwalkan</string>
<string name="assistant_screen_successful_task_text">Selesai</string>
<string name="assistant_screen_task_create_fail_message">Terjadi kesalahan saat membuat tugas</string>
<string name="assistant_screen_task_create_success_message">Tugas berhasil dibuat</string>
<string name="assistant_screen_task_delete_fail_message">Terjadi kesalahan saat menghapus tugas</string>
@ -54,7 +48,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Hapus Tugas</string>
<string name="assistant_screen_task_types_error_state_message">Tidak dapat memperoleh jenis tugas, mohon periksa koneksi internet Anda.</string>
<string name="assistant_screen_top_bar_title">Asisten</string>
<string name="assistant_screen_unknown_task_status_text">Tidak diketahui</string>
<string name="assistant_task_detail_screen_input_button_title">Input</string>
<string name="assistant_task_detail_screen_output_button_title">Output</string>
<string name="associated_account_not_found">Akun terkait tidak ditemukan!</string>

View file

@ -35,9 +35,6 @@
<string name="app_config_proxy_port_title">Gátt milliþjóns</string>
<string name="app_widget_description">Sýnir einn viðmótshluta af stjórnborði</string>
<string name="appbar_search_in">Leita í %s</string>
<string name="assistant_screen_all_task_type">Allt</string>
<string name="assistant_screen_successful_task_text">Lokið</string>
<string name="assistant_screen_unknown_task_status_text">Óþekkt</string>
<string name="associated_account_not_found">Tengdur notandaaðgangur fannst ekki!</string>
<string name="auth_access_failed">Aðgangur mistókst: %1$s</string>
<string name="auth_account_does_not_exist">Aðgangur er ekki ennþá til á tækinu</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Porta proxy</string>
<string name="app_widget_description">Mostra un widget dal cruscotto</string>
<string name="appbar_search_in">Cerca in %s</string>
<string name="assistant_screen_all_task_type">Tutti</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Aggiungi del testo</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Sei sicuro di voler rimuovere questa attività?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Elimina attività</string>
<string name="assistant_screen_failed_task_text">Non riuscito</string>
<string name="assistant_screen_loading">Lista dei Task in caricamento, si prega di attendere</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Nessun task disponibile. Scegli un tipo di Task per crearne uno nuovo.</string>
<string name="assistant_screen_no_task_available_text">Nessun task disponibile per la tipologia %s, puoi crearne uno nuovo in basso a destra.</string>
<string name="assistant_screen_running_task_text">In corso</string>
<string name="assistant_screen_scheduled_task_status_text">Programmato</string>
<string name="assistant_screen_successful_task_text">Completato</string>
<string name="assistant_screen_task_create_fail_message">Un errore è intercorso durante la creazione del task</string>
<string name="assistant_screen_task_create_success_message">Task creato con successo</string>
<string name="assistant_screen_task_delete_fail_message">Un errore è intercorso durante la cancellazione del task</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">Il risultato del task non è ancora pronto.</string>
<string name="assistant_screen_task_types_error_state_message">Impossibile recuperare i tipi di task, per favore verifica la tua connessione a internet.</string>
<string name="assistant_screen_top_bar_title">Assistente</string>
<string name="assistant_screen_unknown_task_status_text">Sconosciuto</string>
<string name="assistant_task_detail_screen_input_button_title">Input</string>
<string name="assistant_task_detail_screen_output_button_title">Output</string>
<string name="associated_account_not_found">Account associato non trovato.</string>

View file

@ -35,9 +35,6 @@
<string name="app_config_proxy_port_title">פתחת מתווך</string>
<string name="app_widget_description">מצג וידג׳ט אחד מלוח הבקרה</string>
<string name="appbar_search_in">חפש ב %s</string>
<string name="assistant_screen_all_task_type">הכול</string>
<string name="assistant_screen_successful_task_text">הושלם</string>
<string name="assistant_screen_unknown_task_status_text">לא ידוע</string>
<string name="associated_account_not_found">לא נמצא חשבון משויך!</string>
<string name="auth_access_failed">גישה נכשלה: %1$s</string>
<string name="auth_account_does_not_exist">החשבון לא נוסף למכשיר הזה עדיין</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">プロキシポート</string>
<string name="app_widget_description">ダッシュボードから一つのウィジェットを表示</string>
<string name="appbar_search_in">%s の中を検索</string>
<string name="assistant_screen_all_task_type">すべて</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">テキストを入力</string>
<string name="assistant_screen_delete_task_alert_dialog_description">本当にこのタスクを削除しますか?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">タスクを削除</string>
<string name="assistant_screen_failed_task_text">失敗</string>
<string name="assistant_screen_loading">タスクリストを読み込み中です。しばらくお待ちください</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">利用可能なタスクがありません。タスクの種類を選択して、新しいタスクを作成してください。</string>
<string name="assistant_screen_no_task_available_text">タスクタイプ%sに使用できるタスクがありません。右下から新しいタスクを作成できます。</string>
<string name="assistant_screen_running_task_text">進行中</string>
<string name="assistant_screen_scheduled_task_status_text">スケジュール済</string>
<string name="assistant_screen_successful_task_text">完了</string>
<string name="assistant_screen_task_create_fail_message">タスクの作成中にエラーが発生しました。</string>
<string name="assistant_screen_task_create_success_message">タスクは正常に作成されました。</string>
<string name="assistant_screen_task_delete_fail_message">タスクの削除中にエラーが発生しました。</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">タスクの出力はまだ準備ができていません。</string>
<string name="assistant_screen_task_types_error_state_message">タスクタイプを取得できません。インターネット接続を確認してください。</string>
<string name="assistant_screen_top_bar_title">アシスタント</string>
<string name="assistant_screen_unknown_task_status_text">不明</string>
<string name="assistant_task_detail_screen_input_button_title">入力</string>
<string name="assistant_task_detail_screen_output_button_title">出力</string>
<string name="associated_account_not_found">関連付けられたアカウントが見つかりません!</string>

View file

@ -35,10 +35,6 @@
<string name="allow_resharing">Allow resharing</string>
<string name="app_widget_description">Shows one widget from dashboard</string>
<string name="appbar_search_in">Search in %s</string>
<string name="assistant_screen_all_task_type">All</string>
<string name="assistant_screen_failed_task_text">Failed</string>
<string name="assistant_screen_successful_task_text">Completed</string>
<string name="assistant_screen_unknown_task_status_text">Unknown</string>
<string name="associated_account_not_found">Associated account not found!</string>
<string name="auth_access_failed">Access failed: %1$s</string>
<string name="auth_account_does_not_exist">The account is not added on this device yet</string>

View file

@ -38,17 +38,11 @@
<string name="app_config_proxy_port_title">프록시 포트</string>
<string name="app_widget_description">대시보드에 위젯 하나만 표시</string>
<string name="appbar_search_in">%s에서 검색</string>
<string name="assistant_screen_all_task_type">모두</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">텍스트 입력</string>
<string name="assistant_screen_delete_task_alert_dialog_description">이 작업을 삭제하시겠습니까?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">작업 삭제</string>
<string name="assistant_screen_failed_task_text">실패</string>
<string name="assistant_screen_loading">작업 목록을 로드하는 중입니다. 잠시 기다려 주세요.</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">사용할 수 있는 작업이 없습니다. 새 작업을 생성하려면 작업 유형을 선택하세요.</string>
<string name="assistant_screen_no_task_available_text">%s작업 유형을 위해 사용 가능한 작업이 없습니다, 오른쪽 하단에서 새 작업을 만들 수 있습니다.</string>
<string name="assistant_screen_running_task_text">진행 중</string>
<string name="assistant_screen_scheduled_task_status_text">예정됨</string>
<string name="assistant_screen_successful_task_text">완료됨</string>
<string name="assistant_screen_task_create_fail_message">작업을 생성하는 중에 오류가 발생했습니다.</string>
<string name="assistant_screen_task_create_success_message">작업이 성공적으로 생성됨</string>
<string name="assistant_screen_task_delete_fail_message">작업을 삭제하는 중에 오류가 발생했습니다.</string>
@ -57,7 +51,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">작업 삭제</string>
<string name="assistant_screen_task_types_error_state_message">작업 유형을 가져올 수 없습니다. 인터넷 연결을 확인하세요.</string>
<string name="assistant_screen_top_bar_title">어시스턴트</string>
<string name="assistant_screen_unknown_task_status_text">알 수 없음</string>
<string name="assistant_task_detail_screen_input_button_title">입력</string>
<string name="assistant_task_detail_screen_output_button_title">출력</string>
<string name="associated_account_not_found">관련 계정을 찾을 수 없습니다!</string>

View file

@ -34,8 +34,6 @@
<string name="allow_resharing">ອະນຸຍາດໃຫ້ ການແບ່ງປັນຄືນ</string>
<string name="app_widget_description">ສະແດງໜຶ່ງລາຍການຈາກໜ້າປັດ</string>
<string name="appbar_search_in">ຄົ້ນຫາໃນ%s</string>
<string name="assistant_screen_successful_task_text">ສຳເລັດ</string>
<string name="assistant_screen_unknown_task_status_text">ບໍ່ຮູ້</string>
<string name="associated_account_not_found">ບໍ່ພົບບັນຊີທີ່ກ່ຽວຂ້ອງ!</string>
<string name="auth_access_failed">ການເຂົ້າເຖິງໄດ້ບໍ່ສຳເລັດ%1$s:</string>
<string name="auth_account_does_not_exist">ຍັງບໍ່ໄດ້ເພີ່ມບັນຊີໃສ່ໃນອຸປະກອນນີ້</string>

View file

@ -37,19 +37,15 @@
<string name="app_config_proxy_port_title">Įgaliotojo serverio prievadas</string>
<string name="app_widget_description">Rodo vieną valdiklį iš skydelio</string>
<string name="appbar_search_in">Ieškoti %s</string>
<string name="assistant_screen_all_task_type">Visos</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Įrašykite kokį nors tekstą</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Ar tikrai norite ištrinti šią užduotį?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Ištrinti užduotį</string>
<string name="assistant_screen_failed_task_text">Nepavyko</string>
<string name="assistant_screen_successful_task_text">Užbaigta</string>
<string name="assistant_screen_task_create_fail_message">Kuriant užduotį, įvyko klaida</string>
<string name="assistant_screen_task_create_success_message">Užduotis sėkmingai sukurta</string>
<string name="assistant_screen_task_delete_fail_message">Ištrinant užduotį, įvyko klaida</string>
<string name="assistant_screen_task_delete_success_message">Užduotis sėkmingai ištrinta</string>
<string name="assistant_screen_task_list_error_state_message">Nepavyko gauti užduočių sąrašo, patikrinkite savo interneto ryšį.</string>
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Ištrinti užduotį</string>
<string name="assistant_screen_unknown_task_status_text">Nežinoma</string>
<string name="assistant_task_detail_screen_output_button_title">Išvestis</string>
<string name="associated_account_not_found">Susieta paskyra nerasta!</string>
<string name="auth_access_failed">Prieiga nepavyko: %1$s</string>

View file

@ -33,12 +33,8 @@
<string name="allow_resharing">Atļaut atkārtotu koplietošanu</string>
<string name="app_config_proxy_port_title">Starpniekservera ports</string>
<string name="appbar_search_in">Meklēt %s</string>
<string name="assistant_screen_all_task_type">Visi</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Dzēst uzdevumu</string>
<string name="assistant_screen_failed_task_text">Neizdevās</string>
<string name="assistant_screen_successful_task_text">Pabeigts</string>
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Dzēst uzdevumu</string>
<string name="assistant_screen_unknown_task_status_text">Nezināms</string>
<string name="associated_account_not_found">Saistītais konts nav atrasts!</string>
<string name="auth_access_failed">Piekļuve neizdevās: %1$s</string>
<string name="auth_account_does_not_exist">Konts vēl nav pievienots šai iekārtai</string>

View file

@ -34,10 +34,6 @@
<string name="app_config_proxy_port_title">Proxy порта</string>
<string name="app_widget_description">Прикажува еден виџет од контролната табла</string>
<string name="appbar_search_in">Барај во %s</string>
<string name="assistant_screen_all_task_type">Сите</string>
<string name="assistant_screen_failed_task_text">Неуспешно</string>
<string name="assistant_screen_successful_task_text">Завршено</string>
<string name="assistant_screen_unknown_task_status_text">Непознат</string>
<string name="associated_account_not_found">Не е пронајдена поврзана сметка!</string>
<string name="auth_access_failed">Неуспешен пристап: %1$s</string>
<string name="auth_account_does_not_exist">Сметката сеуште не е додадена на овој уред</string>

View file

@ -38,17 +38,11 @@
<string name="app_config_proxy_port_title">Proxy-port</string>
<string name="app_widget_description">Viser en widget fra dashbordet</string>
<string name="appbar_search_in">Søk i %s</string>
<string name="assistant_screen_all_task_type">Alle</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Skriv inn litt tekst</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Er du sikker på at du vil slette denne oppgaven?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Slett oppgave</string>
<string name="assistant_screen_failed_task_text">Mislyktes</string>
<string name="assistant_screen_loading">Oppgaveliste lastes inn, vennligst vent</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Ingen oppgave tilgjengelig. Velg en oppgavetype for å opprette en ny oppgave.</string>
<string name="assistant_screen_no_task_available_text">Ingen oppgave tilgjengelig for %s-oppgavetype, du kan opprette en ny oppgave fra nede til høyre.</string>
<string name="assistant_screen_running_task_text">Pågår</string>
<string name="assistant_screen_scheduled_task_status_text">Planlagt</string>
<string name="assistant_screen_successful_task_text">Ferdig</string>
<string name="assistant_screen_task_create_fail_message">Det oppstod en feil under oppretting av oppgaven</string>
<string name="assistant_screen_task_create_success_message">Oppgave opprettet</string>
<string name="assistant_screen_task_delete_fail_message">Det oppstod en feil under sletting av oppgaven</string>
@ -57,7 +51,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Slett oppgave</string>
<string name="assistant_screen_task_types_error_state_message">Kan ikke hente oppgavetyper, vennligst sjekk internettforbindelsen din.</string>
<string name="assistant_screen_top_bar_title">Assistent</string>
<string name="assistant_screen_unknown_task_status_text">Ukjent</string>
<string name="assistant_task_detail_screen_input_button_title">Inndata</string>
<string name="assistant_task_detail_screen_output_button_title">Utdata</string>
<string name="associated_account_not_found">Tilknyttet bruker ikke funnet!</string>

View file

@ -36,4 +36,6 @@
<!-- App bar -->
<color name="appbar">#1E1E1E</color>
<color name="fontAppbar">@android:color/white</color>
<color name="actionbar_color">#101418</color>
</resources>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Proxy poort</string>
<string name="app_widget_description">Toont één widget van dashboard</string>
<string name="appbar_search_in">Zoeken in %s</string>
<string name="assistant_screen_all_task_type">Alle</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Geef wat tekst in</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Bent u zeker dat u deze taak wilt verwijderen?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Verwijder taak</string>
<string name="assistant_screen_failed_task_text">Mislukt</string>
<string name="assistant_screen_loading">Takenlijst wordt geladen, even geduld</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Geen taak beschikbaar. Selecteer een taaktype om een nieuwe aan te maken.</string>
<string name="assistant_screen_no_task_available_text">Geen taak beschikbaar voor %s taaktype, u kunt rechts onder een nieuwe taak aanmaken.</string>
<string name="assistant_screen_running_task_text">Bezig</string>
<string name="assistant_screen_scheduled_task_status_text">Ingepland</string>
<string name="assistant_screen_successful_task_text">Voltooid</string>
<string name="assistant_screen_task_create_fail_message">Er is een fout opgetreden bij het aanmaken van de taak</string>
<string name="assistant_screen_task_create_success_message">Taak succesvol aangemaakt</string>
<string name="assistant_screen_task_delete_fail_message">Er is een fout opgetreden bij het verwijderen van de taak</string>
@ -65,7 +59,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Verwijder taak</string>
<string name="assistant_screen_task_types_error_state_message">Kan taken types niet ophalen. Controleer je internetverbinding.</string>
<string name="assistant_screen_top_bar_title">Assistent</string>
<string name="assistant_screen_unknown_task_status_text">Onbekend</string>
<string name="assistant_task_detail_screen_input_button_title">Input</string>
<string name="assistant_task_detail_screen_output_button_title">Output</string>
<string name="associated_account_not_found">Bijbehorend account niet gevonden!</string>

View file

@ -45,17 +45,11 @@
<string name="app_config_proxy_port_title">Port proxy</string>
<string name="app_widget_description">Pokazuje jeden widżet z pulpitu nawigacyjnego</string>
<string name="appbar_search_in">Szukaj w %s</string>
<string name="assistant_screen_all_task_type">Wszystkie</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Wpisz jakiś tekst</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Czy na pewno chcesz usunąć to zadanie?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Usuń zadanie</string>
<string name="assistant_screen_failed_task_text">Nie powiodło się</string>
<string name="assistant_screen_loading">Trwa wczytywanie listy zadań. Proszę czekać</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Brak dostępnych zadań. Wybierz typ zadania, aby utworzyć nowe zadanie.</string>
<string name="assistant_screen_no_task_available_text">Brak dostępnych zadań dla typu zadania %s. Możesz utworzyć nowe zadanie w prawym dolnym rogu.</string>
<string name="assistant_screen_running_task_text">W trakcie</string>
<string name="assistant_screen_scheduled_task_status_text">Zaplanowane</string>
<string name="assistant_screen_successful_task_text">Zakończone</string>
<string name="assistant_screen_task_create_fail_message">Wystąpił błąd podczas tworzenia zadania</string>
<string name="assistant_screen_task_create_success_message">Zadanie pomyślnie utworzone</string>
<string name="assistant_screen_task_delete_fail_message">Wystąpił błąd podczas usuwania zadania</string>
@ -65,7 +59,6 @@
<string name="assistant_screen_task_output_empty_text">Wynik zadanie nie jest jeszcze gotowy</string>
<string name="assistant_screen_task_types_error_state_message">Nie można pobrać typów zadań. Sprawdź swoje połączenie internetowe.</string>
<string name="assistant_screen_top_bar_title">Asystent</string>
<string name="assistant_screen_unknown_task_status_text">Nieznany</string>
<string name="assistant_task_detail_screen_input_button_title">Wejście</string>
<string name="assistant_task_detail_screen_output_button_title">Wyjście</string>
<string name="associated_account_not_found">Nie znaleziono powiązanego konta!</string>

View file

@ -39,17 +39,11 @@
<string name="app_config_proxy_port_title">Porta do Proxy</string>
<string name="app_widget_description">Mostra um widget do painel</string>
<string name="appbar_search_in">Pesquisar em %s</string>
<string name="assistant_screen_all_task_type">Tudos</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Digite algum texto</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Tem certeza de que deseja excluir esta tarefa?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Excluir tarefa</string>
<string name="assistant_screen_failed_task_text">Falhou</string>
<string name="assistant_screen_loading">A lista de tarefas está carregando, aguarde</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Nenhuma tarefa disponível. Selecione um tipo de tarefa para criar uma nova tarefa.</string>
<string name="assistant_screen_no_task_available_text">Nenhuma tarefa disponível para o tipo de tarefa %s. Você pode criar uma nova tarefa no canto inferior direito.</string>
<string name="assistant_screen_running_task_text">Em Andamento</string>
<string name="assistant_screen_scheduled_task_status_text">Agendada</string>
<string name="assistant_screen_successful_task_text">Finalizado</string>
<string name="assistant_screen_task_create_fail_message">Ocorreu um erro ao criar a tarefa</string>
<string name="assistant_screen_task_create_success_message">Tarefa criada com sucesso</string>
<string name="assistant_screen_task_delete_fail_message">Ocorreu um erro ao excluir a tarefa</string>
@ -59,7 +53,6 @@
<string name="assistant_screen_task_output_empty_text">O resultado da tarefa ainda não está pronto.</string>
<string name="assistant_screen_task_types_error_state_message">Não foi possível buscar os tipos de tarefas. Verifique sua conexão com a Internet.</string>
<string name="assistant_screen_top_bar_title">Assistente</string>
<string name="assistant_screen_unknown_task_status_text">Desconhecido</string>
<string name="assistant_task_detail_screen_input_button_title">Entrada</string>
<string name="assistant_task_detail_screen_output_button_title">Saída</string>
<string name="associated_account_not_found">Conta associada não encontrada!</string>

View file

@ -34,9 +34,6 @@
<string name="allow_resharing">Permitir repartilha</string>
<string name="app_widget_description">Mostra um \'\'widget\'\' do painel</string>
<string name="appbar_search_in">Procurar em %s</string>
<string name="assistant_screen_all_task_type">Todos</string>
<string name="assistant_screen_successful_task_text">Concluída</string>
<string name="assistant_screen_unknown_task_status_text">Desconhecido</string>
<string name="associated_account_not_found">Conta associada não encontrada!</string>
<string name="auth_access_failed">Acesso falhou: %1$s</string>
<string name="auth_account_does_not_exist">A conta ainda não foi adicionada a este dispositivo</string>

View file

@ -37,17 +37,11 @@
<string name="app_config_proxy_port_title">Port proxy </string>
<string name="app_widget_description">Arată un singur widget din panoul principal</string>
<string name="appbar_search_in">Caută in %s</string>
<string name="assistant_screen_all_task_type">Toate </string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Tastează un text</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Sigur doriți să ștergeți acest task?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Şterge task</string>
<string name="assistant_screen_failed_task_text">Eșuat</string>
<string name="assistant_screen_loading">Lista de taskuri se încarcă, așteptați</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Nici un task disponibil. Selectați un tip de task pentru a crea unul nou.</string>
<string name="assistant_screen_no_task_available_text">Niciun task disponibil pentru tipul de task %s, puteți crea un task nou din dreapta jos.</string>
<string name="assistant_screen_running_task_text">În curs de desfășurare</string>
<string name="assistant_screen_scheduled_task_status_text">Programat</string>
<string name="assistant_screen_successful_task_text">Terminat</string>
<string name="assistant_screen_task_create_fail_message">A apărut o eroare la crearea taskului</string>
<string name="assistant_screen_task_create_success_message">Task creat cu succes</string>
<string name="assistant_screen_task_delete_fail_message">A apărut o eroare la ștergerea taskului</string>
@ -56,7 +50,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Şterge task</string>
<string name="assistant_screen_task_types_error_state_message">Nu se pot prelua tipurile taskurilor, vă rugăm să verificați conexiunea la internet.</string>
<string name="assistant_screen_top_bar_title">Asistent</string>
<string name="assistant_screen_unknown_task_status_text">Necunoscut</string>
<string name="assistant_task_detail_screen_input_button_title">Intrare</string>
<string name="assistant_task_detail_screen_output_button_title">Rezultat</string>
<string name="associated_account_not_found">Contul asociat nu a fost găsit!</string>

View file

@ -40,17 +40,11 @@
<string name="app_config_proxy_port_title">Порт прокси</string>
<string name="app_widget_description">Показывает один виджет с главного экрана.</string>
<string name="appbar_search_in">Искать в %s</string>
<string name="assistant_screen_all_task_type">Все</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Наберите какой-то текст</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Вы уверены, что хотите удалить эту задачу?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Удалить задачу</string>
<string name="assistant_screen_failed_task_text">Не удалось</string>
<string name="assistant_screen_loading">Список задач загружается, пожалуйста подождите</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Нет доступных задач. Выберите тип задачи, чтобы создать новую задачу.</string>
<string name="assistant_screen_no_task_available_text">Нет доступной задачи для типа задачи %s, вы можете создать новую задачу в правом нижнем углу.</string>
<string name="assistant_screen_running_task_text">Выполянется</string>
<string name="assistant_screen_scheduled_task_status_text">Запланированное</string>
<string name="assistant_screen_successful_task_text">Выполнено</string>
<string name="assistant_screen_task_create_fail_message">Произошла ошибка при создании задачи</string>
<string name="assistant_screen_task_create_success_message">Задача успешно создана</string>
<string name="assistant_screen_task_delete_fail_message">Произошла ошибка во время удаления задачи</string>
@ -59,7 +53,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Удалить задачу</string>
<string name="assistant_screen_task_types_error_state_message">Не удается получить список задач, проверьте ваше подключение к Интернету.</string>
<string name="assistant_screen_top_bar_title">Помощник</string>
<string name="assistant_screen_unknown_task_status_text">Неизвестно</string>
<string name="assistant_task_detail_screen_input_button_title">Ввод</string>
<string name="assistant_task_detail_screen_output_button_title">Вывод</string>
<string name="associated_account_not_found">Связанный аккаунт не найден!</string>

View file

@ -35,11 +35,7 @@
<string name="app_config_base_url_title">URL de base</string>
<string name="app_config_proxy_port_title">Port serbidore intermèdiu</string>
<string name="appbar_search_in">Chirca in %s</string>
<string name="assistant_screen_all_task_type">Totu</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Peruna faina a disponimentu. Seletziona sa genia de faina pro nde creare una noa.</string>
<string name="assistant_screen_no_task_available_text">Peruna faina a disponimentu pro sa genia %s. Nde podes creare una noa dae su cugione in bassu a dereta.</string>
<string name="assistant_screen_successful_task_text">Cumpletadu</string>
<string name="assistant_screen_unknown_task_status_text">Disconnotu</string>
<string name="associated_account_not_found">Contu assotziadu no agatadu!</string>
<string name="auth_access_failed">Atzessu faddidu: %1$s</string>
<string name="auth_account_does_not_exist">Su contu non s\'agatat ancora in custu dispositivu</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Brána proxy</string>
<string name="app_widget_description">Zobrazí jeden widget z hlavného panela</string>
<string name="appbar_search_in">Hľadať v %s</string>
<string name="assistant_screen_all_task_type">Všetko</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Napíšte nejaký text</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Naozaj chcete vymazať túto úlohu?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Vymazať Úlohu</string>
<string name="assistant_screen_failed_task_text">Zlyhalo</string>
<string name="assistant_screen_loading">Zoznam úloh sa nahráva, prosím čakajte</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Žiadne úlohy nie su dostupné. Vyberte typ úlohy pre vytvorenie novej.</string>
<string name="assistant_screen_no_task_available_text">Pre typ úlohy %s nie je k dispozícii žiadna úloha, môžete vytvoriť novú úlohu vpravo dole.</string>
<string name="assistant_screen_running_task_text">Prebieha</string>
<string name="assistant_screen_scheduled_task_status_text">Naplánované</string>
<string name="assistant_screen_successful_task_text">Dokončené</string>
<string name="assistant_screen_task_create_fail_message">Pri vytváraní úlohy nastala chyba</string>
<string name="assistant_screen_task_create_success_message">Úloha bola úspešne vytvorená</string>
<string name="assistant_screen_task_delete_fail_message">Pri odstraňovaní úlohy nastala chyba</string>
@ -65,7 +59,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Vymazať Úlohu</string>
<string name="assistant_screen_task_types_error_state_message">Nie je možné načítať typy úloh, skontrolujte svoje internetové pripojenie.</string>
<string name="assistant_screen_top_bar_title">Asistent</string>
<string name="assistant_screen_unknown_task_status_text">Neznámy</string>
<string name="assistant_task_detail_screen_input_button_title">Vstup</string>
<string name="assistant_task_detail_screen_output_button_title">Výstup</string>
<string name="associated_account_not_found">Priradený účet sa nenašiel</string>

View file

@ -38,11 +38,6 @@
<string name="app_config_proxy_port_title">Vrata posredniškega strežnika</string>
<string name="app_widget_description">Pokaži en gradnik iz nadzorne plošče</string>
<string name="appbar_search_in">Poišči v %s</string>
<string name="assistant_screen_all_task_type">Vse</string>
<string name="assistant_screen_failed_task_text">Opravilo je spodletelo!</string>
<string name="assistant_screen_scheduled_task_status_text">Načrtovano</string>
<string name="assistant_screen_successful_task_text">Končano</string>
<string name="assistant_screen_unknown_task_status_text">Neznano</string>
<string name="associated_account_not_found">Povezanega računa ni mogoče najti!</string>
<string name="auth_access_failed">Dostop je spodletel: %1$s</string>
<string name="auth_account_does_not_exist">Račun še ni dodan na to napravo.</string>

View file

@ -29,9 +29,6 @@
<string name="advanced_settings">Cilësime të Avancuara</string>
<string name="allow_resharing">Lejo rindarje</string>
<string name="appbar_search_in">Kërkoni në %s</string>
<string name="assistant_screen_all_task_type">Të gjithë</string>
<string name="assistant_screen_successful_task_text">Të plotësuara</string>
<string name="assistant_screen_unknown_task_status_text">I panjohur</string>
<string name="associated_account_not_found">Llogaria e lidhur nuk u gjet!</string>
<string name="auth_access_failed">Hyrja dështoi: %1$s</string>
<string name="auth_account_does_not_exist">Kjo llogari nuk është shtuar në këtë paisje akoma</string>

View file

@ -30,16 +30,10 @@
<string name="add_to_cloud">Dodaj u %1$s</string>
<string name="advanced_settings">Napredna podešavanja</string>
<string name="appbar_search_in">Pretraga u %s</string>
<string name="assistant_screen_all_task_type">Sve</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Da li ste sigurni da želite da izbrišete ovaj zadatak?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Izbriši zadatak</string>
<string name="assistant_screen_failed_task_text">Nije uspelo</string>
<string name="assistant_screen_loading">Lista zadataka se učitava, molimo sačekajte</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Nijedan zadatak nije dostupan. Izaberite tip zadatka da biste kreirali novi zadatak.</string>
<string name="assistant_screen_no_task_available_text">Nijedan zadatak nije dostupan za %s tip zadatka, možete kreirati novi zadatak dole desno.</string>
<string name="assistant_screen_running_task_text">U toku</string>
<string name="assistant_screen_scheduled_task_status_text">Zakazano</string>
<string name="assistant_screen_successful_task_text">Završeno</string>
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Izbriši zadatak</string>
<string name="associated_account_not_found">Pridruženi nalog nije nađen!</string>
<string name="auth_access_failed">Neuspeo pristup: %1$s</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Прокси порт</string>
<string name="app_widget_description">Приказује један виџет са контролне табле</string>
<string name="appbar_search_in">Тражи у %s</string>
<string name="assistant_screen_all_task_type">Све</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Откуцајте неки текст</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Да ли сте сигурни да желите да обришете овај задатак?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Обриши задатак</string>
<string name="assistant_screen_failed_task_text">Није успело</string>
<string name="assistant_screen_loading">Листа задатака се учитава, молимо вас сачекајте</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Не постоји ниједан задатак. Да бисте креирали нови задатак, изаберите тип задатка.</string>
<string name="assistant_screen_no_task_available_text">Не постоји ниједан задатак типа %s, нови задатак можете да креирате доле десно.</string>
<string name="assistant_screen_running_task_text">Напредује</string>
<string name="assistant_screen_scheduled_task_status_text">Заказано</string>
<string name="assistant_screen_successful_task_text">Завршено</string>
<string name="assistant_screen_task_create_fail_message">Дошло је до грешке током креирања задатка</string>
<string name="assistant_screen_task_create_success_message">Задатак је успешно креиран</string>
<string name="assistant_screen_task_delete_fail_message">Дошло је до грешке током брисања задатка</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">Излаз задатка још увек није спреман.</string>
<string name="assistant_screen_task_types_error_state_message">Не могу да се преузму типови задатака, молимо вас да проверите везу са интернетом.</string>
<string name="assistant_screen_top_bar_title">Асистент</string>
<string name="assistant_screen_unknown_task_status_text">Непознато</string>
<string name="assistant_task_detail_screen_input_button_title">Унос</string>
<string name="assistant_task_detail_screen_output_button_title">Излаз</string>
<string name="associated_account_not_found">Придружени налог није нађен!</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Proxyport</string>
<string name="app_widget_description">Visa en widget från dashboard</string>
<string name="appbar_search_in">Sök i %s</string>
<string name="assistant_screen_all_task_type">Alla</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Skriv någon text</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Är du säker på att du vill ta bort den här uppgiften?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Ta bort uppgift</string>
<string name="assistant_screen_failed_task_text">Misslyckades</string>
<string name="assistant_screen_loading">Uppgiftslistan laddas, vänta</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Ingen uppgift tillgänglig. Välj en uppgiftstyp för att skapa en ny uppgift.</string>
<string name="assistant_screen_no_task_available_text">Ingen uppgift tillgänglig för uppgiftstyp %s, du kan skapa en ny uppgift längst ner till höger.</string>
<string name="assistant_screen_running_task_text">Pågående</string>
<string name="assistant_screen_scheduled_task_status_text">Schemalagd</string>
<string name="assistant_screen_successful_task_text">Slutförd</string>
<string name="assistant_screen_task_create_fail_message">Ett fel uppstod när uppgiften skapades</string>
<string name="assistant_screen_task_create_success_message">Uppgiften har skapats</string>
<string name="assistant_screen_task_delete_fail_message">Ett fel uppstod när uppgiften skulle tas bort</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">Uppgiftens resultat är inte redo än.</string>
<string name="assistant_screen_task_types_error_state_message">Det går inte att hämta uppgiftstyper, kontrollera din internetanslutning.</string>
<string name="assistant_screen_top_bar_title">Assistent</string>
<string name="assistant_screen_unknown_task_status_text">Okänd</string>
<string name="assistant_task_detail_screen_input_button_title">Inmatning</string>
<string name="assistant_task_detail_screen_output_button_title">Utdata</string>
<string name="associated_account_not_found">Associerat konto kunde inte hittas!</string>

View file

@ -34,11 +34,7 @@
<string name="allow_resharing">อนุญาตให้แชร์ซ้ำ</string>
<string name="app_widget_description">แสดงหนึ่งวิดเจ็ตจากแดชบอร์ด</string>
<string name="appbar_search_in">ค้นหาใน %s</string>
<string name="assistant_screen_all_task_type">ทั้งหมด</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">พิมพ์ข้อความของคุณ</string>
<string name="assistant_screen_running_task_text">อยู่ระหว่างการดำเนินการ</string>
<string name="assistant_screen_successful_task_text">เสร็จแล้ว</string>
<string name="assistant_screen_unknown_task_status_text">ไม่ทราบ</string>
<string name="associated_account_not_found">ไม่พบบัญชีที่เกี่ยวข้อง!</string>
<string name="auth_access_failed">การเข้าถึงล้มเหลว: %1$s</string>
<string name="auth_account_does_not_exist">บัญชียังไม่ถูกเพิ่มบนอุปกรณ์นี้</string>

View file

@ -30,8 +30,6 @@
<string name="add_to_cloud">Goşuň%1$s</string>
<string name="allow_resharing">Täzeden paýlaşmaga rugsat beriň</string>
<string name="appbar_search_in">Gözlemek%siçinde</string>
<string name="assistant_screen_successful_task_text">Tamamlanan</string>
<string name="assistant_screen_unknown_task_status_text">Näbelli</string>
<string name="associated_account_not_found">Baglanyşyk hasaby tapylmady!</string>
<string name="auth_access_failed">Şowsuz Giriş%1$s:</string>
<string name="auth_account_does_not_exist">Akaunt entek bu enjamda goşulmaýar</string>

View file

@ -38,17 +38,11 @@
<string name="app_config_proxy_port_title">Vekil sunucu bağlantı noktası</string>
<string name="app_widget_description">Panodan bir pano bileşeni görüntüler</string>
<string name="appbar_search_in">%s içinde arama</string>
<string name="assistant_screen_all_task_type">Tümü</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Bir şeyler yazın</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Bu görevi silmek istediğinize emin misiniz?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Görevi sil</string>
<string name="assistant_screen_failed_task_text">Tamamlanamadı</string>
<string name="assistant_screen_loading">Lütfen görev listesi yüklenirken bekleyin</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Herhangi bir görev yok.Yeni bir görev eklemek için bir görev türü seçin.</string>
<string name="assistant_screen_no_task_available_text">%s türünde bir görev yok. Sağ alttan yeni bir görev ekleyebilirsiniz.</string>
<string name="assistant_screen_running_task_text">Yapılıyor</string>
<string name="assistant_screen_scheduled_task_status_text">Zamanlanmış</string>
<string name="assistant_screen_successful_task_text">Tamamlanmış</string>
<string name="assistant_screen_task_create_fail_message">Görev oluşturulurken bir sorun çıktı</string>
<string name="assistant_screen_task_create_success_message">Görev oluşturuldu</string>
<string name="assistant_screen_task_delete_fail_message">Görev silinirken bir sorun çıktı</string>
@ -57,7 +51,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Görevi sil</string>
<string name="assistant_screen_task_types_error_state_message">Görev türleri alınamadı. Lütfen İnternet bağlantınızı denetleyin.</string>
<string name="assistant_screen_top_bar_title">Yardımcı</string>
<string name="assistant_screen_unknown_task_status_text">Bilinmiyor</string>
<string name="assistant_task_detail_screen_input_button_title">Giriş</string>
<string name="assistant_task_detail_screen_output_button_title">Çıkış</string>
<string name="associated_account_not_found">İlişkili hesap bulunamadı!</string>

View file

@ -38,17 +38,11 @@
<string name="app_config_proxy_port_title">ۋاكالەتچى ئېغىز</string>
<string name="app_widget_description">باشقۇرۇش تاختىسىدىكى بىر كىچىك قورالنى كۆرسىتىدۇ</string>
<string name="appbar_search_in">% S دىن ئىزدەڭ</string>
<string name="assistant_screen_all_task_type">ھەممىسى</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">بەزى تېكىستلەرنى كىرگۈزۈڭ</string>
<string name="assistant_screen_delete_task_alert_dialog_description">بۇ ۋەزىپىنى ئۆچۈرمەكچىمۇ؟</string>
<string name="assistant_screen_delete_task_alert_dialog_title">ۋەزىپىنى ئۆچۈرۈڭ</string>
<string name="assistant_screen_failed_task_text">مەغلۇب بولدى</string>
<string name="assistant_screen_loading">ۋەزىپە تىزىملىكى يۈكلىنىۋاتىدۇ ، ساقلاپ تۇرۇڭ</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">ھېچقانداق ۋەزىپە يوق. يېڭى ۋەزىپە يارىتىش ئۈچۈن ۋەزىپە تۈرىنى تاللاڭ.</string>
<string name="assistant_screen_no_task_available_text">% S ۋەزىپە تىپىغا ماس كېلىدىغان ۋەزىپە يوق ، ئاستىدىن ئوڭدىن يېڭى ۋەزىپە قۇرالايسىز.</string>
<string name="assistant_screen_running_task_text">ئىلگىرىلەۋاتىدۇ</string>
<string name="assistant_screen_scheduled_task_status_text">پىلانلانغان</string>
<string name="assistant_screen_successful_task_text">تاماملاندى</string>
<string name="assistant_screen_task_create_fail_message">ۋەزىپە قۇرغاندا خاتالىق كۆرۈلدى</string>
<string name="assistant_screen_task_create_success_message">ۋەزىپە مۇۋەپپەقىيەتلىك قۇرۇلدى</string>
<string name="assistant_screen_task_delete_fail_message">ۋەزىپىنى ئۆچۈرگەندە خاتالىق كۆرۈلدى</string>
@ -57,7 +51,6 @@
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">ۋەزىپىنى ئۆچۈرۈڭ</string>
<string name="assistant_screen_task_types_error_state_message">ۋەزىپە تۈرلىرىنى ئېلىپ كېتەلمىدىڭىز ، تور ئۇلىنىشىڭىزنى تەكشۈرۈپ بېقىڭ.</string>
<string name="assistant_screen_top_bar_title">ياردەمچى</string>
<string name="assistant_screen_unknown_task_status_text">نامەلۇم</string>
<string name="assistant_task_detail_screen_input_button_title">كىرگۈزۈش</string>
<string name="assistant_task_detail_screen_output_button_title">چىقىرىش</string>
<string name="associated_account_not_found">بىرلەشمە ھېسابات تېپىلمىدى!</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">Порт проксі-сервера</string>
<string name="app_widget_description">Показувати один віджет з панелі віджетів</string>
<string name="appbar_search_in">Пошук у %s</string>
<string name="assistant_screen_all_task_type">Всі</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Вставте будь-який текст</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Дійсно вилучити це завдання?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Вилучити завдання</string>
<string name="assistant_screen_failed_task_text">Не вдалося</string>
<string name="assistant_screen_loading">Отримання переліку завдань, зачекайте</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">Відсутні завдання. Виберіть вид завдань для додавання нового завдання</string>
<string name="assistant_screen_no_task_available_text">Відсутні завдання для завдань типу %s. Ви можете додати нове завдання праворуч внизу. </string>
<string name="assistant_screen_running_task_text">В процесі</string>
<string name="assistant_screen_scheduled_task_status_text">Заплановано</string>
<string name="assistant_screen_successful_task_text">Виконано</string>
<string name="assistant_screen_task_create_fail_message">Помилка під час додавання завдання</string>
<string name="assistant_screen_task_create_success_message">Успішно додано завдання</string>
<string name="assistant_screen_task_delete_fail_message">Помилка під час вилучення завдання</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">Поки неможливо показати завдання</string>
<string name="assistant_screen_task_types_error_state_message">Не вдалося отримати типи завдань. Перевірте з\'єднання з мережею.</string>
<string name="assistant_screen_top_bar_title">Помічник</string>
<string name="assistant_screen_unknown_task_status_text">Невідомо</string>
<string name="assistant_task_detail_screen_input_button_title">Введення</string>
<string name="assistant_task_detail_screen_output_button_title">Виведення</string>
<string name="associated_account_not_found">Пов\'язаний обліковий запис не знайдено!</string>

View file

@ -33,10 +33,6 @@
<string name="allow_resharing">Cho phép chia sẻ lại</string>
<string name="app_widget_description">Hiện thị lối tắt từ dashboard</string>
<string name="appbar_search_in">Tìm kiếm trong %s</string>
<string name="assistant_screen_all_task_type">Tất cả</string>
<string name="assistant_screen_scheduled_task_status_text">Lên kế hoạch</string>
<string name="assistant_screen_successful_task_text">Hoàn thành</string>
<string name="assistant_screen_unknown_task_status_text">Không xác định</string>
<string name="associated_account_not_found">Không tìm thấy tài khoản được liên kết!</string>
<string name="auth_access_failed">Lỗi truy cập: %1$s</string>
<string name="auth_account_does_not_exist">Tài khoản chưa được thêm vào thiết bị này.</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">代理端口</string>
<string name="app_widget_description">显示仪表盘中的一个小部件</string>
<string name="appbar_search_in">在 %s 中搜索</string>
<string name="assistant_screen_all_task_type">所有</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">输入一些文字</string>
<string name="assistant_screen_delete_task_alert_dialog_description">您确定要删除这些任务吗?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">删除任务</string>
<string name="assistant_screen_failed_task_text">失败了</string>
<string name="assistant_screen_loading">任务列表加载中,请稍等</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">没有可用任务。选择任务类型以创建新任务。</string>
<string name="assistant_screen_no_task_available_text">%s任务类型没有可用任务你可以从右下角创建新任务。</string>
<string name="assistant_screen_running_task_text">进行中</string>
<string name="assistant_screen_scheduled_task_status_text">已排程</string>
<string name="assistant_screen_successful_task_text">已完成</string>
<string name="assistant_screen_task_create_fail_message">创建任务时发生错误</string>
<string name="assistant_screen_task_create_success_message">任务已创建</string>
<string name="assistant_screen_task_delete_fail_message">删除任务时发生错误</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">任务输出尚未就绪。</string>
<string name="assistant_screen_task_types_error_state_message">无法获取任务类型,请检查您的网络连接。</string>
<string name="assistant_screen_top_bar_title">助手</string>
<string name="assistant_screen_unknown_task_status_text">未知</string>
<string name="assistant_task_detail_screen_input_button_title">输入</string>
<string name="assistant_task_detail_screen_output_button_title">输出结果</string>
<string name="associated_account_not_found">相关账号未找到!</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">proxy代理伺服器連接埠</string>
<string name="app_widget_description">顯示儀表板中的一個小部件</string>
<string name="appbar_search_in">%s內搜尋</string>
<string name="assistant_screen_all_task_type">全部</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">輸入一些文字</string>
<string name="assistant_screen_delete_task_alert_dialog_description">您確定要刪除此工作項目嗎?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">刪除任務</string>
<string name="assistant_screen_failed_task_text">失敗了</string>
<string name="assistant_screen_loading">任務清單加載中,請稍候</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">無可用的工作項目。選取工作項目類型以建立新工作項目。</string>
<string name="assistant_screen_no_task_available_text">沒有可用於 %s 任務項目類型的任務項目,您可以從右下角建立新任務項目。</string>
<string name="assistant_screen_running_task_text">進行中</string>
<string name="assistant_screen_scheduled_task_status_text">預定</string>
<string name="assistant_screen_successful_task_text">已完成</string>
<string name="assistant_screen_task_create_fail_message">建立任務項目時發生錯誤</string>
<string name="assistant_screen_task_create_success_message">已成功建立任務項目</string>
<string name="assistant_screen_task_delete_fail_message">刪除任務時發生了錯誤</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">任務輸出尚未就緒。</string>
<string name="assistant_screen_task_types_error_state_message">無法擷取任務類型,請檢查您的網際網路連線。</string>
<string name="assistant_screen_top_bar_title">助手</string>
<string name="assistant_screen_unknown_task_status_text">不詳</string>
<string name="assistant_task_detail_screen_input_button_title">輸入</string>
<string name="assistant_task_detail_screen_output_button_title">輸出</string>
<string name="associated_account_not_found">無法找到連結帳戶</string>

View file

@ -46,17 +46,11 @@
<string name="app_config_proxy_port_title">proxy代理伺服器連接埠</string>
<string name="app_widget_description">顯示儀表板中的一個小工具</string>
<string name="appbar_search_in">搜尋 %s</string>
<string name="assistant_screen_all_task_type">全部</string>
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">輸入一些文字</string>
<string name="assistant_screen_delete_task_alert_dialog_description">您確定要刪除此工作項目嗎?</string>
<string name="assistant_screen_delete_task_alert_dialog_title">刪除工作項目</string>
<string name="assistant_screen_failed_task_text">失敗</string>
<string name="assistant_screen_loading">未載入工作項目清單,請稍候</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">無可用的工作項目。選取工作項目類型以建立新工作項目。</string>
<string name="assistant_screen_no_task_available_text">沒有可用於 %s 工作項目類型的工作項目,您可以從右下角建立新工作項目。</string>
<string name="assistant_screen_running_task_text">進行中</string>
<string name="assistant_screen_scheduled_task_status_text">已安排</string>
<string name="assistant_screen_successful_task_text">已完成</string>
<string name="assistant_screen_task_create_fail_message">建立工作項目時發生錯誤</string>
<string name="assistant_screen_task_create_success_message">已成功建立工作項目</string>
<string name="assistant_screen_task_delete_fail_message">刪除工作項目時發生錯誤</string>
@ -66,7 +60,6 @@
<string name="assistant_screen_task_output_empty_text">任務輸出尚未就緒。</string>
<string name="assistant_screen_task_types_error_state_message">無法擷取工作項目類型,請檢查您的網際網路連線。</string>
<string name="assistant_screen_top_bar_title">助理</string>
<string name="assistant_screen_unknown_task_status_text">未知</string>
<string name="assistant_task_detail_screen_input_button_title">輸入</string>
<string name="assistant_task_detail_screen_output_button_title">輸出</string>
<string name="associated_account_not_found">找不到相關的帳號!</string>

View file

@ -76,4 +76,6 @@
<color name="appbar">@android:color/white</color>
<color name="fontAppbar">#666666</color>
<color name="fontSecondaryAppbar">#A5A5A5</color>
<color name="actionbar_color">#F7F9FF</color>
</resources>

View file

@ -51,10 +51,10 @@
<string name="assistant_screen_top_bar_title">Assistant</string>
<string name="assistant_screen_loading">Task List are loading, please wait</string>
<string name="assistant_screen_task_output_empty_text">The task output is not ready yet.</string>
<string name="assistant_screen_no_task_available_for_all_task_filter_text">No task available. Select a task type to create a new task.</string>
<string name="assistant_screen_no_task_available_text">No task available for %s task type, you can create a new task from bottom right.</string>
<string name="assistant_screen_delete_task_alert_dialog_title">Delete Task</string>
<string name="assistant_screen_delete_task_alert_dialog_description">Are you sure you want to delete this task?</string>
<string name="assistant_screen_add_task_alert_dialog_title">Add new task</string>
<string name="assistant_screen_task_more_actions_bottom_sheet_delete_action">Delete Task</string>
@ -66,17 +66,9 @@
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Type some text</string>
<string name="assistant_screen_unknown_task_status_text">Unknown</string>
<string name="assistant_screen_scheduled_task_status_text">Scheduled</string>
<string name="assistant_screen_successful_task_text">Completed</string>
<string name="assistant_screen_failed_task_text">Failed</string>
<string name="assistant_screen_running_task_text">In Progress</string>
<string name="assistant_task_detail_screen_input_button_title">Input</string>
<string name="assistant_task_detail_screen_output_button_title">Output</string>
<string name="assistant_screen_all_task_type">All</string>
<string name="drawer_item_assistant">Assistant</string>
<string name="drawer_item_all_files">All files</string>
<string name="drawer_item_personal_files">Personal files</string>
@ -134,6 +126,21 @@
<item quantity="other">%d minutes</item>
</plurals>
<plurals name="time_seconds_ago">
<item quantity="one">1 second ago</item>
<item quantity="other">%d seconds ago</item>
</plurals>
<plurals name="time_minutes_ago">
<item quantity="one">1 minute ago</item>
<item quantity="other">%d minutes ago</item>
</plurals>
<plurals name="time_hours_ago">
<item quantity="one">1 hour ago</item>
<item quantity="other">%d hours ago</item>
</plurals>
<string name="recommend_subject">Try %1$s on your device!</string>
<string name="recommend_text">I want to invite you to use %1$s on your device.\nDownload here: %2$s</string>
<string name="recommend_urls">%1$s or %2$s</string>
@ -190,6 +197,7 @@
<string name="common_yes">Yes</string>
<string name="common_no">No</string>
<string name="common_ok">OK</string>
<string name="common_now">Now</string>
<string name="common_cancel_sync">Cancel sync</string>
<string name="common_cancel">Cancel</string>
<string name="common_back">Back</string>

View file

@ -10,7 +10,7 @@
*/
buildscript {
ext {
androidLibraryVersion ="4a95888afc472369e85fccae3d3573ff9e36fb50"
androidLibraryVersion ="f174c1ee78"
androidPluginVersion = '8.7.3'
androidxMediaVersion = '1.4.1'
androidxTestVersion = "1.6.1"

View file

@ -7934,6 +7934,14 @@
<sha256 value="486009759cf8c51c48fa7869d61a129240172e94edfea721cab5c11154c3b9de" origin="Generated by Gradle" reason="Artifact is not signed"/>
</artifact>
</component>
<component group="com.github.nextcloud" name="android-library" version="f174c1ee78">
<artifact name="android-library-f174c1ee78.aar">
<sha256 value="8f62a8bb0b9699dfbfcdf58493d0386e6b91113e3ba2157421249ab3cbc55d8f" origin="Generated by Gradle" reason="Artifact is not signed"/>
</artifact>
<artifact name="android-library-f174c1ee78.module">
<sha256 value="7a2189a2b81f8210d6431a7cfc2911be36a9cf42d030101106d5577a099c28d9" origin="Generated by Gradle" reason="Artifact is not signed"/>
</artifact>
</component>
<component group="com.github.nextcloud" name="android-library" version="f6420365513febcb22f143dcaeed07a9d9d550d5">
<artifact name="android-library-f6420365513febcb22f143dcaeed07a9d9d550d5.aar">
<sha256 value="57ab4fd7c922875a7e0b5feac20aa27ab5df0fd3b4e042f92ed727c0b6316e81" origin="Generated by Gradle" reason="Artifact is not signed"/>