Compare commits

..

11 Commits

Author SHA1 Message Date
350e24cded Changelog. 2017-12-03 22:19:48 +01:00
1bf8a578bc Simple view pager. Closes #50. 2017-12-03 22:09:58 +01:00
4818a101cc Trying to solve #120. 2017-12-03 18:00:52 +01:00
baebf938ef Changelog. 2017-12-03 14:20:11 +01:00
fea57c7b1e New Crowdin translations (#136)
* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Spanish)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)

* New translations strings.xml (Indonesian)
2017-12-03 14:18:15 +01:00
113dfa68be Changelog. 2017-11-30 19:40:03 +01:00
60c6514fa1 New translations strings.xml (Turkish) 2017-11-30 19:38:40 +01:00
114485afc3 Missing changelog. 2017-11-29 20:28:27 +01:00
d6a51381b9 New Crowdin translations (#133)
* New translations strings.xml (Afrikaans)

* New translations strings.xml (Korean)

* New translations strings.xml (English, Indonesia)

* New translations strings.xml (Vietnamese)

* New translations strings.xml (Ukrainian)

* New translations strings.xml (Turkish)

* New translations strings.xml (Swedish)

* New translations strings.xml (Spanish)

* New translations strings.xml (Serbian (Cyrillic))

* New translations strings.xml (Russian)

* New translations strings.xml (Romanian)

* New translations strings.xml (Portuguese, Brazilian)

* New translations strings.xml (Portuguese)

* New translations strings.xml (Polish)

* New translations strings.xml (Norwegian)

* New translations strings.xml (Japanese)

* New translations strings.xml (Arabic)

* New translations strings.xml (Italian)

* New translations strings.xml (Hungarian)

* New translations strings.xml (Hebrew)

* New translations strings.xml (Greek)

* New translations strings.xml (German)

* New translations strings.xml (French)

* New translations strings.xml (Finnish)

* New translations strings.xml (Dutch)

* New translations strings.xml (Danish)

* New translations strings.xml (Czech)

* New translations strings.xml (Chinese Traditional)

* New translations strings.xml (Chinese Simplified)

* New translations strings.xml (Catalan)

* New translations strings.xml (Indonesian)
2017-11-29 19:10:47 +01:00
620f13fd7c Closes #132. 2017-11-29 19:09:16 +01:00
6577b2c3d7 Update Crowdin configuration file 2017-11-29 13:27:00 +01:00
42 changed files with 1112 additions and 370 deletions

View File

@ -1,3 +1,19 @@
**1.5.4.22**
- You can now scroll through the loaded articles !
**1.5.4.21**
- Spanish translation and some Indonesian !
**1.5.4.20**
- Turkish translation !
**1.5.4.19**
- Fixed an issue with crowdin configuration (and its translations)
**1.5.4.18**
- Typo fix.

View File

@ -122,7 +122,7 @@ dependencies {
compile 'com.google.firebase:firebase-core:11.4.2'
compile 'com.google.firebase:firebase-config:11.4.2'
compile 'com.google.firebase:firebase-invites:11.4.2'
compile('com.crashlytics.sdk.android:crashlytics:2.7.1@aar') {
compile('com.crashlytics.sdk.android:crashlytics:2.8.0@aar') {
transitive = true;
}
@ -170,6 +170,9 @@ dependencies {
compile 'com.heinrichreimersoftware:android-issue-reporter:1.3.1'
compile 'com.github.rubensousa:floatingtoolbar:1.5.1'
// Pager
compile 'me.relex:circleindicator:1.2.2@aar'
}
apply plugin: 'com.google.gms.google-services'

View File

@ -629,9 +629,10 @@ class HomeActivity : AppCompatActivity(), SearchView.OnQueryTextListener {
}
recyclerView.layoutManager = mLayoutManager
recyclerView.setHasFixedSize(true)
if (infiniteScroll) {
if (!infiniteScroll) {
recyclerView.setHasFixedSize(true)
} else {
handleInfiniteScroll()
}

View File

@ -1,209 +1,39 @@
package apps.amine.bou.readerforselfoss
import android.content.SharedPreferences
import android.os.Bundle
import android.preference.PreferenceManager
import android.support.customtabs.CustomTabsIntent
import android.support.design.widget.FloatingActionButton
import android.support.v4.widget.NestedScrollView
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentStatePagerAdapter
import android.support.v7.app.AppCompatActivity
import android.text.Html
import android.text.method.LinkMovementMethod
import android.view.MenuItem
import android.view.View
import apps.amine.bou.readerforselfoss.api.mercury.MercuryApi
import apps.amine.bou.readerforselfoss.api.mercury.ParsedContent
import apps.amine.bou.readerforselfoss.utils.buildCustomTabsIntent
import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper
import apps.amine.bou.readerforselfoss.utils.isEmptyOrNullOrNullString
import apps.amine.bou.readerforselfoss.utils.openItemUrl
import apps.amine.bou.readerforselfoss.utils.shareLink
import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
import com.crashlytics.android.Crashlytics
import com.ftinc.scoop.Scoop
import com.github.rubensousa.floatingtoolbar.FloatingToolbar
import apps.amine.bou.readerforselfoss.api.selfoss.Item
import apps.amine.bou.readerforselfoss.fragments.ArticleFragment
import kotlinx.android.synthetic.main.activity_reader.*
import org.sufficientlysecure.htmltextview.HtmlHttpImageGetter
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import me.relex.circleindicator.CircleIndicator
class ReaderActivity : AppCompatActivity() {
private lateinit var mCustomTabActivityHelper: CustomTabActivityHelper
//private lateinit var content: HtmlTextView
private lateinit var url: String
private lateinit var contentText: String
private lateinit var contentSource: String
private lateinit var contentImage: String
private lateinit var contentTitle: String
private lateinit var fab: FloatingActionButton
override fun onStop() {
super.onStop()
mCustomTabActivityHelper.unbindCustomTabsService(this)
}
private lateinit var allItems: ArrayList<Item>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Scoop.getInstance().apply(this)
setContentView(R.layout.activity_reader)
url = intent.getStringExtra("url")
contentText = intent.getStringExtra("content")
contentTitle = intent.getStringExtra("title")
contentImage = intent.getStringExtra("image")
contentSource = intent.getStringExtra("source")
allItems = intent.getParcelableArrayListExtra<Item>("allItems")
val currentItem = intent.getIntExtra("currentItem", 0)
fab = findViewById(R.id.fab)
val mFloatingToolbar: FloatingToolbar = findViewById(R.id.floatingToolbar)
mFloatingToolbar.attachFab(fab)
var adapter = ScreenSlidePagerAdapter(supportFragmentManager)
pager.adapter = adapter
pager.currentItem = currentItem
val customTabsIntent = this@ReaderActivity.buildCustomTabsIntent()
mCustomTabActivityHelper = CustomTabActivityHelper()
mCustomTabActivityHelper.bindCustomTabsService(this)
(indicator as CircleIndicator).setViewPager(pager)
}
val prefs = PreferenceManager.getDefaultSharedPreferences(this)
mFloatingToolbar.setClickListener(object : FloatingToolbar.ItemClickListener {
override fun onItemClick(item: MenuItem) {
when (item.itemId) {
R.id.more_action -> getContentFromMercury(customTabsIntent, prefs)
R.id.share_action -> this@ReaderActivity.shareLink(url)
R.id.open_action -> this@ReaderActivity.openItemUrl(
url,
contentText,
contentImage,
contentTitle,
contentSource,
customTabsIntent,
false,
false,
this@ReaderActivity
)
else -> Unit
}
}
override fun onItemLongClick(item: MenuItem?) {
}
})
if (contentText.isEmptyOrNullOrNullString()) {
getContentFromMercury(customTabsIntent, prefs)
} else {
source.text = contentSource
titleView.text = contentTitle
tryToHandleHtml(contentText, customTabsIntent, prefs)
if (!contentImage.isEmptyOrNullOrNullString()) {
imageView.visibility = View.VISIBLE
Glide
.with(baseContext)
.asBitmap()
.load(contentImage)
.apply(RequestOptions.fitCenterTransform())
.into(imageView)
} else {
imageView.visibility = View.GONE
}
private inner class ScreenSlidePagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) {
override fun getCount(): Int {
return allItems.size
}
nestedScrollView.setOnScrollChangeListener(
NestedScrollView.OnScrollChangeListener { _, _, scrollY, _, oldScrollY ->
if (scrollY > oldScrollY) {
fab.hide()
} else {
if (mFloatingToolbar.isShowing) mFloatingToolbar.hide() else fab.show()
}
}
)
content.movementMethod = LinkMovementMethod.getInstance()
}
private fun getContentFromMercury(
customTabsIntent: CustomTabsIntent,
prefs: SharedPreferences
) {
progressBar.visibility = View.VISIBLE
val parser = MercuryApi(
BuildConfig.MERCURY_KEY,
prefs.getBoolean("should_log_everything", false)
)
parser.parseUrl(url).enqueue(object : Callback<ParsedContent> {
override fun onResponse(
call: Call<ParsedContent>,
response: Response<ParsedContent>
) {
if (response.body() != null && response.body()!!.content != null && response.body()!!.content.isNotEmpty()) {
source.text = response.body()!!.domain
titleView.text = response.body()!!.title
this@ReaderActivity.url = response.body()!!.url
if (response.body()!!.content != null && !response.body()!!.content.isEmpty()) {
tryToHandleHtml(response.body()!!.content, customTabsIntent, prefs)
}
if (response.body()!!.lead_image_url != null && !response.body()!!.lead_image_url.isEmpty()) {
imageView.visibility = View.VISIBLE
Glide
.with(baseContext)
.asBitmap()
.load(response.body()!!.lead_image_url)
.apply(RequestOptions.fitCenterTransform())
.into(imageView)
} else {
imageView.visibility = View.GONE
}
nestedScrollView.scrollTo(0, 0)
progressBar.visibility = View.GONE
} else {
openInBrowserAfterFailing(customTabsIntent)
}
}
override fun onFailure(
call: Call<ParsedContent>,
t: Throwable
) = openInBrowserAfterFailing(customTabsIntent)
})
}
private fun tryToHandleHtml(
c: String,
customTabsIntent: CustomTabsIntent,
prefs: SharedPreferences
) {
try {
content.text = Html.fromHtml(c, HtmlHttpImageGetter(content, null, true), null)
//content.setHtml(response.body()!!.content, HtmlHttpImageGetter(content, null, true))
} catch (e: Exception) {
Crashlytics.setUserIdentifier(prefs.getString("unique_id", ""))
Crashlytics.log(100, "CANT_TRANSFORM_TO_HTML", e.message)
Crashlytics.logException(e)
openInBrowserAfterFailing(customTabsIntent)
override fun getItem(position: Int): ArticleFragment {
return ArticleFragment.newInstance(position, allItems)
}
}
private fun openInBrowserAfterFailing(customTabsIntent: CustomTabsIntent) {
progressBar.visibility = View.GONE
this@ReaderActivity.openItemUrl(
url,
contentText,
contentImage,
contentTitle,
contentSource,
customTabsIntent,
true,
false,
this@ReaderActivity
)
finish()
}
}

View File

@ -8,6 +8,7 @@ import android.support.v7.widget.CardView
import android.support.v7.widget.RecyclerView
import android.text.Html
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView.ScaleType
import android.widget.TextView
@ -52,6 +53,7 @@ class ItemCardAdapter(
) : RecyclerView.Adapter<ItemCardAdapter.ViewHolder>() {
private val c: Context = app.baseContext
private val generator: ColorGenerator = ColorGenerator.MATERIAL
private val imageMaxHeight: Int = c.resources.getDimension(R.dimen.card_image_max_height).toInt()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val v = LayoutInflater.from(c).inflate(R.layout.card_item, parent, false) as CardView
@ -67,10 +69,17 @@ class ItemCardAdapter(
holder.mView.sourceTitleAndDate.text = itm.sourceAndDateText()
if (!fullHeightCards) {
holder.mView.itemImage.maxHeight = imageMaxHeight
holder.mView.itemImage.scaleType = ScaleType.CENTER_CROP
}
if (itm.getThumbnail(c).isEmpty()) {
holder.mView.itemImage.visibility = View.GONE
Glide.with(c).clear(holder.mView.itemImage)
holder.mView.itemImage.setImageDrawable(null)
} else {
holder.mView.itemImage.visibility = View.VISIBLE
c.bitmapCenterCrop(itm.getThumbnail(c), holder.mView.itemImage)
}
@ -183,11 +192,6 @@ class ItemCardAdapter(
private fun handleClickListeners() {
if (!fullHeightCards) {
mView.itemImage.maxHeight = c.resources.getDimension(R.dimen.card_image_max_height).toInt()
mView.itemImage.scaleType = ScaleType.CENTER_CROP
}
mView.favButton.setOnLikeListener(object : OnLikeListener {
override fun liked(likeButton: LikeButton) {
val (id) = items[adapterPosition]
@ -251,11 +255,9 @@ class ItemCardAdapter(
mView.setOnClickListener {
c.openItemUrl(
items,
adapterPosition,
items[adapterPosition].getLinkDecoded(),
items[adapterPosition].content,
items[adapterPosition].getThumbnail(c),
items[adapterPosition].title,
items[adapterPosition].sourceAndDateText(),
customTabsIntent,
internalBrowser,
articleViewer,

View File

@ -273,11 +273,9 @@ class ItemListAdapter(
if (!clickBehavior) {
mView.setOnClickListener {
c.openItemUrl(
items,
adapterPosition,
items[adapterPosition].getLinkDecoded(),
items[adapterPosition].content,
items[adapterPosition].getThumbnail(c),
items[adapterPosition].title,
items[adapterPosition].sourceAndDateText(),
customTabsIntent,
internalBrowser,
articleViewer,
@ -292,11 +290,9 @@ class ItemListAdapter(
mView.setOnClickListener { actionBarShowHide() }
mView.setOnLongClickListener {
c.openItemUrl(
items,
adapterPosition,
items[adapterPosition].getLinkDecoded(),
items[adapterPosition].content,
items[adapterPosition].getThumbnail(c),
items[adapterPosition].title,
items[adapterPosition].sourceAndDateText(),
customTabsIntent,
internalBrowser,
articleViewer,

View File

@ -0,0 +1,241 @@
package apps.amine.bou.readerforselfoss.fragments
import android.content.SharedPreferences
import android.os.Bundle
import android.preference.PreferenceManager
import android.support.customtabs.CustomTabsIntent
import android.support.design.widget.FloatingActionButton
import android.support.v4.app.Fragment
import android.support.v4.widget.NestedScrollView
import android.text.Html
import android.text.method.LinkMovementMethod
import android.view.LayoutInflater
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import apps.amine.bou.readerforselfoss.BuildConfig
import apps.amine.bou.readerforselfoss.R
import apps.amine.bou.readerforselfoss.api.mercury.MercuryApi
import apps.amine.bou.readerforselfoss.api.mercury.ParsedContent
import apps.amine.bou.readerforselfoss.api.selfoss.Item
import apps.amine.bou.readerforselfoss.utils.buildCustomTabsIntent
import apps.amine.bou.readerforselfoss.utils.customtabs.CustomTabActivityHelper
import apps.amine.bou.readerforselfoss.utils.isEmptyOrNullOrNullString
import apps.amine.bou.readerforselfoss.utils.openItemUrl
import apps.amine.bou.readerforselfoss.utils.shareLink
import apps.amine.bou.readerforselfoss.utils.sourceAndDateText
import com.bumptech.glide.Glide
import com.bumptech.glide.request.RequestOptions
import com.crashlytics.android.Crashlytics
import com.github.rubensousa.floatingtoolbar.FloatingToolbar
import org.sufficientlysecure.htmltextview.HtmlHttpImageGetter
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import kotlinx.android.synthetic.main.fragment_article.view.*
class ArticleFragment : Fragment() {
private lateinit var pageNumber: Number
private lateinit var allItems: ArrayList<Item>
private lateinit var mCustomTabActivityHelper: CustomTabActivityHelper
//private lateinit var content: HtmlTextView
private lateinit var url: String
private lateinit var contentText: String
private lateinit var contentSource: String
private lateinit var contentImage: String
private lateinit var contentTitle: String
private lateinit var fab: FloatingActionButton
override fun onStop() {
super.onStop()
mCustomTabActivityHelper.unbindCustomTabsService(activity)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
pageNumber = arguments!!.getInt(ARG_POSITION)
allItems = arguments!!.getParcelableArrayList(ARG_ITEMS)
}
private lateinit var rootView: ViewGroup
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
rootView = inflater
.inflate(R.layout.fragment_article, container, false) as ViewGroup
url = allItems[pageNumber.toInt()].getLinkDecoded()
contentText = allItems[pageNumber.toInt()].content
contentTitle = allItems[pageNumber.toInt()].title
contentImage = allItems[pageNumber.toInt()].getThumbnail(activity!!)
contentSource = allItems[pageNumber.toInt()].sourceAndDateText()
fab = rootView.fab
val mFloatingToolbar: FloatingToolbar = rootView.floatingToolbar
mFloatingToolbar.attachFab(fab)
val customTabsIntent = activity!!.buildCustomTabsIntent()
mCustomTabActivityHelper = CustomTabActivityHelper()
mCustomTabActivityHelper.bindCustomTabsService(activity)
val prefs = PreferenceManager.getDefaultSharedPreferences(activity)
mFloatingToolbar.setClickListener(object : FloatingToolbar.ItemClickListener {
override fun onItemClick(item: MenuItem) {
when (item.itemId) {
R.id.more_action -> getContentFromMercury(customTabsIntent, prefs)
R.id.share_action -> activity!!.shareLink(url)
R.id.open_action -> activity!!.openItemUrl(
allItems,
pageNumber.toInt(),
url,
customTabsIntent,
false,
false,
activity!!
)
else -> Unit
}
}
override fun onItemLongClick(item: MenuItem?) {
}
})
if (contentText.isEmptyOrNullOrNullString()) {
getContentFromMercury(customTabsIntent, prefs)
} else {
rootView.source.text = contentSource
rootView.titleView.text = contentTitle
tryToHandleHtml(contentText, customTabsIntent, prefs)
if (!contentImage.isEmptyOrNullOrNullString()) {
rootView.imageView.visibility = View.VISIBLE
Glide
.with(activity!!.baseContext)
.asBitmap()
.load(contentImage)
.apply(RequestOptions.fitCenterTransform())
.into(rootView.imageView)
} else {
rootView.imageView.visibility = View.GONE
}
}
rootView.nestedScrollView.setOnScrollChangeListener(
NestedScrollView.OnScrollChangeListener { _, _, scrollY, _, oldScrollY ->
if (scrollY > oldScrollY) {
fab.hide()
} else {
if (mFloatingToolbar.isShowing) mFloatingToolbar.hide() else fab.show()
}
}
)
rootView.content.movementMethod = LinkMovementMethod.getInstance()
return rootView
}
private fun getContentFromMercury(
customTabsIntent: CustomTabsIntent,
prefs: SharedPreferences
) {
rootView.progressBar.visibility = View.VISIBLE
val parser = MercuryApi(
BuildConfig.MERCURY_KEY,
prefs.getBoolean("should_log_everything", false)
)
parser.parseUrl(url).enqueue(object : Callback<ParsedContent> {
override fun onResponse(
call: Call<ParsedContent>,
response: Response<ParsedContent>
) {
if (response.body() != null && response.body()!!.content != null && response.body()!!.content.isNotEmpty()) {
rootView.source.text = response.body()!!.domain
rootView.titleView.text = response.body()!!.title
url = response.body()!!.url
if (response.body()!!.content != null && !response.body()!!.content.isEmpty()) {
tryToHandleHtml(response.body()!!.content, customTabsIntent, prefs)
}
if (response.body()!!.lead_image_url != null && !response.body()!!.lead_image_url.isEmpty()) {
rootView.imageView.visibility = View.VISIBLE
Glide
.with(activity!!.baseContext)
.asBitmap()
.load(response.body()!!.lead_image_url)
.apply(RequestOptions.fitCenterTransform())
.into(rootView.imageView)
} else {
rootView.imageView.visibility = View.GONE
}
rootView.nestedScrollView.scrollTo(0, 0)
rootView.progressBar.visibility = View.GONE
} else {
openInBrowserAfterFailing(customTabsIntent)
}
}
override fun onFailure(
call: Call<ParsedContent>,
t: Throwable
) = openInBrowserAfterFailing(customTabsIntent)
})
}
private fun tryToHandleHtml(
c: String,
customTabsIntent: CustomTabsIntent,
prefs: SharedPreferences
) {
try {
rootView.content.text = Html.fromHtml(c, HtmlHttpImageGetter(rootView.content, null, true), null)
//content.setHtml(response.body()!!.content, HtmlHttpImageGetter(content, null, true))
} catch (e: Exception) {
Crashlytics.setUserIdentifier(prefs.getString("unique_id", ""))
Crashlytics.log(100, "CANT_TRANSFORM_TO_HTML", e.message)
Crashlytics.logException(e)
openInBrowserAfterFailing(customTabsIntent)
}
}
private fun openInBrowserAfterFailing(customTabsIntent: CustomTabsIntent) {
rootView.progressBar.visibility = View.GONE
activity!!.openItemUrl(
allItems,
pageNumber.toInt(),
url,
customTabsIntent,
true,
false,
activity!!
)
}
companion object {
private val ARG_POSITION = "position"
private val ARG_ITEMS = "items"
fun newInstance(position: Int, allItems: ArrayList<Item>): ArticleFragment {
val fragment = ArticleFragment()
val args = Bundle()
args.putInt(ARG_POSITION, position)
args.putParcelableArrayList(ARG_ITEMS, allItems)
fragment.arguments = args
return fragment
}
}
}

View File

@ -59,30 +59,17 @@ fun Context.buildCustomTabsIntent(): CustomTabsIntent {
}
fun Context.openItemUrlInternally(
allItems: ArrayList<Item>,
currentItem: Int,
linkDecoded: String,
content: String,
image: String,
title: String,
source: String,
customTabsIntent: CustomTabsIntent,
articleViewer: Boolean,
app: Activity
) {
if (articleViewer) {
val intent = Intent(this, ReaderActivity::class.java)
/*DragDismissIntentBuilder(this)
.setFullscreenOnTablets(true) // defaults to false, tablets will have padding on each side
.setDragElasticity(DragDismissIntentBuilder.DragElasticity.NORMAL) // Larger elasticities will make it easier to dismiss.
.setDrawUnderStatusBar(true)
.build(intent)*/
intent.putExtra("url", linkDecoded)
intent.putExtra("content", content)
intent.putExtra("title", title)
intent.putExtra("image", image)
intent.putExtra("source", source)
intent.putParcelableArrayListExtra("allItems", allItems)
intent.putExtra("currentItem", currentItem)
app.startActivity(intent)
} else {
try {
@ -102,11 +89,9 @@ fun Context.openItemUrlInternally(
}
fun Context.openItemUrl(
allItems: ArrayList<Item>,
currentItem: Int,
linkDecoded: String,
content: String,
image: String,
title: String,
source: String,
customTabsIntent: CustomTabsIntent,
internalBrowser: Boolean,
articleViewer: Boolean,
@ -124,11 +109,9 @@ fun Context.openItemUrl(
openInBrowser(linkDecoded, app)
} else {
this.openItemUrlInternally(
allItems,
currentItem,
linkDecoded,
content,
image,
title,
source,
customTabsIntent,
articleViewer,
app

View File

@ -1,148 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView
android:id="@+id/nestedScrollView"
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="200dp"
android:scaleType="centerCrop"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/source"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textSize="12sp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<TextView
android:id="@+id/titleView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="6dp"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
android:textStyle="bold"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/source" />
<TextView
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:paddingBottom="48dp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleView"
android:textColorLink="?attr/colorAccent"/>
<!--<org.sufficientlysecure.htmltextview.HtmlTextView
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:paddingBottom="48dp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleView" />-->
</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_gravity="end|bottom|right">
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.github.rubensousa.floatingtoolbar.FloatingToolbar
android:id="@+id/floatingToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom"
app:floatingItemBackground="?attr/colorAccent"
app:floatingMenu="@menu/reader_toolbar" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_gravity="end|bottom|right"
android:layout_marginBottom="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:src="@drawable/ic_add"
app:backgroundTint="?attr/colorAccent"
app:fabSize="mini"
app:rippleColor="?attr/colorAccentDark" />
</FrameLayout>
<FrameLayout
android:id="@+id/progressBar"
<me.relex.circleindicator.CircleIndicator
android:id="@+id/indicator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:animateLayoutChanges="true"
android:alpha="0.8"
android:background="@color/black"
android:clickable="false">
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:progressTint="?attr/colorAccent" />
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>
android:layout_height="20dp"
android:background="#55000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</android.support.constraint.ConstraintLayout>

View File

@ -0,0 +1,146 @@
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="200dp"
android:scaleType="centerCrop"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<TextView
android:id="@+id/source"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textSize="12sp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView" />
<TextView
android:id="@+id/titleView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="6dp"
android:textAppearance="@style/TextAppearance.AppCompat.Headline"
android:textStyle="bold"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/source" />
<TextView
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:paddingBottom="48dp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleView"
android:textColorLink="?attr/colorAccent"/>
<!--<org.sufficientlysecure.htmltextview.HtmlTextView
android:id="@+id/content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:paddingBottom="48dp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/titleView" />-->
</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
android:layout_gravity="end|bottom|right">
<com.github.rubensousa.floatingtoolbar.FloatingToolbar
android:id="@+id/floatingToolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:layout_gravity="bottom"
app:floatingItemBackground="?attr/colorAccent"
app:floatingMenu="@menu/reader_toolbar" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_gravity="end|bottom|right"
android:layout_marginBottom="16dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:src="@drawable/ic_add"
app:backgroundTint="?attr/colorAccent"
app:fabSize="mini"
app:rippleColor="?attr/colorAccentDark" />
</FrameLayout>
<FrameLayout
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone"
android:animateLayoutChanges="true"
android:alpha="0.8"
android:background="@color/black"
android:clickable="false">
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:progressTint="?attr/colorAccent" />
</FrameLayout>
</android.support.design.widget.CoordinatorLayout>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">"Lector para Selfoss"</string>
<string name="title_activity_login">"Iniciar sesión"</string>
<string name="prompt_password">"Contraseña"</string>
<string name="prompt_http_password">"Contraseña HTTP"</string>
<string name="action_sign_in">"Empezar"</string>
<string name="error_invalid_password">"La contraseña no es suficientemente larga"</string>
<string name="error_field_required">"Campo requerido"</string>
<string name="prompt_url">"Url"</string>
<string name="withLoginSwitch">"Inicio de sesión requerido ?"</string>
<string name="withHttpLoginSwitch">"Inicio de sesión HTTP requerido ?"</string>
<string name="login_url_problem">"Oops. Puede que necesite añadir un \"/\" al final de la url."</string>
<string name="prompt_login">"Nombre de usuario"</string>
<string name="prompt_http_login">"Nombre de usuario HTTP"</string>
<string name="label_share">"Compartir"</string>
<string name="readAll">"Leer todo"</string>
<string name="action_disconnect">"Desconectar"</string>
<string name="title_activity_settings">"Configuración"</string>
<string name="pref_header_general">"General"</string>
<string name="pref_switch_actions_tap_title">"Acción tocar en los artículos"</string>
<string name="add_source_hint_tags">"Etiqueta1, Etiqueta2, Etiqueta3"</string>
<string name="add_source_hint_url">"Enlace"</string>
<string name="add_source_hint_name">"Nombre"</string>
<string name="add_source">"Añadir una fuente"</string>
<string name="add_source_save">"Guardar"</string>
<string name="wrong_infos">"Revise sus datos de nuevo."</string>
<string name="all_posts_not_read">"No todas las publicaciones fueron leídas"</string>
<string name="all_posts_read">"Todas las publicaciones fueron leídas"</string>
<string name="cant_get_favs">"No se pueden obtener favoritos"</string>
<string name="cant_get_new_elements">"No puede recibir nuevos artículos"</string>
<string name="cant_get_read">"No puede recibir artículos leídos"</string>
<string name="nothing_here">"Nada aquí"</string>
<string name="tab_new">"Nuevo"</string>
<string name="tab_read">"Todo"</string>
<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="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>
<string name="cant_create_source">"No se puede crear la fuente."</string>
<string name="cant_get_spouts">"No se puede obtener la lista de fuentes."</string>
<string name="form_not_complete">"El formulario no está completo"</string>
<string name="pref_header_links">"Enlaces"</string>
<string name="issue_tracker_link">"Rastreador de Incidencias"</string>
<string name="issue_tracker_summary">"Reportar un error o solicitar una nueva función"</string>
<string name="warning_wrong_url">"ADVERTENCIA"</string>
<string name="pref_switch_card_view_title">"Vista de la tarjeta"</string>
<string name="cant_mark_favortie">"No puede marcar el artículo como favorito"</string>
<string name="cant_unmark_favortie">"No se puede quitar el artículo de favoritos"</string>
<string name="share">"Compartir"</string>
<string name="rating_prompt_title">"¿Disfrutando la aplicación?"</string>
<string name="rating_prompt_yes">"¡Sí!"</string>
<string name="rating_prompt_no">"La verdad es que no…"</string>
<string name="rating_prompt_feedback_title">"¿Puede decirnos por qué?"</string>
<string name="rating_prompt_feedback_yes">"¡Vale!"</string>
<string name="rating_prompt_feedback_no">"Ahora no."</string>
<string name="rating_prompt_rating_title">"¡Excelente! ¿Puede valorarnos en la tienda?"</string>
<string name="rating_prompt_rating_yes">"¡Claro!"</string>
<string name="rating_prompt_rating_no">"No en este momento."</string>
<string name="rating_prompt_thanks">"¡Gracias, sus comentarios ayudan a mejorar la aplicación!"</string>
<string name="switch_unread_count">"Mostrar el recuento no leído como una insignia de la barra inferior."</string>
<string name="switch_unread_count_title">"Mostrar recuento no leído"</string>
<string name="display_all_counts_title">"Mostrar recuento de favoritos y leídos"</string>
<string name="menu_share_the_app">"Invitar amigos"</string>
<string name="invitation_title">"¡Prueba esta aplicación para tu contenido RSS de Selfoss!"</string>
<string name="invitation_message">"Yo uso esta aplicación para mi contenido RSS de Selfoss. ¡Te puede gusta también!"</string>
<string name="invitation_cta">"Probar la aplicación"</string>
<string name="text_wrong_url">"Parece estar tratando de utilizar una dirección URL inválida. Asegúrese de que sea correcta y si el problema persiste, póngase en contacto conmigo (mediante el enlace de contacto de la tienda). Tenga en cuenta que la aplicación necesita utilizar Selfoss. No se puede acceder al contenido RSS sin él."</string>
<string name="pref_general_internal_browser_title">"Abrir enlaces dentro de la aplicación"</string>
<string name="pref_general_internal_browser_on">"Los artículos se abrirán dentro de la aplicación"</string>
<string name="pref_general_internal_browser_off">"Los artículos se abrirán con tu navegador predeterminado"</string>
<string name="prefer_article_viewer_title">"Utilizar el visor de artículo"</string>
<string name="prefer_article_viewer_on">"Se usará el visor de artículos en lugar del navegador interno"</string>
<string name="prefer_article_viewer_off">"Se utilizará el navegador interno en lugar del visor de artículo"</string>
<string name="pref_general_category_links">"Control de enlaces"</string>
<string name="pref_general_category_displaying">"Mostrando"</string>
<string name="pref_general_category_actions">"Acciones"</string>
<string name="pref_switch_card_view_on">"Los artículos se mostrarán como tarjetas"</string>
<string name="pref_switch_card_view_off">"Los artículos se mostrarán como una lista"</string>
<string name="pref_switch_actions_tap_on">"Muestra la barra de acción debajo del artículo"</string>
<string name="pref_switch_actions_tap_off">"Al seleccionar un artículo se abrirá en el navegador seleccionado"</string>
<string name="menu_home_refresh">"Actualizar remoto"</string>
<string name="refresh_success_response">"Se actualizó el remoto, ahora puede recargar la lista de artículos"</string>
<string name="refresh_failer_message">"La actualización no funcionó, inténtalo más tarde o compruebe los registros de selfoss."</string>
<string name="refresh_in_progress">"Actualización en progreso"</string>
<string name="new_apk_available_title">"Una nueva versión está disponible."</string>
<string name="new_apk_available_message">"Un APK nuevo está disponible para descarga en el repositorio oficial."</string>
<string name="new_apk_available_get">"Descargar ahora"</string>
<string name="new_apk_available_no">"Ignorar versión"</string>
<string name="intro_hello_title">"¡Hola!"</string>
<string name="intro_hello_message">"¡Gracias por descargar la aplicación!"</string>
<string name="intro_needs_selfoss_title">"Antes de empezar…"</string>
<string name="intro_needs_selfoss_message">"No se puede utilizar la aplicación sin una instancia de Selfoss."</string>
<string name="intro_needs_selfoss_link">"¿Qué es Selfoss?"</string>
<string name="intro_all_set_title">"¡Todo listo!"</string>
<string name="intro_all_set_message">"Estás listo para utilizar la aplicación. No olvides ir a la página de configuración para configurar su aplicación, y donde usted encontrará algunos enlaces útiles."</string>
<string name="card_height_title">Tarjetas de altura completas</string>
<string name="card_height_on">Altura de tarjetas se ajustará a su contenido</string>
<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="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>
<string name="drawer_action_clear">limpiar</string>
<string name="drawer_item_tags">Etiquetas</string>
<string name="drawer_item_sources">Fuentes</string>
<string name="drawer_action_edit">editar</string>
<string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">No se pudieron guardar en caché los datos de su cajón</string>
<string name="no_tags_loaded">No hay etiquetas cargadas</string>
<string name="no_sources_loaded">No hay fuentes cargadas</string>
<string name="drawer_loading">Cargando…</string>
<string name="menu_home_search">Buscar</string>
<string name="can_delete_source">No se puede eliminar la fuente…</string>
<string name="base_url_error">Hubo un problema al intentar comunicarse con su instancia de Selfoss. Si el problema persiste, póngase en contacto conmigo.</string>
<string name="pref_header_theme">Temas</string>
<string name="default_theme">Predeterminado</string>
<string name="teal_orange_theme">Turquesa/Naranja/Claro</string>
<string name="cyan_pink_theme">Cian/Rosa/Claro</string>
<string name="grey_orange_theme">Gris/Naranja/Claro</string>
<string name="blue_amber_theme">Azul/Ámbar/Claro</string>
<string name="indigo_pink_theme">Índigo/Rosa/Claro</string>
<string name="red_teal_theme">Rojo/Turquesa/Claro</string>
<string name="teal_orange_dark_theme">Turquesa/Naranja/Oscuro</string>
<string name="cyan_pink_dark_theme">Cian/Rosa/Oscuro</string>
<string name="default_dark_theme">Predeterminado/Oscuro</string>
<string name="grey_orange_dark_theme">Gris/Naranja/Oscuro</string>
<string name="blue_amber_dark_theme">Azul/Ámbar/Oscuro</string>
<string name="indigo_pink_dark_theme">Índigo/Rosa/Oscuro</string>
<string name="red_teal_dark_theme">Rojo/Turquesa/Oscuro</string>
<string name="pref_header_debug">Depurar</string>
<string name="login_debug_title">Activar para registrar errores de inicio de sesión</string>
<string name="login_debug_on">Cualquier error en la página de inicio de sesión se registrará</string>
<string name="login_debug_off">No hay registro en la página de inicio de sesión</string>
<string name="login_menu_debug">Depurar</string>
<string name="self_hosted_cert_switch">Utilizando un certificado alojado propiamente ?</string>
<string name="self_signed_cert_warning">Por razones de seguridad, los certificados propios no son compatibles por defecto. Activando esto, no seré responsable de cualquier problema de seguridad que encuentre.</string>
<string name="pref_selfoss_category">Api de Selfoss</string>
<string name="pref_api_items_number_title">Número de artículos cargados</string>
<string name="read_debug_title">¿Leer los artículos que aparecen como no leídos?</string>
<string name="read_debug_off">Sin registro al marcar un elemento como leído</string>
<string name="read_debug_on">Llamadas a la Api se registrarán al marcar un artículo como leído</string>
<string name="summary_debug_identifier">Identificador de depuración</string>
<string name="unique_id_to_clipboard">Identificador copiado a su portapapeles</string>
<string name="display_header_drawer_summary">Mostrar una cabecera con la url de instancia de selfoss en el cajón lateral.</string>
<string name="display_header_drawer_title">Cabecera de cuenta</string>
<string name="login_everything_title">Registrando todas las llamadas a la api</string>
<string name="login_everything_on">Esto registrará cada llamada a la api para propósito de depuración.</string>
<string name="login_everything_off">Ninguna llamada de api se registrará</string>
<string name="pref_general_infinite_loading_title">Cargar más artículos en desplazamiento</string>
<string name="translation">Traducción</string>
<string name="cant_open_invalid_url">La url del elemento no es válida. Estoy buscando resolver este problema para que la aplicación no colapse.</string>
<string name="drawer_report_bug">Reportar un error</string>
<string name="items_number_should_be_number">El número de artículos debe ser un número entero.</string>
<string name="reader_action_more">Leer más</string>
<string name="reader_action_open">Abrir en el navegador</string>
<string name="reader_action_share">Compartir</string>
</resources>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">"Reader for Selfoss"</string>
<string name="title_activity_login">"Masuk"</string>
<string name="prompt_password">"Kata sandi"</string>
<string name="prompt_http_password">"Kata sandi HTTP"</string>
<string name="action_sign_in">"Mulai"</string>
<string name="error_invalid_password">"Password not long enough"</string>
<string name="error_field_required">"Kolom wajib diisi"</string>
<string name="prompt_url">"URL"</string>
<string name="withLoginSwitch">"Harus masuk?"</string>
<string name="withHttpLoginSwitch">"HTTP Login required ?"</string>
<string name="login_url_problem">"Ups. Anda mungkin harus menambahkan \"/\" di akhir url."</string>
<string name="prompt_login">"Nama pengguna"</string>
<string name="prompt_http_login">"Nama pengguna HTTP"</string>
<string name="label_share">"Bagikan"</string>
<string name="readAll">"Baca semua"</string>
<string name="action_disconnect">"Putuskan sambungan"</string>
<string name="title_activity_settings">"Pengaturan"</string>
<string name="pref_header_general">"Umum"</string>
<string name="pref_switch_actions_tap_title">"Pilih tindakan pada artikel"</string>
<string name="add_source_hint_tags">"Tag1, Tag2, Tag 3"</string>
<string name="add_source_hint_url">"Tautan"</string>
<string name="add_source_hint_name">"Nama"</string>
<string name="add_source">"Tambahkan sumber"</string>
<string name="add_source_save">"Simpan"</string>
<string name="wrong_infos">"Periksa kembali detail Anda."</string>
<string name="all_posts_not_read">"Semua pos belum dibaca"</string>
<string name="all_posts_read">"Semua pos sudah dibaca"</string>
<string name="cant_get_favs">"Gagal menuju favorit"</string>
<string name="cant_get_new_elements">"Gagal ke artikel baru"</string>
<string name="cant_get_read">"Gagal ke artikel yang dibaca"</string>
<string name="nothing_here">"Tidak ada di sini"</string>
<string name="tab_new">"Baru"</string>
<string name="tab_read">"Semua"</string>
<string name="tab_favs">"Favorit"</string>
<string name="action_about">"Tentang"</string>
<string name="marked_as_read">"Membaca item"</string>
<string name="undo_string">"Urung"</string>
<string name="addStringNoUrl">"Masuk untuk menambah sumber."</string>
<string name="cant_get_sources">"Can't get sources list."</string>
<string name="cant_create_source">"Tidak dapat membuat sumber."</string>
<string name="cant_get_spouts">"Can't get spouts list."</string>
<string name="form_not_complete">"The form is not complete"</string>
<string name="pref_header_links">"Tautan"</string>
<string name="issue_tracker_link">"Issue Tracker"</string>
<string name="issue_tracker_summary">"Laporkan bug atau meminta fitur baru"</string>
<string name="warning_wrong_url">"PERINGATAN"</string>
<string name="pref_switch_card_view_title">"Card View"</string>
<string name="cant_mark_favortie">"Tidak dapat menandai artikel sebagai favorit"</string>
<string name="cant_unmark_favortie">"Tidak dapat melepas item dari favorit"</string>
<string name="share">"Bagikan"</string>
<string name="rating_prompt_title">"Suka aplikasi ini?"</string>
<string name="rating_prompt_yes">"Ya !"</string>
<string name="rating_prompt_no">"Not really …"</string>
<string name="rating_prompt_feedback_title">"Can you tell us why ?"</string>
<string name="rating_prompt_feedback_yes">"Oke !"</string>
<string name="rating_prompt_feedback_no">"Not now."</string>
<string name="rating_prompt_rating_title">"Great ! Can you rate us on the Store ?"</string>
<string name="rating_prompt_rating_yes">"Sure !"</string>
<string name="rating_prompt_rating_no">"Jangan sekarang."</string>
<string name="rating_prompt_thanks">"Thanks, your feedback help enhance the app !"</string>
<string name="switch_unread_count">"Display the unread count as a badge for the bottom bar."</string>
<string name="switch_unread_count_title">"Display unread count"</string>
<string name="display_all_counts_title">"Display count for favorite and read"</string>
<string name="menu_share_the_app">"Undang teman"</string>
<string name="invitation_title">"Try this app for your Selfoss RSS feeds !"</string>
<string name="invitation_message">"I use this app for my Selfoss RSS feeds. You may like it too !"</string>
<string name="invitation_cta">"Try the app"</string>
<string name="text_wrong_url">"You seem to be trying to use an invalid URL. Make sure it is correct, and if the problem persists, contact me (via the store contact link). Please note that the app needs you to be using Selfoss. You can't access RSS feeds without it."</string>
<string name="pref_general_internal_browser_title">"Buka tautan dalam aplikasi"</string>
<string name="pref_general_internal_browser_on">"Artikel akan dibuka di dalam aplikasi"</string>
<string name="pref_general_internal_browser_off">"Artikel akan dibuka dalam peramban bawaan Anda"</string>
<string name="prefer_article_viewer_title">"Gunakan pratinjau artikel"</string>
<string name="prefer_article_viewer_on">"Will use the article viewer instead of the internal browser"</string>
<string name="prefer_article_viewer_off">"Will use the internal browser instead of the article viewer"</string>
<string name="pref_general_category_links">"Link handling"</string>
<string name="pref_general_category_displaying">"Tampilan"</string>
<string name="pref_general_category_actions">"Tindakan"</string>
<string name="pref_switch_card_view_on">"The articles will be displayed as cards"</string>
<string name="pref_switch_card_view_off">"The articles will be displayed as a list"</string>
<string name="pref_switch_actions_tap_on">"Displays the action bar under the article"</string>
<string name="pref_switch_actions_tap_off">"When selecting an article it will open in your selected browser"</string>
<string name="menu_home_refresh">"Update remote"</string>
<string name="refresh_success_response">"The remote is updated, you can now reload the articles list"</string>
<string name="refresh_failer_message">"The update didn't work, try again later, or check your selfoss logs."</string>
<string name="refresh_in_progress">"Refresh in progress"</string>
<string name="new_apk_available_title">"A new APK is available."</string>
<string name="new_apk_available_message">"A new APK is available to download on the official repository."</string>
<string name="new_apk_available_get">"Unduh sekarang"</string>
<string name="new_apk_available_no">"Abaikan versi"</string>
<string name="intro_hello_title">"Hi there !"</string>
<string name="intro_hello_message">"Terima kasih telah mengunduh aplikasi ini !"</string>
<string name="intro_needs_selfoss_title">"Sebelum Anda mulai…"</string>
<string name="intro_needs_selfoss_message">"You can't use the app without a Selfoss instance."</string>
<string name="intro_needs_selfoss_link">"Apa itu Selfoss ?"</string>
<string name="intro_all_set_title">"All set !"</string>
<string name="intro_all_set_message">"You are ready to use the app. Don't forget to go to the settings page to configure your app, and where you'll find some useful links."</string>
<string name="card_height_title">Full height cards</string>
<string name="card_height_on">Cards height will adjust to its content</string>
<string name="card_height_off">Card height will be fixed</string>
<string name="source_code">Kode sumber</string>
<string name="cant_mark_read">Can\'t mark article as read</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>
<string name="drawer_action_clear">kosongkan</string>
<string name="drawer_item_tags">Tag</string>
<string name="drawer_item_sources">Sumber</string>
<string name="drawer_action_edit">suntung</string>
<string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">Data dalam tembolok tidak dapat diambil</string>
<string name="no_tags_loaded">No tags loaded</string>
<string name="no_sources_loaded">Tak ada sumber yang dimuat</string>
<string name="drawer_loading">Memuat …</string>
<string name="menu_home_search">Cari</string>
<string name="can_delete_source">Tidak dapat menghapus sumber…</string>
<string name="base_url_error">There was an issue when trying to communicate with your Selfoss Instance. If the issue persists, please get in touch with me.</string>
<string name="pref_header_theme">Tema</string>
<string name="default_theme">Bawaan</string>
<string name="teal_orange_theme">Teal/Orange/Light</string>
<string name="cyan_pink_theme">Cyan/Pink/Light</string>
<string name="grey_orange_theme">Grey/Orange/Light</string>
<string name="blue_amber_theme">Blue/Amber/Light</string>
<string name="indigo_pink_theme">Indigo/Pink/Light</string>
<string name="red_teal_theme">Red/Teal/Light</string>
<string name="teal_orange_dark_theme">Teal/Orange/Dark</string>
<string name="cyan_pink_dark_theme">Cyan/Pink/Gelap</string>
<string name="default_dark_theme">Bawaan/Gelap</string>
<string name="grey_orange_dark_theme">Grey/Orange/Gelap</string>
<string name="blue_amber_dark_theme">Blue/Amber/Gelap</string>
<string name="indigo_pink_dark_theme">Indigo/Pink/Gelap</string>
<string name="red_teal_dark_theme">Red/Teal/Gelap</string>
<string name="pref_header_debug">Debug</string>
<string name="login_debug_title">Activate to log login errors</string>
<string name="login_debug_on">Any error on the login page will be logged</string>
<string name="login_debug_off">No log on the login page</string>
<string name="login_menu_debug">Debug</string>
<string name="self_hosted_cert_switch">Using a self hosted certificate ?</string>
<string name="self_signed_cert_warning">Due to security reasons, self signed certificates are not supported by default. By activating this, I\'ll not be responsible of any security problem you encounter.</string>
<string name="pref_selfoss_category">Selfoss Api</string>
<string name="pref_api_items_number_title">Loaded items number</string>
<string name="read_debug_title">Baca artikel yang ini sebagai belum dibaca ?</string>
<string name="read_debug_off">No log when marking an item as read</string>
<string name="read_debug_on">Api calls will be logged when marking an article as read</string>
<string name="summary_debug_identifier">Identifikasi debug</string>
<string name="unique_id_to_clipboard">Identifier copied to your clipboard</string>
<string name="display_header_drawer_summary">Display a header with the selfoss instance url on the lateral drawer.</string>
<string name="display_header_drawer_title">Account header</string>
<string name="login_everything_title">Logging every api calls</string>
<string name="login_everything_on">This will log every api call for debug purpose.</string>
<string name="login_everything_off">No api call will be logged</string>
<string name="pref_general_infinite_loading_title">Load more articles on scroll</string>
<string name="translation">Terjemahan</string>
<string name="cant_open_invalid_url">The item url is invalid. I\'m looking into solving this issue so the app won\'t crash.</string>
<string name="drawer_report_bug">Laporkan bug</string>
<string name="items_number_should_be_number">The items number should be an integer.</string>
<string name="reader_action_more">Read more</string>
<string name="reader_action_open">Buka di peramban</string>
<string name="reader_action_share">Bagikan</string>
</resources>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">"Selfoss için okuyucu"</string>
<string name="title_activity_login">"Giriş"</string>
<string name="prompt_password">"Şifre"</string>
<string name="prompt_http_password">"HTTP şifresi"</string>
<string name="action_sign_in">"Git"</string>
<string name="error_invalid_password">"Parola yeterince uzun değil"</string>
<string name="error_field_required">"Alan gereklidir"</string>
<string name="prompt_url">"Url"</string>
<string name="withLoginSwitch">"Kullanıcı Girişi Gerekli?"</string>
<string name="withHttpLoginSwitch">"HTTP üyelik gerekmektedir?"</string>
<string name="login_url_problem">"Oops. Url'nin sonuna \"/\" eklemek gerekebilir."</string>
<string name="prompt_login">"Kullanıcı adı"</string>
<string name="prompt_http_login">"HTTP kullanıcı adı"</string>
<string name="label_share">"Paylaş"</string>
<string name="readAll">"Tümünü oku"</string>
<string name="action_disconnect">"Bağlantıyı kes"</string>
<string name="title_activity_settings">"Ayarlar"</string>
<string name="pref_header_general">"Genel"</string>
<string name="pref_switch_actions_tap_title">"Makalelerdeki aksiyona dokun"</string>
<string name="add_source_hint_tags">"Etiket1, etiket2, etiket3"</string>
<string name="add_source_hint_url">"Bağlantı"</string>
<string name="add_source_hint_name">"İsim"</string>
<string name="add_source">"Yeni Kaynak Ekle"</string>
<string name="add_source_save">"Kaydet"</string>
<string name="wrong_infos">"Detaylarınızı tekrar kontrol edin."</string>
<string name="all_posts_not_read">"Tüm mesajlar okunmadı"</string>
<string name="all_posts_read">"Tüm mesajlar okundu"</string>
<string name="cant_get_favs">"Sık ullanılanlara ulaşılamıyor"</string>
<string name="cant_get_new_elements">"Yeni makalelere ulaşılamıyor"</string>
<string name="cant_get_read">"Yeni makaleler okunamıyor"</string>
<string name="nothing_here">"Burada hiçbir şey yok"</string>
<string name="tab_new">"Yeni"</string>
<string name="tab_read">"Tüm"</string>
<string name="tab_favs">"Favoriler"</string>
<string name="action_about">"Hakkında"</string>
<string name="marked_as_read">"Öğeleri oku"</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>
<string name="cant_create_source">"Kaynak oluşturulamıyor."</string>
<string name="cant_get_spouts">"Spouts listesine girilemiyor."</string>
<string name="form_not_complete">"Form tamamlanamadı"</string>
<string name="pref_header_links">"Bağlantılar"</string>
<string name="issue_tracker_link">"Sorun İzleyici"</string>
<string name="issue_tracker_summary">"Bir hatayı bildir veya yeni bir özellik iste"</string>
<string name="warning_wrong_url">"UYARI"</string>
<string name="pref_switch_card_view_title">"Kart görünümü"</string>
<string name="cant_mark_favortie">"Makale favori olarak işaretlenemez"</string>
<string name="cant_unmark_favortie">"Nesne favorilerden kaldırılamıyor"</string>
<string name="share">"Paylaş"</string>
<string name="rating_prompt_title">"Uygulamayı sevdiniz mi?"</string>
<string name="rating_prompt_yes">"Evet!"</string>
<string name="rating_prompt_no">"Aslında değil…"</string>
<string name="rating_prompt_feedback_title">"Nedenini bize söyleyebilir misiniz?"</string>
<string name="rating_prompt_feedback_yes">"Tamam!"</string>
<string name="rating_prompt_feedback_no">"Henüz değil."</string>
<string name="rating_prompt_rating_title">"Harika ! Bizi mağzada oylayabilir misin?"</string>
<string name="rating_prompt_rating_yes">"Tabii ki!"</string>
<string name="rating_prompt_rating_no">"Şimdi değil."</string>
<string name="rating_prompt_thanks">"Teşekkürler, geri dönüşünü uygulamayı geliştirmede yardımcı olur!"</string>
<string name="switch_unread_count">"Okunmamış sayıyı, alt çubuk için bir rozet olarak görüntüleyin."</string>
<string name="switch_unread_count_title">"Okunmamış sayıyı görüntüle"</string>
<string name="display_all_counts_title">"Favori ve okunan sayıları göster"</string>
<string name="menu_share_the_app">"Arkadaşları davet et"</string>
<string name="invitation_title">"Selfoss RSS yayınlarınız için bu uygulamayı deneyin!"</string>
<string name="invitation_message">"Bu uygulamayı Selfoss RSS özet akışlarım için kullanıyorum. Sizin de hoşunuza gidebilir !"</string>
<string name="invitation_cta">"Uygulamayı dene"</string>
<string name="text_wrong_url">"Geçersiz bir URL kullanmaya çalışıyormuş gibi görünüyorsunuz. Doğru olduğundan emin olun ve sorun devam ederse, bana ulaşın (mağaza iletişim bağlantısıyla). Uygulamanın, Selfoss'u kullanmanız gerektiğini lütfen unutmayın. RSS özet akışlarına olmadan erişemezsiniz."</string>
<string name="pref_general_internal_browser_title">"Uygulamadaki bağlantılarıın"</string>
<string name="pref_general_internal_browser_on">"Makale, uygulama içinde açılacaktır"</string>
<string name="pref_general_internal_browser_off">"Makaleler varsayılan tarayıcınızla açılır"</string>
<string name="prefer_article_viewer_title">"Makale görüntüleyiciyi kullanın"</string>
<string name="prefer_article_viewer_on">"Dahili tarayıcı yerine makale görüntüleyicisini kullanacak"</string>
<string name="prefer_article_viewer_off">"Makale görüntüleyicisi yerine dahili tarayıcıyı kullanacak"</string>
<string name="pref_general_category_links">"Bağlantı açma şekli"</string>
<string name="pref_general_category_displaying">"Gösteriliyor"</string>
<string name="pref_general_category_actions">"Eylemler"</string>
<string name="pref_switch_card_view_on">"Makaleler kart olarak gösterilecek"</string>
<string name="pref_switch_card_view_off">"Makaleler liste olarak gösterilecek"</string>
<string name="pref_switch_actions_tap_on">"Makalenin altındaki eylem çubuğunu görüntüler"</string>
<string name="pref_switch_actions_tap_off">"Seçtiğiniz tarayıcısında bir makale seçtiğinde açılacaktır"</string>
<string name="menu_home_refresh">"Uzaktan güncelleştirme"</string>
<string name="refresh_success_response">"Uzaktan güncelleştirilir, şimdi makaleler listesi yeniden yükleyebilirsiniz"</string>
<string name="refresh_failer_message">"Güncelleme çalışmadı, daha sonra tekrar deneyin veya selfoss günlüklerinizi kontrol edin."</string>
<string name="refresh_in_progress">"Yenileme devam ediyor"</string>
<string name="new_apk_available_title">"Yeni bir güncelleme var."</string>
<string name="new_apk_available_message">"Yeni bir APK deposu resmi indirmek kullanılabilir."</string>
<string name="new_apk_available_get">"Şimdi indir"</string>
<string name="new_apk_available_no">"Bu sürümü yoksay"</string>
<string name="intro_hello_title">"Selam!"</string>
<string name="intro_hello_message">"Uygulamayı indirdiğiniz için teşekkür ederiz!"</string>
<string name="intro_needs_selfoss_title">"Başlamadan önce…"</string>
<string name="intro_needs_selfoss_message">"Uygulamayı bir Selfoss örneği olmadan kullanamazsınız."</string>
<string name="intro_needs_selfoss_link">"Selfoss nedir?"</string>
<string name="intro_all_set_title">"Her şey tamam!"</string>
<string name="intro_all_set_message">"Uygulamayı kullanmaya hazırsınız. Uygulamanızı yapılandırmak için ayarlar sayfasına gitmeyi ve bazı yararlı bağlantıları nereden bulacağınızı unutma."</string>
<string name="card_height_title">Tam boy kartlar</string>
<string name="card_height_on">Kartların yüksekliği içeriğine göre ayarlanır</string>
<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="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>
<string name="drawer_action_clear">temizle</string>
<string name="drawer_item_tags">Etiketler</string>
<string name="drawer_item_sources">Kaynaklar</string>
<string name="drawer_action_edit">düzenle</string>
<string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">Çekmece verilerinizi önbelleğe olamaz</string>
<string name="no_tags_loaded">Yüklenen görüntü yok</string>
<string name="no_sources_loaded">Yüklenen kaynak yok</string>
<string name="drawer_loading">Yükleniyor…</string>
<string name="menu_home_search">Ara</string>
<string name="can_delete_source">Kaynak silinemiyor…</string>
<string name="base_url_error">Selfoss Örneğinizle iletişim kurmaya çalışırken bir sorun oluştu. Sorun devam ederse, lütfen benimle iletişime geçin.</string>
<string name="pref_header_theme">Temalar</string>
<string name="default_theme">Varsayılan</string>
<string name="teal_orange_theme">Deniz mavisi/turuncu/ışık</string>
<string name="cyan_pink_theme">Camgöbeği/pembe/ışık</string>
<string name="grey_orange_theme">Gri/turuncu/ışık</string>
<string name="blue_amber_theme">Mavi/Amber/ışık</string>
<string name="indigo_pink_theme">Çivit/Pembe/Işık</string>
<string name="red_teal_theme">Kırmızı/deniz mavisi/ışık</string>
<string name="teal_orange_dark_theme">Deniz mavisi/turuncu/koyu</string>
<string name="cyan_pink_dark_theme">Camgöbeği/pembe/koyu</string>
<string name="default_dark_theme">Varsayılan/koyu</string>
<string name="grey_orange_dark_theme">Gri/turuncu/koyu</string>
<string name="blue_amber_dark_theme">Mavi/Kehribar/koyu</string>
<string name="indigo_pink_dark_theme">Çivit/Pembe/Işık</string>
<string name="red_teal_dark_theme">Kırmızı/deniz mavisi/koyu</string>
<string name="pref_header_debug">Hata ayıklama</string>
<string name="login_debug_title">Giriş hatalarını kaydetmek için etkinleştir</string>
<string name="login_debug_on">Oturum açma sayfasındaki herhangi bir hata günlüğe kaydedilecek</string>
<string name="login_debug_off">Oturum açma sayfasında oturum yok</string>
<string name="login_menu_debug">Hata ayıklama</string>
<string name="self_hosted_cert_switch">Kendi kendine barındırılan bir sertifika mı kullanıyorsunuz?</string>
<string name="self_signed_cert_warning">Güvenlik nedeniyle, kendinden imzalı sertifikalar varsayılan olarak desteklenmez. Bunu etkinleştirerek karşılaştığınız herhangi bir güvenlik sorununun sorumluluğunu almayacağım.</string>
<string name="pref_selfoss_category">Selfoss Uygulaması</string>
<string name="pref_api_items_number_title">Yüklenen öğe numarası</string>
<string name="read_debug_title">Okunmamış makaleleri görüntüle?</string>
<string name="read_debug_off">Bir öğeyi işaretlediğinde günlük yok</string>
<string name="read_debug_on">Bir makaleyi okundu olarak işaretlerken Api çağrıları günlüğe kaydedilir</string>
<string name="summary_debug_identifier">Hata ayıklama tanıtıcısı</string>
<string name="unique_id_to_clipboard">Tanımlayıcı panonuza kopyalanır</string>
<string name="display_header_drawer_summary">Selfoss örneği url\'li bir üstbilgi, yan çekmece üzerine gösterin.</string>
<string name="display_header_drawer_title">Hesap başlığı</string>
<string name="login_everything_title">Bütün api aramalarına giriyor</string>
<string name="login_everything_on">Bu, her api çağrısını hata ayıklama amacına yönelik olarak günlüğe kaydeder.</string>
<string name="login_everything_off">Hiçbir api çağrısı günlüğe kaydedilmez</string>
<string name="pref_general_infinite_loading_title">Kaydırma üzerine daha fazla makale yükleyin</string>
<string name="translation">Çeviri</string>
<string name="cant_open_invalid_url">Öğe url geçersiz. Uygulama çökmeyeceği için bu sorunu çözmeye çalışıyorum.</string>
<string name="drawer_report_bug">Hata bildir</string>
<string name="items_number_should_be_number">Öğe sayısı bir tamsayı olmalıdır.</string>
<string name="reader_action_more">Daha fazlasını görüntüle</string>
<string name="reader_action_open">Tarayıcıda aç</string>
<string name="reader_action_share">Paylaş</string>
</resources>

View File

@ -0,0 +1,161 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name">"Selfoss 阅读器"</string>
<string name="title_activity_login">"登录"</string>
<string name="prompt_password">"密码"</string>
<string name="prompt_http_password">"HTTP 密码"</string>
<string name="action_sign_in">"转至"</string>
<string name="error_invalid_password">"密码不够长"</string>
<string name="error_field_required">"必填字段"</string>
<string name="prompt_url">"网址"</string>
<string name="withLoginSwitch">"需要登录?"</string>
<string name="withHttpLoginSwitch">"请先登录网站"</string>
<string name="login_url_problem">"哎呀。您可能需要在网址的末尾添加一个 \"/\"。"</string>
<string name="prompt_login">"用户名"</string>
<string name="prompt_http_login">"HTTP 用户名"</string>
<string name="label_share">"分享"</string>
<string name="readAll">"全部阅读"</string>
<string name="action_disconnect">"断开连接"</string>
<string name="title_activity_settings">"设置"</string>
<string name="pref_header_general">"常用"</string>
<string name="pref_switch_actions_tap_title">"点击要对文章进行的操作"</string>
<string name="add_source_hint_tags">"标签1,标签2,标签3"</string>
<string name="add_source_hint_url">"链接"</string>
<string name="add_source_hint_name">"名称"</string>
<string name="add_source">"添加新源"</string>
<string name="add_source_save">"保存"</string>
<string name="wrong_infos">"再次检查您的详细信息。"</string>
<string name="all_posts_not_read">"所有帖子都未读"</string>
<string name="all_posts_read">"所有帖子已读"</string>
<string name="cant_get_favs">"无法获取收藏文件"</string>
<string name="cant_get_new_elements">"无法获取新文章"</string>
<string name="cant_get_read">"无法获取已读文章"</string>
<string name="nothing_here">"暂无内容!"</string>
<string name="tab_new">"新建"</string>
<string name="tab_read">"所有"</string>
<string name="tab_favs">"收藏夹"</string>
<string name="action_about">"关于我们"</string>
<string name="marked_as_read">"已读"</string>
<string name="undo_string">"撤销"</string>
<string name="addStringNoUrl">"登录以添加数据源。"</string>
<string name="cant_get_sources">"无法获取数据列表。"</string>
<string name="cant_create_source">"无法创建源数据。"</string>
<string name="cant_get_spouts">"无法获取数据列表"</string>
<string name="form_not_complete">"窗体未完成"</string>
<string name="pref_header_links">"链接"</string>
<string name="issue_tracker_link">"问题追踪器"</string>
<string name="issue_tracker_summary">"报告错误或请求新功能"</string>
<string name="warning_wrong_url">"警告"</string>
<string name="pref_switch_card_view_title">"卡片视图"</string>
<string name="cant_mark_favortie">"不能将文章标记为收藏"</string>
<string name="cant_unmark_favortie">"无法从收藏中删除项目"</string>
<string name="share">"共享"</string>
<string name="rating_prompt_title">"喜欢这个应用吗?"</string>
<string name="rating_prompt_yes">"是的!"</string>
<string name="rating_prompt_no">"不大喜欢…"</string>
<string name="rating_prompt_feedback_title">"能告诉我们为什么吗?"</string>
<string name="rating_prompt_feedback_yes">"好的!"</string>
<string name="rating_prompt_feedback_no">"以后再说。"</string>
<string name="rating_prompt_rating_title">"太好了!你能在应用商店给我们打分吗?"</string>
<string name="rating_prompt_rating_yes">"当然!"</string>
<string name="rating_prompt_rating_no">"现在不行。"</string>
<string name="rating_prompt_thanks">"谢谢,您的反馈有助于改进应用程序!"</string>
<string name="switch_unread_count">"将未读数在底部显示为一个徽标。"</string>
<string name="switch_unread_count_title">"显示未读数"</string>
<string name="display_all_counts_title">"显示收藏和已读的计数"</string>
<string name="menu_share_the_app">"邀请朋友"</string>
<string name="invitation_title">"尝试用这个应用来阅读你的 Selfoss RSS 源!"</string>
<string name="invitation_message">"我用这个应用来阅读我的 Selfoss RSS 源。你也会喜欢的!"</string>
<string name="invitation_cta">"试用应用程序"</string>
<string name="text_wrong_url">"您似乎试图使用无效的 URL。确保它是正确的如果问题仍然存在请与我联系 (通过商店的联系链接)。请注意,该应用程序需要您使用 Selfoss。没有它您无法访问 RSS 源。"</string>
<string name="pref_general_internal_browser_title">"打开应用程序中的链接"</string>
<string name="pref_general_internal_browser_on">"文章将在应用程序内打开"</string>
<string name="pref_general_internal_browser_off">"文章将使用默认浏览器打开"</string>
<string name="prefer_article_viewer_title">"使用文章查看器"</string>
<string name="prefer_article_viewer_on">"将使用文章查看器而不是内部浏览器"</string>
<string name="prefer_article_viewer_off">"将使用内部浏览器而不是文章查看器"</string>
<string name="pref_general_category_links">"链接处理"</string>
<string name="pref_general_category_displaying">"显示"</string>
<string name="pref_general_category_actions">"操作"</string>
<string name="pref_switch_card_view_on">"这些文章将以卡片形式显示"</string>
<string name="pref_switch_card_view_off">"这些文章将以列表形式显示"</string>
<string name="pref_switch_actions_tap_on">"在文章下方显示操作栏"</string>
<string name="pref_switch_actions_tap_off">"选择文章时,将会在你选择的浏览器中打开"</string>
<string name="menu_home_refresh">"更新远程"</string>
<string name="refresh_success_response">"远程已更新,您现在可以重新加载文章列表"</string>
<string name="refresh_failer_message">"更新未执行,请稍后重试,或者查看 Selfoss 日志。"</string>
<string name="refresh_in_progress">"正在进行刷新"</string>
<string name="new_apk_available_title">"一个新的安装包可用。"</string>
<string name="new_apk_available_message">"一个新的安装包可以从官方资料库下载了。"</string>
<string name="new_apk_available_get">"立即下载"</string>
<string name="new_apk_available_no">"忽略该版本"</string>
<string name="intro_hello_title">"嘿,你好!"</string>
<string name="intro_hello_message">"感谢下载应用程序!"</string>
<string name="intro_needs_selfoss_title">"在开始之前…"</string>
<string name="intro_needs_selfoss_message">"您不能在没有 Selfoss 运行的情况下使用这个应用。"</string>
<string name="intro_needs_selfoss_link">"什么是 Selfoss"</string>
<string name="intro_all_set_title">"都好了!"</string>
<string name="intro_all_set_message">"你已准备就绪。别忘了去设置页面配置应用,可以还可以在那里找到一些有用的链接。"</string>
<string name="card_height_title">全高卡片</string>
<string name="card_height_on">卡片高度将根据内容调整</string>
<string name="card_height_off">卡片高度将被固定</string>
<string name="source_code">源代码</string>
<string name="cant_mark_read">无法将文章标记为已读</string>
<string name="drawer_error_loading_tags">加载标记时出错..。</string>
<string name="drawer_error_loading_sources">加载源时出错..。</string>
<string name="drawer_item_filters">搜索条件</string>
<string name="drawer_action_clear">清空</string>
<string name="drawer_item_tags">标签</string>
<string name="drawer_item_sources">来源</string>
<string name="drawer_action_edit">编辑</string>
<string name="cache_drawer_error" tools:keep="@string/cache_drawer_error">无法缓存您的抽屉数据</string>
<string name="no_tags_loaded">未加载标签</string>
<string name="no_sources_loaded">未加载数据源</string>
<string name="drawer_loading">正在载入…</string>
<string name="menu_home_search">搜索</string>
<string name="can_delete_source">无法删除数据源…</string>
<string name="base_url_error">与您的 Selfoss 通信时出现问题。如果问题一直存在,请与我联系。</string>
<string name="pref_header_theme">主题</string>
<string name="default_theme">默认​​​​​</string>
<string name="teal_orange_theme">蓝绿色/橙色/浅色</string>
<string name="cyan_pink_theme">青色/粉红色/浅色</string>
<string name="grey_orange_theme">灰色/橙色/浅色</string>
<string name="blue_amber_theme">蓝色/琥珀色/浅色</string>
<string name="indigo_pink_theme">靛蓝/粉红色/浅色</string>
<string name="red_teal_theme">红/蓝/光</string>
<string name="teal_orange_dark_theme">青色/橙色/深色</string>
<string name="cyan_pink_dark_theme">青色/粉红色/深色</string>
<string name="default_dark_theme">默认值/暗</string>
<string name="grey_orange_dark_theme">灰色/橙色/暗色</string>
<string name="blue_amber_dark_theme">蓝色/琥珀色/暗色</string>
<string name="indigo_pink_dark_theme">靛蓝/粉红色/暗色</string>
<string name="red_teal_dark_theme">红/蓝/暗</string>
<string name="pref_header_debug">调试</string>
<string name="login_debug_title">激活以记录登录错误</string>
<string name="login_debug_on">登录页上的任何错误都将被记录</string>
<string name="login_debug_off">登录页上没有记录</string>
<string name="login_menu_debug">调试</string>
<string name="self_hosted_cert_switch">使用自托管证书?</string>
<string name="self_signed_cert_warning">出于安全考虑, 默认情况下不支持自签名证书。如果激活此项, 您遇到的任何安全问题我将概不负责。</string>
<string name="pref_selfoss_category">塞尔福斯 Api</string>
<string name="pref_api_items_number_title">已加载项目编号</string>
<string name="read_debug_title">已读文章显示为未读?</string>
<string name="read_debug_off">将项目标记为已读时没有记录</string>
<string name="read_debug_on">将项目标记为已读时将记录 Api 调用</string>
<string name="summary_debug_identifier">除错标识符</string>
<string name="unique_id_to_clipboard">复制到你的剪贴板的标识符</string>
<string name="display_header_drawer_summary">在侧边栏中显示带有 Selfoss 链接地址的页眉。</string>
<string name="display_header_drawer_title">帐户页眉</string>
<string name="login_everything_title">记录每个 api 调用</string>
<string name="login_everything_on">为了程序除错,这将记录每个 api 调用</string>
<string name="login_everything_off">将不记录任何 api 调用</string>
<string name="pref_general_infinite_loading_title">翻页时载入更多文章</string>
<string name="translation">翻译</string>
<string name="cant_open_invalid_url">项目链接地址无效。我正在设法解决这个问题,以避免应用程序崩溃。</string>
<string name="drawer_report_bug">报告错误</string>
<string name="items_number_should_be_number">项目数应为整数。</string>
<string name="reader_action_more">阅读更多</string>
<string name="reader_action_open">在浏览器中打开</string>
<string name="reader_action_share">分享</string>
</resources>

View File

@ -1,5 +1,5 @@
files:
- source: /app/src/main/res/values/strings.xml
translation: /app/src/main/res/values-%two_letters_code%/%original_file_name%
translation: /app/src/main/res/values-%android_code%/%original_file_name%
translate_attributes: '0'
content_segmentation: '0'