Compare commits
7 Commits
v171901009
...
v171901013
Author | SHA1 | Date | |
---|---|---|---|
a0aead6491 | |||
722b6cc06d | |||
6d7c4b40f6 | |||
f538ed39fc | |||
65821492ad | |||
6ede718a9f | |||
f1757937a4 |
@ -67,7 +67,7 @@ android {
|
||||
buildTypes {
|
||||
release {
|
||||
minifyEnabled true
|
||||
shrinkResources true
|
||||
shrinkResources false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'),
|
||||
'proguard-rules.pro'
|
||||
}
|
||||
@ -112,7 +112,7 @@ dependencies {
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
|
||||
|
||||
//multidex
|
||||
implementation 'androidx.multidex:multidex:2.0.0'
|
||||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
|
||||
// About
|
||||
implementation('com.mikepenz:aboutlibraries:6.2.0@aar') {
|
||||
|
@ -227,7 +227,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
|
||||
recyclerView: RecyclerView,
|
||||
viewHolder: RecyclerView.ViewHolder
|
||||
): Int =
|
||||
if (elementsShown != UNREAD_SHOWN) {
|
||||
if (elementsShown != UNREAD_SHOWN && elementsShown != READ_SHOWN) {
|
||||
0
|
||||
} else {
|
||||
super.getSwipeDirs(
|
||||
@ -247,14 +247,18 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
|
||||
val i = items.elementAtOrNull(position)
|
||||
|
||||
if (i != null) {
|
||||
val adapter = recyclerView.adapter
|
||||
val adapter = recyclerView.adapter as ItemsAdapter<*>
|
||||
|
||||
when (adapter) {
|
||||
is ItemCardAdapter -> adapter.removeItemAtIndex(position)
|
||||
is ItemListAdapter -> adapter.removeItemAtIndex(position)
|
||||
val wasItemUnread = adapter.unreadItemStatusAtIndex(position)
|
||||
|
||||
adapter.handleItemAtIndex(position)
|
||||
|
||||
if (wasItemUnread) {
|
||||
badgeNew--
|
||||
} else {
|
||||
badgeNew++
|
||||
}
|
||||
|
||||
badgeNew--
|
||||
reloadBadgeContent()
|
||||
|
||||
val tagHashes = i.tags.tags.split(",").map { it.longHash() }
|
||||
@ -1348,12 +1352,7 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
|
||||
).show()
|
||||
tabNewBadge.removeBadge()
|
||||
|
||||
|
||||
tagsBadge = itemsByTag.map {
|
||||
(it.key to ((tagsBadge[it.key] ?: it.value) - it.value))
|
||||
}.toMap()
|
||||
|
||||
reloadTagsBadges()
|
||||
handleDrawerItems()
|
||||
|
||||
getElementsAccordingToTab()
|
||||
} else {
|
||||
|
@ -41,7 +41,7 @@ abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> : RecyclerView.Adapte
|
||||
updateItems(items)
|
||||
}
|
||||
|
||||
private fun doUnmark(i: Item, position: Int) {
|
||||
private fun unmarkSnackbar(i: Item, position: Int) {
|
||||
val s = Snackbar
|
||||
.make(
|
||||
app.findViewById(R.id.coordLayout),
|
||||
@ -71,12 +71,11 @@ abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> : RecyclerView.Adapte
|
||||
}
|
||||
notifyItemRemoved(position)
|
||||
updateItems(items)
|
||||
doUnmark(i, position)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
thread {
|
||||
db.actionsDao().deleteReadActionForArticle(i.id)
|
||||
db.actionsDao().insertAllActions(ActionEntity(i.id, false, true, false, false))
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -87,7 +86,64 @@ abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> : RecyclerView.Adapte
|
||||
s.show()
|
||||
}
|
||||
|
||||
fun removeItemAtIndex(position: Int) {
|
||||
private fun markSnackbar(i: Item, position: Int) {
|
||||
val s = Snackbar
|
||||
.make(
|
||||
app.findViewById(R.id.coordLayout),
|
||||
R.string.marked_as_unread,
|
||||
Snackbar.LENGTH_LONG
|
||||
)
|
||||
.setAction(R.string.undo_string) {
|
||||
items.add(position, i)
|
||||
thread {
|
||||
db.itemsDao().delete(i.toEntity())
|
||||
}
|
||||
notifyItemInserted(position)
|
||||
updateItems(items)
|
||||
|
||||
if (app.isNetworkAccessible(null)) {
|
||||
api.markItem(i.id).enqueue(object : Callback<SuccessResponse> {
|
||||
override fun onResponse(
|
||||
call: Call<SuccessResponse>,
|
||||
response: Response<SuccessResponse>
|
||||
) {
|
||||
}
|
||||
|
||||
override fun onFailure(call: Call<SuccessResponse>, t: Throwable) {
|
||||
items.remove(i)
|
||||
thread {
|
||||
db.itemsDao().insertAllItems(i.toEntity())
|
||||
}
|
||||
notifyItemRemoved(position)
|
||||
updateItems(items)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
thread {
|
||||
db.actionsDao().insertAllActions(ActionEntity(i.id, true, false, false, false))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val view = s.view
|
||||
val tv: TextView = view.findViewById(com.google.android.material.R.id.snackbar_text)
|
||||
tv.setTextColor(Color.WHITE)
|
||||
s.show()
|
||||
}
|
||||
|
||||
fun handleItemAtIndex(position: Int) {
|
||||
if (unreadItemStatusAtIndex(position)) {
|
||||
readItemAtIndex(position)
|
||||
} else {
|
||||
unreadItemAtIndex(position)
|
||||
}
|
||||
}
|
||||
|
||||
fun unreadItemStatusAtIndex(position: Int): Boolean {
|
||||
return items[position].unread
|
||||
}
|
||||
|
||||
private fun readItemAtIndex(position: Int) {
|
||||
val i = items[position]
|
||||
items.remove(i)
|
||||
notifyItemRemoved(position)
|
||||
@ -105,7 +161,7 @@ abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> : RecyclerView.Adapte
|
||||
) {
|
||||
if (!response.succeeded() && debugReadingItems) {
|
||||
val message =
|
||||
"message: ${response.message()} " +
|
||||
"MARK message: ${response.message()} " +
|
||||
"response isSuccess: ${response.isSuccessful} " +
|
||||
"response code: ${response.code()} " +
|
||||
"response message: ${response.message()} " +
|
||||
@ -116,7 +172,7 @@ abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> : RecyclerView.Adapte
|
||||
Toast.makeText(app.baseContext, message, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
doUnmark(i, position)
|
||||
unmarkSnackbar(i, position)
|
||||
}
|
||||
|
||||
override fun onFailure(call: Call<SuccessResponse>, t: Throwable) {
|
||||
@ -129,7 +185,7 @@ abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> : RecyclerView.Adapte
|
||||
app.getString(R.string.cant_mark_read),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
items.add(i)
|
||||
items.add(position, i)
|
||||
notifyItemInserted(position)
|
||||
updateItems(items)
|
||||
|
||||
@ -141,7 +197,64 @@ abstract class ItemsAdapter<VH : RecyclerView.ViewHolder?> : RecyclerView.Adapte
|
||||
} else {
|
||||
thread {
|
||||
db.actionsDao().insertAllActions(ActionEntity(i.id, true, false, false, false))
|
||||
doUnmark(i, position)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun unreadItemAtIndex(position: Int) {
|
||||
val i = items[position]
|
||||
items.remove(i)
|
||||
notifyItemRemoved(position)
|
||||
updateItems(items)
|
||||
|
||||
thread {
|
||||
db.itemsDao().insertAllItems(i.toEntity())
|
||||
}
|
||||
|
||||
if (app.isNetworkAccessible(null)) {
|
||||
api.unmarkItem(i.id).enqueue(object : Callback<SuccessResponse> {
|
||||
override fun onResponse(
|
||||
call: Call<SuccessResponse>,
|
||||
response: Response<SuccessResponse>
|
||||
) {
|
||||
if (!response.succeeded() && debugReadingItems) {
|
||||
val message =
|
||||
"UNMARK message: ${response.message()} " +
|
||||
"response isSuccess: ${response.isSuccessful} " +
|
||||
"response code: ${response.code()} " +
|
||||
"response message: ${response.message()} " +
|
||||
"response errorBody: ${response.errorBody()?.string()} " +
|
||||
"body success: ${response.body()?.success} " +
|
||||
"body isSuccess: ${response.body()?.isSuccess}"
|
||||
ACRA.getErrorReporter().maybeHandleSilentException(Exception(message), app)
|
||||
Toast.makeText(app.baseContext, message, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
|
||||
markSnackbar(i, position)
|
||||
}
|
||||
|
||||
override fun onFailure(call: Call<SuccessResponse>, t: Throwable) {
|
||||
if (debugReadingItems) {
|
||||
ACRA.getErrorReporter().maybeHandleSilentException(t, app)
|
||||
Toast.makeText(app.baseContext, t.message, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
Toast.makeText(
|
||||
app,
|
||||
app.getString(R.string.cant_mark_unread),
|
||||
Toast.LENGTH_SHORT
|
||||
).show()
|
||||
items.add(i)
|
||||
notifyItemInserted(position)
|
||||
updateItems(items)
|
||||
|
||||
thread {
|
||||
db.itemsDao().delete(i.toEntity())
|
||||
}
|
||||
}
|
||||
})
|
||||
} else {
|
||||
thread {
|
||||
db.actionsDao().insertAllActions(ActionEntity(i.id, false, true, false, false))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Preferits"</string>
|
||||
<string name="action_about">"Quant a"</string>
|
||||
<string name="marked_as_read">"Element llegit"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"Desfés"</string>
|
||||
<string name="addStringNoUrl">"Inicieu la sessió per afegir fonts."</string>
|
||||
<string name="cant_get_sources">"No es pot obtenir la llista de fonts."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">L\'alçada de les targetes serà fixa</string>
|
||||
<string name="source_code">Codi font</string>
|
||||
<string name="cant_mark_read">No es pot marcar l\'article com a llegit</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">S\'ha produït un error en carregar les etiquetes</string>
|
||||
<string name="drawer_error_loading_sources">S\'ha produït un error en carregar les fonts</string>
|
||||
<string name="drawer_item_filters">Filtres</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Favoriten"</string>
|
||||
<string name="action_about">"Über"</string>
|
||||
<string name="marked_as_read">"Artikel gelesen"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"Rückgängig"</string>
|
||||
<string name="addStringNoUrl">"Melde dich an um Quellen hinzuzufügen."</string>
|
||||
<string name="cant_get_sources">"Quellen können nicht abgerufen werden."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">Kartenhöhe ist fix</string>
|
||||
<string name="source_code">Quellcode</string>
|
||||
<string name="cant_mark_read">Artikel kann nicht als gelesen markiert werden</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">Fehler beim Laden der Tags…</string>
|
||||
<string name="drawer_error_loading_sources">Fehler beim Laden der Quellen…</string>
|
||||
<string name="drawer_item_filters">Filter</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Favoritos"</string>
|
||||
<string name="action_about">"Acerca de"</string>
|
||||
<string name="marked_as_read">"Artículo leído"</string>
|
||||
<string name="marked_as_unread">"Artículo no leído"</string>
|
||||
<string name="undo_string">"Deshacer"</string>
|
||||
<string name="addStringNoUrl">"Iniciar sesión para añadir fuentes."</string>
|
||||
<string name="cant_get_sources">"No se puede obtener la lista de fuentes."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">Se fijará la altura de la tarjeta</string>
|
||||
<string name="source_code">Código fuente</string>
|
||||
<string name="cant_mark_read">No puede marcar el artículo como leído</string>
|
||||
<string name="cant_mark_unread">No se puede marcar el artículo como no leído</string>
|
||||
<string name="drawer_error_loading_tags">Error al cargar etiquetas…</string>
|
||||
<string name="drawer_error_loading_sources">Error al cargar fuentes…</string>
|
||||
<string name="drawer_item_filters">Filtros</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Favoris"</string>
|
||||
<string name="action_about">"À propos"</string>
|
||||
<string name="marked_as_read">"Marqué comme lu"</string>
|
||||
<string name="marked_as_unread">"Marqué comme non lu"</string>
|
||||
<string name="undo_string">"Annuler"</string>
|
||||
<string name="addStringNoUrl">"Identifiez-vous pour ajouter une source."</string>
|
||||
<string name="cant_get_sources">"Impossible de récupérer la liste des sources"</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">La taille de la carte sera fixe</string>
|
||||
<string name="source_code">Code source</string>
|
||||
<string name="cant_mark_read">Impossible de marquer l\'article comme lu</string>
|
||||
<string name="cant_mark_unread">Impossible de marquer l\'article comme non lu</string>
|
||||
<string name="drawer_error_loading_tags">Erreur lors du chargement des tags…</string>
|
||||
<string name="drawer_error_loading_sources">Erreur lors du chargement des sources…</string>
|
||||
<string name="drawer_item_filters">Filtres</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Favoritos"</string>
|
||||
<string name="action_about">"Acerca de"</string>
|
||||
<string name="marked_as_read">"Elemento lido"</string>
|
||||
<string name="marked_as_unread">"Elemento non lido"</string>
|
||||
<string name="undo_string">"Desfacer"</string>
|
||||
<string name="addStringNoUrl">"Accede pra engadir fontes."</string>
|
||||
<string name="cant_get_sources">"Non se pode obter a lista de fontes."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">A altura das tarxetas será fixa</string>
|
||||
<string name="source_code">Código fonte</string>
|
||||
<string name="cant_mark_read">Non se pode marcar o artigo como lido</string>
|
||||
<string name="cant_mark_unread">Non se pode marcar o artigo como non lido</string>
|
||||
<string name="drawer_error_loading_tags">Produciuse un erro ao cargar as etiquetas…</string>
|
||||
<string name="drawer_error_loading_sources">Produciuse un erro ao cargar as fontes…</string>
|
||||
<string name="drawer_item_filters">Filtros</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Favorit"</string>
|
||||
<string name="action_about">"Tentang"</string>
|
||||
<string name="marked_as_read">"Membaca item"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"Urung"</string>
|
||||
<string name="addStringNoUrl">"Masuk untuk menambah sumber."</string>
|
||||
<string name="cant_get_sources">"Tidak bisa mendapatkan daftar sumber."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">Ukuran kartu akan tetap</string>
|
||||
<string name="source_code">Kode sumber</string>
|
||||
<string name="cant_mark_read">Tidak dapat menandai artikel sebagai telah dibaca</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">Kesalahan saat memuat tag…</string>
|
||||
<string name="drawer_error_loading_sources">Kesalahan saat memuat sumber…</string>
|
||||
<string name="drawer_item_filters">Filter</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Preferiti"</string>
|
||||
<string name="action_about">"Informazioni"</string>
|
||||
<string name="marked_as_read">"Articolo letto"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"Annulla"</string>
|
||||
<string name="addStringNoUrl">"Autenticati per aggiungere fonti."</string>
|
||||
<string name="cant_get_sources">"Can't get sources list."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">Card height will be fixed</string>
|
||||
<string name="source_code">Codice sorgente</string>
|
||||
<string name="cant_mark_read">Impossibile contrassegnare l\'articolo come già letto</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">Errore nel caricamento dei tag…</string>
|
||||
<string name="drawer_error_loading_sources">Errore nel caricamento delle fonti…</string>
|
||||
<string name="drawer_item_filters">Filtri</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"즐겨찾기"</string>
|
||||
<string name="action_about">"정보"</string>
|
||||
<string name="marked_as_read">"항목 읽기"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"실행 취소"</string>
|
||||
<string name="addStringNoUrl">"로그인 소스를 추가 해야 합니다."</string>
|
||||
<string name="cant_get_sources">"소스 리스트를 얻을 수 없습니다."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">Card height will be fixed</string>
|
||||
<string name="source_code">Source code</string>
|
||||
<string name="cant_mark_read">Can\'t mark article as read</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">Error loading tags…</string>
|
||||
<string name="drawer_error_loading_sources">Error loading sources…</string>
|
||||
<string name="drawer_item_filters">Filters</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Favorieten"</string>
|
||||
<string name="action_about">"Over"</string>
|
||||
<string name="marked_as_read">"Artikel gelezen"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"Ongedaan maken"</string>
|
||||
<string name="addStringNoUrl">"Login om bronnen toe te voegen"</string>
|
||||
<string name="cant_get_sources">"Kan de lijst met bronnen niet ophalen"</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">Vaste hoogte</string>
|
||||
<string name="source_code">Broncode</string>
|
||||
<string name="cant_mark_read">Impossible de marquer l\'article comme lu</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">Fout bij het laden van tags…</string>
|
||||
<string name="drawer_error_loading_sources">Fout bij laden van bronnen…</string>
|
||||
<string name="drawer_item_filters">Filters</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Favoritos"</string>
|
||||
<string name="action_about">"Sobre"</string>
|
||||
<string name="marked_as_read">"Item lido"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"Desfazer"</string>
|
||||
<string name="addStringNoUrl">"Faça login para adicionar fontes."</string>
|
||||
<string name="cant_get_sources">"Não é possível obter a lista de fontes."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">Cards com altura de tamanho fixo</string>
|
||||
<string name="source_code">Código fonte</string>
|
||||
<string name="cant_mark_read">Não é possível marcar o artigo como lido</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">Erro ao carregar as tags…</string>
|
||||
<string name="drawer_error_loading_sources">Erro ao carregar as fontes…</string>
|
||||
<string name="drawer_item_filters">Filtros</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Favoritos"</string>
|
||||
<string name="action_about">"Sobre"</string>
|
||||
<string name="marked_as_read">"Item lido"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"Desfazer"</string>
|
||||
<string name="addStringNoUrl">"Logar para adicionar fontes."</string>
|
||||
<string name="cant_get_sources">"Não é possível obter a lista de fontes."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">Altura do cartão será corrigida</string>
|
||||
<string name="source_code">Código fonte</string>
|
||||
<string name="cant_mark_read">Não pode marcar o artigo como lido</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">Erro ao carregar etiquetas…</string>
|
||||
<string name="drawer_error_loading_sources">Erro ao carregar fontes…</string>
|
||||
<string name="drawer_item_filters">Filtros</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"Favoriler"</string>
|
||||
<string name="action_about">"Hakkında"</string>
|
||||
<string name="marked_as_read">"Öğeleri oku"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"Geri al"</string>
|
||||
<string name="addStringNoUrl">"Kaynakları eklemek için giriş yapın."</string>
|
||||
<string name="cant_get_sources">"Kaynakları listesi alınamıyor."</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">Kart yüksekliği sabit olacak</string>
|
||||
<string name="source_code">Kaynak kodu</string>
|
||||
<string name="cant_mark_read">Makale favori olarak işaretlenemez</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">Etiketler yükleme hatası…</string>
|
||||
<string name="drawer_error_loading_sources">Kaynaklar yüklenirken hata oluştu…</string>
|
||||
<string name="drawer_item_filters">Filtreler</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"收藏夹"</string>
|
||||
<string name="action_about">"关于我们"</string>
|
||||
<string name="marked_as_read">"已读"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"撤销"</string>
|
||||
<string name="addStringNoUrl">"登录以添加数据源。"</string>
|
||||
<string name="cant_get_sources">"无法获取数据列表。"</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">卡片高度将被固定</string>
|
||||
<string name="source_code">源代码</string>
|
||||
<string name="cant_mark_read">无法将文章标记为已读</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">加载标记时出错..。</string>
|
||||
<string name="drawer_error_loading_sources">加载源时出错..。</string>
|
||||
<string name="drawer_item_filters">搜索条件</string>
|
||||
|
@ -36,6 +36,7 @@
|
||||
<string name="tab_favs">"收藏夹"</string>
|
||||
<string name="action_about">"关于我们"</string>
|
||||
<string name="marked_as_read">"已读"</string>
|
||||
<string name="marked_as_unread">"未讀項目"</string>
|
||||
<string name="undo_string">"撤销"</string>
|
||||
<string name="addStringNoUrl">"登录以添加数据源。"</string>
|
||||
<string name="cant_get_sources">"无法获取数据列表。"</string>
|
||||
@ -83,6 +84,7 @@
|
||||
<string name="card_height_off">卡片高度将被固定</string>
|
||||
<string name="source_code">源代码</string>
|
||||
<string name="cant_mark_read">无法将文章标记为已读</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">加载标记时出错..。</string>
|
||||
<string name="drawer_error_loading_sources">加载源时出错..。</string>
|
||||
<string name="drawer_item_filters">搜索条件</string>
|
||||
|
@ -34,6 +34,7 @@
|
||||
<string name="tab_favs">"Favorites"</string>
|
||||
<string name="action_about">"About"</string>
|
||||
<string name="marked_as_read">"Item read"</string>
|
||||
<string name="marked_as_unread">"Item unread"</string>
|
||||
<string name="undo_string">"Undo"</string>
|
||||
<string name="addStringNoUrl">"Log in to add sources."</string>
|
||||
<string name="cant_get_sources">"Can't get sources list."</string>
|
||||
@ -82,6 +83,7 @@
|
||||
<string name="card_height_off">Card height will be fixed</string>
|
||||
<string name="source_code">Source code</string>
|
||||
<string name="cant_mark_read">Can\'t mark article as read</string>
|
||||
<string name="cant_mark_unread">Can\'t mark article as unread</string>
|
||||
<string name="drawer_error_loading_tags">Error loading tags…</string>
|
||||
<string name="drawer_error_loading_sources">Error loading sources…</string>
|
||||
<string name="drawer_item_filters">Filters</string>
|
||||
|
Reference in New Issue
Block a user