Compare commits
	
		
			8 Commits
		
	
	
		
			v171901009
			...
			v171901014
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 69da932ab5 | ||
|  | 592fb6328a | ||
|  | a0aead6491 | ||
|  | 722b6cc06d | ||
|  | 6d7c4b40f6 | ||
|  | f538ed39fc | ||
|  | 65821492ad | ||
|  | 6ede718a9f | 
| @@ -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)) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -127,7 +127,13 @@ class ArticleFragment : Fragment() { | ||||
|             font = prefs.getString("reader_font", "") | ||||
|             if (font.isNotEmpty()) { | ||||
|                 resId = context!!.resources.getIdentifier(font, "font", context!!.packageName) | ||||
|                 typeface = ResourcesCompat.getFont(context!!, resId)!! | ||||
|                 typeface = try { | ||||
|                     ResourcesCompat.getFont(context!!, resId)!! | ||||
|                 } catch (e: java.lang.Exception) { | ||||
|                     ACRA.getErrorReporter().maybeHandleSilentException(Throwable("Font loading issue: ${e.message}"), context!!) | ||||
|                     // Just to be sure | ||||
|                     null | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             refreshAlignment() | ||||
|   | ||||
| @@ -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