mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Merge branch 'main' into Files-Usages-#6307
This commit is contained in:
commit
a63b20d619
62 changed files with 840 additions and 164 deletions
|
|
@ -1,5 +1,12 @@
|
||||||
# Wikimedia Commons for Android
|
# Wikimedia Commons for Android
|
||||||
|
|
||||||
|
## v6.0.1
|
||||||
|
|
||||||
|
### What's changed
|
||||||
|
* The app now supports Android 15 with an improved user interface
|
||||||
|
* Enhanced Nearby with robust and more reliable labels
|
||||||
|
* Bug fixes and stability improvements
|
||||||
|
|
||||||
## v5.6.1
|
## v5.6.1
|
||||||
|
|
||||||
### What's changed
|
### What's changed
|
||||||
|
|
|
||||||
|
|
@ -18,14 +18,14 @@ if (isRunningOnTravisAndIsNotPRBuild) {
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "fr.free.nrw.commons"
|
namespace = "fr.free.nrw.commons"
|
||||||
compileSdk = 34
|
compileSdk = 35
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId = "fr.free.nrw.commons"
|
applicationId = "fr.free.nrw.commons"
|
||||||
minSdk = 21
|
minSdk = 21
|
||||||
targetSdk = 34
|
targetSdk = 35
|
||||||
versionCode = 1055
|
versionCode = 1057
|
||||||
versionName = "5.6.1"
|
versionName = "6.0.1"
|
||||||
|
|
||||||
setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
|
setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
|
||||||
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ import fr.free.nrw.commons.utils.ConfigUtils.getVersionNameWithSha
|
||||||
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
|
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
|
||||||
import java.util.Collections
|
import java.util.Collections
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeTopInsets
|
||||||
import fr.free.nrw.commons.utils.handleWebUrl
|
import fr.free.nrw.commons.utils.handleWebUrl
|
||||||
import fr.free.nrw.commons.utils.setUnderlinedText
|
import fr.free.nrw.commons.utils.setUnderlinedText
|
||||||
|
|
||||||
|
|
@ -47,6 +48,7 @@ class AboutActivity : BaseActivity() {
|
||||||
*/
|
*/
|
||||||
binding = ActivityAboutBinding.inflate(layoutInflater)
|
binding = ActivityAboutBinding.inflate(layoutInflater)
|
||||||
val view: View = binding!!.root
|
val view: View = binding!!.root
|
||||||
|
applyEdgeToEdgeTopInsets(binding!!.toolbarLayout)
|
||||||
setContentView(view)
|
setContentView(view)
|
||||||
|
|
||||||
setSupportActionBar(binding!!.toolbarBinding.toolbar)
|
setSupportActionBar(binding!!.toolbarBinding.toolbar)
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ object OkHttpConnectionFactory {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class CommonHeaderRequestInterceptor : Interceptor {
|
class CommonHeaderRequestInterceptor : Interceptor {
|
||||||
@Throws(IOException::class)
|
@Throws(IOException::class)
|
||||||
override fun intercept(chain: Interceptor.Chain): Response {
|
override fun intercept(chain: Interceptor.Chain): Response {
|
||||||
val request = chain.request().newBuilder()
|
val request = chain.request().newBuilder()
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import fr.free.nrw.commons.databinding.ActivityWelcomeBinding
|
||||||
import fr.free.nrw.commons.databinding.PopupForCopyrightBinding
|
import fr.free.nrw.commons.databinding.PopupForCopyrightBinding
|
||||||
import fr.free.nrw.commons.quiz.QuizActivity
|
import fr.free.nrw.commons.quiz.QuizActivity
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour
|
import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour
|
||||||
|
|
||||||
class WelcomeActivity : BaseActivity() {
|
class WelcomeActivity : BaseActivity() {
|
||||||
|
|
@ -23,6 +24,7 @@ class WelcomeActivity : BaseActivity() {
|
||||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = ActivityWelcomeBinding.inflate(layoutInflater)
|
binding = ActivityWelcomeBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding!!.welcomePager.rootView)
|
||||||
setContentView(binding!!.root)
|
setContentView(binding!!.root)
|
||||||
|
|
||||||
isQuiz = intent?.extras?.getBoolean("isQuiz", false) ?: false
|
isQuiz = intent?.extras?.getBoolean("isQuiz", false) ?: false
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatDelegate
|
import androidx.appcompat.app.AppCompatDelegate
|
||||||
import androidx.core.app.NavUtils
|
import androidx.core.app.NavUtils
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.core.view.WindowCompat
|
||||||
import fr.free.nrw.commons.BuildConfig
|
import fr.free.nrw.commons.BuildConfig
|
||||||
import fr.free.nrw.commons.CommonsApplication
|
import fr.free.nrw.commons.CommonsApplication
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
|
|
@ -32,11 +33,13 @@ import fr.free.nrw.commons.contributions.MainActivity
|
||||||
import fr.free.nrw.commons.databinding.ActivityLoginBinding
|
import fr.free.nrw.commons.databinding.ActivityLoginBinding
|
||||||
import fr.free.nrw.commons.di.ApplicationlessInjection
|
import fr.free.nrw.commons.di.ApplicationlessInjection
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore
|
import fr.free.nrw.commons.kvstore.JsonKvStore
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import fr.free.nrw.commons.utils.AbstractTextWatcher
|
import fr.free.nrw.commons.utils.AbstractTextWatcher
|
||||||
import fr.free.nrw.commons.utils.ActivityUtils.startActivityWithFlags
|
import fr.free.nrw.commons.utils.ActivityUtils.startActivityWithFlags
|
||||||
import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour
|
import fr.free.nrw.commons.utils.ConfigUtils.isBetaFlavour
|
||||||
import fr.free.nrw.commons.utils.SystemThemeUtils
|
import fr.free.nrw.commons.utils.SystemThemeUtils
|
||||||
import fr.free.nrw.commons.utils.ViewUtil.hideKeyboard
|
import fr.free.nrw.commons.utils.ViewUtil.hideKeyboard
|
||||||
|
import fr.free.nrw.commons.utils.handleKeyboardInsets
|
||||||
import fr.free.nrw.commons.utils.handleWebUrl
|
import fr.free.nrw.commons.utils.handleWebUrl
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
@ -79,7 +82,14 @@ class LoginActivity : AccountAuthenticatorActivity() {
|
||||||
delegate.installViewFactory()
|
delegate.installViewFactory()
|
||||||
delegate.onCreate(savedInstanceState)
|
delegate.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
WindowCompat.getInsetsController(window, window.decorView)
|
||||||
|
.isAppearanceLightStatusBars = !isDarkTheme
|
||||||
|
|
||||||
|
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||||
|
|
||||||
binding = ActivityLoginBinding.inflate(layoutInflater)
|
binding = ActivityLoginBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding!!.root)
|
||||||
|
binding?.aboutPrivacyPolicy?.handleKeyboardInsets()
|
||||||
with(binding!!) {
|
with(binding!!) {
|
||||||
setContentView(root)
|
setContentView(root)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import android.widget.Toast
|
||||||
import fr.free.nrw.commons.BuildConfig
|
import fr.free.nrw.commons.BuildConfig
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
|
||||||
class SignupActivity : BaseActivity() {
|
class SignupActivity : BaseActivity() {
|
||||||
|
|
@ -21,6 +22,7 @@ class SignupActivity : BaseActivity() {
|
||||||
Timber.d("Signup Activity started")
|
Timber.d("Signup Activity started")
|
||||||
|
|
||||||
webView = WebView(this)
|
webView = WebView(this)
|
||||||
|
applyEdgeToEdgeAllInsets(webView!!)
|
||||||
with(webView!!) {
|
with(webView!!) {
|
||||||
setContentView(this)
|
setContentView(this)
|
||||||
webViewClient = MyWebViewClient()
|
webViewClient = MyWebViewClient()
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ class BookmarkItemsContentProvider : CommonsDaggerContentProvider() {
|
||||||
requireDb(), projection, selection,
|
requireDb(), projection, selection,
|
||||||
selectionArgs, null, null, sortOrder
|
selectionArgs, null, null, sortOrder
|
||||||
).apply {
|
).apply {
|
||||||
setNotificationUri(requireContext().contentResolver, uri)
|
setNotificationUri(context?.contentResolver, uri)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -66,7 +66,7 @@ class BookmarkItemsContentProvider : CommonsDaggerContentProvider() {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return rowsUpdated
|
return rowsUpdated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -75,7 +75,7 @@ class BookmarkItemsContentProvider : CommonsDaggerContentProvider() {
|
||||||
*/
|
*/
|
||||||
override fun insert(uri: Uri, contentValues: ContentValues?): Uri? {
|
override fun insert(uri: Uri, contentValues: ContentValues?): Uri? {
|
||||||
val id = requireDb().insert(TABLE_NAME, null, contentValues)
|
val id = requireDb().insert(TABLE_NAME, null, contentValues)
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return "$BASE_URI/$id".toUri()
|
return "$BASE_URI/$id".toUri()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,7 +89,7 @@ class BookmarkItemsContentProvider : CommonsDaggerContentProvider() {
|
||||||
"$COLUMN_ID = ?",
|
"$COLUMN_ID = ?",
|
||||||
arrayOf(uri.lastPathSegment)
|
arrayOf(uri.lastPathSegment)
|
||||||
)
|
)
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return rows
|
return rows
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ class BookmarkPicturesContentProvider : CommonsDaggerContentProvider() {
|
||||||
requireDb(), projection, selection,
|
requireDb(), projection, selection,
|
||||||
selectionArgs, null, null, sortOrder
|
selectionArgs, null, null, sortOrder
|
||||||
)
|
)
|
||||||
cursor.setNotificationUri(requireContext().contentResolver, uri)
|
cursor.setNotificationUri(context?.contentResolver, uri)
|
||||||
|
|
||||||
return cursor
|
return cursor
|
||||||
}
|
}
|
||||||
|
|
@ -66,7 +66,7 @@ class BookmarkPicturesContentProvider : CommonsDaggerContentProvider() {
|
||||||
"Parameter `selection` should be empty when updating an ID"
|
"Parameter `selection` should be empty when updating an ID"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return rowsUpdated
|
return rowsUpdated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -75,7 +75,7 @@ class BookmarkPicturesContentProvider : CommonsDaggerContentProvider() {
|
||||||
*/
|
*/
|
||||||
override fun insert(uri: Uri, contentValues: ContentValues?): Uri {
|
override fun insert(uri: Uri, contentValues: ContentValues?): Uri {
|
||||||
val id = requireDb().insert(TABLE_NAME, null, contentValues)
|
val id = requireDb().insert(TABLE_NAME, null, contentValues)
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return "$BASE_URI/$id".toUri()
|
return "$BASE_URI/$id".toUri()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -85,7 +85,7 @@ class BookmarkPicturesContentProvider : CommonsDaggerContentProvider() {
|
||||||
"media_name = ?",
|
"media_name = ?",
|
||||||
arrayOf(uri.lastPathSegment)
|
arrayOf(uri.lastPathSegment)
|
||||||
)
|
)
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return rows
|
return rows
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import fr.free.nrw.commons.explore.categories.sub.SubCategoriesFragment
|
||||||
import fr.free.nrw.commons.media.MediaDetailPagerFragment
|
import fr.free.nrw.commons.media.MediaDetailPagerFragment
|
||||||
import fr.free.nrw.commons.media.MediaDetailProvider
|
import fr.free.nrw.commons.media.MediaDetailProvider
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import fr.free.nrw.commons.utils.handleWebUrl
|
import fr.free.nrw.commons.utils.handleWebUrl
|
||||||
import fr.free.nrw.commons.wikidata.model.WikiSite
|
import fr.free.nrw.commons.wikidata.model.WikiSite
|
||||||
import fr.free.nrw.commons.wikidata.model.page.PageTitle
|
import fr.free.nrw.commons.wikidata.model.page.PageTitle
|
||||||
|
|
@ -57,6 +58,7 @@ class CategoryDetailsActivity : BaseActivity(),
|
||||||
|
|
||||||
binding = ActivityCategoryDetailsBinding.inflate(layoutInflater)
|
binding = ActivityCategoryDetailsBinding.inflate(layoutInflater)
|
||||||
val view = binding.root
|
val view = binding.root
|
||||||
|
applyEdgeToEdgeAllInsets(view)
|
||||||
setContentView(view)
|
setContentView(view)
|
||||||
supportFragmentManager = getSupportFragmentManager()
|
supportFragmentManager = getSupportFragmentManager()
|
||||||
viewPagerAdapter = ViewPagerAdapter(this, supportFragmentManager)
|
viewPagerAdapter = ViewPagerAdapter(this, supportFragmentManager)
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ import fr.free.nrw.commons.quiz.QuizChecker
|
||||||
import fr.free.nrw.commons.settings.SettingsFragment
|
import fr.free.nrw.commons.settings.SettingsFragment
|
||||||
import fr.free.nrw.commons.startWelcome
|
import fr.free.nrw.commons.startWelcome
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import fr.free.nrw.commons.upload.UploadProgressActivity
|
import fr.free.nrw.commons.upload.UploadProgressActivity
|
||||||
import fr.free.nrw.commons.upload.worker.WorkRequestHelper.Companion.makeOneTimeWorkRequest
|
import fr.free.nrw.commons.upload.worker.WorkRequestHelper.Companion.makeOneTimeWorkRequest
|
||||||
import fr.free.nrw.commons.utils.ViewUtilWrapper
|
import fr.free.nrw.commons.utils.ViewUtilWrapper
|
||||||
|
|
@ -112,6 +113,7 @@ class MainActivity : BaseActivity(), FragmentManager.OnBackStackChangedListener
|
||||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = MainBinding.inflate(layoutInflater)
|
binding = MainBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding!!.root)
|
||||||
setContentView(binding!!.root)
|
setContentView(binding!!.root)
|
||||||
setSupportActionBar(binding!!.toolbarBinding.toolbar)
|
setSupportActionBar(binding!!.toolbarBinding.toolbar)
|
||||||
tabLayout = binding!!.fragmentMainNavTabLayout
|
tabLayout = binding!!.fragmentMainNavTabLayout
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.constraintlayout.widget.ConstraintLayout
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
import androidx.core.view.ViewGroupCompat
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.customselector.database.NotForUploadStatus
|
import fr.free.nrw.commons.customselector.database.NotForUploadStatus
|
||||||
|
|
@ -56,6 +57,8 @@ import fr.free.nrw.commons.media.ZoomableActivity
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
import fr.free.nrw.commons.upload.FileUtilsWrapper
|
import fr.free.nrw.commons.upload.FileUtilsWrapper
|
||||||
import fr.free.nrw.commons.utils.CustomSelectorUtils
|
import fr.free.nrw.commons.utils.CustomSelectorUtils
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeBottomPaddingInsets
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeTopInsets
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
|
@ -198,6 +201,9 @@ class CustomSelectorActivity :
|
||||||
.fillMaxWidth(),
|
.fillMaxWidth(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
ViewGroupCompat.installCompatInsetsDispatch(binding.root)
|
||||||
|
applyEdgeToEdgeTopInsets(toolbarBinding.toolbarLayout)
|
||||||
|
bottomSheetBinding.bottomLayout.applyEdgeToEdgeBottomPaddingInsets()
|
||||||
val view = binding.root
|
val view = binding.root
|
||||||
setContentView(view)
|
setContentView(view)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ import fr.free.nrw.commons.databinding.FragmentCustomSelectorBinding
|
||||||
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment
|
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment
|
||||||
import fr.free.nrw.commons.media.MediaClient
|
import fr.free.nrw.commons.media.MediaClient
|
||||||
import fr.free.nrw.commons.upload.FileProcessor
|
import fr.free.nrw.commons.upload.FileProcessor
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeBottomPaddingInsets
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -99,6 +100,7 @@ class FolderFragment : CommonsDaggerSupportFragment() {
|
||||||
selectorRV = binding?.selectorRv
|
selectorRV = binding?.selectorRv
|
||||||
loader = binding?.loader
|
loader = binding?.loader
|
||||||
with(binding?.selectorRv) {
|
with(binding?.selectorRv) {
|
||||||
|
this?.applyEdgeToEdgeBottomPaddingInsets()
|
||||||
this?.layoutManager = gridLayoutManager
|
this?.layoutManager = gridLayoutManager
|
||||||
this?.setHasFixedSize(true)
|
this?.setHasFixedSize(true)
|
||||||
this?.adapter = folderAdapter
|
this?.adapter = folderAdapter
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ import fr.free.nrw.commons.media.MediaClient
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
import fr.free.nrw.commons.upload.FileProcessor
|
import fr.free.nrw.commons.upload.FileProcessor
|
||||||
import fr.free.nrw.commons.upload.FileUtilsWrapper
|
import fr.free.nrw.commons.upload.FileUtilsWrapper
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeBottomPaddingInsets
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
|
|
@ -217,6 +218,7 @@ class ImageFragment :
|
||||||
imageAdapter.setSingleSelection(singleSelection)
|
imageAdapter.setSingleSelection(singleSelection)
|
||||||
gridLayoutManager = GridLayoutManager(context, getSpanCount())
|
gridLayoutManager = GridLayoutManager(context, getSpanCount())
|
||||||
with(binding?.selectorRv) {
|
with(binding?.selectorRv) {
|
||||||
|
this?.applyEdgeToEdgeBottomPaddingInsets()
|
||||||
this?.layoutManager = gridLayoutManager
|
this?.layoutManager = gridLayoutManager
|
||||||
this?.setHasFixedSize(true)
|
this?.setHasFixedSize(true)
|
||||||
this?.adapter = imageAdapter
|
this?.adapter = imageAdapter
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import android.speech.RecognizerIntent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.activity.result.ActivityResult
|
import androidx.activity.result.ActivityResult
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
|
import androidx.core.view.WindowCompat
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import fr.free.nrw.commons.CommonsApplication
|
import fr.free.nrw.commons.CommonsApplication
|
||||||
|
|
@ -20,9 +21,11 @@ import fr.free.nrw.commons.description.EditDescriptionConstants.WIKITEXT
|
||||||
import fr.free.nrw.commons.recentlanguages.RecentLanguagesDao
|
import fr.free.nrw.commons.recentlanguages.RecentLanguagesDao
|
||||||
import fr.free.nrw.commons.settings.Prefs
|
import fr.free.nrw.commons.settings.Prefs
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeBottomInsets
|
||||||
import fr.free.nrw.commons.upload.UploadMediaDetail
|
import fr.free.nrw.commons.upload.UploadMediaDetail
|
||||||
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
|
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
|
||||||
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
|
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeTopPaddingInsets
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.functions.Consumer
|
import io.reactivex.functions.Consumer
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
|
|
@ -87,6 +90,10 @@ class DescriptionEditActivity :
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
binding = ActivityDescriptionEditBinding.inflate(layoutInflater)
|
binding = ActivityDescriptionEditBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeBottomInsets(binding.btnEditSubmit)
|
||||||
|
WindowCompat.getInsetsController(window, window.decorView)
|
||||||
|
.isAppearanceLightStatusBars = false
|
||||||
|
binding.toolbar.applyEdgeToEdgeTopPaddingInsets()
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
val bundle = intent.extras
|
val bundle = intent.extras
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import dagger.Provides
|
||||||
import fr.free.nrw.commons.BetaConstants
|
import fr.free.nrw.commons.BetaConstants
|
||||||
import fr.free.nrw.commons.BuildConfig
|
import fr.free.nrw.commons.BuildConfig
|
||||||
import fr.free.nrw.commons.OkHttpConnectionFactory
|
import fr.free.nrw.commons.OkHttpConnectionFactory
|
||||||
|
import fr.free.nrw.commons.CommonHeaderRequestInterceptor
|
||||||
import fr.free.nrw.commons.actions.PageEditClient
|
import fr.free.nrw.commons.actions.PageEditClient
|
||||||
import fr.free.nrw.commons.actions.PageEditInterface
|
import fr.free.nrw.commons.actions.PageEditInterface
|
||||||
import fr.free.nrw.commons.actions.ThanksInterface
|
import fr.free.nrw.commons.actions.ThanksInterface
|
||||||
|
|
@ -60,6 +61,7 @@ class NetworkingModule {
|
||||||
.connectTimeout(120, TimeUnit.SECONDS)
|
.connectTimeout(120, TimeUnit.SECONDS)
|
||||||
.writeTimeout(120, TimeUnit.SECONDS)
|
.writeTimeout(120, TimeUnit.SECONDS)
|
||||||
.addInterceptor(httpLoggingInterceptor)
|
.addInterceptor(httpLoggingInterceptor)
|
||||||
|
.addInterceptor(CommonHeaderRequestInterceptor())
|
||||||
.readTimeout(120, TimeUnit.SECONDS)
|
.readTimeout(120, TimeUnit.SECONDS)
|
||||||
.cache(Cache(File(context.cacheDir, "okHttpCache"), OK_HTTP_CACHE_SIZE))
|
.cache(Cache(File(context.cacheDir, "okHttpCache"), OK_HTTP_CACHE_SIZE))
|
||||||
.build()
|
.build()
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import fr.free.nrw.commons.media.MediaDetailProvider
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
import fr.free.nrw.commons.utils.FragmentUtils.isFragmentUIActive
|
import fr.free.nrw.commons.utils.FragmentUtils.isFragmentUIActive
|
||||||
import fr.free.nrw.commons.utils.ViewUtil.hideKeyboard
|
import fr.free.nrw.commons.utils.ViewUtil.hideKeyboard
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
@ -48,6 +49,7 @@ class SearchActivity : BaseActivity(), MediaDetailProvider, CategoryImagesCallba
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = ActivitySearchBinding.inflate(layoutInflater)
|
binding = ActivitySearchBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding!!.root)
|
||||||
setContentView(binding!!.root)
|
setContentView(binding!!.root)
|
||||||
|
|
||||||
title = getString(R.string.title_activity_search)
|
title = getString(R.string.title_activity_search)
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ import fr.free.nrw.commons.media.MediaDetailProvider
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
import fr.free.nrw.commons.upload.structure.depictions.DepictModel
|
import fr.free.nrw.commons.upload.structure.depictions.DepictModel
|
||||||
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem
|
import fr.free.nrw.commons.upload.structure.depictions.DepictedItem
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import fr.free.nrw.commons.utils.handleWebUrl
|
import fr.free.nrw.commons.utils.handleWebUrl
|
||||||
import fr.free.nrw.commons.wikidata.WikidataConstants
|
import fr.free.nrw.commons.wikidata.WikidataConstants
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
|
|
@ -55,6 +56,7 @@ class WikidataItemDetailsActivity : BaseActivity(), MediaDetailProvider, Categor
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
binding = ActivityWikidataItemDetailsBinding.inflate(layoutInflater)
|
binding = ActivityWikidataItemDetailsBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding!!.root)
|
||||||
setContentView(binding!!.root)
|
setContentView(binding!!.root)
|
||||||
supportFragmentManager = getSupportFragmentManager()
|
supportFragmentManager = getSupportFragmentManager()
|
||||||
viewPagerAdapter = ViewPagerAdapter(this, getSupportFragmentManager())
|
viewPagerAdapter = ViewPagerAdapter(this, getSupportFragmentManager())
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ class RecentSearchesContentProvider : CommonsDaggerContentProvider() {
|
||||||
else -> throw IllegalArgumentException("Unknown URI$uri")
|
else -> throw IllegalArgumentException("Unknown URI$uri")
|
||||||
}
|
}
|
||||||
|
|
||||||
cursor.setNotificationUri(requireContext().contentResolver, uri)
|
cursor.setNotificationUri(context?.contentResolver, uri)
|
||||||
|
|
||||||
return cursor
|
return cursor
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +67,7 @@ class RecentSearchesContentProvider : CommonsDaggerContentProvider() {
|
||||||
|
|
||||||
else -> throw IllegalArgumentException("Unknown URI: $uri")
|
else -> throw IllegalArgumentException("Unknown URI: $uri")
|
||||||
}
|
}
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return "$BASE_URI/$id".toUri()
|
return "$BASE_URI/$id".toUri()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -88,7 +88,7 @@ class RecentSearchesContentProvider : CommonsDaggerContentProvider() {
|
||||||
|
|
||||||
else -> throw IllegalArgumentException("Unknown URI - $uri")
|
else -> throw IllegalArgumentException("Unknown URI - $uri")
|
||||||
}
|
}
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return rows
|
return rows
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -108,7 +108,7 @@ class RecentSearchesContentProvider : CommonsDaggerContentProvider() {
|
||||||
}
|
}
|
||||||
sqlDB.setTransactionSuccessful()
|
sqlDB.setTransactionSuccessful()
|
||||||
sqlDB.endTransaction()
|
sqlDB.endTransaction()
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return values.size
|
return values.size
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -147,7 +147,7 @@ class RecentSearchesContentProvider : CommonsDaggerContentProvider() {
|
||||||
|
|
||||||
else -> throw IllegalArgumentException("Unknown URI: $uri with type $uriType")
|
else -> throw IllegalArgumentException("Unknown URI: $uri with type $uriType")
|
||||||
}
|
}
|
||||||
requireContext().contentResolver.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return rowsUpdated
|
return rowsUpdated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -296,10 +296,19 @@ object FilePicker : Constants {
|
||||||
* https://github.com/commons-app/apps-android-commons/issues/6357
|
* https://github.com/commons-app/apps-android-commons/issues/6357
|
||||||
*/
|
*/
|
||||||
private fun takePersistableUriPermissions(context: Context, result: ActivityResult) {
|
private fun takePersistableUriPermissions(context: Context, result: ActivityResult) {
|
||||||
result.data?.data?.also { uri ->
|
result.data?.let { intentData ->
|
||||||
val takeFlags: Int = (Intent.FLAG_GRANT_READ_URI_PERMISSION
|
val takeFlags: Int = (Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||||
or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
|
// Persist the URI permission for all URIs in the clip data
|
||||||
context.contentResolver.takePersistableUriPermission(uri, takeFlags)
|
// if multiple images are selected,
|
||||||
|
// or for the single URI if only one image is selected
|
||||||
|
intentData.clipData?.let { clipData ->
|
||||||
|
for (i in 0 until clipData.itemCount) {
|
||||||
|
context.contentResolver.takePersistableUriPermission(
|
||||||
|
clipData.getItemAt(i).uri, takeFlags)
|
||||||
|
}
|
||||||
|
} ?: intentData.data?.let { uri ->
|
||||||
|
context.contentResolver.takePersistableUriPermission(uri, takeFlags)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -358,6 +367,7 @@ object FilePicker : Constants {
|
||||||
callbacks: Callbacks
|
callbacks: Callbacks
|
||||||
) {
|
) {
|
||||||
if (result.resultCode == Activity.RESULT_OK && !isPhoto(result.data)) {
|
if (result.resultCode == Activity.RESULT_OK && !isPhoto(result.data)) {
|
||||||
|
takePersistableUriPermissions(activity, result)
|
||||||
try {
|
try {
|
||||||
val files = getFilesFromGalleryPictures(result.data, activity)
|
val files = getFilesFromGalleryPictures(result.data, activity)
|
||||||
callbacks.onImagesPicked(files, ImageSource.GALLERY, restoreType(activity))
|
callbacks.onImagesPicked(files, ImageSource.GALLERY, restoreType(activity))
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ import androidx.core.content.ContextCompat
|
||||||
import androidx.core.content.IntentCompat
|
import androidx.core.content.IntentCompat
|
||||||
import androidx.core.os.BundleCompat
|
import androidx.core.os.BundleCompat
|
||||||
import androidx.core.text.HtmlCompat
|
import androidx.core.text.HtmlCompat
|
||||||
|
import androidx.core.view.WindowCompat
|
||||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
import fr.free.nrw.commons.CameraPosition
|
import fr.free.nrw.commons.CameraPosition
|
||||||
import fr.free.nrw.commons.CommonsApplication
|
import fr.free.nrw.commons.CommonsApplication
|
||||||
|
|
@ -44,6 +45,8 @@ import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.Compani
|
||||||
import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.Companion.LAST_ZOOM
|
import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.Companion.LAST_ZOOM
|
||||||
import fr.free.nrw.commons.utils.DialogUtil
|
import fr.free.nrw.commons.utils.DialogUtil
|
||||||
import fr.free.nrw.commons.utils.MapUtils.ZOOM_LEVEL
|
import fr.free.nrw.commons.utils.MapUtils.ZOOM_LEVEL
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeBottomInsets
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeTopPaddingInsets
|
||||||
import fr.free.nrw.commons.utils.handleGeoCoordinates
|
import fr.free.nrw.commons.utils.handleGeoCoordinates
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
|
|
@ -330,6 +333,9 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
|
||||||
*/
|
*/
|
||||||
private fun getToolbarUI() {
|
private fun getToolbarUI() {
|
||||||
val toolbar: ConstraintLayout = findViewById(R.id.location_picker_toolbar)
|
val toolbar: ConstraintLayout = findViewById(R.id.location_picker_toolbar)
|
||||||
|
WindowCompat.getInsetsController(window, window.decorView)
|
||||||
|
.isAppearanceLightStatusBars = false
|
||||||
|
toolbar.applyEdgeToEdgeTopPaddingInsets()
|
||||||
largeToolbarText = findViewById(R.id.location_picker_toolbar_primary_text_view)
|
largeToolbarText = findViewById(R.id.location_picker_toolbar_primary_text_view)
|
||||||
smallToolbarText = findViewById(R.id.location_picker_toolbar_secondary_text_view)
|
smallToolbarText = findViewById(R.id.location_picker_toolbar_secondary_text_view)
|
||||||
toolbar.setBackgroundColor(ContextCompat.getColor(this, R.color.primaryColor))
|
toolbar.setBackgroundColor(ContextCompat.getColor(this, R.color.primaryColor))
|
||||||
|
|
@ -460,6 +466,7 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
|
||||||
*/
|
*/
|
||||||
private fun addPlaceSelectedButton() {
|
private fun addPlaceSelectedButton() {
|
||||||
placeSelectedButton = findViewById(R.id.location_chosen_button)
|
placeSelectedButton = findViewById(R.id.location_chosen_button)
|
||||||
|
applyEdgeToEdgeBottomInsets(placeSelectedButton)
|
||||||
placeSelectedButton.setOnClickListener { placeSelected() }
|
placeSelectedButton.setOnClickListener { placeSelected() }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,8 @@ class NearbyResultItem(
|
||||||
private val wikipediaArticle: ResultTuple?,
|
private val wikipediaArticle: ResultTuple?,
|
||||||
private val commonsArticle: ResultTuple?,
|
private val commonsArticle: ResultTuple?,
|
||||||
private val location: ResultTuple?,
|
private val location: ResultTuple?,
|
||||||
private val label: ResultTuple?,
|
@field:SerializedName("label") private val label: ResultTuple?,
|
||||||
|
@field:SerializedName("itemLabel") private val itemLabel: ResultTuple?,
|
||||||
@field:SerializedName("streetAddress") private val address: ResultTuple?,
|
@field:SerializedName("streetAddress") private val address: ResultTuple?,
|
||||||
private val icon: ResultTuple?,
|
private val icon: ResultTuple?,
|
||||||
@field:SerializedName("class") private val className: ResultTuple?,
|
@field:SerializedName("class") private val className: ResultTuple?,
|
||||||
|
|
@ -29,7 +30,15 @@ class NearbyResultItem(
|
||||||
|
|
||||||
fun getLocation(): ResultTuple = location ?: ResultTuple()
|
fun getLocation(): ResultTuple = location ?: ResultTuple()
|
||||||
|
|
||||||
fun getLabel(): ResultTuple = label ?: ResultTuple()
|
/**
|
||||||
|
* Returns label for display (pins, popup), using fallback to itemLabel if needed.
|
||||||
|
*/
|
||||||
|
fun getLabel(): ResultTuple = label ?: itemLabel ?: ResultTuple()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns only the original label field, for Wikidata edits.
|
||||||
|
*/
|
||||||
|
fun getOriginalLabel(): ResultTuple = label ?: ResultTuple()
|
||||||
|
|
||||||
fun getIcon(): ResultTuple = icon ?: ResultTuple()
|
fun getIcon(): ResultTuple = icon ?: ResultTuple()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import android.os.Bundle
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import androidx.core.view.ViewGroupCompat
|
||||||
import androidx.recyclerview.widget.DividerItemDecoration
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
|
|
@ -19,8 +20,10 @@ import fr.free.nrw.commons.databinding.ActivityNotificationBinding
|
||||||
import fr.free.nrw.commons.notification.models.Notification
|
import fr.free.nrw.commons.notification.models.Notification
|
||||||
import fr.free.nrw.commons.notification.models.NotificationType
|
import fr.free.nrw.commons.notification.models.NotificationType
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeTopInsets
|
||||||
import fr.free.nrw.commons.utils.NetworkUtils
|
import fr.free.nrw.commons.utils.NetworkUtils
|
||||||
import fr.free.nrw.commons.utils.ViewUtil
|
import fr.free.nrw.commons.utils.ViewUtil
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeBottomPaddingInsets
|
||||||
import fr.free.nrw.commons.utils.handleWebUrl
|
import fr.free.nrw.commons.utils.handleWebUrl
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
|
|
@ -56,6 +59,9 @@ class NotificationActivity : BaseActivity() {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
isRead = intent.getStringExtra("title") == "read"
|
isRead = intent.getStringExtra("title") == "read"
|
||||||
binding = ActivityNotificationBinding.inflate(layoutInflater)
|
binding = ActivityNotificationBinding.inflate(layoutInflater)
|
||||||
|
ViewGroupCompat.installCompatInsetsDispatch(binding.root)
|
||||||
|
applyEdgeToEdgeTopInsets(binding.toolbar.toolbar)
|
||||||
|
binding.listView.applyEdgeToEdgeBottomPaddingInsets()
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
mNotificationWorkerFragment = supportFragmentManager.findFragmentByTag(
|
mNotificationWorkerFragment = supportFragmentManager.findFragmentByTag(
|
||||||
tagNotificationWorkerFragment
|
tagNotificationWorkerFragment
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ import fr.free.nrw.commons.databinding.ActivityProfileBinding
|
||||||
import fr.free.nrw.commons.profile.achievements.AchievementsFragment
|
import fr.free.nrw.commons.profile.achievements.AchievementsFragment
|
||||||
import fr.free.nrw.commons.profile.leaderboard.LeaderboardFragment
|
import fr.free.nrw.commons.profile.leaderboard.LeaderboardFragment
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import fr.free.nrw.commons.utils.DialogUtil
|
import fr.free.nrw.commons.utils.DialogUtil
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
|
|
@ -61,6 +62,7 @@ class ProfileActivity : BaseActivity() {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
binding = ActivityProfileBinding.inflate(layoutInflater)
|
binding = ActivityProfileBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding.root)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
setSupportActionBar(binding.toolbarBinding.toolbar)
|
setSupportActionBar(binding.toolbarBinding.toolbar)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -311,7 +311,7 @@ class LeaderboardFragment : CommonsDaggerSupportFragment() {
|
||||||
}
|
}
|
||||||
|
|
||||||
private class SelectionListener(private val handler: () -> Unit): AdapterView.OnItemSelectedListener {
|
private class SelectionListener(private val handler: () -> Unit): AdapterView.OnItemSelectedListener {
|
||||||
override fun onItemSelected(adapterView: AdapterView<*>?, view: View, i: Int, l: Long) =
|
override fun onItemSelected(adapterView: AdapterView<*>?, view: View?, i: Int, l: Long) =
|
||||||
handler()
|
handler()
|
||||||
|
|
||||||
override fun onNothingSelected(p0: AdapterView<*>?) = Unit
|
override fun onNothingSelected(p0: AdapterView<*>?) = Unit
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,11 @@ package fr.free.nrw.commons.quiz
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import androidx.activity.enableEdgeToEdge
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.core.view.WindowCompat
|
||||||
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
|
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat
|
||||||
|
|
||||||
import com.facebook.drawee.drawable.ProgressBarDrawable
|
import com.facebook.drawee.drawable.ProgressBarDrawable
|
||||||
|
|
@ -15,6 +17,7 @@ import fr.free.nrw.commons.databinding.ActivityQuizBinding
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
|
|
||||||
|
|
||||||
class QuizActivity : AppCompatActivity() {
|
class QuizActivity : AppCompatActivity() {
|
||||||
|
|
@ -37,7 +40,11 @@ class QuizActivity : AppCompatActivity() {
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
enableEdgeToEdge()
|
||||||
binding = ActivityQuizBinding.inflate(layoutInflater)
|
binding = ActivityQuizBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding.root)
|
||||||
|
WindowCompat.getInsetsController(window, window.decorView)
|
||||||
|
.isAppearanceLightStatusBars = true
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
quizController.initialize(this)
|
quizController.initialize(this)
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,11 @@ import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
|
import androidx.activity.enableEdgeToEdge
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.core.view.WindowCompat
|
||||||
|
|
||||||
import fr.free.nrw.commons.databinding.ActivityQuizResultBinding
|
import fr.free.nrw.commons.databinding.ActivityQuizResultBinding
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
@ -22,6 +24,7 @@ import java.io.FileOutputStream
|
||||||
|
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
import fr.free.nrw.commons.contributions.MainActivity
|
import fr.free.nrw.commons.contributions.MainActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -35,7 +38,11 @@ class QuizResultActivity : AppCompatActivity() {
|
||||||
|
|
||||||
public override fun onCreate(savedInstanceState: Bundle?) {
|
public override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
enableEdgeToEdge()
|
||||||
binding = ActivityQuizResultBinding.inflate(layoutInflater)
|
binding = ActivityQuizResultBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding!!.root)
|
||||||
|
WindowCompat.getInsetsController(window, window.decorView)
|
||||||
|
.isAppearanceLightStatusBars = true
|
||||||
setContentView(binding?.root)
|
setContentView(binding?.root)
|
||||||
|
|
||||||
setSupportActionBar(binding?.toolbar?.toolbar)
|
setSupportActionBar(binding?.toolbar?.toolbar)
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ class RecentLanguagesContentProvider : CommonsDaggerContentProvider() {
|
||||||
null,
|
null,
|
||||||
sortOrder
|
sortOrder
|
||||||
)
|
)
|
||||||
cursor.setNotificationUri(requireContext().contentResolver, uri)
|
cursor.setNotificationUri(context?.contentResolver, uri)
|
||||||
return cursor
|
return cursor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -90,7 +90,7 @@ class RecentLanguagesContentProvider : CommonsDaggerContentProvider() {
|
||||||
throw IllegalArgumentException("Parameter `selection` should be empty when updating an ID")
|
throw IllegalArgumentException("Parameter `selection` should be empty when updating an ID")
|
||||||
}
|
}
|
||||||
|
|
||||||
requireContext().contentResolver?.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return rowsUpdated
|
return rowsUpdated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -105,7 +105,7 @@ class RecentLanguagesContentProvider : CommonsDaggerContentProvider() {
|
||||||
null,
|
null,
|
||||||
contentValues
|
contentValues
|
||||||
)
|
)
|
||||||
requireContext().contentResolver?.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return "$BASE_URI/$id".toUri()
|
return "$BASE_URI/$id".toUri()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -119,7 +119,7 @@ class RecentLanguagesContentProvider : CommonsDaggerContentProvider() {
|
||||||
"language_code = ?",
|
"language_code = ?",
|
||||||
arrayOf(uri.lastPathSegment)
|
arrayOf(uri.lastPathSegment)
|
||||||
)
|
)
|
||||||
requireContext().contentResolver?.notifyChange(uri, null)
|
context?.contentResolver?.notifyChange(uri, null)
|
||||||
return rows
|
return rows
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ import fr.free.nrw.commons.databinding.ActivityReviewBinding
|
||||||
import fr.free.nrw.commons.delete.DeleteHelper
|
import fr.free.nrw.commons.delete.DeleteHelper
|
||||||
import fr.free.nrw.commons.media.MediaDetailFragment
|
import fr.free.nrw.commons.media.MediaDetailFragment
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import fr.free.nrw.commons.utils.DialogUtil
|
import fr.free.nrw.commons.utils.DialogUtil
|
||||||
import fr.free.nrw.commons.utils.ViewUtil
|
import fr.free.nrw.commons.utils.ViewUtil
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
|
|
@ -73,6 +74,7 @@ class ReviewActivity : BaseActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = ActivityReviewBinding.inflate(layoutInflater)
|
binding = ActivityReviewBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding.root)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
setSupportActionBar(binding.toolbarBinding?.toolbar)
|
setSupportActionBar(binding.toolbarBinding?.toolbar)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import android.os.Bundle
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import fr.free.nrw.commons.databinding.ActivitySettingsBinding
|
import fr.free.nrw.commons.databinding.ActivitySettingsBinding
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -21,6 +22,7 @@ class SettingsActivity : BaseActivity() {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = ActivitySettingsBinding.inflate(layoutInflater)
|
binding = ActivitySettingsBinding.inflate(layoutInflater)
|
||||||
val view = binding.root
|
val view = binding.root
|
||||||
|
applyEdgeToEdgeAllInsets(view)
|
||||||
setContentView(view)
|
setContentView(view)
|
||||||
|
|
||||||
setSupportActionBar(binding.toolbarBinding.toolbar)
|
setSupportActionBar(binding.toolbarBinding.toolbar)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import android.content.res.Configuration
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.DisplayMetrics
|
import android.util.DisplayMetrics
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import androidx.activity.enableEdgeToEdge
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import javax.inject.Named
|
import javax.inject.Named
|
||||||
import fr.free.nrw.commons.R
|
import fr.free.nrw.commons.R
|
||||||
|
|
@ -36,6 +37,7 @@ abstract class BaseActivity : CommonsDaggerAppCompatActivity() {
|
||||||
1f
|
1f
|
||||||
)
|
)
|
||||||
adjustFontScale(resources.configuration, fontScale)
|
adjustFontScale(resources.configuration, fontScale)
|
||||||
|
enableEdgeToEdge()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import fr.free.nrw.commons.mwapi.UserClient
|
||||||
import fr.free.nrw.commons.nearby.Place
|
import fr.free.nrw.commons.nearby.Place
|
||||||
import fr.free.nrw.commons.settings.Prefs
|
import fr.free.nrw.commons.settings.Prefs
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import fr.free.nrw.commons.upload.ThumbnailsAdapter.OnThumbnailDeletedListener
|
import fr.free.nrw.commons.upload.ThumbnailsAdapter.OnThumbnailDeletedListener
|
||||||
import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment
|
import fr.free.nrw.commons.upload.categories.UploadCategoriesFragment
|
||||||
import fr.free.nrw.commons.upload.depicts.DepictsFragment
|
import fr.free.nrw.commons.upload.depicts.DepictsFragment
|
||||||
|
|
@ -177,6 +178,7 @@ class UploadActivity : BaseActivity(), UploadContract.View, UploadBaseFragment.C
|
||||||
presenter?.setupBasicKvStoreFactory { BasicKvStore(this@UploadActivity, it) }
|
presenter?.setupBasicKvStoreFactory { BasicKvStore(this@UploadActivity, it) }
|
||||||
|
|
||||||
_binding = ActivityUploadBinding.inflate(layoutInflater)
|
_binding = ActivityUploadBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(_binding!!.root, false)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
|
|
||||||
// Overrides the back button to make sure the user is prepared to lose their progress
|
// Overrides the back button to make sure the user is prepared to lose their progress
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@ import fr.free.nrw.commons.ViewPagerAdapter
|
||||||
import fr.free.nrw.commons.contributions.ContributionDao
|
import fr.free.nrw.commons.contributions.ContributionDao
|
||||||
import fr.free.nrw.commons.databinding.ActivityUploadProgressBinding
|
import fr.free.nrw.commons.databinding.ActivityUploadProgressBinding
|
||||||
import fr.free.nrw.commons.theme.BaseActivity
|
import fr.free.nrw.commons.theme.BaseActivity
|
||||||
|
import fr.free.nrw.commons.utils.applyEdgeToEdgeAllInsets
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -35,6 +36,7 @@ class UploadProgressActivity : BaseActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
binding = ActivityUploadProgressBinding.inflate(layoutInflater)
|
binding = ActivityUploadProgressBinding.inflate(layoutInflater)
|
||||||
|
applyEdgeToEdgeAllInsets(binding.root)
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
viewPagerAdapter = ViewPagerAdapter(this, supportFragmentManager)
|
viewPagerAdapter = ViewPagerAdapter(this, supportFragmentManager)
|
||||||
binding.uploadProgressViewPager.setAdapter(viewPagerAdapter)
|
binding.uploadProgressViewPager.setAdapter(viewPagerAdapter)
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ import fr.free.nrw.commons.utils.ImageUtils.IMAGE_OK
|
||||||
import fr.free.nrw.commons.utils.ImageUtils.getErrorMessageForResult
|
import fr.free.nrw.commons.utils.ImageUtils.getErrorMessageForResult
|
||||||
import fr.free.nrw.commons.utils.NetworkUtils.isInternetConnectionEstablished
|
import fr.free.nrw.commons.utils.NetworkUtils.isInternetConnectionEstablished
|
||||||
import fr.free.nrw.commons.utils.ViewUtil.showLongToast
|
import fr.free.nrw.commons.utils.ViewUtil.showLongToast
|
||||||
|
import fr.free.nrw.commons.utils.handleKeyboardInsets
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.ArrayList
|
import java.util.ArrayList
|
||||||
|
|
@ -153,6 +154,7 @@ class UploadMediaDetailFragment : UploadBaseFragment(), UploadMediaDetailsContra
|
||||||
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
|
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
|
||||||
): View {
|
): View {
|
||||||
_binding = FragmentUploadMediaDetailFragmentBinding.inflate(inflater, container, false)
|
_binding = FragmentUploadMediaDetailFragmentBinding.inflate(inflater, container, false)
|
||||||
|
_binding!!.mediaDetailCardView.handleKeyboardInsets()
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -821,6 +823,7 @@ class UploadMediaDetailFragment : UploadBaseFragment(), UploadMediaDetailsContra
|
||||||
{
|
{
|
||||||
showProgress(false)
|
showProgress(false)
|
||||||
uploadItem.imageQuality = IMAGE_OK
|
uploadItem.imageQuality = IMAGE_OK
|
||||||
|
uploadItem.hasInvalidLocation = false // Reset invalid location flag when user confirms upload
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
presenterCallback!!.deletePictureAtIndex(index)
|
presenterCallback!!.deletePictureAtIndex(index)
|
||||||
|
|
|
||||||
|
|
@ -393,6 +393,12 @@ class UploadWorker(
|
||||||
makeWikiDataEdit(uploadResult, contribution)
|
makeWikiDataEdit(uploadResult, contribution)
|
||||||
}
|
}
|
||||||
showSuccessNotification(contribution)
|
showSuccessNotification(contribution)
|
||||||
|
if (appContext.contentResolver.persistedUriPermissions.any {
|
||||||
|
it.uri == contribution.contentUri }) {
|
||||||
|
appContext.contentResolver.releasePersistableUriPermission(
|
||||||
|
contribution.contentUri!!, Intent.FLAG_GRANT_READ_URI_PERMISSION
|
||||||
|
)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Timber.e("Stash Upload failed")
|
Timber.e("Stash Upload failed")
|
||||||
showFailedNotification(contribution)
|
showFailedNotification(contribution)
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,9 @@ object ConfigUtils {
|
||||||
val isBetaFlavour: Boolean = BuildConfig.FLAVOR == "beta"
|
val isBetaFlavour: Boolean = BuildConfig.FLAVOR == "beta"
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
private fun Context.getVersionName(): String =
|
private fun Context.getVersionName(): String? =
|
||||||
try {
|
try {
|
||||||
packageManager.getPackageInfo(packageName, 0).versionName
|
packageManager.getPackageInfo(packageName, 0).versionName ?: BuildConfig.VERSION_NAME
|
||||||
} catch (e: PackageManager.NameNotFoundException) {
|
} catch (e: PackageManager.NameNotFoundException) {
|
||||||
BuildConfig.VERSION_NAME
|
BuildConfig.VERSION_NAME
|
||||||
}
|
}
|
||||||
|
|
|
||||||
229
app/src/main/java/fr/free/nrw/commons/utils/EdgeToEdgeUtils.kt
Normal file
229
app/src/main/java/fr/free/nrw/commons/utils/EdgeToEdgeUtils.kt
Normal file
|
|
@ -0,0 +1,229 @@
|
||||||
|
package fr.free.nrw.commons.utils
|
||||||
|
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup.MarginLayoutParams
|
||||||
|
import androidx.core.view.ViewCompat
|
||||||
|
import androidx.core.view.WindowInsetsAnimationCompat
|
||||||
|
import androidx.core.view.WindowInsetsCompat
|
||||||
|
import androidx.core.view.marginBottom
|
||||||
|
import androidx.core.view.marginLeft
|
||||||
|
import androidx.core.view.marginRight
|
||||||
|
import androidx.core.view.marginTop
|
||||||
|
import androidx.core.view.updateLayoutParams
|
||||||
|
import androidx.core.view.updatePadding
|
||||||
|
import fr.free.nrw.commons.R
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies edge-to-edge system bar insets to a [View]’s margins using a custom adjustment block.
|
||||||
|
*
|
||||||
|
* Stores the initial margins to ensure inset calculations are additive, and applies the provided
|
||||||
|
* [block] with an [InsetsAccumulator] containing initial and system bar inset values.
|
||||||
|
*
|
||||||
|
* @param typeMask The type of window insets to apply. Defaults to [WindowInsetsCompat.Type.systemBars].
|
||||||
|
* @param shouldConsumeInsets If `true`, the insets are consumed and not propagated to child views.
|
||||||
|
* @param block Lambda applied to update [MarginLayoutParams] using the accumulated insets.
|
||||||
|
*/
|
||||||
|
fun View.applyEdgeToEdgeInsets(
|
||||||
|
typeMask: Int = WindowInsetsCompat.Type.systemBars(),
|
||||||
|
shouldConsumeInsets: Boolean = true,
|
||||||
|
block: MarginLayoutParams.(InsetsAccumulator) -> Unit
|
||||||
|
) {
|
||||||
|
ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets ->
|
||||||
|
val insets = windowInsets.getInsets(typeMask)
|
||||||
|
|
||||||
|
val initialTop = if (view.getTag(R.id.initial_margin_top) != null) {
|
||||||
|
view.getTag(R.id.initial_margin_top) as Int
|
||||||
|
} else {
|
||||||
|
view.setTag(R.id.initial_margin_top, view.marginTop)
|
||||||
|
view.marginTop
|
||||||
|
}
|
||||||
|
|
||||||
|
val initialBottom = if (view.getTag(R.id.initial_margin_bottom) != null) {
|
||||||
|
view.getTag(R.id.initial_margin_bottom) as Int
|
||||||
|
} else {
|
||||||
|
view.setTag(R.id.initial_margin_bottom, view.marginBottom)
|
||||||
|
view.marginBottom
|
||||||
|
}
|
||||||
|
|
||||||
|
val initialLeft = if (view.getTag(R.id.initial_margin_left) != null) {
|
||||||
|
view.getTag(R.id.initial_margin_left) as Int
|
||||||
|
} else {
|
||||||
|
view.setTag(R.id.initial_margin_left, view.marginLeft)
|
||||||
|
view.marginLeft
|
||||||
|
}
|
||||||
|
|
||||||
|
val initialRight = if (view.getTag(R.id.initial_margin_right) != null) {
|
||||||
|
view.getTag(R.id.initial_margin_right) as Int
|
||||||
|
} else {
|
||||||
|
view.setTag(R.id.initial_margin_right, view.marginRight)
|
||||||
|
view.marginRight
|
||||||
|
}
|
||||||
|
|
||||||
|
val accumulator = InsetsAccumulator(
|
||||||
|
initialTop,
|
||||||
|
insets.top,
|
||||||
|
initialBottom,
|
||||||
|
insets.bottom,
|
||||||
|
initialLeft,
|
||||||
|
insets.left,
|
||||||
|
initialRight,
|
||||||
|
insets.right
|
||||||
|
)
|
||||||
|
|
||||||
|
view.updateLayoutParams<MarginLayoutParams> {
|
||||||
|
apply { block(accumulator) }
|
||||||
|
}
|
||||||
|
|
||||||
|
if(shouldConsumeInsets) WindowInsetsCompat.CONSUMED else windowInsets
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies edge-to-edge system bar insets to the top padding of the view.
|
||||||
|
*
|
||||||
|
* @param typeMask The type of window insets to apply. Defaults to [WindowInsetsCompat.Type.systemBars].
|
||||||
|
*/
|
||||||
|
fun View.applyEdgeToEdgeTopPaddingInsets(
|
||||||
|
typeMask: Int = WindowInsetsCompat.Type.systemBars(),
|
||||||
|
) {
|
||||||
|
ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets ->
|
||||||
|
val insets = windowInsets.getInsets(typeMask)
|
||||||
|
|
||||||
|
view.updatePadding(
|
||||||
|
left = insets.left,
|
||||||
|
right = insets.right,
|
||||||
|
top = insets.top
|
||||||
|
)
|
||||||
|
|
||||||
|
WindowInsetsCompat.CONSUMED
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies edge-to-edge system bar insets to the bottom padding of the view.
|
||||||
|
*
|
||||||
|
* @param typeMask The type of window insets to apply. Defaults to [WindowInsetsCompat.Type.systemBars].
|
||||||
|
*/
|
||||||
|
fun View.applyEdgeToEdgeBottomPaddingInsets(
|
||||||
|
typeMask: Int = WindowInsetsCompat.Type.systemBars(),
|
||||||
|
) {
|
||||||
|
ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets ->
|
||||||
|
val insets = windowInsets.getInsets(typeMask)
|
||||||
|
|
||||||
|
view.updatePadding(
|
||||||
|
left = insets.left,
|
||||||
|
right = insets.right,
|
||||||
|
bottom = insets.bottom
|
||||||
|
)
|
||||||
|
|
||||||
|
WindowInsetsCompat.CONSUMED
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies system bar insets to all margins (top, bottom, left, right) of the view.
|
||||||
|
*
|
||||||
|
* @param view The target view.
|
||||||
|
* @param shouldConsumeInsets If `true`, the insets are consumed and not propagated to child views.
|
||||||
|
*/
|
||||||
|
fun applyEdgeToEdgeAllInsets(
|
||||||
|
view: View,
|
||||||
|
shouldConsumeInsets: Boolean = true
|
||||||
|
) = view.applyEdgeToEdgeInsets(shouldConsumeInsets = shouldConsumeInsets) { insets ->
|
||||||
|
leftMargin = insets.left
|
||||||
|
rightMargin = insets.right
|
||||||
|
topMargin = insets.top
|
||||||
|
bottomMargin = insets.bottom
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies system bar insets to the top and horizontal margins of the view.
|
||||||
|
*
|
||||||
|
* @param view The target view.
|
||||||
|
*/
|
||||||
|
fun applyEdgeToEdgeTopInsets(view: View) = view.applyEdgeToEdgeInsets { insets ->
|
||||||
|
leftMargin = insets.left
|
||||||
|
rightMargin = insets.right
|
||||||
|
topMargin = insets.top
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Applies system bar insets to the bottom and horizontal margins of the view.
|
||||||
|
*
|
||||||
|
* @param view The target view.
|
||||||
|
*/
|
||||||
|
fun applyEdgeToEdgeBottomInsets(view: View) = view.applyEdgeToEdgeInsets { insets ->
|
||||||
|
leftMargin = insets.left
|
||||||
|
rightMargin = insets.right
|
||||||
|
bottomMargin = insets.bottom
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adjusts a [View]'s bottom margin dynamically to account for the on-screen keyboard (IME),
|
||||||
|
* ensuring the view remains visible above the keyboard during transitions.
|
||||||
|
*
|
||||||
|
* Preserves the initial margin, adjusts during IME visibility changes,
|
||||||
|
* and accounts for navigation bar insets to avoid double offsets.
|
||||||
|
*/
|
||||||
|
fun View.handleKeyboardInsets() {
|
||||||
|
var existingBottomMargin = 0
|
||||||
|
|
||||||
|
ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets ->
|
||||||
|
existingBottomMargin = if (view.getTag(R.id.initial_margin_bottom) != null) {
|
||||||
|
view.getTag(R.id.initial_margin_bottom) as Int
|
||||||
|
} else {
|
||||||
|
view.setTag(R.id.initial_margin_bottom, view.marginBottom)
|
||||||
|
view.marginBottom
|
||||||
|
}
|
||||||
|
|
||||||
|
WindowInsetsCompat.CONSUMED
|
||||||
|
}
|
||||||
|
|
||||||
|
// Animate during IME transition
|
||||||
|
ViewCompat.setWindowInsetsAnimationCallback(
|
||||||
|
this,
|
||||||
|
object : WindowInsetsAnimationCompat.Callback(
|
||||||
|
DISPATCH_MODE_CONTINUE_ON_SUBTREE
|
||||||
|
) {
|
||||||
|
override fun onProgress(
|
||||||
|
insets: WindowInsetsCompat,
|
||||||
|
runningAnimations: MutableList<WindowInsetsAnimationCompat>
|
||||||
|
): WindowInsetsCompat {
|
||||||
|
val lp = layoutParams as MarginLayoutParams
|
||||||
|
val navBarInsets = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
|
||||||
|
val imeInsets = insets.getInsets(WindowInsetsCompat.Type.ime())
|
||||||
|
val imeVisible = insets.isVisible(WindowInsetsCompat.Type.ime())
|
||||||
|
|
||||||
|
// Avoid extra space due to system nav bar when the keyboard is shown
|
||||||
|
val imeBottomMargin = imeInsets.bottom - navBarInsets.bottom
|
||||||
|
|
||||||
|
lp.bottomMargin = if(imeVisible && imeBottomMargin >= existingBottomMargin)
|
||||||
|
imeBottomMargin + existingBottomMargin
|
||||||
|
else existingBottomMargin
|
||||||
|
|
||||||
|
layoutParams = lp
|
||||||
|
return WindowInsetsCompat.CONSUMED
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holds both initial margin values and system bar insets, providing summed values
|
||||||
|
* for each side (top, bottom, left, right) to apply in layout updates.
|
||||||
|
*/
|
||||||
|
data class InsetsAccumulator(
|
||||||
|
private val initialTop: Int,
|
||||||
|
private val insetTop: Int,
|
||||||
|
private val initialBottom: Int,
|
||||||
|
private val insetBottom: Int,
|
||||||
|
private val initialLeft: Int,
|
||||||
|
private val insetLeft: Int,
|
||||||
|
private val initialRight: Int,
|
||||||
|
private val insetRight: Int
|
||||||
|
) {
|
||||||
|
val top = initialTop + insetTop
|
||||||
|
val bottom = initialBottom + insetBottom
|
||||||
|
val left = initialLeft + insetLeft
|
||||||
|
val right = initialRight + insetRight
|
||||||
|
}
|
||||||
|
|
@ -24,6 +24,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.CompositeDisposable
|
import io.reactivex.disposables.CompositeDisposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
|
import androidx.core.graphics.createBitmap
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by blueSir9 on 3/10/17.
|
* Created by blueSir9 on 3/10/17.
|
||||||
|
|
@ -307,16 +308,19 @@ object ImageUtils {
|
||||||
* * @return
|
* * @return
|
||||||
*/
|
*/
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun addRedBorder(bitmap: Bitmap, borderSize: Int, context: Context): Bitmap {
|
fun addRedBorder(bitmap: Bitmap, borderSize: Int, context: Context): Bitmap? {
|
||||||
val bmpWithBorder = Bitmap.createBitmap(
|
return bitmap.config?.let { config ->
|
||||||
bitmap.width + borderSize * 2,
|
val bmpWithBorder =
|
||||||
bitmap.height + borderSize * 2,
|
createBitmap(
|
||||||
bitmap.config
|
width = bitmap.width + borderSize * 2,
|
||||||
)
|
height = bitmap.height + borderSize * 2,
|
||||||
val canvas = Canvas(bmpWithBorder)
|
config = config
|
||||||
canvas.drawColor(ContextCompat.getColor(context, R.color.deleteRed))
|
)
|
||||||
canvas.drawBitmap(bitmap, borderSize.toFloat(), borderSize.toFloat(), null)
|
val canvas = Canvas(bmpWithBorder)
|
||||||
return bmpWithBorder
|
canvas.drawColor(ContextCompat.getColor(context, R.color.deleteRed))
|
||||||
|
canvas.drawBitmap(bitmap, borderSize.toFloat(), borderSize.toFloat(), null)
|
||||||
|
return bmpWithBorder
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@
|
||||||
android:scrollbars="vertical"
|
android:scrollbars="vertical"
|
||||||
android:fadeScrollbars="false"
|
android:fadeScrollbars="false"
|
||||||
android:scrollbarThumbVertical="@color/primaryColor"
|
android:scrollbarThumbVertical="@color/primaryColor"
|
||||||
|
android:clipToPadding="false"
|
||||||
android:scrollbarSize="@dimen/dimen_6"/>
|
android:scrollbarSize="@dimen/dimen_6"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/switchWidget"
|
app:layout_constraintTop_toBottomOf="@id/switchWidget"
|
||||||
|
android:clipToPadding="false"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
app:actualImageScaleType="fitXY" />
|
app:actualImageScaleType="fitXY" />
|
||||||
|
|
||||||
<androidx.cardview.widget.CardView
|
<androidx.cardview.widget.CardView
|
||||||
|
android:id="@+id/media_detail_card_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:id="@+id/location_picker_toolbar"
|
android:id="@+id/location_picker_toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="78dp"
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingVertical="@dimen/small_gap"
|
||||||
tools:background="@color/primaryColor">
|
tools:background="@color/primaryColor">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|
|
||||||
|
|
@ -232,6 +232,7 @@
|
||||||
<string name="media_detail_description">Περιγραφή</string>
|
<string name="media_detail_description">Περιγραφή</string>
|
||||||
<string name="media_detail_discussion">Συζήτηση</string>
|
<string name="media_detail_discussion">Συζήτηση</string>
|
||||||
<string name="media_detail_author">Συγγραφέας</string>
|
<string name="media_detail_author">Συγγραφέας</string>
|
||||||
|
<string name="media_detail_uploader">Ανεβαστής</string>
|
||||||
<string name="media_detail_uploaded_date">Ημερομηνία μεταφόρτωσης</string>
|
<string name="media_detail_uploaded_date">Ημερομηνία μεταφόρτωσης</string>
|
||||||
<string name="media_detail_license">Άδεια</string>
|
<string name="media_detail_license">Άδεια</string>
|
||||||
<string name="media_detail_coordinates">Συντεταγμένες</string>
|
<string name="media_detail_coordinates">Συντεταγμένες</string>
|
||||||
|
|
@ -433,7 +434,7 @@
|
||||||
<string name="deletion_reason_bad_for_my_privacy">Συνειδητοποίησα ότι είναι κακό για την ιδιωτικότητά μου</string>
|
<string name="deletion_reason_bad_for_my_privacy">Συνειδητοποίησα ότι είναι κακό για την ιδιωτικότητά μου</string>
|
||||||
<string name="deletion_reason_no_longer_want_public">Άλλαξα γνώμη, δε θέλω να προβάλλεται πλέον δημόσια</string>
|
<string name="deletion_reason_no_longer_want_public">Άλλαξα γνώμη, δε θέλω να προβάλλεται πλέον δημόσια</string>
|
||||||
<string name="deletion_reason_not_interesting">Συγγνώμη, αυτή η φωτογραφία δεν είναι ενδιαφέρουσα για μια εγκυκλοπαίδεια</string>
|
<string name="deletion_reason_not_interesting">Συγγνώμη, αυτή η φωτογραφία δεν είναι ενδιαφέρουσα για μια εγκυκλοπαίδεια</string>
|
||||||
<string name="uploaded_by_myself" fuzzy="true">Ανέβηκε από εμένα στο %1$s, χρησιμοποιήθηκε σε %2$d άρθρο/α</string>
|
<string name="uploaded_by_myself">Ανέβηκε από εμένα στο %1$s, χρησιμοποιήθηκε σε τουλάχιστον %2$d άρθρο/α.</string>
|
||||||
<string name="no_uploads">Καλώς ήρθατε στα Commons!\n\nΑνεβάστε τα πρώτα σας πολυμέσα πατώντας το κουμπί της προσθήκης.</string>
|
<string name="no_uploads">Καλώς ήρθατε στα Commons!\n\nΑνεβάστε τα πρώτα σας πολυμέσα πατώντας το κουμπί της προσθήκης.</string>
|
||||||
<string name="no_categories_selected">Δεν επιλέχθηκαν κατηγορίες</string>
|
<string name="no_categories_selected">Δεν επιλέχθηκαν κατηγορίες</string>
|
||||||
<string name="no_categories_selected_warning_desc">Οι εικόνες χωρίς κατηγορίες χρησιμοποιούνται σπάνια. Θέλετε πράγματι να συνεχίσετε δίχως να επιλέξετε κατηγορίες;</string>
|
<string name="no_categories_selected_warning_desc">Οι εικόνες χωρίς κατηγορίες χρησιμοποιούνται σπάνια. Θέλετε πράγματι να συνεχίσετε δίχως να επιλέξετε κατηγορίες;</string>
|
||||||
|
|
@ -773,7 +774,7 @@
|
||||||
<string name="permissions_are_required_for_functionality">Απαιτούνται δικαιώματα για τη λειτουργικότητα</string>
|
<string name="permissions_are_required_for_functionality">Απαιτούνται δικαιώματα για τη λειτουργικότητα</string>
|
||||||
<string name="learn_how_to_write_a_useful_description">Μάθετε πώς να γράψετε μια χρήσιμη περιγραφή</string>
|
<string name="learn_how_to_write_a_useful_description">Μάθετε πώς να γράψετε μια χρήσιμη περιγραφή</string>
|
||||||
<string name="learn_how_to_write_a_useful_caption">Μάθετε πώς να γράψετε μια χρήσιμη λεζάντα</string>
|
<string name="learn_how_to_write_a_useful_caption">Μάθετε πώς να γράψετε μια χρήσιμη λεζάντα</string>
|
||||||
<string name="see_your_achievements" fuzzy="true">Δείτε τα επιτεύγματά σας</string>
|
<string name="see_your_achievements">Δείτε τα επιτεύγματά σας</string>
|
||||||
<string name="edit_image">Επεξεργασία εικόνας</string>
|
<string name="edit_image">Επεξεργασία εικόνας</string>
|
||||||
<string name="edit_location">Επεξεργασία τοποθεσίας</string>
|
<string name="edit_location">Επεξεργασία τοποθεσίας</string>
|
||||||
<string name="location_updated">Η τοποθεσία ενημερώθηκε!</string>
|
<string name="location_updated">Η τοποθεσία ενημερώθηκε!</string>
|
||||||
|
|
@ -834,4 +835,5 @@
|
||||||
<string name="show_in_nearby">Εμφάνιση στα Κοντινά</string>
|
<string name="show_in_nearby">Εμφάνιση στα Κοντινά</string>
|
||||||
<string name="image_tag_line_created_and_uploaded_by">Δημιουργήθηκε και μεταφορτώθηκε από: %1$s</string>
|
<string name="image_tag_line_created_and_uploaded_by">Δημιουργήθηκε και μεταφορτώθηκε από: %1$s</string>
|
||||||
<string name="image_tag_line_created_by_and_uploaded_by">Δημιουργήθηκε από %1$s και μεταφορτώθηκε από %2$s</string>
|
<string name="image_tag_line_created_by_and_uploaded_by">Δημιουργήθηκε από %1$s και μεταφορτώθηκε από %2$s</string>
|
||||||
|
<string name="nominated_for_deletion_btn">Προτάθηκε για Διαγραφή</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,9 @@
|
||||||
<string name="exit_location_picker">Poistu sijainnin valitsimesta</string>
|
<string name="exit_location_picker">Poistu sijainnin valitsimesta</string>
|
||||||
<string name="submit">Lähetä</string>
|
<string name="submit">Lähetä</string>
|
||||||
<string name="add_another_description">Lisää toinen kuvaus</string>
|
<string name="add_another_description">Lisää toinen kuvaus</string>
|
||||||
|
<string name="add_new_contribution">Lisää uusi tiedosto</string>
|
||||||
|
<string name="add_contribution_from_camera">Lisää uusi tiedosto kameralla</string>
|
||||||
|
<string name="add_contribution_from_photos">Lisää uusi tiedosto kuvista</string>
|
||||||
<string name="show_captions">Kuvatekstit</string>
|
<string name="show_captions">Kuvatekstit</string>
|
||||||
<string name="row_item_language_description">Kielen kuvaus</string>
|
<string name="row_item_language_description">Kielen kuvaus</string>
|
||||||
<string name="row_item_caption">Kuvateksti</string>
|
<string name="row_item_caption">Kuvateksti</string>
|
||||||
|
|
@ -45,7 +48,7 @@
|
||||||
<item quantity="one">(%1$d)</item>
|
<item quantity="one">(%1$d)</item>
|
||||||
<item quantity="other">(%1$d)</item>
|
<item quantity="other">(%1$d)</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="starting_uploads">Aloitetaan latauksia</string>
|
<string name="starting_uploads">Aloitetaan tallennuksia</string>
|
||||||
<plurals name="starting_multiple_uploads">
|
<plurals name="starting_multiple_uploads">
|
||||||
<item quantity="one">Käsitellään %d tallennus</item>
|
<item quantity="one">Käsitellään %d tallennus</item>
|
||||||
<item quantity="other">Käsitellään %d tallennusta</item>
|
<item quantity="other">Käsitellään %d tallennusta</item>
|
||||||
|
|
@ -87,7 +90,7 @@
|
||||||
<string name="unrestricted_battery_mode">Poistetaanko akun optimointi käytöstä?</string>
|
<string name="unrestricted_battery_mode">Poistetaanko akun optimointi käytöstä?</string>
|
||||||
<string name="authentication_failed">Tunnistautuminen epäonnistui, kirjaudu uudelleen sisään</string>
|
<string name="authentication_failed">Tunnistautuminen epäonnistui, kirjaudu uudelleen sisään</string>
|
||||||
<string name="uploading_started">Tallentaminen aloitettiin!</string>
|
<string name="uploading_started">Tallentaminen aloitettiin!</string>
|
||||||
<string name="uploading_queued">Lataus jonossa (rajoitettu yhteystila käytössä)</string>
|
<string name="uploading_queued">Tallennus on jonossa (rajoitettu yhteystila käytössä)</string>
|
||||||
<string name="upload_completed_notification_title">%1$s tallennettiin!</string>
|
<string name="upload_completed_notification_title">%1$s tallennettiin!</string>
|
||||||
<string name="upload_completed_notification_text">Napauta katsoaksesi tallennusta</string>
|
<string name="upload_completed_notification_text">Napauta katsoaksesi tallennusta</string>
|
||||||
<string name="upload_progress_notification_title_start">Kopioidaan palvelimelle: %s</string>
|
<string name="upload_progress_notification_title_start">Kopioidaan palvelimelle: %s</string>
|
||||||
|
|
@ -106,6 +109,8 @@
|
||||||
<string name="menu_from_camera">Ota kuva</string>
|
<string name="menu_from_camera">Ota kuva</string>
|
||||||
<string name="menu_nearby">Lähistöllä</string>
|
<string name="menu_nearby">Lähistöllä</string>
|
||||||
<string name="provider_contributions">Omat tallennukset</string>
|
<string name="provider_contributions">Omat tallennukset</string>
|
||||||
|
<string name="menu_copy_link">Kopioi linkki</string>
|
||||||
|
<string name="menu_link_copied">Linkki on kopioitu leikepöydälle.</string>
|
||||||
<string name="menu_share">Jaa</string>
|
<string name="menu_share">Jaa</string>
|
||||||
<string name="menu_view_file_page">Näytä tiedostosivu</string>
|
<string name="menu_view_file_page">Näytä tiedostosivu</string>
|
||||||
<string name="share_title_hint">Kuvateksti (vaaditaan)</string>
|
<string name="share_title_hint">Kuvateksti (vaaditaan)</string>
|
||||||
|
|
@ -122,13 +127,14 @@
|
||||||
<string name="provider_modifications">Muutokset</string>
|
<string name="provider_modifications">Muutokset</string>
|
||||||
<string name="menu_upload_single">Tallenna</string>
|
<string name="menu_upload_single">Tallenna</string>
|
||||||
<string name="categories_search_text_hint">Etsi luokkia</string>
|
<string name="categories_search_text_hint">Etsi luokkia</string>
|
||||||
<string name="depicts_search_text_hint">Hae kohteita, joita mediasi kuvaa (vuori, Taj Mahal jne.)</string>
|
<string name="depicts_search_text_hint">Hae kohteita, joita mediasi esittää (vuori, Taj Mahal jne.)</string>
|
||||||
<string name="menu_save_categories">Tallenna</string>
|
<string name="menu_save_categories">Tallenna</string>
|
||||||
|
<string name="menu_overflow_desc">Ylivuotovalikko</string>
|
||||||
<string name="refresh_button">Päivitä</string>
|
<string name="refresh_button">Päivitä</string>
|
||||||
<string name="display_list_button">Lista</string>
|
<string name="display_list_button">Lista</string>
|
||||||
<string name="contributions_subtitle_zero">(Ei vielä tallennuksia)</string>
|
<string name="contributions_subtitle_zero">(Ei vielä tallennuksia)</string>
|
||||||
<string name="categories_not_found">Luokkaa %1$s ei löytynyt</string>
|
<string name="categories_not_found">Luokkaa %1$s ei löytynyt</string>
|
||||||
<string name="depictions_not_found">Wikidata-kohteita ei löytynyt</string>
|
<string name="depictions_not_found">Hakusanaa %1$s vastaavia Wikidata-kohteita ei löytynyt</string>
|
||||||
<string name="no_child_classes">%1$s ei ole lapsiluokkia</string>
|
<string name="no_child_classes">%1$s ei ole lapsiluokkia</string>
|
||||||
<string name="no_parent_classes">%1$s ei ole vanhempia luokkia</string>
|
<string name="no_parent_classes">%1$s ei ole vanhempia luokkia</string>
|
||||||
<string name="categories_skip_explanation">Lisää luokkia tehdäksesi kuvistasi enemmän löydettäviä Wikimedia Commonssissa.\nAloita kirjoittaminen lisätäksesi luokkia.</string>
|
<string name="categories_skip_explanation">Lisää luokkia tehdäksesi kuvistasi enemmän löydettäviä Wikimedia Commonssissa.\nAloita kirjoittaminen lisätäksesi luokkia.</string>
|
||||||
|
|
@ -136,6 +142,7 @@
|
||||||
<string name="title_activity_settings">Asetukset</string>
|
<string name="title_activity_settings">Asetukset</string>
|
||||||
<string name="title_activity_signup">Rekisteröidy</string>
|
<string name="title_activity_signup">Rekisteröidy</string>
|
||||||
<string name="title_activity_featured_images">Suositellut kuvat</string>
|
<string name="title_activity_featured_images">Suositellut kuvat</string>
|
||||||
|
<string name="title_activity_custom_selector">Mukautettu valitsin</string>
|
||||||
<string name="title_activity_category_details">Luokka</string>
|
<string name="title_activity_category_details">Luokka</string>
|
||||||
<string name="title_activity_review">Vertaisarviointi</string>
|
<string name="title_activity_review">Vertaisarviointi</string>
|
||||||
<string name="menu_about">Tietoja</string>
|
<string name="menu_about">Tietoja</string>
|
||||||
|
|
@ -151,7 +158,7 @@
|
||||||
<string name="no_uploads_yet">Et ole vielä tallentanut kuvia.</string>
|
<string name="no_uploads_yet">Et ole vielä tallentanut kuvia.</string>
|
||||||
<string name="menu_retry_upload">Yritä uudelleen</string>
|
<string name="menu_retry_upload">Yritä uudelleen</string>
|
||||||
<string name="menu_cancel_upload">Peruuta</string>
|
<string name="menu_cancel_upload">Peruuta</string>
|
||||||
<string name="media_upload_policy">Lisäämällä kuvan, ilmoitan tämän olevan oma työ ja että se ei sisällä tekijänoikeuden alaista materiaalia tai selfietä ja muuten noudattaa <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">Wikimedia Commons policies</a>.</string>
|
<string name="media_upload_policy">Lisäämällä kuvan, ilmoitan tämän olevan oma työ ja että se ei sisällä tekijänoikeuden alaista materiaalia tai selfietä ja muuten noudattaa <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">Wikimedia Commonsin käytäntöjä</a>.</string>
|
||||||
<string name="menu_download">Lataa</string>
|
<string name="menu_download">Lataa</string>
|
||||||
<string name="preference_license">Oletuslisenssi</string>
|
<string name="preference_license">Oletuslisenssi</string>
|
||||||
<string name="use_previous">Käytä edellistä otsikkoa ja kuvausta</string>
|
<string name="use_previous">Käytä edellistä otsikkoa ja kuvausta</string>
|
||||||
|
|
@ -174,7 +181,7 @@
|
||||||
<string name="tutorial_3_text">ÄLÄ tallenna seuraavia:</string>
|
<string name="tutorial_3_text">ÄLÄ tallenna seuraavia:</string>
|
||||||
<string name="tutorial_3_subtext_1">Selfiet tai kuvat ystävistäsi</string>
|
<string name="tutorial_3_subtext_1">Selfiet tai kuvat ystävistäsi</string>
|
||||||
<string name="tutorial_3_subtext_2">Kuvia, jotka olet ladannut Internetistä</string>
|
<string name="tutorial_3_subtext_2">Kuvia, jotka olet ladannut Internetistä</string>
|
||||||
<string name="tutorial_3_subtext_3">Kuvakaappaukset omistamistasi sovelluksista</string>
|
<string name="tutorial_3_subtext_3">Kuvakaappaukset muiden omistamista sovelluksista</string>
|
||||||
<string name="tutorial_4_text">Tallennusesimerkki:</string>
|
<string name="tutorial_4_text">Tallennusesimerkki:</string>
|
||||||
<string name="tutorial_4_subtext_1">Otsikko: Sydneyn oopperatalo</string>
|
<string name="tutorial_4_subtext_1">Otsikko: Sydneyn oopperatalo</string>
|
||||||
<string name="tutorial_4_subtext_2">Kuvaus: Sydneyn oopperatalo lahden toiselta puolelta katsottuna</string>
|
<string name="tutorial_4_subtext_2">Kuvaus: Sydneyn oopperatalo lahden toiselta puolelta katsottuna</string>
|
||||||
|
|
@ -200,15 +207,17 @@
|
||||||
<string name="location_permission_title">Pyydetään sijaintilupaa</string>
|
<string name="location_permission_title">Pyydetään sijaintilupaa</string>
|
||||||
<string name="ok">OK</string>
|
<string name="ok">OK</string>
|
||||||
<string name="warning">Varoitus</string>
|
<string name="warning">Varoitus</string>
|
||||||
|
<string name="duplicate_file_name">Vastaava tiedostonimi löytyi</string>
|
||||||
<string name="upload">Tallenna</string>
|
<string name="upload">Tallenna</string>
|
||||||
<string name="yes">Kyllä</string>
|
<string name="yes">Kyllä</string>
|
||||||
<string name="no">Ei</string>
|
<string name="no">Ei</string>
|
||||||
<string name="media_detail_caption">Kuvateksti</string>
|
<string name="media_detail_caption">Kuvateksti</string>
|
||||||
<string name="media_detail_title">Otsikko</string>
|
<string name="media_detail_title">Otsikko</string>
|
||||||
<string name="media_detail_depiction">Kuvaukset</string>
|
<string name="media_detail_depiction">Esittää-tunnisteet</string>
|
||||||
<string name="media_detail_description">Kuvaus</string>
|
<string name="media_detail_description">Kuvaus</string>
|
||||||
<string name="media_detail_discussion">Keskustelu</string>
|
<string name="media_detail_discussion">Keskustelu</string>
|
||||||
<string name="media_detail_author">Tekijä</string>
|
<string name="media_detail_author">Tekijä</string>
|
||||||
|
<string name="media_detail_uploader">Tallentaja</string>
|
||||||
<string name="media_detail_uploaded_date">Tallennuspäivämäärä</string>
|
<string name="media_detail_uploaded_date">Tallennuspäivämäärä</string>
|
||||||
<string name="media_detail_license">Lisenssi</string>
|
<string name="media_detail_license">Lisenssi</string>
|
||||||
<string name="media_detail_coordinates">Koordinaatit</string>
|
<string name="media_detail_coordinates">Koordinaatit</string>
|
||||||
|
|
@ -216,6 +225,7 @@
|
||||||
<string name="become_a_tester_title">Ryhdy beetatestaajaksi</string>
|
<string name="become_a_tester_title">Ryhdy beetatestaajaksi</string>
|
||||||
<string name="become_a_tester_description">Valitse beeta-kanavamme Google Playssa ja hanki varhainen pääsy uusiin ominaisuuksiin ja virheenkorjauksiin</string>
|
<string name="become_a_tester_description">Valitse beeta-kanavamme Google Playssa ja hanki varhainen pääsy uusiin ominaisuuksiin ja virheenkorjauksiin</string>
|
||||||
<string name="_2fa_code">Kaksivaiheisen tunnistautumisen koodi</string>
|
<string name="_2fa_code">Kaksivaiheisen tunnistautumisen koodi</string>
|
||||||
|
<string name="email_auth_code">Sähköpostivahvistuskoodi</string>
|
||||||
<string name="logout_verification">Haluatko varmasti kirjautua ulos?</string>
|
<string name="logout_verification">Haluatko varmasti kirjautua ulos?</string>
|
||||||
<string name="mediaimage_failed">Mediakuva epäonnistui</string>
|
<string name="mediaimage_failed">Mediakuva epäonnistui</string>
|
||||||
<string name="no_subcategory_found">Alaluokkia ei löytynyt</string>
|
<string name="no_subcategory_found">Alaluokkia ei löytynyt</string>
|
||||||
|
|
@ -236,6 +246,7 @@
|
||||||
<string name="navigation_item_about">Tietoja</string>
|
<string name="navigation_item_about">Tietoja</string>
|
||||||
<string name="navigation_item_settings">Asetukset</string>
|
<string name="navigation_item_settings">Asetukset</string>
|
||||||
<string name="navigation_item_feedback">Palaute</string>
|
<string name="navigation_item_feedback">Palaute</string>
|
||||||
|
<string name="navigation_item_feedback_github">Palaute GitHubissa</string>
|
||||||
<string name="navigation_item_logout">Kirjaudu ulos</string>
|
<string name="navigation_item_logout">Kirjaudu ulos</string>
|
||||||
<string name="navigation_item_info">Opas</string>
|
<string name="navigation_item_info">Opas</string>
|
||||||
<string name="navigation_item_notification">Ilmoitukset</string>
|
<string name="navigation_item_notification">Ilmoitukset</string>
|
||||||
|
|
@ -270,14 +281,14 @@
|
||||||
<string name="skip_login">Ohita</string>
|
<string name="skip_login">Ohita</string>
|
||||||
<string name="navigation_item_login">Kirjaudu sisään</string>
|
<string name="navigation_item_login">Kirjaudu sisään</string>
|
||||||
<string name="skip_login_title">Haluatko todella ohittaa kirjautumisen?</string>
|
<string name="skip_login_title">Haluatko todella ohittaa kirjautumisen?</string>
|
||||||
<string name="skip_login_message" fuzzy="true">Sinun täytyy kirjautua sisään tallentaaksesi kuvia tulevaisuudessa.</string>
|
<string name="skip_login_message">Sinun täytyy kirjautua sisään tallentaaksesi kuvia tulevaisuudessa.</string>
|
||||||
<string name="login_alert_message">Kirjaudu sisään käyttääksesi tätä ominaisuutta</string>
|
<string name="login_alert_message">Kirjaudu sisään käyttääksesi tätä ominaisuutta</string>
|
||||||
<string name="copy_wikicode">Kopioi wikiteksti leikepöydälle</string>
|
<string name="copy_wikicode">Kopioi wikiteksti leikepöydälle</string>
|
||||||
<string name="wikicode_copied">Wikiteksti kopioitiin leikepöydälle</string>
|
<string name="wikicode_copied">Wikiteksti kopioitiin leikepöydälle</string>
|
||||||
<string name="nearby_location_not_available">Nearby ei välttämättä toimi, sillä sijainti ei käytettävissä.</string>
|
<string name="nearby_location_not_available">Lähistöllä-toiminto ei välttämättä toimi kunnolla, sillä sijainti ei käytettävissä.</string>
|
||||||
<string name="upload_location_access_denied">Sijainnin käyttö kielletty. Aseta sijaintisi manuaalisesti käyttääksesi tätä ominaisuutta.</string>
|
<string name="upload_location_access_denied">Sijainnin käyttö kielletty. Aseta sijaintisi manuaalisesti käyttääksesi tätä ominaisuutta.</string>
|
||||||
<string name="location_permission_rationale_nearby">Lupa vaaditaan läheisten paikkojen luettelon näyttämiseen</string>
|
<string name="location_permission_rationale_nearby">Lupa vaaditaan lähellä olevien paikkojen luettelon näyttämiseen</string>
|
||||||
<string name="location_permission_rationale_explore">Lupa vaaditaan läheltä otettujen kuvien luettelon näyttämiseen</string>
|
<string name="location_permission_rationale_explore">Lupa vaaditaan lähellä otettujen kuvien luettelon näyttämiseen</string>
|
||||||
<string name="nearby_directions">Reitit</string>
|
<string name="nearby_directions">Reitit</string>
|
||||||
<string name="nearby_wikidata">Wikidata</string>
|
<string name="nearby_wikidata">Wikidata</string>
|
||||||
<string name="nearby_wikipedia">Wikipedia</string>
|
<string name="nearby_wikipedia">Wikipedia</string>
|
||||||
|
|
@ -312,7 +323,7 @@
|
||||||
<string name="search_recent_header">Äskettäiset haut:</string>
|
<string name="search_recent_header">Äskettäiset haut:</string>
|
||||||
<string name="provider_searches">Äskettäin haetut kyselyt</string>
|
<string name="provider_searches">Äskettäin haetut kyselyt</string>
|
||||||
<string name="error_loading_categories">Luokkia ladattaessa tapahtui virhe.</string>
|
<string name="error_loading_categories">Luokkia ladattaessa tapahtui virhe.</string>
|
||||||
<string name="error_loading_depictions">Virhe ladattaessa kuvauksia.</string>
|
<string name="error_loading_depictions">Virhe ladattaessa esittää-tunnisteita.</string>
|
||||||
<string name="search_tab_title_media">Media</string>
|
<string name="search_tab_title_media">Media</string>
|
||||||
<string name="search_tab_title_categories">Luokat</string>
|
<string name="search_tab_title_categories">Luokat</string>
|
||||||
<string name="search_tab_title_depictions">Kohteet</string>
|
<string name="search_tab_title_depictions">Kohteet</string>
|
||||||
|
|
@ -327,8 +338,8 @@
|
||||||
<string name="quiz_question_string">Onko tämä kuva OK tallennettavaksi?</string>
|
<string name="quiz_question_string">Onko tämä kuva OK tallennettavaksi?</string>
|
||||||
<string name="question">Kysymys</string>
|
<string name="question">Kysymys</string>
|
||||||
<string name="result">Tulos</string>
|
<string name="result">Tulos</string>
|
||||||
<string name="quiz_back_button">Jos jatkat poistettavien kuvien lataamista, tilisi todennäköisesti kielletään. Haluatko varmasti lopettaa tietokilpailun?</string>
|
<string name="quiz_back_button">Jos jatkat poistettavien kuvien tallentamista, tunnuksesi tullaan todennäköisesti estämään. Haluatko varmasti lopettaa tietokilpailun?</string>
|
||||||
<string name="quiz_alert_message">Yli %1$s tallentamistasi kuvista on poistettu. Mikäli jatkat poistamista vaativien kuvien lataamista, tilisi todennäköisesti estetään.\n\nHaluatko tutustua oppaaseen uudelleen ja tehdä sen jälkeen tietovisan oppiaksesi minkälaisia kuvia saa ja ei saa tallentaa?</string>
|
<string name="quiz_alert_message">Yli %1$s tallentamistasi kuvista on poistettu. Mikäli jatkat poistamista vaativien kuvien tallentamista, tunnuksesi tullaan todennäköisesti estämään.\n\nHaluatko tutustua oppaaseen uudelleen ja tehdä sen jälkeen tietovisan oppiaksesi, minkälaisia kuvia saa ja ei saa tallentaa?</string>
|
||||||
<string name="selfie_answer">Selfieillä ei ole paljoa arvoa tietosanakirjassa. Älä tallenna kuvaa itsestäsi, ellei sinusta jo ole Wikipedia-artikkelia.</string>
|
<string name="selfie_answer">Selfieillä ei ole paljoa arvoa tietosanakirjassa. Älä tallenna kuvaa itsestäsi, ellei sinusta jo ole Wikipedia-artikkelia.</string>
|
||||||
<string name="taj_mahal_answer">Monumenteista ja maisemista otetut kuvat ovat hyväksyttäviä tallennettavaksi useimmissa maissa. Huomaa kuitenkin että ulkotiloihin sijoitetut väliaikaiset tilataideteokset ovat usein suojattu tekijänoikeudella ja niistä otettuja kuvia ei usein saa tallentaa.</string>
|
<string name="taj_mahal_answer">Monumenteista ja maisemista otetut kuvat ovat hyväksyttäviä tallennettavaksi useimmissa maissa. Huomaa kuitenkin että ulkotiloihin sijoitetut väliaikaiset tilataideteokset ovat usein suojattu tekijänoikeudella ja niistä otettuja kuvia ei usein saa tallentaa.</string>
|
||||||
<string name="screenshot_answer">Kuvakaappauksia sivustoista tulkitaan jäljennöksiksi ja ovat täten sivuston kopiosuojan piirissä. Kuvia voidaan käyttää asianmukaisella tekijältä saadulta luvalla. Ilman kyseistä lupaa, mitä tahansa heidän materiaalistaan tuottamaa tuotosta tulkitaan alkuperäisen tekijän näkökulmasta luvattomaksi kopioksi.</string>
|
<string name="screenshot_answer">Kuvakaappauksia sivustoista tulkitaan jäljennöksiksi ja ovat täten sivuston kopiosuojan piirissä. Kuvia voidaan käyttää asianmukaisella tekijältä saadulta luvalla. Ilman kyseistä lupaa, mitä tahansa heidän materiaalistaan tuottamaa tuotosta tulkitaan alkuperäisen tekijän näkökulmasta luvattomaksi kopioksi.</string>
|
||||||
|
|
@ -350,17 +361,18 @@
|
||||||
<string name="error_fetching_nearby_monuments">Virhe läheisiä monumentteja haettaessa.</string>
|
<string name="error_fetching_nearby_monuments">Virhe läheisiä monumentteja haettaessa.</string>
|
||||||
<string name="no_recent_searches">Ei viimeaikaisia hakuja</string>
|
<string name="no_recent_searches">Ei viimeaikaisia hakuja</string>
|
||||||
<string name="delete_recent_searches_dialog">Haluatko varmasti tyhjentää hakuhistoriasi?</string>
|
<string name="delete_recent_searches_dialog">Haluatko varmasti tyhjentää hakuhistoriasi?</string>
|
||||||
<string name="cancel_upload_dialog">Haluatko varmasti peruuttaa tämän latauksen?</string>
|
<string name="cancel_upload_dialog">Haluatko varmasti peruuttaa tämän tallennuksen?</string>
|
||||||
<string name="delete_search_dialog">Haluatko poistaa tämän haun?</string>
|
<string name="delete_search_dialog">Haluatko poistaa tämän haun?</string>
|
||||||
<string name="search_history_deleted">Hakuhistoria poistettu</string>
|
<string name="search_history_deleted">Hakuhistoria poistettu</string>
|
||||||
<string name="nominate_delete">Ehdota poistettavaksi</string>
|
<string name="nominate_delete">Ehdota poistettavaksi</string>
|
||||||
<string name="delete">Poista</string>
|
<string name="delete">Poista</string>
|
||||||
<string name="Achievements">Saavutukset</string>
|
<string name="Achievements">Saavutukset</string>
|
||||||
<string name="Profile">Profiili</string>
|
<string name="Profile">Profiili</string>
|
||||||
|
<string name="badges">Merkit</string>
|
||||||
<string name="statistics">Tilastot</string>
|
<string name="statistics">Tilastot</string>
|
||||||
<string name="statistics_thanks">Kiitos vastaanotettu</string>
|
<string name="statistics_thanks">Kiitos vastaanotettu</string>
|
||||||
<string name="statistics_featured">Suositellut kuvat</string>
|
<string name="statistics_featured">Suositellut kuvat</string>
|
||||||
<string name="statistics_wikidata_edits">Kuvia läheltä</string>
|
<string name="statistics_wikidata_edits">\"Lähistöllä\"-kuvat</string>
|
||||||
<string name="level">Taso %d</string>
|
<string name="level">Taso %d</string>
|
||||||
<string name="profile_withLevel">%s (taso %s)</string>
|
<string name="profile_withLevel">%s (taso %s)</string>
|
||||||
<string name="images_uploaded">Kuvia tallennettu</string>
|
<string name="images_uploaded">Kuvia tallennettu</string>
|
||||||
|
|
@ -369,9 +381,9 @@
|
||||||
<string name="achievements_share_message">Jaa saavutuksesi ystäviesi kanssa!</string>
|
<string name="achievements_share_message">Jaa saavutuksesi ystäviesi kanssa!</string>
|
||||||
<string name="achievements_info_message">Tasosi nousee, kun täytät nämä vaatimukset. Tilastot-osion kohteita ei lasketa tasoosi.</string>
|
<string name="achievements_info_message">Tasosi nousee, kun täytät nämä vaatimukset. Tilastot-osion kohteita ei lasketa tasoosi.</string>
|
||||||
<string name="achievements_revert_limit_message">vähimmäisvaatimus:</string>
|
<string name="achievements_revert_limit_message">vähimmäisvaatimus:</string>
|
||||||
<string name="images_uploaded_explanation">Lähetettyjen kuvien määrä Commonsiin minkä tahansa latausohjelmiston kautta</string>
|
<string name="images_uploaded_explanation">Lähetettyjen kuvien määrä Commonsiin minkä tahansa tallennusohjelmiston kautta</string>
|
||||||
<string name="images_reverted_explanation">Niiden kuvien prosenttiosuus, jotka olet ladannut Commonsiin ja joita ei poistettu</string>
|
<string name="images_reverted_explanation">Niiden kuvien prosenttiosuus, jotka olet ladannut Commonsiin ja joita ei poistettu</string>
|
||||||
<string name="images_used_explanation">Wikimedia-artikkeleissa käytettyjen Commonsiin lataamiesi kuvien määrä</string>
|
<string name="images_used_explanation">Wikimedia-artikkeleissa käytettyjen Commonsiin tallentamiesi kuvien määrä</string>
|
||||||
<string name="error_occurred">Tapahtui virhe!</string>
|
<string name="error_occurred">Tapahtui virhe!</string>
|
||||||
<string name="notifications_channel_name_all">Commons-ilmoitus</string>
|
<string name="notifications_channel_name_all">Commons-ilmoitus</string>
|
||||||
<string name="preference_author_name_toggle">Käytä mukautettua tekijän nimeä</string>
|
<string name="preference_author_name_toggle">Käytä mukautettua tekijän nimeä</string>
|
||||||
|
|
@ -385,7 +397,7 @@
|
||||||
<string name="display_nearby_notification_summary">Näytä sovelluksen sisäinen ilmoitus lähinnä kuvia tarvitsevasta paikasta</string>
|
<string name="display_nearby_notification_summary">Näytä sovelluksen sisäinen ilmoitus lähinnä kuvia tarvitsevasta paikasta</string>
|
||||||
<string name="list_sheet">Lista</string>
|
<string name="list_sheet">Lista</string>
|
||||||
<string name="storage_permission">Tallennuslupa</string>
|
<string name="storage_permission">Tallennuslupa</string>
|
||||||
<string name="write_storage_permission_rationale_for_image_share">Tarvitsemme luvan käyttääksesi laitteen ulkoista tallennustilaa kuvien lataamista varten.</string>
|
<string name="write_storage_permission_rationale_for_image_share">Tarvitsemme luvan käyttääksesi laitteen ulkoista tallennustilaa kuvien tallentamista varten.</string>
|
||||||
<string name="nearby_notification_dismiss_message">Et enää näe lähellä olevia paikkoja, jotka tarvitsevat kuvia. Voit kuitenkin halutessasi ottaa tämän ilmoituksen uudelleen käyttöön asetuksissa.</string>
|
<string name="nearby_notification_dismiss_message">Et enää näe lähellä olevia paikkoja, jotka tarvitsevat kuvia. Voit kuitenkin halutessasi ottaa tämän ilmoituksen uudelleen käyttöön asetuksissa.</string>
|
||||||
<string name="step_count">Vaihe %1$d %2$d: %3$s</string>
|
<string name="step_count">Vaihe %1$d %2$d: %3$s</string>
|
||||||
<string name="next">Seuraava</string>
|
<string name="next">Seuraava</string>
|
||||||
|
|
@ -394,6 +406,7 @@
|
||||||
<string name="map_application_missing">Laitteestasi ei löydy yhteensopivaa karttasovellusta. Asenna karttasovellus käyttääksesi tätä toimintoa.</string>
|
<string name="map_application_missing">Laitteestasi ei löydy yhteensopivaa karttasovellusta. Asenna karttasovellus käyttääksesi tätä toimintoa.</string>
|
||||||
<string name="title_page_bookmarks_pictures">Kuvat</string>
|
<string name="title_page_bookmarks_pictures">Kuvat</string>
|
||||||
<string name="title_page_bookmarks_locations">Sijainnit</string>
|
<string name="title_page_bookmarks_locations">Sijainnit</string>
|
||||||
|
<string name="title_page_bookmarks_categories">Luokat</string>
|
||||||
<string name="menu_bookmark">Lisää kirjanmerkkeihin/Poista kirjanmerkeistä</string>
|
<string name="menu_bookmark">Lisää kirjanmerkkeihin/Poista kirjanmerkeistä</string>
|
||||||
<string name="provider_bookmarks">Kirjanmerkit</string>
|
<string name="provider_bookmarks">Kirjanmerkit</string>
|
||||||
<string name="bookmark_empty">Et ole lisännyt yhtään kirjanmerkkejä</string>
|
<string name="bookmark_empty">Et ole lisännyt yhtään kirjanmerkkejä</string>
|
||||||
|
|
@ -408,8 +421,8 @@
|
||||||
<string name="no_uploads">Tervetuloa Commonsiin!\n\nTallenna ensimmäinen mediasi koskettamalla lisäyspainiketta.</string>
|
<string name="no_uploads">Tervetuloa Commonsiin!\n\nTallenna ensimmäinen mediasi koskettamalla lisäyspainiketta.</string>
|
||||||
<string name="no_categories_selected">Luokkia ei valittu</string>
|
<string name="no_categories_selected">Luokkia ei valittu</string>
|
||||||
<string name="no_categories_selected_warning_desc">Kuvat, jotka eivät ole luokissa, ovat harvoin käyttökelpoisia. Haluatko varmasti jatkaa valitsematta luokkia?</string>
|
<string name="no_categories_selected_warning_desc">Kuvat, jotka eivät ole luokissa, ovat harvoin käyttökelpoisia. Haluatko varmasti jatkaa valitsematta luokkia?</string>
|
||||||
<string name="no_depictions_selected">Kuvauksia ei valittu</string>
|
<string name="no_depictions_selected">Esittää-tunnisteita ei valittu</string>
|
||||||
<string name="no_depictions_selected_warning_desc">Kuvat, joissa on kuvatekstejä, löytyvät helpommin ja todennäköisemmin niitä käytetään. Haluatko varmasti jatkaa valitsematta kuvatekstejä?</string>
|
<string name="no_depictions_selected_warning_desc">Kuvat, joissa on esittää-tunnisteita, löytyvät helpommin ja niitä käytetään todennäköisemmin. Haluatko varmasti jatkaa valitsematta esittää-tunnisteita?</string>
|
||||||
<string name="back_button_warning">Peruuta tallennus</string>
|
<string name="back_button_warning">Peruuta tallennus</string>
|
||||||
<string name="back_button_warning_desc">Takaisin-napin painaminen peruuttaa tämän tallennuksen ja poistaa tallentamasi tiedot</string>
|
<string name="back_button_warning_desc">Takaisin-napin painaminen peruuttaa tämän tallennuksen ja poistaa tallentamasi tiedot</string>
|
||||||
<string name="back_button_continue">Jatka tallennusta</string>
|
<string name="back_button_continue">Jatka tallennusta</string>
|
||||||
|
|
@ -467,6 +480,7 @@
|
||||||
<string name="no_notification">Sinulla ei ole lukemattomia ilmoituksia</string>
|
<string name="no_notification">Sinulla ei ole lukemattomia ilmoituksia</string>
|
||||||
<string name="no_read_notification">Sinulla ei ole luettuja ilmoituksia</string>
|
<string name="no_read_notification">Sinulla ei ole luettuja ilmoituksia</string>
|
||||||
<string name="share_logs_using">Jaa lokit käyttämällä</string>
|
<string name="share_logs_using">Jaa lokit käyttämällä</string>
|
||||||
|
<string name="check_your_email_inbox">Tarkista sähköpostilaatikkosi</string>
|
||||||
<string name="menu_option_read">Näytä luetut</string>
|
<string name="menu_option_read">Näytä luetut</string>
|
||||||
<string name="menu_option_unread">Näytä lukemattomat</string>
|
<string name="menu_option_unread">Näytä lukemattomat</string>
|
||||||
<string name="error_occurred_in_picking_images">Kuvien valinnassa tapahtui virhe</string>
|
<string name="error_occurred_in_picking_images">Kuvien valinnassa tapahtui virhe</string>
|
||||||
|
|
@ -485,11 +499,11 @@
|
||||||
<string name="exif_tag_name_lensModel">Linssin malli</string>
|
<string name="exif_tag_name_lensModel">Linssin malli</string>
|
||||||
<string name="exif_tag_name_serialNumbers">Sarjanumerot</string>
|
<string name="exif_tag_name_serialNumbers">Sarjanumerot</string>
|
||||||
<string name="exif_tag_name_software">Ohjelmisto</string>
|
<string name="exif_tag_name_software">Ohjelmisto</string>
|
||||||
<string name="share_text">Lähetä valokuvia suoraan Wikimedia Commonsiin puhelimestasi. Lataa Commons-appi nyt: %1$s</string>
|
<string name="share_text">Tallenna kuvia Wikimedia Commonsiin suoraan puhelimeltasi. Lataa Commons-sovellus nyt: %1$s</string>
|
||||||
<string name="share_via">Jaa sovellus...</string>
|
<string name="share_via">Jaa sovellus...</string>
|
||||||
<string name="image_info">Kuvan tiedot</string>
|
<string name="image_info">Kuvan tiedot</string>
|
||||||
<string name="no_categories_found">Luokkia ei löytynyt</string>
|
<string name="no_categories_found">Luokkia ei löytynyt</string>
|
||||||
<string name="no_depiction_found">Kuvauksia ei löytynyt</string>
|
<string name="no_depiction_found">Esittää-tunnisteita ei löytynyt</string>
|
||||||
<string name="upload_cancelled">Peruutettu tallennus</string>
|
<string name="upload_cancelled">Peruutettu tallennus</string>
|
||||||
<string name="dialog_box_text_nomination">Miksi %1$s tulisi poistaa?</string>
|
<string name="dialog_box_text_nomination">Miksi %1$s tulisi poistaa?</string>
|
||||||
<string name="review_is_uploaded_by">%1$s oli lähettänyt: %2$s</string>
|
<string name="review_is_uploaded_by">%1$s oli lähettänyt: %2$s</string>
|
||||||
|
|
@ -505,6 +519,7 @@
|
||||||
<string name="delete_helper_ask_reason_copyright_press_photo">Lehdistökuva</string>
|
<string name="delete_helper_ask_reason_copyright_press_photo">Lehdistökuva</string>
|
||||||
<string name="delete_helper_ask_reason_copyright_internet_photo">Satunnainen kuva internetistä</string>
|
<string name="delete_helper_ask_reason_copyright_internet_photo">Satunnainen kuva internetistä</string>
|
||||||
<string name="delete_helper_ask_reason_copyright_logo">Logo</string>
|
<string name="delete_helper_ask_reason_copyright_logo">Logo</string>
|
||||||
|
<string name="delete_helper_ask_reason_copyright_no_freedom_of_panorama">Panoraamavapauden rikkomus</string>
|
||||||
<string name="delete_helper_ask_alert_set_positive_button_reason">Koska se on</string>
|
<string name="delete_helper_ask_alert_set_positive_button_reason">Koska se on</string>
|
||||||
<string name="category_edit_helper_make_edit_toast">Yritetään päivittää luokkia.</string>
|
<string name="category_edit_helper_make_edit_toast">Yritetään päivittää luokkia.</string>
|
||||||
<string name="category_edit_helper_show_edit_title">Luokan päivitys</string>
|
<string name="category_edit_helper_show_edit_title">Luokan päivitys</string>
|
||||||
|
|
@ -515,6 +530,9 @@
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="category_edit_helper_edit_message_else">Ei voitu lisätä luokkia.</string>
|
<string name="category_edit_helper_edit_message_else">Ei voitu lisätä luokkia.</string>
|
||||||
<string name="category_edit_button_text">Päivitetään luokkia</string>
|
<string name="category_edit_button_text">Päivitetään luokkia</string>
|
||||||
|
<string name="depictions_edit_helper_make_edit_toast">Yritetään päivittää esittää-tunnisteita.</string>
|
||||||
|
<string name="depictions_edit_helper_show_edit_title">Muokkaa esittää-tunnisteita</string>
|
||||||
|
<string name="depictions_edit_helper_edit_message_else">Esittää-tunnisteita ei voitu lisätä.</string>
|
||||||
<string name="coordinates_edit_helper_make_edit_toast">Yritetään päivittää koordinaatit.</string>
|
<string name="coordinates_edit_helper_make_edit_toast">Yritetään päivittää koordinaatit.</string>
|
||||||
<string name="coordinates_edit_helper_show_edit_title">Koordinaattien päivitys</string>
|
<string name="coordinates_edit_helper_show_edit_title">Koordinaattien päivitys</string>
|
||||||
<string name="description_edit_helper_show_edit_title">Kuvaus päivitetty</string>
|
<string name="description_edit_helper_show_edit_title">Kuvaus päivitetty</string>
|
||||||
|
|
@ -526,7 +544,7 @@
|
||||||
<string name="coordinates_edit_helper_edit_message_else">Koordinaatteja ei voitu lisätä.</string>
|
<string name="coordinates_edit_helper_edit_message_else">Koordinaatteja ei voitu lisätä.</string>
|
||||||
<string name="description_edit_helper_edit_message_else">Kuvauksia ei voitu lisätä.</string>
|
<string name="description_edit_helper_edit_message_else">Kuvauksia ei voitu lisätä.</string>
|
||||||
<string name="caption_edit_helper_edit_message_else">Kuvatekstiä ei voitu lisätä.</string>
|
<string name="caption_edit_helper_edit_message_else">Kuvatekstiä ei voitu lisätä.</string>
|
||||||
<string name="coordinates_picking_unsuccessful" fuzzy="true">Koordinaattien haku epäonnistui.</string>
|
<string name="coordinates_picking_unsuccessful">Kuvan koordinaatteja ei tallennettu</string>
|
||||||
<string name="descriptions_picking_unsuccessful">Kuvauksia ei voitu hakea.</string>
|
<string name="descriptions_picking_unsuccessful">Kuvauksia ei voitu hakea.</string>
|
||||||
<string name="description_activity_title">Muokkaa kuvauksia ja kuvatekstejä</string>
|
<string name="description_activity_title">Muokkaa kuvauksia ja kuvatekstejä</string>
|
||||||
<string name="share_image_via">Jaa kuva</string>
|
<string name="share_image_via">Jaa kuva</string>
|
||||||
|
|
@ -543,8 +561,13 @@
|
||||||
<string name="nearby_search_hint">Silta, museo, hotelli jne.</string>
|
<string name="nearby_search_hint">Silta, museo, hotelli jne.</string>
|
||||||
<string name="you_must_reset_your_passsword">Jokin meni pieleen kirjautumisessa. Sinun on nollattava salasanasi!</string>
|
<string name="you_must_reset_your_passsword">Jokin meni pieleen kirjautumisessa. Sinun on nollattava salasanasi!</string>
|
||||||
<string name="title_for_media">MEDIA</string>
|
<string name="title_for_media">MEDIA</string>
|
||||||
<string name="upload_nearby_place_found_title">Lähipaikka löytyi</string>
|
<string name="title_for_child_classes">ALALUOKAT</string>
|
||||||
<string name="upload_nearby_place_found_description_singular" fuzzy="true">Onko tämä kuva paikasta %1$s?</string>
|
<string name="title_for_parent_classes">YLÄLUOKAT</string>
|
||||||
|
<string name="title_for_subcategories">ALALUOKAT</string>
|
||||||
|
<string name="title_for_parent_categories">YLÄLUOKAT</string>
|
||||||
|
<string name="upload_nearby_place_found_title">Lähistöllä-paikka löytyi</string>
|
||||||
|
<string name="upload_nearby_place_found_description_plural">Ovatko nämä kuvia paikasta %1$s?</string>
|
||||||
|
<string name="upload_nearby_place_found_description_singular">Onko tämä kuva paikasta %1$s?</string>
|
||||||
<string name="title_app_shortcut_bookmark">Kirjanmerkit</string>
|
<string name="title_app_shortcut_bookmark">Kirjanmerkit</string>
|
||||||
<string name="title_app_shortcut_setting">Asetukset</string>
|
<string name="title_app_shortcut_setting">Asetukset</string>
|
||||||
<string name="remove_bookmark">Poistettu kirjanmerkeistä</string>
|
<string name="remove_bookmark">Poistettu kirjanmerkeistä</string>
|
||||||
|
|
@ -592,7 +615,7 @@
|
||||||
<string name="leaderboard_weekly">Viikoittain</string>
|
<string name="leaderboard_weekly">Viikoittain</string>
|
||||||
<string name="leaderboard_all_time">Koko ajalta</string>
|
<string name="leaderboard_all_time">Koko ajalta</string>
|
||||||
<string name="leaderboard_upload">Lähetä</string>
|
<string name="leaderboard_upload">Lähetä</string>
|
||||||
<string name="leaderboard_nearby">Lähistöltä</string>
|
<string name="leaderboard_nearby">Lähistöllä</string>
|
||||||
<string name="leaderboard_used">Käyttöjä</string>
|
<string name="leaderboard_used">Käyttöjä</string>
|
||||||
<string name="leaderboard_my_rank_button_text">Sijani</string>
|
<string name="leaderboard_my_rank_button_text">Sijani</string>
|
||||||
<string name="limited_connection_enabled">Rajoitettu yhteystila päällä!</string>
|
<string name="limited_connection_enabled">Rajoitettu yhteystila päällä!</string>
|
||||||
|
|
@ -605,9 +628,9 @@
|
||||||
<string name="cancel_upload">Peruuta tallennus</string>
|
<string name="cancel_upload">Peruuta tallennus</string>
|
||||||
<string name="limited_connection_is_on">Rajoitettu yhteystila on päällä.</string>
|
<string name="limited_connection_is_on">Rajoitettu yhteystila on päällä.</string>
|
||||||
<string name="media_details_tooltip">Kirjoita lyhyt kuvateksti. Kerro miksi kuva on kiinnostava, tyypillinen tai harvinainen ja selitä asiayhteys, näkyy se kuvassa tai ei. Käytä mahdollisimman tarkkaa terminologiaa.</string>
|
<string name="media_details_tooltip">Kirjoita lyhyt kuvateksti. Kerro miksi kuva on kiinnostava, tyypillinen tai harvinainen ja selitä asiayhteys, näkyy se kuvassa tai ei. Käytä mahdollisimman tarkkaa terminologiaa.</string>
|
||||||
<string name="depicts_tooltip">Etsi ja valitse kaikki tämän kuvan kuvaamat käsitteet. Ole mahdollisimman tarkka. Mikäli kuvattuna on monta kohdetta, valitse ne kaikki kohtuullisuuden rajoissa. Älä valitse yleisiä tunnisteita mikäli tarkempia on saatavilla.</string>
|
<string name="depicts_tooltip">Etsi ja valitse kaikki käsitteet, joita tämä kuva esittää. Ole mahdollisimman tarkka. Mikäli kuvattuna on monta kohdetta, valitse ne kaikki kohtuullisuuden rajoissa. Älä valitse yleisiä tunnisteita, mikäli tarkempia on saatavilla.</string>
|
||||||
<string name="categories_tooltip">Valitse sopivat luokat. Toisin kuin kuvaukset, luokkien nimet ovat vain englanniksi.</string>
|
<string name="categories_tooltip">Valitse sopivat luokat. Toisin kuin esittää-tunnisteet, luokkien nimet ovat vain englanniksi.</string>
|
||||||
<string name="license_tooltip">Kuka tahansa saa käyttää ja muokata Commonsiin lataamiasi kuvia. Haluatko luovuttaa kuviesi kaikki oikeudet? Haluatko tulla nimetyksi kuvien tekijänä? Haluatko kuviesi muokattujen versioiden julkaistavan samalla lisenssillä?</string>
|
<string name="license_tooltip">Kuka tahansa saa käyttää ja muokata Commonsiin tallentamiasi kuvia. Haluatko luovuttaa kuviesi kaikki oikeudet? Haluatko tulla nimetyksi kuvien tekijänä? Haluatko kuviesi muokattujen versioiden julkaistavan samalla lisenssillä?</string>
|
||||||
<string name="depicts_step_title">Esittää</string>
|
<string name="depicts_step_title">Esittää</string>
|
||||||
<string name="license_step_title">Median lisenssi</string>
|
<string name="license_step_title">Median lisenssi</string>
|
||||||
<string name="media_detail_step_title">Median tiedot</string>
|
<string name="media_detail_step_title">Median tiedot</string>
|
||||||
|
|
@ -629,18 +652,19 @@
|
||||||
<string name="custom_selector_empty_text">Ei kuvia</string>
|
<string name="custom_selector_empty_text">Ei kuvia</string>
|
||||||
<string name="done">Valmis</string>
|
<string name="done">Valmis</string>
|
||||||
<string name="back">Takaisin</string>
|
<string name="back">Takaisin</string>
|
||||||
<string name="welcome_custom_selector_ok">Mahtava</string>
|
<string name="welcome_custom_selector_ok">Mahtavaa</string>
|
||||||
<string name="custom_selector_already_uploaded_image_text">Tämä kuva on jo ladattu Commonsiin.</string>
|
<string name="custom_selector_already_uploaded_image_text">Tämä kuva on jo ladattu Commonsiin.</string>
|
||||||
<string name="learn_more">LUE LISÄÄ</string>
|
<string name="learn_more">LUE LISÄÄ</string>
|
||||||
<string name="need_permission">Tarvitaan käyttöoikeus</string>
|
<string name="need_permission">Tarvitaan käyttöoikeus</string>
|
||||||
<string name="contributions_of_user">Käyttäjän muokkaukset: %s</string>
|
<string name="contributions_of_user">Käyttäjän muokkaukset: %s</string>
|
||||||
<string name="achievements_of_user">Käyttäjän saavutukset: %s</string>
|
<string name="achievements_of_user">Käyttäjän saavutukset: %s</string>
|
||||||
<string name="menu_view_user_page" fuzzy="true">Näytä käyttäjäsivu</string>
|
<string name="menu_view_user_page">Näytä käyttäjäprofiili</string>
|
||||||
|
<string name="edit_depictions">Muokkaa esittää-tunnisteita</string>
|
||||||
<string name="edit_categories">Muokkaa luokkia</string>
|
<string name="edit_categories">Muokkaa luokkia</string>
|
||||||
<string name="advanced_options">Lisäasetukset</string>
|
<string name="advanced_options">Lisäasetukset</string>
|
||||||
<string name="apply">Käytä</string>
|
<string name="apply">Käytä</string>
|
||||||
<string name="reset">Nollaa</string>
|
<string name="reset">Nollaa</string>
|
||||||
<string name="location_message">Sijaintitiedot auttavat wikin muokkaajia löytämään kuvasi, mikä tekee siitä paljon hyödyllisemmän.\nViimeaikaisissa tallennuksissasi ei ole sijaintia.\nSuosittelemme, että otat sijainnin käyttöön kamerasovelluksesi asetuksista.\nKiitos latauksesta!</string>
|
<string name="location_message">Sijaintitiedot auttavat wikin muokkaajia löytämään kuvasi, mikä tekee siitä paljon hyödyllisemmän.\nViimeaikaisissa tallennuksissasi ei ole sijaintia.\nSuosittelemme, että otat sijainnin käyttöön kamerasovelluksesi asetuksista.\nKiitos kuvien tallentamista!</string>
|
||||||
<string name="no_location_found_title">Paikkaa ei löytynyt</string>
|
<string name="no_location_found_title">Paikkaa ei löytynyt</string>
|
||||||
<string name="add_location">Lisää paikka</string>
|
<string name="add_location">Lisää paikka</string>
|
||||||
<string name="explore_map_details">Tiedot</string>
|
<string name="explore_map_details">Tiedot</string>
|
||||||
|
|
@ -669,6 +693,7 @@
|
||||||
<string name="see_your_achievements" fuzzy="true">Näytä omat saavutukset</string>
|
<string name="see_your_achievements" fuzzy="true">Näytä omat saavutukset</string>
|
||||||
<string name="edit_image">Muokkaa kuvaa</string>
|
<string name="edit_image">Muokkaa kuvaa</string>
|
||||||
<string name="edit_location">Muokkaa sijaintia</string>
|
<string name="edit_location">Muokkaa sijaintia</string>
|
||||||
|
<string name="location_updated">Sijainti päivitetty!</string>
|
||||||
<string name="remove_location">Poista sijainti</string>
|
<string name="remove_location">Poista sijainti</string>
|
||||||
<string name="location_removed">Sijainti poistettu!</string>
|
<string name="location_removed">Sijainti poistettu!</string>
|
||||||
<string name="send_thanks_to_author">Kiitä tekijää</string>
|
<string name="send_thanks_to_author">Kiitä tekijää</string>
|
||||||
|
|
@ -681,4 +706,34 @@
|
||||||
<item quantity="one">%d kuva valittu</item>
|
<item quantity="one">%d kuva valittu</item>
|
||||||
<item quantity="other">%d kuvaa valittu</item>
|
<item quantity="other">%d kuvaa valittu</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<string name="talk">Keskustelu</string>
|
||||||
|
<string name="are_you_sure_that_you_want_cancel_all_the_uploads">Oletko varma, että haluat peruuttaa kaikki tallennukset?</string>
|
||||||
|
<string name="cancelling_all_the_uploads">Peruutetaan kaikki tallennukset...</string>
|
||||||
|
<string name="uploads">Tallennukset</string>
|
||||||
|
<string name="pending">Odottavat</string>
|
||||||
|
<string name="failed">Epäonnistuneet</string>
|
||||||
|
<string name="custom_selector_delete_folder">Poista kansio</string>
|
||||||
|
<string name="custom_selector_confirm_deletion_title">Vahvista poisto</string>
|
||||||
|
<string name="custom_selector_confirm_deletion_message">Oletko varma, että haluat poistaa kansion %1$s, jossa on %2$d kohdetta?</string>
|
||||||
|
<string name="custom_selector_delete">Poista</string>
|
||||||
|
<string name="custom_selector_cancel">Peruuta</string>
|
||||||
|
<string name="custom_selector_folder_deleted_success">Kansio %1$s poistettu</string>
|
||||||
|
<string name="custom_selector_folder_deleted_failure">Kansion %1$s poistaminen epäonnistui</string>
|
||||||
|
<string name="red_pin">Tästä paikasta ei ole vielä kuvaa. Ota ihmeessä kuva!</string>
|
||||||
|
<string name="green_pin">Tästä paikasta on jo kuva.</string>
|
||||||
|
<string name="grey_pin">Tarkistetaan, onko tästä paikasta kuvaa.</string>
|
||||||
|
<string name="error_while_loading">Virhe ladattaessa</string>
|
||||||
|
<string name="usages_on_commons_heading">Commons</string>
|
||||||
|
<string name="usages_on_other_wikis_heading">Muut wikit</string>
|
||||||
|
<string name="file_usages_container_heading">Tiedoston käyttö</string>
|
||||||
|
<string name="account">Tunnus</string>
|
||||||
|
<string name="vanish_account">Hävitä käyttäjätunnus</string>
|
||||||
|
<string name="account_vanish_request_confirm_title">Varoitus hävittämisestä</string>
|
||||||
|
<string name="account_vanish_request_confirm">Hävittäminen on <b>viimeinen keino</b> ja sitä tulee <b>käyttää vain, jos haluat lopettaa muokkaamisen lopullisesti</b> ja samalla myös piilottaa mahdollisimman paljon aiemmista toimistasi.<br/><br/>Käyttäjätunnuksen poistaminen Wikimedia Commonsissa tapahtuu muuttamalla tunnuksesi nimeä niin, etteivät muut pysty tunnistamaan muokkauksiasi. Tätä toimea kutsutaan käyttäjätunnuksen hävittämiseksi. <b>Hävittäminen ei takaa täyttä anonyymiyttä, eikä se poista hankkeisiin tekemiäsi muokkauksia</b>.</string>
|
||||||
|
<string name="caption">Kuvateksti</string>
|
||||||
|
<string name="caption_copied_to_clipboard">Kuvateksti kopioitu leikepöydälle</string>
|
||||||
|
<string name="show_in_explore">Näytä Tutki-välilehdellä</string>
|
||||||
|
<string name="image_tag_line_created_and_uploaded_by">Luonut ja tallentanut: %1$s</string>
|
||||||
|
<string name="image_tag_line_created_by_and_uploaded_by">Luonut %1$s ja tallentanut %2$s</string>
|
||||||
|
<string name="nominated_for_deletion_btn">Ehdotettu poistettavaksi</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -271,7 +271,7 @@
|
||||||
<string name="wikicode_copied">Texto wiki copiado ó portapapeis</string>
|
<string name="wikicode_copied">Texto wiki copiado ó portapapeis</string>
|
||||||
<string name="nearby_location_not_available">A localización non está dispoñible. A identificación de sitios próximos pode non funcionar correctamente.</string>
|
<string name="nearby_location_not_available">A localización non está dispoñible. A identificación de sitios próximos pode non funcionar correctamente.</string>
|
||||||
<string name="location_permission_rationale_nearby">Precísase permiso para amosar unha lista de lugares preto de aquí</string>
|
<string name="location_permission_rationale_nearby">Precísase permiso para amosar unha lista de lugares preto de aquí</string>
|
||||||
<string name="nearby_directions">COMO CHEGAR</string>
|
<string name="nearby_directions">Indicacións</string>
|
||||||
<string name="nearby_wikidata">WIKIDATA</string>
|
<string name="nearby_wikidata">WIKIDATA</string>
|
||||||
<string name="nearby_wikipedia">Wikipedia</string>
|
<string name="nearby_wikipedia">Wikipedia</string>
|
||||||
<string name="nearby_commons">COMMONS</string>
|
<string name="nearby_commons">COMMONS</string>
|
||||||
|
|
@ -354,6 +354,7 @@
|
||||||
<string name="statistics_featured">Imaxes destacadas</string>
|
<string name="statistics_featured">Imaxes destacadas</string>
|
||||||
<string name="statistics_wikidata_edits">Imaxes vía \"Lugares próximos\"</string>
|
<string name="statistics_wikidata_edits">Imaxes vía \"Lugares próximos\"</string>
|
||||||
<string name="level">Nivel %d</string>
|
<string name="level">Nivel %d</string>
|
||||||
|
<string name="profile_withLevel">%s (nivel %s)</string>
|
||||||
<string name="images_uploaded">Imaxes cargadas</string>
|
<string name="images_uploaded">Imaxes cargadas</string>
|
||||||
<string name="image_reverts">Imaxes non revertidas</string>
|
<string name="image_reverts">Imaxes non revertidas</string>
|
||||||
<string name="images_used_by_wiki">Imaxes usadas</string>
|
<string name="images_used_by_wiki">Imaxes usadas</string>
|
||||||
|
|
|
||||||
|
|
@ -649,13 +649,18 @@
|
||||||
<string name="pausing_upload">Pauzanta sendajo...</string>
|
<string name="pausing_upload">Pauzanta sendajo...</string>
|
||||||
<string name="cancelling_upload">Nuliganta sendajo...</string>
|
<string name="cancelling_upload">Nuliganta sendajo...</string>
|
||||||
<string name="cancel_upload">Cesar kargajo</string>
|
<string name="cancel_upload">Cesar kargajo</string>
|
||||||
|
<string name="limited_connection_explanation">Vu kapabligesis l\'uzo di limitizita konekto. Omna senduri pauzesis e durigos nur kande vu deskapabligos ta uzo.</string>
|
||||||
<string name="limited_connection_is_on">Kapabligesis por uzar limitizita konekti.</string>
|
<string name="limited_connection_is_on">Kapabligesis por uzar limitizita konekti.</string>
|
||||||
<string name="media_details_tooltip">Voluntez skribar kurta titulo deskriptanta quon vua imajo montras. En la deskripto, explikez pro quo la fotografuro esas interesanta, tipala o rara, ed explikez la kuntexto, videbla o ne. Skriptez tan exakta kam posibla.</string>
|
<string name="media_details_tooltip">Voluntez skribar kurta titulo deskriptanta quon vua imajo montras. En la deskripto, explikez pro quo la fotografuro esas interesanta, tipala o rara, ed explikez la kuntexto, videbla o ne. Skriptez tan exakta kam posibla.</string>
|
||||||
|
<string name="depicts_tooltip">Voluntez trovar e selektar omna konceptaji quan ca imajo reprezentas. Esez plu preciza kam vu povas. Se ta imajo montras diversa kozi, selektez precize omna ek li. Ne uzez nepreciza deskripturi, se specifika deskripturi existas.</string>
|
||||||
|
<string name="categories_tooltip">Voluntez selektar la kategorii konvenanta. Diferante de deskripturi, kategorii nur existas en Angla linguo.</string>
|
||||||
|
<string name="license_tooltip">En Commons, vua imaji povos riuzesar ed adaptesar da omni. Ka vu deziras renuncar omna autoroyuri? Ka vu deziras ke l\'imajo atribuesos a vu? Ka vu deziras adapti por uzar la sama licenco?</string>
|
||||||
<string name="depicts_step_title">Montras</string>
|
<string name="depicts_step_title">Montras</string>
|
||||||
<string name="license_step_title">Licencizo di \'\'media\'\'</string>
|
<string name="license_step_title">Licencizo di \'\'media\'\'</string>
|
||||||
<string name="media_detail_step_title">Detali pri \'\'media\'\'</string>
|
<string name="media_detail_step_title">Detali pri \'\'media\'\'</string>
|
||||||
<string name="menu_view_category_page">Vidar kategorio-pagino</string>
|
<string name="menu_view_category_page">Vidar kategorio-pagino</string>
|
||||||
<string name="menu_view_item_page">Vidar pagino dil arkivo</string>
|
<string name="menu_view_item_page">Vidar pagino dil arkivo</string>
|
||||||
|
<string name="app_ui_language">Idiomo di vua interfacio</string>
|
||||||
<string name="remove">Removar titulo e deskripto</string>
|
<string name="remove">Removar titulo e deskripto</string>
|
||||||
<string name="read_help_link">Lektez pluse</string>
|
<string name="read_help_link">Lektez pluse</string>
|
||||||
<string name="media_detail_in_all_languages">En omna idiomi</string>
|
<string name="media_detail_in_all_languages">En omna idiomi</string>
|
||||||
|
|
@ -676,6 +681,7 @@
|
||||||
<string name="done">Facita</string>
|
<string name="done">Facita</string>
|
||||||
<string name="back">Retroirar</string>
|
<string name="back">Retroirar</string>
|
||||||
<string name="welcome_custom_picture_selector_text">Bonveno a personalizita selektilo di imaji</string>
|
<string name="welcome_custom_picture_selector_text">Bonveno a personalizita selektilo di imaji</string>
|
||||||
|
<string name="custom_selector_info_text1">Ica selektilo montras quala imaji vu ja sendis a Commons.</string>
|
||||||
<string name="welcome_custom_selector_ok">Ecelanta</string>
|
<string name="welcome_custom_selector_ok">Ecelanta</string>
|
||||||
<string name="custom_selector_already_uploaded_image_text">Ca imajo ja sendesis a Commons.</string>
|
<string name="custom_selector_already_uploaded_image_text">Ca imajo ja sendesis a Commons.</string>
|
||||||
<string name="custom_selector_over_limit_warning">Por teknikala motivi, l\'utensilo \'\'app\'\' ne povas fidinde sendar plua kam %1$d pikturi samatempe. La limito %1$d superesis per %2$d.</string>
|
<string name="custom_selector_over_limit_warning">Por teknikala motivi, l\'utensilo \'\'app\'\' ne povas fidinde sendar plua kam %1$d pikturi samatempe. La limito %1$d superesis per %2$d.</string>
|
||||||
|
|
@ -767,9 +773,13 @@
|
||||||
<item quantity="one">%d imajo selektita</item>
|
<item quantity="one">%d imajo selektita</item>
|
||||||
<item quantity="other">%d imaji selektita</item>
|
<item quantity="other">%d imaji selektita</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<string name="please_enter_some_comments">Voluntez facar kelka komenti</string>
|
||||||
<string name="talk">Diskuto</string>
|
<string name="talk">Diskuto</string>
|
||||||
<string name="write_something_about_the_item">Dicez irgu pri l\'arkivo \'%1$s\'. Ol esos videbla publike.</string>
|
<string name="write_something_about_the_item">Dicez irgu pri l\'arkivo \'%1$s\'. Ol esos videbla publike.</string>
|
||||||
|
<string name="does_not_exist_anymore_no_picture_can_ever_be_taken_of_it">\'%1$s\' ne pluse existas, nula imajo povos rekuperesar de ol.</string>
|
||||||
<string name="is_at_a_different_place_wikidata">\'%1$s\' esas en diferanta loko.</string>
|
<string name="is_at_a_different_place_wikidata">\'%1$s\' esas en diferanta loko.</string>
|
||||||
|
<string name="is_at_a_different_place_please_specify_the_correct_place_below_if_possible_tell_us_the_correct_latitude_longitude">\'%1$s\' esas en diferanta loko. Voluntez mencionar la korekta loko adinfre e, se posibla, skribez la korekta latitudo e longitudo.</string>
|
||||||
|
<string name="other_problem_or_information_please_explain_below">Altra problemo od informo (voluntez explikar adinfre).</string>
|
||||||
<string name="cancelling_all_the_uploads">Extinganta la tota sendaji...</string>
|
<string name="cancelling_all_the_uploads">Extinganta la tota sendaji...</string>
|
||||||
<string name="uploads">Arkivi sendita</string>
|
<string name="uploads">Arkivi sendita</string>
|
||||||
<string name="pending">Vartanta</string>
|
<string name="pending">Vartanta</string>
|
||||||
|
|
@ -799,6 +809,8 @@
|
||||||
<string name="caption">Deskripto-texto</string>
|
<string name="caption">Deskripto-texto</string>
|
||||||
<string name="caption_copied_to_clipboard">Deskripto-texto kopiita a \'\'clipboard\'\'</string>
|
<string name="caption_copied_to_clipboard">Deskripto-texto kopiita a \'\'clipboard\'\'</string>
|
||||||
<string name="congratulations_all_pictures_in_this_album_have_been_either_uploaded_or_marked_as_not_for_upload">Gratuli! Omna imaji en ca albumo sive sendesis, sive indikesis por ne sendar.</string>
|
<string name="congratulations_all_pictures_in_this_album_have_been_either_uploaded_or_marked_as_not_for_upload">Gratuli! Omna imaji en ca albumo sive sendesis, sive indikesis por ne sendar.</string>
|
||||||
|
<string name="show_in_nearby">Montrez en Proxima (\'\'Nearby\'\')</string>
|
||||||
<string name="image_tag_line_created_and_uploaded_by">Kreesis e sendesis da: %1$s</string>
|
<string name="image_tag_line_created_and_uploaded_by">Kreesis e sendesis da: %1$s</string>
|
||||||
<string name="image_tag_line_created_by_and_uploaded_by">Kreita da %1$s e sendita da %2$s</string>
|
<string name="image_tag_line_created_by_and_uploaded_by">Kreita da %1$s e sendita da %2$s</string>
|
||||||
|
<string name="nominated_for_deletion_btn">Indikita por Efaco</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
<!-- Authors:
|
<!-- Authors:
|
||||||
* Anoop rao
|
* Anoop rao
|
||||||
* Anzx
|
* Anzx
|
||||||
|
* Gopala Krishna A
|
||||||
* Mahadevaiah Siddaiah
|
* Mahadevaiah Siddaiah
|
||||||
* Omshivaprakash
|
* Omshivaprakash
|
||||||
* VASANTH S.N.
|
* VASANTH S.N.
|
||||||
|
|
@ -10,8 +11,23 @@
|
||||||
-->
|
-->
|
||||||
<resources>
|
<resources>
|
||||||
<string name="commons_facebook">ಕಾಮನ್ಸ್ ಫೇಸ್ಬುಕ್ ಪುಟ</string>
|
<string name="commons_facebook">ಕಾಮನ್ಸ್ ಫೇಸ್ಬುಕ್ ಪುಟ</string>
|
||||||
|
<string name="commons_github">ಕಾಮನ್ಸ್ನ ಗಿಟ್ಹಬ್ ಮೂಲ ಕೋಡ್</string>
|
||||||
|
<string name="commons_logo">ಕಾಮನ್ಸ್ ಲಾಂಛನ</string>
|
||||||
<string name="commons_website">ಕಾಮನ್ಸ್ ಜಾಲತಾಣ</string>
|
<string name="commons_website">ಕಾಮನ್ಸ್ ಜಾಲತಾಣ</string>
|
||||||
|
<string name="exit_location_picker">ಸ್ಥಳ ಆಯ್ಕೆಯಿಂದ ನಿರ್ಗಮಿಸಿ</string>
|
||||||
<string name="submit">ಸಲ್ಲಿಸಿ</string>
|
<string name="submit">ಸಲ್ಲಿಸಿ</string>
|
||||||
|
<string name="add_another_description">ಇನ್ನೊಂದು ವಿವರಣೆಯನ್ನು ಸೇರಿಸಿ</string>
|
||||||
|
<string name="add_new_contribution">ಹೊಸ ಕೊಡುಗೆಗಳನ್ನು ಸೇರಿಸಿ</string>
|
||||||
|
<string name="add_contribution_from_camera">ಕ್ಯಾಮೆರಾದಿಂದ ಕೊಡುಗೆಯನ್ನು ಸೇರಿಸಿ</string>
|
||||||
|
<string name="add_contribution_from_photos">ಫೋಟೋಗಳಿಂದ ಕೊಡುಗೆಯನ್ನು ಸೇರಿಸಿ</string>
|
||||||
|
<string name="add_contribution_from_contributions_gallery">ಹಿಂದಿನ ಕೊಡುಗೆಗಳ ಗ್ಯಾಲರಿಯಿಂದ ಕೊಡುಗೆಯನ್ನು ಸೇರಿಸಿ</string>
|
||||||
|
<string name="show_captions">ತಲೆಬರಹ</string>
|
||||||
|
<string name="row_item_language_description">ಭಾಷಾ ವಿವರಣೆ</string>
|
||||||
|
<string name="row_item_caption">ತಲೆಬರಹ</string>
|
||||||
|
<string name="show_captions_description">ವಿವರಣೆ</string>
|
||||||
|
<string name="nearby_row_image">ಚಿತ್ರ</string>
|
||||||
|
<string name="nearby_all">ಎಲ್ಲಾ</string>
|
||||||
|
<string name="nearby_filter_toggle">ಮೇಲಕ್ಕೆ ಟಾಗಲ್ ಮಾಡಿ</string>
|
||||||
<string name="appwidget_img">ದಿನದ ಚಿತ್ರ</string>
|
<string name="appwidget_img">ದಿನದ ಚಿತ್ರ</string>
|
||||||
<plurals name="uploads_pending_notification_indicator">
|
<plurals name="uploads_pending_notification_indicator">
|
||||||
<item quantity="one">%1$d ಕಡತ ಅಪ್ಲೋಡ್ ಅಗುತ್ತಿದೆ</item>
|
<item quantity="one">%1$d ಕಡತ ಅಪ್ಲೋಡ್ ಅಗುತ್ತಿದೆ</item>
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
* 아라
|
* 아라
|
||||||
-->
|
-->
|
||||||
<resources>
|
<resources>
|
||||||
<string name="commons_facebook">공용 페이스북 페이지</string>
|
<string name="commons_facebook">공용 페이스북 문서</string>
|
||||||
<string name="commons_github">공용 GitHub 소스 코드</string>
|
<string name="commons_github">공용 GitHub 소스 코드</string>
|
||||||
<string name="commons_logo">공용 로고</string>
|
<string name="commons_logo">공용 로고</string>
|
||||||
<string name="commons_website">공용 웹사이트</string>
|
<string name="commons_website">공용 웹사이트</string>
|
||||||
|
|
@ -35,11 +35,11 @@
|
||||||
<string name="add_contribution_from_camera">카메라에서 기여 참가</string>
|
<string name="add_contribution_from_camera">카메라에서 기여 참가</string>
|
||||||
<string name="add_contribution_from_photos">사진에서 기여 참가</string>
|
<string name="add_contribution_from_photos">사진에서 기여 참가</string>
|
||||||
<string name="add_contribution_from_contributions_gallery">이전 기여 갤러리에서 기여 참가</string>
|
<string name="add_contribution_from_contributions_gallery">이전 기여 갤러리에서 기여 참가</string>
|
||||||
<string name="show_captions">캡션</string>
|
<string name="show_captions">설명</string>
|
||||||
<string name="row_item_language_description">언어 설명</string>
|
<string name="row_item_language_description">언어 설명</string>
|
||||||
<string name="row_item_caption">캡션</string>
|
<string name="row_item_caption">캡션</string>
|
||||||
<string name="show_captions_description">설명</string>
|
<string name="show_captions_description">설명</string>
|
||||||
<string name="nearby_row_image">이미지</string>
|
<string name="nearby_row_image">그림</string>
|
||||||
<string name="nearby_all">모두</string>
|
<string name="nearby_all">모두</string>
|
||||||
<string name="nearby_filter_toggle">위로 전환</string>
|
<string name="nearby_filter_toggle">위로 전환</string>
|
||||||
<string name="nearby_filter_search">검색 뷰</string>
|
<string name="nearby_filter_search">검색 뷰</string>
|
||||||
|
|
@ -141,7 +141,7 @@
|
||||||
<string name="categories_not_found">%1$s와(과) 일치하는 분류를 찾을 수 없습니다</string>
|
<string name="categories_not_found">%1$s와(과) 일치하는 분류를 찾을 수 없습니다</string>
|
||||||
<string name="depictions_not_found">%1$s에 대한 위키데이터 검색 결과가 없습니다</string>
|
<string name="depictions_not_found">%1$s에 대한 위키데이터 검색 결과가 없습니다</string>
|
||||||
<string name="no_child_classes">%1$s에 자식 클래스가 없습니다</string>
|
<string name="no_child_classes">%1$s에 자식 클래스가 없습니다</string>
|
||||||
<string name="no_parent_classes">%1$s에 부모 클래스가 없습니다</string>
|
<string name="no_parent_classes">%1$s에 상위 클래스가 없습니다</string>
|
||||||
<string name="categories_skip_explanation">위키미디어 공용에서 그림을 더 찾기 쉽게 만들기 위해 분류를 추가합니다.\n분류를 추가하려면 입력을 시작하세요.</string>
|
<string name="categories_skip_explanation">위키미디어 공용에서 그림을 더 찾기 쉽게 만들기 위해 분류를 추가합니다.\n분류를 추가하려면 입력을 시작하세요.</string>
|
||||||
<string name="categories_activity_title">분류</string>
|
<string name="categories_activity_title">분류</string>
|
||||||
<string name="title_activity_settings">설정</string>
|
<string name="title_activity_settings">설정</string>
|
||||||
|
|
|
||||||
10
app/src/main/res/values-min/error.xml
Normal file
10
app/src/main/res/values-min/error.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Authors:
|
||||||
|
* Adhmi
|
||||||
|
-->
|
||||||
|
<resources>
|
||||||
|
<string name="crash_dialog_title">Commons bamasalah</string>
|
||||||
|
<string name="crash_dialog_text">Ups. Ado nan salah!</string>
|
||||||
|
<string name="crash_dialog_comment_prompt">Caritokan apo nan sanak karajoan, sudah tu bagikan lewat email ka kami. Akan kami bantu mamelokannyo!</string>
|
||||||
|
<string name="crash_dialog_ok_toast">Tarimo kasih!</string>
|
||||||
|
</resources>
|
||||||
|
|
@ -226,7 +226,7 @@
|
||||||
<string name="nearby_location_not_available">ဗဒင်ဏအ် ဟွံကၠောန်ကမၠောန် ဗွဲဓမ္မတာ၊ ဒၞာဲဒတန် ဟွံသၟဟ်အစောမ်။</string>
|
<string name="nearby_location_not_available">ဗဒင်ဏအ် ဟွံကၠောန်ကမၠောန် ဗွဲဓမ္မတာ၊ ဒၞာဲဒတန် ဟွံသၟဟ်အစောမ်။</string>
|
||||||
<string name="location_permission_rationale_nearby">အာတ်မိက်ဒၟံင် အခေါင် သွက်ဂွံထ္ၜး စရင်ဒၞာဲဒတန် ဗဒင်ဗဒင်</string>
|
<string name="location_permission_rationale_nearby">အာတ်မိက်ဒၟံင် အခေါင် သွက်ဂွံထ္ၜး စရင်ဒၞာဲဒတန် ဗဒင်ဗဒင်</string>
|
||||||
<string name="nearby_directions">စမၞောန်ဂမၠိုင်</string>
|
<string name="nearby_directions">စမၞောန်ဂမၠိုင်</string>
|
||||||
<string name="nearby_wikidata">ဝဳကဳဒါတာ</string>
|
<string name="nearby_wikidata">ဝဳကဳတင်ဂၞင်</string>
|
||||||
<string name="nearby_wikipedia" fuzzy="true">ဝဳကဳပဳဒဳယာ</string>
|
<string name="nearby_wikipedia" fuzzy="true">ဝဳကဳပဳဒဳယာ</string>
|
||||||
<string name="nearby_commons">ခမ်မောန်</string>
|
<string name="nearby_commons">ခမ်မောန်</string>
|
||||||
<string name="about_rate_us">ကဵုင္ၚုဟ် ကုပိုယ်</string>
|
<string name="about_rate_us">ကဵုင္ၚုဟ် ကုပိုယ်</string>
|
||||||
|
|
|
||||||
|
|
@ -322,6 +322,7 @@
|
||||||
<string name="statistics_featured">ߖߌ߬ߦߊ߬ߓߍ߫ ߟߊߓߊ߯ߙߕߊ ߟߎ߬</string>
|
<string name="statistics_featured">ߖߌ߬ߦߊ߬ߓߍ߫ ߟߊߓߊ߯ߙߕߊ ߟߎ߬</string>
|
||||||
<string name="statistics_wikidata_edits">ߖߌ߬ߦߊ߬ߓߍ ߞߊߕߙߍ߬ \"ߛߌ߰ߢߐ߲߰ ߦߙߐ\" ߡߊ߬</string>
|
<string name="statistics_wikidata_edits">ߖߌ߬ߦߊ߬ߓߍ ߞߊߕߙߍ߬ \"ߛߌ߰ߢߐ߲߰ ߦߙߐ\" ߡߊ߬</string>
|
||||||
<string name="level" fuzzy="true">ߞߊߓߋ</string>
|
<string name="level" fuzzy="true">ߞߊߓߋ</string>
|
||||||
|
<string name="profile_withLevel">%s (ߞߊߓߋ %s)</string>
|
||||||
<string name="images_uploaded">ߖߌ߬ߦߊ߬ߓߍ ߓߘߊ߫ ߟߊߦߟߍ߬</string>
|
<string name="images_uploaded">ߖߌ߬ߦߊ߬ߓߍ ߓߘߊ߫ ߟߊߦߟߍ߬</string>
|
||||||
<string name="image_reverts">ߖߌ߬ߦߊ߬ߓߍ ߡߊ߫ ߖߏ߰ߛߌ߬</string>
|
<string name="image_reverts">ߖߌ߬ߦߊ߬ߓߍ ߡߊ߫ ߖߏ߰ߛߌ߬</string>
|
||||||
<string name="images_used_by_wiki">ߖߌ߬ߦߊ߬ߓߍ߬ ߟߊߓߊ߯ߙߊߣߍ߲ ߠߎ߬</string>
|
<string name="images_used_by_wiki">ߖߌ߬ߦߊ߬ߓߍ߬ ߟߊߓߊ߯ߙߊߣߍ߲ ߠߎ߬</string>
|
||||||
|
|
|
||||||
|
|
@ -227,12 +227,15 @@
|
||||||
<string name="navigation_item_info">لارښوونيزې</string>
|
<string name="navigation_item_info">لارښوونيزې</string>
|
||||||
<string name="navigation_item_notification">خبرتياوې</string>
|
<string name="navigation_item_notification">خبرتياوې</string>
|
||||||
<string name="navigation_item_review">بياکتنه</string>
|
<string name="navigation_item_review">بياکتنه</string>
|
||||||
<string name="no_description_found">هيڅ څرگنداوی ونهٔ موندل شو</string>
|
<string name="no_description_found">هېڅ څرگنداوی ونه موندل شو</string>
|
||||||
<string name="nearby_info_menu_commons_article">ټولگړې دوتنې مخ</string>
|
<string name="nearby_info_menu_commons_article">ټولگړې دوتنې مخ</string>
|
||||||
<string name="nearby_info_menu_wikidata_article">ويکياومتوک توکی</string>
|
<string name="nearby_info_menu_wikidata_article">ويکياومتوک توکی</string>
|
||||||
<string name="nearby_info_menu_wikipedia_article">ويکيپېډيا ليکنه</string>
|
<string name="nearby_info_menu_wikipedia_article">ويکيپېډيا ليکنه</string>
|
||||||
<string name="upload_problem_image_dark">انځور ډېر تياره دی.</string>
|
<string name="upload_problem_image_dark">انځور ډېر تياره دی.</string>
|
||||||
<string name="upload_problem_image_blurry">انځور ډېر جړ دی.</string>
|
<string name="upload_problem_image_blurry">انځور ډېر جړ دی.</string>
|
||||||
|
<string name="skip_login">تېرېدل</string>
|
||||||
|
<string name="navigation_item_login">ننوتل</string>
|
||||||
|
<string name="skip_login_title">آیا تاسو رښتیا غواړئ چې ننوتل پرېږدئ؟</string>
|
||||||
<string name="nearby_directions">تگلوري</string>
|
<string name="nearby_directions">تگلوري</string>
|
||||||
<string name="nearby_wikidata">ويکياومتوک</string>
|
<string name="nearby_wikidata">ويکياومتوک</string>
|
||||||
<string name="nearby_wikipedia">ويکيپېډيا</string>
|
<string name="nearby_wikipedia">ويکيپېډيا</string>
|
||||||
|
|
@ -274,15 +277,54 @@
|
||||||
<string name="explore_tab_title_mobile">موبايل له لارې راپورتهشوی</string>
|
<string name="explore_tab_title_mobile">موبايل له لارې راپورتهشوی</string>
|
||||||
<string name="explore_tab_title_map">نخشه</string>
|
<string name="explore_tab_title_map">نخشه</string>
|
||||||
<string name="successful_wikidata_edit">انځور په ویکياومتوک کې %1$s ته ورگډ شو!</string>
|
<string name="successful_wikidata_edit">انځور په ویکياومتوک کې %1$s ته ورگډ شو!</string>
|
||||||
|
<string name="question">پوښتنه</string>
|
||||||
|
<string name="result">پايله</string>
|
||||||
|
<string name="continue_message">پرلهپورې</string>
|
||||||
|
<string name="correct">سم ځواب</string>
|
||||||
|
<string name="wrong">ناسم ځواب</string>
|
||||||
|
<string name="share_app_title">کاریال وېشل</string>
|
||||||
|
<string name="rotate">تاوول</string>
|
||||||
|
<string name="cancel_upload_dialog">ايا تاسو ډاډه ياست چې دا راپورتهکول ناگارل غواړئ؟</string>
|
||||||
|
<string name="delete_search_dialog">ايا تاسو غواړئ چې دا لټون ړنگ کړئ؟</string>
|
||||||
|
<string name="search_history_deleted">د پلټنې پېښليک ړنگ شو</string>
|
||||||
|
<string name="nominate_delete">ړنگولو ته نومول</string>
|
||||||
|
<string name="delete">ړنگول</string>
|
||||||
|
<string name="Achievements">لاستهراوړنې</string>
|
||||||
<string name="Profile">پېژنيال</string>
|
<string name="Profile">پېژنيال</string>
|
||||||
<string name="badges">مټتړوني</string>
|
<string name="badges">مټتړوني</string>
|
||||||
<string name="statistics">شمارنې</string>
|
<string name="statistics">شمارنې</string>
|
||||||
<string name="statistics_thanks">مننه ترلاسهشو</string>
|
<string name="statistics_thanks">ترلاسهشوې مننې</string>
|
||||||
<string name="statistics_featured">ټاکلی انځور</string>
|
<string name="statistics_featured">ټاکلی انځور</string>
|
||||||
<string name="statistics_wikidata_edits">انځورنه د \"څېرمه ځايونو\" له لارې</string>
|
<string name="statistics_wikidata_edits">انځورنه د \"څېرمه ځايونو\" له لارې</string>
|
||||||
|
<string name="level">کچه %d</string>
|
||||||
|
<string name="profile_withLevel">%s (کچه %s)</string>
|
||||||
<string name="images_uploaded">انځورونه راپورتهشول</string>
|
<string name="images_uploaded">انځورونه راپورتهشول</string>
|
||||||
<string name="image_reverts">انځورونه په څټگرځولشوي نه دي</string>
|
<string name="image_reverts">انځورونه په څټگرځولشوي نه دي</string>
|
||||||
<string name="images_used_by_wiki">کارولشوي انځورونه</string>
|
<string name="images_used_by_wiki">کارولشوي انځورونه</string>
|
||||||
|
<string name="error_occurred">تېروتنه رامنځته شوه!</string>
|
||||||
|
<string name="preference_author_name">د ليکوال نوم دوديزول</string>
|
||||||
|
<string name="contributions_fragment">ونډې</string>
|
||||||
|
<string name="nearby_fragment">څېرمه</string>
|
||||||
|
<string name="notifications">خبرتياوې</string>
|
||||||
|
<string name="read_notifications">خبرتیاوې (لوستلشوې)</string>
|
||||||
|
<string name="display_nearby_notification">څېرمه خبرتياوې ښکارهکول</string>
|
||||||
|
<string name="list_sheet">لړليک</string>
|
||||||
|
<string name="storage_permission">زخيره کولو اجازه</string>
|
||||||
|
<string name="next">راتلونکی</string>
|
||||||
|
<string name="previous">مخکنی</string>
|
||||||
|
<string name="title_page_bookmarks_pictures">انځورونه</string>
|
||||||
|
<string name="title_page_bookmarks_locations">ځايونه</string>
|
||||||
|
<string name="title_page_bookmarks_categories">وېشنيزې</string>
|
||||||
|
<string name="menu_bookmark">په کتابنښو کې ورگډول/لرېکول</string>
|
||||||
|
<string name="provider_bookmarks">کتابنښې</string>
|
||||||
|
<string name="bookmark_empty">تاسو هېڅ کتابنښې نه دې ورگډېکړې</string>
|
||||||
|
<string name="provider_bookmarks_location">کتابنښې</string>
|
||||||
|
<string name="deletion_reason_uploaded_by_mistake">په تېروتنې سره مې راپورتهکړی دی</string>
|
||||||
|
<string name="deletion_reason_publicly_visible">زه نه پوهېدم چې دا به ټولو ته ښکاره شي</string>
|
||||||
|
<string name="deletion_reason_bad_for_my_privacy">زه پوه شوم چې دا زما د پټنتيا لپاره بد دی</string>
|
||||||
|
<string name="deletion_reason_no_longer_want_public">زما اند توپير وکړ، زه نه غواړم چې دا نور په ټوليزه توگه ښکاره شي</string>
|
||||||
|
<string name="deletion_reason_not_interesting">په بښنې سره دا انځور د يو پوهنغونډ لپاره خواپورې نه دی</string>
|
||||||
|
<string name="no_categories_selected">هېڅ وېشنيزې نه دې ټاکل شوې</string>
|
||||||
<string name="ends_on">پای ته رسېږي په:</string>
|
<string name="ends_on">پای ته رسېږي په:</string>
|
||||||
<string name="display_campaigns">ټاکنيزېسيالۍ ښکارهکول</string>
|
<string name="display_campaigns">ټاکنيزېسيالۍ ښکارهکول</string>
|
||||||
<string name="display_campaigns_explanation">روانې ټاکنيزېسيالۍ وگورئ</string>
|
<string name="display_campaigns_explanation">روانې ټاکنيزېسيالۍ وگورئ</string>
|
||||||
|
|
@ -310,6 +352,113 @@
|
||||||
<string name="review_spam">ايا دا د منلو وړ دي؟</string>
|
<string name="review_spam">ايا دا د منلو وړ دي؟</string>
|
||||||
<string name="review_thanks">ايا تاسو غواړئ له ونډهوال نه مننه وکړئ؟</string>
|
<string name="review_thanks">ايا تاسو غواړئ له ونډهوال نه مننه وکړئ؟</string>
|
||||||
<string name="review_spam_explanation">که دا انځور ټولگټی نه وي؛ نو ړنگېدو ته د نوماندولو لپاره يې په نه کليک وکړئ.</string>
|
<string name="review_spam_explanation">که دا انځور ټولگټی نه وي؛ نو ړنگېدو ته د نوماندولو لپاره يې په نه کليک وکړئ.</string>
|
||||||
|
<string name="review_thanks_yes_button_text">بل انځور</string>
|
||||||
|
<string name="review_thanks_no_button_text">هو، ولې نه</string>
|
||||||
|
<string name="exif_tag_name_author">ليکوال</string>
|
||||||
|
<string name="exif_tag_name_copyright">لمېسلرېښتې</string>
|
||||||
|
<string name="exif_tag_name_location">ځای</string>
|
||||||
|
<string name="exif_tag_name_cameraModel">کامرې نمونه</string>
|
||||||
|
<string name="exif_tag_name_serialNumbers">د لړۍ شمېرې</string>
|
||||||
|
<string name="exif_tag_name_software">پوستغالی</string>
|
||||||
|
<string name="media_location_permission_denied">د رسنيو ځای ته لاسرسی رد شو</string>
|
||||||
|
<string name="share_via">کاريال د...لارې وېشل</string>
|
||||||
|
<string name="image_info">انځور مالومات</string>
|
||||||
|
<string name="no_categories_found">هېڅ وېشنيزې ونه موندل شوې</string>
|
||||||
|
<string name="delete_helper_ask_reason_copyright_logo">نښان</string>
|
||||||
|
<string name="delete_helper_ask_alert_set_positive_button_reason">ځکه چې دا</string>
|
||||||
|
<string name="category_edit_helper_make_edit_toast">د وېشنيزو هممهالولو هڅهکول.</string>
|
||||||
|
<string name="category_edit_helper_show_edit_title">وېشنيزه هممهالول</string>
|
||||||
|
<string name="category_edit_helper_show_edit_title_success">بریالیتوب</string>
|
||||||
|
<string name="category_edit_helper_edit_message_else">وېشنيزې نشي ورگډېدای.</string>
|
||||||
|
<string name="category_edit_button_text">وېشنيزې هممهالول</string>
|
||||||
|
<string name="depictions_edit_helper_make_edit_toast">د ښودنو هممهالولو هڅهکول.</string>
|
||||||
|
<string name="depictions_edit_helper_show_edit_title">ښودنې سمول</string>
|
||||||
|
<string name="description_edit_helper_show_edit_title">څرگنداوی هممهالول</string>
|
||||||
|
<string name="caption_edit_helper_show_edit_title">نيونگ هممهالول</string>
|
||||||
|
<string name="coordinates_edit_helper_show_edit_title_success">بریالیتوب</string>
|
||||||
|
<string name="coordinates_edit_helper_show_edit_message">همغږيتوبونه %1$s ورگډ شول.</string>
|
||||||
|
<string name="description_edit_helper_show_edit_message">څرگنداوي ورگډل شول.</string>
|
||||||
|
<string name="caption_edit_helper_show_edit_message">نيونگ ورگډ شو.</string>
|
||||||
|
<string name="coordinates_edit_helper_edit_message_else">همغږيتوبونه نشي ورگډېدای.</string>
|
||||||
|
<string name="description_edit_helper_edit_message_else">څرگنداوی نشي ورگډېدای.</string>
|
||||||
|
<string name="share_image_via">انځور وېشل په وسيله د</string>
|
||||||
|
<string name="theme_dark_name">تياره</string>
|
||||||
|
<string name="theme_light_name">روښانه</string>
|
||||||
|
<string name="ask_to_turn_location_on">ځایښودنه بلول</string>
|
||||||
|
<string name="load_more">نور بارول</string>
|
||||||
|
<string name="confirm">تاييدول</string>
|
||||||
|
<string name="instructions_title">لارښوونې</string>
|
||||||
|
<string name="wikipedia_instructions_step_1">۱. لاندې ويکيليک وکاروئ:</string>
|
||||||
|
<string name="pause">درول</string>
|
||||||
|
<string name="resume">بياپيلول</string>
|
||||||
|
<string name="paused">درولشوی</string>
|
||||||
|
<string name="more">نور</string>
|
||||||
|
<string name="bookmarks">کتابنښې</string>
|
||||||
|
<string name="achievements_tab_title">لاستهراوړنې</string>
|
||||||
|
<string name="leaderboard_tab_title">سرمشريزه</string>
|
||||||
|
<string name="rank_prefix">درجه:</string>
|
||||||
|
<string name="count_prefix">شمېر:</string>
|
||||||
|
<string name="leaderboard_column_rank">درجه</string>
|
||||||
|
<string name="leaderboard_column_user">کارن</string>
|
||||||
|
<string name="leaderboard_column_count">شمېر</string>
|
||||||
|
<string name="setting_avatar_dialog_title">د سرمشريزې ځانبڼې په توگه اوڼل</string>
|
||||||
|
<string name="setting_avatar_dialog_message">ځانبڼې په توگه اوڼل کېږي، مهرباني وکړئ په تمه شئ</string>
|
||||||
|
<string name="avatar_set_successfully">ځانبڼې ټولگه</string>
|
||||||
|
<string name="menu_set_avatar">ځانبڼې په توگه اوڼل</string>
|
||||||
|
<string name="leaderboard_yearly">کلنی</string>
|
||||||
|
<string name="leaderboard_weekly">اوونيز</string>
|
||||||
|
<string name="leaderboard_all_time">هرمهاله</string>
|
||||||
|
<string name="leaderboard_upload">راپورتهکول</string>
|
||||||
|
<string name="leaderboard_nearby">څېرمه</string>
|
||||||
|
<string name="leaderboard_used">کارولشوی</string>
|
||||||
|
<string name="leaderboard_my_rank_button_text">زما رتبه</string>
|
||||||
|
<string name="limited_connection_enabled">محدودې نښلېدا ونگډول چارنشوی!</string>
|
||||||
|
<string name="statistics_quality">ښه انځورونه</string>
|
||||||
|
<string name="image_location">انځور ځی</string>
|
||||||
|
<string name="label">نښکه</string>
|
||||||
|
<string name="description">څرگنداوی</string>
|
||||||
|
<string name="title_page_bookmarks_items">توکي</string>
|
||||||
|
<string name="custom_selector_title">دوديز ټاکونکی</string>
|
||||||
|
<string name="custom_selector_empty_text">انځورونه نشته</string>
|
||||||
|
<string name="done">وشو</string>
|
||||||
|
<string name="back">پر شا کېدل</string>
|
||||||
|
<string name="welcome_custom_picture_selector_text">دوديزه انځور پاکوونکي ته ښه راغلاست</string>
|
||||||
|
<string name="welcome_custom_selector_ok">پهزړهپورې</string>
|
||||||
|
<string name="custom_selector_dismiss_limit_warning_button_text">تړل</string>
|
||||||
|
<string name="need_permission">اجازې ته اړتيا لري</string>
|
||||||
|
<string name="menu_view_user_page">کارن پېژنيال کتل</string>
|
||||||
|
<string name="edit_categories">وېشنيزې سمول</string>
|
||||||
|
<string name="apply">پليکول</string>
|
||||||
|
<string name="reset">لهسرهاوڼل</string>
|
||||||
<string name="location_message">ځای اومتوکي له ويکي کارنانو سره مرسته کوي چې ستاسو انځور موندلو او لا ډېر گټور کولو کې مرسته کوي.\nستاسو وروستۍ راپورتهکېدنې ځای نه لري.\nموږ تاسو ته سپارښته کوو چې خپل د ځای ښودنه د کامرې په کاريال په اوڼنو کې بل کړئ.\nله راپورته کولو مو مننه!</string>
|
<string name="location_message">ځای اومتوکي له ويکي کارنانو سره مرسته کوي چې ستاسو انځور موندلو او لا ډېر گټور کولو کې مرسته کوي.\nستاسو وروستۍ راپورتهکېدنې ځای نه لري.\nموږ تاسو ته سپارښته کوو چې خپل د ځای ښودنه د کامرې په کاريال په اوڼنو کې بل کړئ.\nله راپورته کولو مو مننه!</string>
|
||||||
|
<string name="no_location_found_title">هېڅ ځای ونه موندل شو</string>
|
||||||
|
<string name="add_location">ځای ورگډول</string>
|
||||||
|
<string name="explore_map_details">سپيناوی</string>
|
||||||
|
<string name="android_version">اندرويد بلبڼه</string>
|
||||||
|
<string name="device_name">وسيلې نوم</string>
|
||||||
|
<string name="thanks_feedback">له غبرگون ورکولو مو مننه</string>
|
||||||
|
<string name="edit_image">انځور سمول</string>
|
||||||
|
<string name="edit_location">ځای سمول</string>
|
||||||
|
<string name="location_updated">ځای هممهالهشو</string>
|
||||||
|
<string name="remove_location">ځای لرېکول</string>
|
||||||
|
<string name="remove_location_warning_title">ځای گواښنه لرېکول</string>
|
||||||
|
<string name="uploads">راپورتهکېدنې</string>
|
||||||
|
<string name="pending">په تمه</string>
|
||||||
|
<string name="failed">پاتې راغلی</string>
|
||||||
|
<string name="could_not_load_place_data">ځای اومتوکي نشي بارېدای</string>
|
||||||
|
<string name="custom_selector_confirm_deletion_title">ړنگول تایید کړئ</string>
|
||||||
|
<string name="custom_selector_delete">ړنگول</string>
|
||||||
|
<string name="custom_selector_cancel">ناگارل</string>
|
||||||
|
<string name="error_while_loading">د بارولو پرمهال تېروتنه</string>
|
||||||
|
<string name="no_usages_found">هېڅ کارهونه ونه موندل شوه</string>
|
||||||
|
<string name="usages_on_commons_heading">خونديځ</string>
|
||||||
|
<string name="usages_on_other_wikis_heading">نورې ويکيگانې</string>
|
||||||
|
<string name="file_usages_container_heading">دوتنې کارېدنې</string>
|
||||||
|
<string name="title_activity_single_web_view">يواړخيزهوېبکتنېچاره</string>
|
||||||
<string name="account">گڼون</string>
|
<string name="account">گڼون</string>
|
||||||
|
<string name="vanish_account">گڼون له منځه وړل</string>
|
||||||
|
<string name="account_vanish_request_confirm_title">د گڼون له منځه وړلو گواښنه</string>
|
||||||
|
<string name="caption">نيونگ</string>
|
||||||
|
<string name="caption_copied_to_clipboard">نيونگ ټينگدړې ته ولمېسل شو</string>
|
||||||
|
<string name="nominated_for_deletion_btn">ړنگولو ته نومولشوې</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Authors:
|
<!-- Authors:
|
||||||
|
* Albertoleoncio
|
||||||
* Athena in Wonderland
|
* Athena in Wonderland
|
||||||
* B3rnas
|
* B3rnas
|
||||||
* Caiofernandes
|
* Caiofernandes
|
||||||
|
|
@ -44,29 +45,29 @@
|
||||||
<string name="nearby_filter_state">Estado do Local</string>
|
<string name="nearby_filter_state">Estado do Local</string>
|
||||||
<string name="appwidget_img">Imagem do Dia</string>
|
<string name="appwidget_img">Imagem do Dia</string>
|
||||||
<plurals name="uploads_pending_notification_indicator">
|
<plurals name="uploads_pending_notification_indicator">
|
||||||
<item quantity="one">a carregar %1$d ficheiro</item>
|
<item quantity="one">a enviar %1$d ficheiro</item>
|
||||||
<item quantity="other">a carregar %1$d ficheiros</item>
|
<item quantity="other">a enviar %1$d ficheiros</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="contributions_subtitle">
|
<plurals name="contributions_subtitle">
|
||||||
<item quantity="one">(%1$d)</item>
|
<item quantity="one">(%1$d)</item>
|
||||||
<item quantity="other">(%1$d)</item>
|
<item quantity="other">(%1$d)</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="starting_uploads">A iniciar carregamentos</string>
|
<string name="starting_uploads">A iniciar envios</string>
|
||||||
<plurals name="starting_multiple_uploads">
|
<plurals name="starting_multiple_uploads">
|
||||||
<item quantity="one">A processar %d carregamento</item>
|
<item quantity="one">A processar %d envio</item>
|
||||||
<item quantity="other">A processar %d carregamentos</item>
|
<item quantity="other">A processar %d envios</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="multiple_uploads_title">
|
<plurals name="multiple_uploads_title">
|
||||||
<item quantity="one">%d carregamento</item>
|
<item quantity="one">%d envio</item>
|
||||||
<item quantity="other">%d carregamentos</item>
|
<item quantity="other">%d envios</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="share_license_summary">
|
<plurals name="share_license_summary">
|
||||||
<item quantity="one">Esta imagem será licenciada com a %1$s</item>
|
<item quantity="one">Esta imagem será licenciada com a %1$s</item>
|
||||||
<item quantity="other">Estas imagens serão licenciadas com a %1$s</item>
|
<item quantity="other">Estas imagens serão licenciadas com a %1$s</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="upload_count_title">
|
<plurals name="upload_count_title">
|
||||||
<item quantity="one">%1$d carregamento</item>
|
<item quantity="one">%1$d envio</item>
|
||||||
<item quantity="other">%1$d carregamentos</item>
|
<item quantity="other">%1$d envios</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<plurals name="receiving_shared_content">
|
<plurals name="receiving_shared_content">
|
||||||
<item quantity="one">A receber conteúdo partilhado. O processamento da imagem pode demorar algum tempo, dependendo do tamanho da mesma e do seu dispositivo</item>
|
<item quantity="one">A receber conteúdo partilhado. O processamento da imagem pode demorar algum tempo, dependendo do tamanho da mesma e do seu dispositivo</item>
|
||||||
|
|
@ -83,8 +84,8 @@
|
||||||
<string name="upload_in_progress">Envio em progresso</string>
|
<string name="upload_in_progress">Envio em progresso</string>
|
||||||
<string name="username">Nome de utilizador</string>
|
<string name="username">Nome de utilizador</string>
|
||||||
<string name="password">Palavra-passe</string>
|
<string name="password">Palavra-passe</string>
|
||||||
<string name="login_credential">Entrar na sua conta da wiki Commons Beta</string>
|
<string name="login_credential">Inicie a sessão na sua conta de Commons Beta</string>
|
||||||
<string name="login">Entrar</string>
|
<string name="login">Iniciar sessão</string>
|
||||||
<string name="forgot_password">Esqueceu-se da palavra-passe?</string>
|
<string name="forgot_password">Esqueceu-se da palavra-passe?</string>
|
||||||
<string name="signup">Registar-se</string>
|
<string name="signup">Registar-se</string>
|
||||||
<string name="logging_in_title">A iniciar sessão</string>
|
<string name="logging_in_title">A iniciar sessão</string>
|
||||||
|
|
@ -99,27 +100,27 @@
|
||||||
<string name="suggest_unrestricted_mode">O carregamento de mais de três imagens funciona de maneira mais fiável quando a otimização da bateria está desligada. Desligue a otimização da bateria para a aplicação Commons nas configurações, de forma a ter uma experiência de carregamento mais fluida. \n\nPossíveis passos para desativar a otimização da bateria:\n\nEtapa 1: premir o botão \'Configurações\' abaixo.\n\nEtapa 2: mudar de \'Não otimizado\' para \'Todas as aplicações\'.\n\nEtapa 3: pesquisar \"Commons\" ou \"fr.free.nrw.commons\".\n\nEtapa 4: premir esta e selecionar \'Não otimizar\'.\n\nEtapa 5: pressionar \'Concluído\'.</string>
|
<string name="suggest_unrestricted_mode">O carregamento de mais de três imagens funciona de maneira mais fiável quando a otimização da bateria está desligada. Desligue a otimização da bateria para a aplicação Commons nas configurações, de forma a ter uma experiência de carregamento mais fluida. \n\nPossíveis passos para desativar a otimização da bateria:\n\nEtapa 1: premir o botão \'Configurações\' abaixo.\n\nEtapa 2: mudar de \'Não otimizado\' para \'Todas as aplicações\'.\n\nEtapa 3: pesquisar \"Commons\" ou \"fr.free.nrw.commons\".\n\nEtapa 4: premir esta e selecionar \'Não otimizar\'.\n\nEtapa 5: pressionar \'Concluído\'.</string>
|
||||||
<string name="authentication_failed">Falha na autenticação. Por favor faça login novamente.</string>
|
<string name="authentication_failed">Falha na autenticação. Por favor faça login novamente.</string>
|
||||||
<string name="uploading_started">Carregamento iniciado!</string>
|
<string name="uploading_started">Carregamento iniciado!</string>
|
||||||
<string name="uploading_queued">Fila de carregamento (modo de ligação limitada ativado)</string>
|
<string name="uploading_queued">Envio em fila (modo de ligação limitada ativado)</string>
|
||||||
<string name="upload_completed_notification_title">%1$s carregado!</string>
|
<string name="upload_completed_notification_title">%1$s enviado!</string>
|
||||||
<string name="upload_completed_notification_text">Toque para ver o seu carregamento</string>
|
<string name="upload_completed_notification_text">Toque para ver o seu envio</string>
|
||||||
<string name="upload_progress_notification_title_start">A carregar o ficheiro %s</string>
|
<string name="upload_progress_notification_title_start">A enviar o ficheiro %s</string>
|
||||||
<string name="upload_progress_notification_title_in_progress">A carregar %1$s</string>
|
<string name="upload_progress_notification_title_in_progress">A enviar %1$s</string>
|
||||||
<string name="upload_progress_notification_title_finishing">A terminar o carregamento de %1$s</string>
|
<string name="upload_progress_notification_title_finishing">A terminar o envio de %1$s</string>
|
||||||
<string name="upload_failed_notification_title">O carregamento de %1$s falhou</string>
|
<string name="upload_failed_notification_title">O envio de %1$s falhou</string>
|
||||||
<string name="upload_paused_notification_title">Carregamento de %1$s em pausa</string>
|
<string name="upload_paused_notification_title">Envio de %1$s pausado</string>
|
||||||
<string name="upload_failed_notification_subtitle">Tocar para ver</string>
|
<string name="upload_failed_notification_subtitle">Tocar para ver</string>
|
||||||
<string name="upload_paused_notification_subtitle">Tocar para ver</string>
|
<string name="upload_paused_notification_subtitle">Tocar para ver</string>
|
||||||
<string name="title_activity_contributions">Carregamentos recentes</string>
|
<string name="title_activity_contributions">Meus Envios Recentes</string>
|
||||||
<string name="contribution_state_queued">Em espera</string>
|
<string name="contribution_state_queued">Em fila</string>
|
||||||
<string name="contribution_state_failed">Falhado</string>
|
<string name="contribution_state_failed">Falhou</string>
|
||||||
<string name="contribution_state_in_progress">%1$d%% transferido</string>
|
<string name="contribution_state_in_progress">%1$d%% concluído</string>
|
||||||
<string name="contribution_state_starting">A carregar</string>
|
<string name="contribution_state_starting">A enviar</string>
|
||||||
<string name="menu_from_gallery">Da galeria</string>
|
<string name="menu_from_gallery">Da galeria</string>
|
||||||
<string name="menu_from_camera">Tirar foto</string>
|
<string name="menu_from_camera">Tirar fotografia</string>
|
||||||
<string name="menu_nearby">Nas redondezas</string>
|
<string name="menu_nearby">Nas redondezas</string>
|
||||||
<string name="provider_contributions">Carregamentos</string>
|
<string name="provider_contributions">Meus envios</string>
|
||||||
<string name="menu_copy_link">Copiar ligação</string>
|
<string name="menu_copy_link">Copiar hiperligação</string>
|
||||||
<string name="menu_link_copied">A ligação foi copiada para a área de transferência</string>
|
<string name="menu_link_copied">A hiperligação foi copiada para a área de transferência</string>
|
||||||
<string name="menu_share">Partilhar</string>
|
<string name="menu_share">Partilhar</string>
|
||||||
<string name="menu_view_file_page">Ver página do ficheiro</string>
|
<string name="menu_view_file_page">Ver página do ficheiro</string>
|
||||||
<string name="share_title_hint">Legenda (obrigatória)</string>
|
<string name="share_title_hint">Legenda (obrigatória)</string>
|
||||||
|
|
@ -132,13 +133,14 @@
|
||||||
<string name="login_failed_2fa_needed">Tem de fornecer o seu código de autenticação de dois fatores.</string>
|
<string name="login_failed_2fa_needed">Tem de fornecer o seu código de autenticação de dois fatores.</string>
|
||||||
<string name="login_failed_email_auth_needed">Foi enviado um código de verificação de autenticação para o seu endereço de correio eletrónico. Por favor, forneça o código para iniciar a sessão.</string>
|
<string name="login_failed_email_auth_needed">Foi enviado um código de verificação de autenticação para o seu endereço de correio eletrónico. Por favor, forneça o código para iniciar a sessão.</string>
|
||||||
<string name="login_failed_generic">O início de sessão falhou</string>
|
<string name="login_failed_generic">O início de sessão falhou</string>
|
||||||
<string name="share_upload_button">Carregar</string>
|
<string name="share_upload_button">Enviar</string>
|
||||||
<string name="multiple_share_base_title">Dê um nome a este conjunto</string>
|
<string name="multiple_share_base_title">Dê um nome a este conjunto</string>
|
||||||
<string name="provider_modifications">Modificações</string>
|
<string name="provider_modifications">Modificações</string>
|
||||||
<string name="menu_upload_single">Carregar</string>
|
<string name="menu_upload_single">Carregar</string>
|
||||||
<string name="categories_search_text_hint">Pesquisar categorias</string>
|
<string name="categories_search_text_hint">Pesquisar categorias</string>
|
||||||
<string name="depicts_search_text_hint">Procurar elementos que o seu conteúdo multimédia retrata (montanha, o Taj Mahal, etc.)</string>
|
<string name="depicts_search_text_hint">Procurar elementos que o seu conteúdo multimédia retrata (montanha, o Taj Mahal, etc.)</string>
|
||||||
<string name="menu_save_categories">Gravar</string>
|
<string name="menu_save_categories">Gravar</string>
|
||||||
|
<string name="menu_overflow_desc">Menu de fluxo</string>
|
||||||
<string name="refresh_button">Atualizar</string>
|
<string name="refresh_button">Atualizar</string>
|
||||||
<string name="display_list_button">Lista</string>
|
<string name="display_list_button">Lista</string>
|
||||||
<string name="contributions_subtitle_zero">(Ainda não foi carregado nenhum ficheiro)</string>
|
<string name="contributions_subtitle_zero">(Ainda não foi carregado nenhum ficheiro)</string>
|
||||||
|
|
@ -148,7 +150,7 @@
|
||||||
<string name="no_parent_classes">%1$s não tem nenhuma classe progenitora</string>
|
<string name="no_parent_classes">%1$s não tem nenhuma classe progenitora</string>
|
||||||
<string name="categories_skip_explanation">Adicione categorias para tornar as suas imagens mais fáceis de encontrar na wiki Wikimedia Commons.\nComece a escrever para adicionar categorias.</string>
|
<string name="categories_skip_explanation">Adicione categorias para tornar as suas imagens mais fáceis de encontrar na wiki Wikimedia Commons.\nComece a escrever para adicionar categorias.</string>
|
||||||
<string name="categories_activity_title">Categorias</string>
|
<string name="categories_activity_title">Categorias</string>
|
||||||
<string name="title_activity_settings">Configurações</string>
|
<string name="title_activity_settings">Definições</string>
|
||||||
<string name="title_activity_signup">Registar-se</string>
|
<string name="title_activity_signup">Registar-se</string>
|
||||||
<string name="title_activity_featured_images">Imagens destacadas</string>
|
<string name="title_activity_featured_images">Imagens destacadas</string>
|
||||||
<string name="title_activity_custom_selector">Seletor personalizado</string>
|
<string name="title_activity_custom_selector">Seletor personalizado</string>
|
||||||
|
|
@ -784,17 +786,21 @@
|
||||||
<string name="file_saved_successfully">Ficheiro guardado com sucesso</string>
|
<string name="file_saved_successfully">Ficheiro guardado com sucesso</string>
|
||||||
<string name="do_you_want_to_open_gpx_file">Deseja abrir o ficheiro GPX?</string>
|
<string name="do_you_want_to_open_gpx_file">Deseja abrir o ficheiro GPX?</string>
|
||||||
<string name="do_you_want_to_open_kml_file">Deseja abrir o ficheiro KML?</string>
|
<string name="do_you_want_to_open_kml_file">Deseja abrir o ficheiro KML?</string>
|
||||||
|
<string name="failed_to_save_kml_file">Não foi possível guardar o ficheiro KML.</string>
|
||||||
|
<string name="failed_to_save_gpx_file">Não foi possível guardar o ficheiro GPX.</string>
|
||||||
<string name="saving_kml_file">Guardar Ficheiro KML</string>
|
<string name="saving_kml_file">Guardar Ficheiro KML</string>
|
||||||
<string name="saving_gpx_file">Guardar Ficheiro GPX</string>
|
<string name="saving_gpx_file">Guardar Ficheiro GPX</string>
|
||||||
<plurals name="custom_picker_images_selected_title_appendix">
|
<plurals name="custom_picker_images_selected_title_appendix">
|
||||||
<item quantity="one">%d imagem selecionada</item>
|
<item quantity="one">%d imagem selecionada</item>
|
||||||
<item quantity="other">%d imagens selecionadas</item>
|
<item quantity="other">%d imagens selecionadas</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
<string name="nearby_wikitalk">Reporte um problema sobre este item na Wikidados</string>
|
<string name="multiple_files_depiction_header">Nota sobre múltiplos envios</string>
|
||||||
|
<string name="nearby_wikitalk">Reporte um problema sobre este item no Wikidata</string>
|
||||||
<string name="please_enter_some_comments">Por favor, insira alguns comentários</string>
|
<string name="please_enter_some_comments">Por favor, insira alguns comentários</string>
|
||||||
<string name="talk">Discussão</string>
|
<string name="talk">Discussão</string>
|
||||||
<string name="other_problem_or_information_please_explain_below">Outro problema ou informação (por favor, explique em baixo).</string>
|
<string name="other_problem_or_information_please_explain_below">Outro problema ou informação (por favor, explique em baixo).</string>
|
||||||
<string name="feedback_destination_note">O seu comentário é publicado na seguinte página da wiki: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile app/Feedback</a></string>
|
<string name="feedback_destination_note">O seu comentário é publicado na seguinte página da wiki: <a href=\"https://commons.wikimedia.org/wiki/Commons:Mobile_app/Feedback\">Commons:Mobile app/Feedback</a></string>
|
||||||
|
<string name="cancelling_all_the_uploads">A cancelar todos os envios...</string>
|
||||||
<string name="uploads">Envios</string>
|
<string name="uploads">Envios</string>
|
||||||
<string name="pending">Pendente</string>
|
<string name="pending">Pendente</string>
|
||||||
<string name="failed">Falhou</string>
|
<string name="failed">Falhou</string>
|
||||||
|
|
@ -803,6 +809,8 @@
|
||||||
<string name="custom_selector_confirm_deletion_title">Confirmar Eliminação</string>
|
<string name="custom_selector_confirm_deletion_title">Confirmar Eliminação</string>
|
||||||
<string name="custom_selector_delete">Eliminar</string>
|
<string name="custom_selector_delete">Eliminar</string>
|
||||||
<string name="custom_selector_cancel">Cancelar</string>
|
<string name="custom_selector_cancel">Cancelar</string>
|
||||||
|
<string name="error_while_loading">Erro ao carregar</string>
|
||||||
|
<string name="no_usages_found">Não foram encontradas utilizações</string>
|
||||||
<string name="usages_on_commons_heading">Commons</string>
|
<string name="usages_on_commons_heading">Commons</string>
|
||||||
<string name="usages_on_other_wikis_heading">Outras wikis</string>
|
<string name="usages_on_other_wikis_heading">Outras wikis</string>
|
||||||
<string name="file_usages_container_heading">Utilização de ficheiro</string>
|
<string name="file_usages_container_heading">Utilização de ficheiro</string>
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
* Annick green
|
* Annick green
|
||||||
* Cabal
|
* Cabal
|
||||||
* Googology
|
* Googology
|
||||||
|
* H78c67c
|
||||||
* LeGuyanaisPure
|
* LeGuyanaisPure
|
||||||
* Liuxinyu970226
|
* Liuxinyu970226
|
||||||
* Madhurgupta10
|
* Madhurgupta10
|
||||||
|
|
@ -28,7 +29,7 @@
|
||||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="all">
|
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="all">
|
||||||
<string name="submit">{{Identical|Submit}}</string>
|
<string name="submit">{{Identical|Submit}}</string>
|
||||||
<string name="nearby_all">{{identical|All}}</string>
|
<string name="nearby_all">{{identical|All}}</string>
|
||||||
<string name="nearby_filter_search">Reba ishakiro</string>
|
<string name="nearby_filter_search"/>
|
||||||
<string name="uploads_pending_notification_indicator">Status text about number of uploads left.\n* %1$d represents number of uploads left, including current one</string>
|
<string name="uploads_pending_notification_indicator">Status text about number of uploads left.\n* %1$d represents number of uploads left, including current one</string>
|
||||||
<string name="contributions_subtitle">See the current issue [https://phabricator.wikimedia.org/T267142 T267142] tracked in Phabricator about the <code><nowiki>|zero=</nowiki></code> option currently not supported on Translatewiki.net with the custom <code><nowiki>{{PLURAL}}</nowiki></code> rules used by this project for Android, using a non-MediaWiki syntax.</string>
|
<string name="contributions_subtitle">See the current issue [https://phabricator.wikimedia.org/T267142 T267142] tracked in Phabricator about the <code><nowiki>|zero=</nowiki></code> option currently not supported on Translatewiki.net with the custom <code><nowiki>{{PLURAL}}</nowiki></code> rules used by this project for Android, using a non-MediaWiki syntax.</string>
|
||||||
<string name="multiple_uploads_title">{{Identical|Upload}}</string>
|
<string name="multiple_uploads_title">{{Identical|Upload}}</string>
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@
|
||||||
<string name="menu_upload_single">Otpremi</string>
|
<string name="menu_upload_single">Otpremi</string>
|
||||||
<string name="categories_search_text_hint">Pretraži kategorije</string>
|
<string name="categories_search_text_hint">Pretraži kategorije</string>
|
||||||
<string name="menu_save_categories">Snimi</string>
|
<string name="menu_save_categories">Snimi</string>
|
||||||
<string name="refresh_button">Preučitaj</string>
|
<string name="refresh_button">Osvježi</string>
|
||||||
<string name="display_list_button">Lista</string>
|
<string name="display_list_button">Lista</string>
|
||||||
<string name="contributions_subtitle_zero">(Još uvijek nema postavljenih datoteka)</string>
|
<string name="contributions_subtitle_zero">(Još uvijek nema postavljenih datoteka)</string>
|
||||||
<string name="categories_not_found">Nema kategorija što odgovoraju %1$s</string>
|
<string name="categories_not_found">Nema kategorija što odgovoraju %1$s</string>
|
||||||
|
|
@ -154,7 +154,7 @@
|
||||||
<string name="detail_description_empty">Nema opisa</string>
|
<string name="detail_description_empty">Nema opisa</string>
|
||||||
<string name="detail_discussion_empty">Nema razgovora</string>
|
<string name="detail_discussion_empty">Nema razgovora</string>
|
||||||
<string name="detail_license_empty">Nepoznata licenca</string>
|
<string name="detail_license_empty">Nepoznata licenca</string>
|
||||||
<string name="menu_refresh">Preučitaj</string>
|
<string name="menu_refresh">Osvježi</string>
|
||||||
<string name="read_storage_permission_rationale">Potrebno ovlaštenje: Čitanje vanjske memorije. Aplikacija ne može pristupiti galeriji bez toga.</string>
|
<string name="read_storage_permission_rationale">Potrebno ovlaštenje: Čitanje vanjske memorije. Aplikacija ne može pristupiti galeriji bez toga.</string>
|
||||||
<string name="write_storage_permission_rationale">Potrebno ovlaštenje: Pisanje u vanjskoj memoriji. Aplikacija ne može pristupiti kameri/galeriji bez toga.</string>
|
<string name="write_storage_permission_rationale">Potrebno ovlaštenje: Pisanje u vanjskoj memoriji. Aplikacija ne može pristupiti kameri/galeriji bez toga.</string>
|
||||||
<string name="ok">U redu</string>
|
<string name="ok">U redu</string>
|
||||||
|
|
|
||||||
|
|
@ -243,6 +243,7 @@
|
||||||
<string name="media_detail_description">Опис</string>
|
<string name="media_detail_description">Опис</string>
|
||||||
<string name="media_detail_discussion">Обговорення</string>
|
<string name="media_detail_discussion">Обговорення</string>
|
||||||
<string name="media_detail_author">Автор</string>
|
<string name="media_detail_author">Автор</string>
|
||||||
|
<string name="media_detail_uploader">Завантажувач</string>
|
||||||
<string name="media_detail_uploaded_date">Дата завантаження</string>
|
<string name="media_detail_uploaded_date">Дата завантаження</string>
|
||||||
<string name="media_detail_license">Ліцензія</string>
|
<string name="media_detail_license">Ліцензія</string>
|
||||||
<string name="media_detail_coordinates">Координати</string>
|
<string name="media_detail_coordinates">Координати</string>
|
||||||
|
|
@ -792,7 +793,7 @@
|
||||||
<string name="permissions_are_required_for_functionality">Для роботи потрібні дозволи</string>
|
<string name="permissions_are_required_for_functionality">Для роботи потрібні дозволи</string>
|
||||||
<string name="learn_how_to_write_a_useful_description">Дізнайтеся, як написати корисний опис</string>
|
<string name="learn_how_to_write_a_useful_description">Дізнайтеся, як написати корисний опис</string>
|
||||||
<string name="learn_how_to_write_a_useful_caption">Дізнайтеся, як написати корисний підпис</string>
|
<string name="learn_how_to_write_a_useful_caption">Дізнайтеся, як написати корисний підпис</string>
|
||||||
<string name="see_your_achievements" fuzzy="true">Перегляньте свої досягнення</string>
|
<string name="see_your_achievements">Перегляньте свої досягнення</string>
|
||||||
<string name="edit_image">Редагувати зображення</string>
|
<string name="edit_image">Редагувати зображення</string>
|
||||||
<string name="edit_location">Редагувати розташування</string>
|
<string name="edit_location">Редагувати розташування</string>
|
||||||
<string name="location_updated">Розташування оновлено</string>
|
<string name="location_updated">Розташування оновлено</string>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!-- Authors:
|
<!-- Authors:
|
||||||
|
* Bapham123
|
||||||
* Bluetpp
|
* Bluetpp
|
||||||
* Băng Tỏa
|
* Băng Tỏa
|
||||||
* Caden99
|
* Caden99
|
||||||
|
|
@ -26,6 +27,11 @@
|
||||||
<string name="commons_logo">Biểu trưng Commons</string>
|
<string name="commons_logo">Biểu trưng Commons</string>
|
||||||
<string name="commons_website">Trang Web Commons</string>
|
<string name="commons_website">Trang Web Commons</string>
|
||||||
<string name="add_another_description">Thêm mô tả</string>
|
<string name="add_another_description">Thêm mô tả</string>
|
||||||
|
<string name="add_new_contribution">Thêm đóng góp mới</string>
|
||||||
|
<string name="add_contribution_from_camera">Thêm đóng góp từ máy ảnh</string>
|
||||||
|
<string name="show_captions_description">Miêu tả</string>
|
||||||
|
<string name="nearby_row_image">Hình ảnh</string>
|
||||||
|
<string name="nearby_all">Tất cả</string>
|
||||||
<plurals name="uploads_pending_notification_indicator">
|
<plurals name="uploads_pending_notification_indicator">
|
||||||
<item quantity="one">%1$d tập tin đang được tải lên</item>
|
<item quantity="one">%1$d tập tin đang được tải lên</item>
|
||||||
<item quantity="other">%1$d tập tin đang được tải lên</item>
|
<item quantity="other">%1$d tập tin đang được tải lên</item>
|
||||||
|
|
@ -52,6 +58,7 @@
|
||||||
<string name="app_name">Commons</string>
|
<string name="app_name">Commons</string>
|
||||||
<string name="menu_settings">Thiết lập</string>
|
<string name="menu_settings">Thiết lập</string>
|
||||||
<string name="intent_share_upload_label">Đăng tải lên Commons</string>
|
<string name="intent_share_upload_label">Đăng tải lên Commons</string>
|
||||||
|
<string name="upload_in_progress">Đang tải lên</string>
|
||||||
<string name="username">Tên người dùng</string>
|
<string name="username">Tên người dùng</string>
|
||||||
<string name="password">Mật khẩu</string>
|
<string name="password">Mật khẩu</string>
|
||||||
<string name="login_credential">Đăng nhập vào tài khoản Commons Beta của bạn</string>
|
<string name="login_credential">Đăng nhập vào tài khoản Commons Beta của bạn</string>
|
||||||
|
|
@ -64,6 +71,7 @@
|
||||||
<string name="login_success" fuzzy="true">Đã đăng nhập thành công!</string>
|
<string name="login_success" fuzzy="true">Đã đăng nhập thành công!</string>
|
||||||
<string name="login_failed" fuzzy="true">Đăng nhập thất bại!</string>
|
<string name="login_failed" fuzzy="true">Đăng nhập thất bại!</string>
|
||||||
<string name="upload_failed">Không tìm thấy tập tin. Xin vui lòng thử tập tin khác.</string>
|
<string name="upload_failed">Không tìm thấy tập tin. Xin vui lòng thử tập tin khác.</string>
|
||||||
|
<string name="unrestricted_battery_mode">Tắt tính năng tối ưu hóa pin?</string>
|
||||||
<string name="authentication_failed" fuzzy="true">Xác thực thất bại, vui lòng đăng nhập lại</string>
|
<string name="authentication_failed" fuzzy="true">Xác thực thất bại, vui lòng đăng nhập lại</string>
|
||||||
<string name="uploading_started">Đã bắt đầu tải lên!</string>
|
<string name="uploading_started">Đã bắt đầu tải lên!</string>
|
||||||
<string name="upload_completed_notification_title">Đã tải lên %1$s!</string>
|
<string name="upload_completed_notification_title">Đã tải lên %1$s!</string>
|
||||||
|
|
@ -82,6 +90,7 @@
|
||||||
<string name="menu_from_camera">Chụp ảnh</string>
|
<string name="menu_from_camera">Chụp ảnh</string>
|
||||||
<string name="menu_nearby">Lân cận</string>
|
<string name="menu_nearby">Lân cận</string>
|
||||||
<string name="provider_contributions">Tập tin tôi tải lên</string>
|
<string name="provider_contributions">Tập tin tôi tải lên</string>
|
||||||
|
<string name="menu_copy_link">Sao chép địa chỉ liên kết</string>
|
||||||
<string name="menu_share">Chia sẻ</string>
|
<string name="menu_share">Chia sẻ</string>
|
||||||
<string name="share_title_hint" fuzzy="true">Tựa đề (Yêu cầu)</string>
|
<string name="share_title_hint" fuzzy="true">Tựa đề (Yêu cầu)</string>
|
||||||
<string name="share_description_hint">Miêu tả</string>
|
<string name="share_description_hint">Miêu tả</string>
|
||||||
|
|
@ -179,6 +188,7 @@
|
||||||
<string name="become_a_tester_title">Trở thành người dùng thử nghiệm</string>
|
<string name="become_a_tester_title">Trở thành người dùng thử nghiệm</string>
|
||||||
<string name="become_a_tester_description">Tham gia kênh thử nghiệm của chúng tôi trên Google Play và nhận các tính năng mới cùng những bản sửa lỗi sớm hơn</string>
|
<string name="become_a_tester_description">Tham gia kênh thử nghiệm của chúng tôi trên Google Play và nhận các tính năng mới cùng những bản sửa lỗi sớm hơn</string>
|
||||||
<string name="_2fa_code">Mã Hai Nhân tố</string>
|
<string name="_2fa_code">Mã Hai Nhân tố</string>
|
||||||
|
<string name="email_auth_code">Mã xác minh email</string>
|
||||||
<string name="logout_verification">Bạn có chắc chắn muốn đăng xuất?</string>
|
<string name="logout_verification">Bạn có chắc chắn muốn đăng xuất?</string>
|
||||||
<string name="mediaimage_failed">Hình ảnh bị Thất bại</string>
|
<string name="mediaimage_failed">Hình ảnh bị Thất bại</string>
|
||||||
<string name="welcome_image_mount_zao">Núi Zaō</string>
|
<string name="welcome_image_mount_zao">Núi Zaō</string>
|
||||||
|
|
@ -197,9 +207,11 @@
|
||||||
<string name="navigation_item_about">Giới thiệu</string>
|
<string name="navigation_item_about">Giới thiệu</string>
|
||||||
<string name="navigation_item_settings">Thiết lập</string>
|
<string name="navigation_item_settings">Thiết lập</string>
|
||||||
<string name="navigation_item_feedback">Phản hồi</string>
|
<string name="navigation_item_feedback">Phản hồi</string>
|
||||||
|
<string name="navigation_item_feedback_github">Phản hồi qua Github</string>
|
||||||
<string name="navigation_item_logout">Đăng xuất</string>
|
<string name="navigation_item_logout">Đăng xuất</string>
|
||||||
<string name="navigation_item_info">Hướng dẫn</string>
|
<string name="navigation_item_info">Hướng dẫn</string>
|
||||||
<string name="navigation_item_notification">Thông báo</string>
|
<string name="navigation_item_notification">Thông báo</string>
|
||||||
|
<string name="navigation_item_review">Duyệt</string>
|
||||||
<string name="no_description_found">không tìm thấy miêu tả</string>
|
<string name="no_description_found">không tìm thấy miêu tả</string>
|
||||||
<string name="nearby_info_menu_commons_article">Trang tập tin Commons</string>
|
<string name="nearby_info_menu_commons_article">Trang tập tin Commons</string>
|
||||||
<string name="nearby_info_menu_wikidata_article">Khoản mục Wikidata</string>
|
<string name="nearby_info_menu_wikidata_article">Khoản mục Wikidata</string>
|
||||||
|
|
@ -211,6 +223,7 @@
|
||||||
<string name="upload_problem_different_geolocation">Bức ảnh này được chụp ở một địa điểm khác.</string>
|
<string name="upload_problem_different_geolocation">Bức ảnh này được chụp ở một địa điểm khác.</string>
|
||||||
<string name="upload_problem_fbmd">Vui lòng chỉ đăng tải hình ảnh bạn đã tự chụp. Xin đừng đăng tải hình ảnh bạn tìm thấy trên tài không Facebook của người khác.</string>
|
<string name="upload_problem_fbmd">Vui lòng chỉ đăng tải hình ảnh bạn đã tự chụp. Xin đừng đăng tải hình ảnh bạn tìm thấy trên tài không Facebook của người khác.</string>
|
||||||
<string name="upload_problem_do_you_continue">Bạn vẫn muốn đăng tải bức ảnh này?</string>
|
<string name="upload_problem_do_you_continue">Bạn vẫn muốn đăng tải bức ảnh này?</string>
|
||||||
|
<string name="upload_connection_error_alert_title">Lỗi kết nối</string>
|
||||||
<string name="use_external_storage" fuzzy="true">Sử dụng thiết bị lưu trữ bên ngoài</string>
|
<string name="use_external_storage" fuzzy="true">Sử dụng thiết bị lưu trữ bên ngoài</string>
|
||||||
<string name="use_external_storage_summary" fuzzy="true">Lưu các hình ảnh được chụp bằng máy chụp hình trong ứng dụng vào thiết bị của bạn</string>
|
<string name="use_external_storage_summary" fuzzy="true">Lưu các hình ảnh được chụp bằng máy chụp hình trong ứng dụng vào thiết bị của bạn</string>
|
||||||
<string name="login_to_your_account">Đăng nhập vào tài khoản của bạn</string>
|
<string name="login_to_your_account">Đăng nhập vào tài khoản của bạn</string>
|
||||||
|
|
@ -222,7 +235,12 @@
|
||||||
<string name="nominated_for_deletion">Có đề nghị xóa hình này.</string>
|
<string name="nominated_for_deletion">Có đề nghị xóa hình này.</string>
|
||||||
<string name="skip_login">Bỏ qua</string>
|
<string name="skip_login">Bỏ qua</string>
|
||||||
<string name="navigation_item_login">Đăng nhập</string>
|
<string name="navigation_item_login">Đăng nhập</string>
|
||||||
<string name="nearby_location_not_available" fuzzy="true">Vị trí không có sẵn.</string>
|
<string name="login_alert_message">Vui lòng đăng nhập để sử dụng được tính năng này</string>
|
||||||
|
<string name="copy_wikicode">Sao chép wikitext vào bảng tạm</string>
|
||||||
|
<string name="wikicode_copied">Wikitext đã được sao chép vào bảng tạm</string>
|
||||||
|
<string name="nearby_location_not_available">Gần đó có thể hoạt động không đúng. Vị trí không có sẵn.</string>
|
||||||
|
<string name="nearby_showing_pins_offline">Không có kết nối mạng. Chỉ hiển thị các địa điểm được lưu trong bộ nhớ đệm.</string>
|
||||||
|
<string name="upload_location_access_denied">Quyền truy cập vị trí bị từ chối. Vui lòng thiết lập vị trí thủ công để sử dụng được tính năng này.</string>
|
||||||
<string name="location_permission_rationale_nearby">Bạn cần cho phép để hiển thị danh sách nơi lân cận</string>
|
<string name="location_permission_rationale_nearby">Bạn cần cho phép để hiển thị danh sách nơi lân cận</string>
|
||||||
<string name="nearby_directions">Hướng dẫn</string>
|
<string name="nearby_directions">Hướng dẫn</string>
|
||||||
<string name="nearby_wikidata">Wikidata</string>
|
<string name="nearby_wikidata">Wikidata</string>
|
||||||
|
|
@ -243,11 +261,68 @@
|
||||||
<string name="no_images_found">Không tìm thấy hình ảnh!</string>
|
<string name="no_images_found">Không tìm thấy hình ảnh!</string>
|
||||||
<string name="error_loading_images">Đã xuất hiện lỗi khi tải hình ảnh.</string>
|
<string name="error_loading_images">Đã xuất hiện lỗi khi tải hình ảnh.</string>
|
||||||
<string name="image_uploaded_by">Tải lên bởi: %1$s</string>
|
<string name="image_uploaded_by">Tải lên bởi: %1$s</string>
|
||||||
|
<string name="block_notification_title">Đã bị cấm</string>
|
||||||
|
<string name="menu_search_button">Tìm kiếm</string>
|
||||||
|
<string name="title_activity_search">Tìm kiếm</string>
|
||||||
|
<string name="search_recent_header">Tìm kiếm gần đây:</string>
|
||||||
|
<string name="search_tab_title_media">Phương tiện</string>
|
||||||
|
<string name="search_tab_title_categories">Thể loại</string>
|
||||||
|
<string name="search_tab_title_depictions">Khoản mục</string>
|
||||||
|
<string name="explore_tab_title_featured">Chọn lọc</string>
|
||||||
|
<string name="explore_tab_title_mobile">Đã tải lên qua thiết bị di động</string>
|
||||||
|
<string name="explore_tab_title_map">Bản đồ</string>
|
||||||
|
<string name="successful_wikidata_edit">Hình ảnh đã được thêm vào %1$s trên Wikidata!</string>
|
||||||
<string name="menu_set_wallpaper">Đặt làm hình nền</string>
|
<string name="menu_set_wallpaper">Đặt làm hình nền</string>
|
||||||
|
<string name="wallpaper_set_successfully">Đã thiết lập hình nền thành công!</string>
|
||||||
|
<string name="quiz">Thách đố</string>
|
||||||
|
<string name="question">Câu hỏi</string>
|
||||||
|
<string name="result">Kết quả</string>
|
||||||
<string name="taj_mahal_answer">Hình chứa di tích và cảnh vật thiên nhiên thường được chấp nhận tải lên ở hầu hết các quốc gia. Xin lưu ý rằng các công trình nghệ thuật được trưng bày tạm thời thường có bản quyền và không được chấp nhận tải lên.</string>
|
<string name="taj_mahal_answer">Hình chứa di tích và cảnh vật thiên nhiên thường được chấp nhận tải lên ở hầu hết các quốc gia. Xin lưu ý rằng các công trình nghệ thuật được trưng bày tạm thời thường có bản quyền và không được chấp nhận tải lên.</string>
|
||||||
|
<string name="user_not_logged_in">Lượt đăng nhập đã hết hạn. Vui lòng đăng nhập lại</string>
|
||||||
|
<string name="continue_message">Tiếp tục</string>
|
||||||
|
<string name="correct">Câu trả lời chính xác</string>
|
||||||
|
<string name="wrong">Câu trả lời sai</string>
|
||||||
<string name="share_app_title">Chia sẻ Ứng dụng</string>
|
<string name="share_app_title">Chia sẻ Ứng dụng</string>
|
||||||
<string name="error_fetching_nearby_places" fuzzy="true">Lỗi khi lấy các nơi lân cận.</string>
|
<string name="error_fetching_nearby_places" fuzzy="true">Lỗi khi lấy các nơi lân cận.</string>
|
||||||
|
<string name="no_recent_searches">Không có kết quả tìm kiếm gần đây</string>
|
||||||
|
<string name="delete_recent_searches_dialog">Bạn có chắc chắn muốn xóa lịch sử tìm kiếm của bạn không?</string>
|
||||||
|
<string name="delete_search_dialog">Bạn có muốn xóa kết quả tìm kiếm này không?</string>
|
||||||
|
<string name="search_history_deleted">Lịch sử tìm kiếm đã bị xóa</string>
|
||||||
|
<string name="delete">Xóa</string>
|
||||||
|
<string name="Profile">Hồ sơ</string>
|
||||||
|
<string name="badges">Huy chương</string>
|
||||||
|
<string name="statistics">Thống kê</string>
|
||||||
|
<string name="statistics_featured">Hình ảnh chọn lọc</string>
|
||||||
|
<string name="images_uploaded">Hình ảnh đã được tải lên</string>
|
||||||
|
<string name="images_used_by_wiki">Hình ảnh đã được sử dụng</string>
|
||||||
|
<string name="contributions_fragment">Đóng góp</string>
|
||||||
|
<string name="nearby_fragment">Lân cận</string>
|
||||||
|
<string name="notifications">Thông báo</string>
|
||||||
|
<string name="read_notifications">Thông báo (đọc)</string>
|
||||||
|
<string name="display_nearby_notification">Hiển thị thông báo gần đây</string>
|
||||||
|
<string name="list_sheet">Danh sách</string>
|
||||||
|
<string name="next">Tiếp</string>
|
||||||
|
<string name="previous">Trước</string>
|
||||||
|
<string name="title_page_bookmarks_categories">Thể loại</string>
|
||||||
|
<string name="back_button_continue">Tiếp tục tải lên</string>
|
||||||
<string name="search_this_area">Tìm kiếm khu vực này</string>
|
<string name="search_this_area">Tìm kiếm khu vực này</string>
|
||||||
|
<string name="nearby_card_permission_title">Yêu cầu quyền</string>
|
||||||
|
<string name="option_allow">Cho phép</string>
|
||||||
|
<string name="option_dismiss">Bỏ qua</string>
|
||||||
|
<string name="nominate_for_deletion_done">Xong</string>
|
||||||
|
<string name="send_thank_success_title">Gửi lời cảm ơn: Thành công</string>
|
||||||
|
<string name="send_thank_failure_title">Gửi lời cảm ơn: Thất bại</string>
|
||||||
|
<string name="review_thanks_yes_button_text">Hình ảnh sau</string>
|
||||||
|
<string name="review_thanks_no_button_text">Vâng, tại sao không?</string>
|
||||||
|
<string name="please_wait">Vui lòng chờ...</string>
|
||||||
|
<string name="copied_successfully">Đã sao chép</string>
|
||||||
|
<string name="skip_image">Bỏ qua hình ảnh này</string>
|
||||||
|
<string name="exif_tag_name_author">Tác giả</string>
|
||||||
|
<string name="exif_tag_name_copyright">Bản quyền</string>
|
||||||
|
<string name="exif_tag_name_location">Vị trí</string>
|
||||||
|
<string name="exif_tag_name_cameraModel">Dòng máy ảnh</string>
|
||||||
|
<string name="delete_helper_show_deletion_title_success">Thành công</string>
|
||||||
|
<string name="delete_helper_show_deletion_title_failed">Thất bại</string>
|
||||||
<string name="category_edit_helper_make_edit_toast">Đang cố gắng cập nhật danh mục.</string>
|
<string name="category_edit_helper_make_edit_toast">Đang cố gắng cập nhật danh mục.</string>
|
||||||
<string name="category_edit_helper_show_edit_title">Cập nhật danh mục</string>
|
<string name="category_edit_helper_show_edit_title">Cập nhật danh mục</string>
|
||||||
<string name="category_edit_helper_show_edit_title_success">Thành công</string>
|
<string name="category_edit_helper_show_edit_title_success">Thành công</string>
|
||||||
|
|
|
||||||
7
app/src/main/res/values/ids.xml
Normal file
7
app/src/main/res/values/ids.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<item name="initial_margin_top" type="id" />
|
||||||
|
<item name="initial_margin_bottom" type="id" />
|
||||||
|
<item name="initial_margin_left" type="id" />
|
||||||
|
<item name="initial_margin_right" type="id" />
|
||||||
|
</resources>
|
||||||
|
|
@ -123,6 +123,9 @@
|
||||||
<item name="custom_selector_back">@drawable/ic_arrow_back_black</item>
|
<item name="custom_selector_back">@drawable/ic_arrow_back_black</item>
|
||||||
<item name="android:windowEnableSplitTouch">false</item>
|
<item name="android:windowEnableSplitTouch">false</item>
|
||||||
<item name="android:splitMotionEvents">false</item>
|
<item name="android:splitMotionEvents">false</item>
|
||||||
|
<!--For edge to edge backward compatibility-->
|
||||||
|
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||||
|
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="LightMoreBottomSheetStyle" parent="LightAppTheme">
|
<style name="LightMoreBottomSheetStyle" parent="LightAppTheme">
|
||||||
|
|
|
||||||
|
|
@ -1,50 +1,32 @@
|
||||||
SELECT
|
SELECT
|
||||||
?item
|
?item
|
||||||
(SAMPLE(?label) AS ?label)
|
?itemLabel
|
||||||
(SAMPLE(?class) AS ?class)
|
?itemDescription
|
||||||
(SAMPLE(?description) AS ?description)
|
?class
|
||||||
(SAMPLE(?classLabel) AS ?classLabel)
|
?classLabel
|
||||||
(SAMPLE(?pic) AS ?pic)
|
?pic
|
||||||
(SAMPLE(?destroyed) AS ?destroyed)
|
?destroyed
|
||||||
(SAMPLE(?endTime) AS ?endTime)
|
?endTime
|
||||||
(SAMPLE(?wikipediaArticle) AS ?wikipediaArticle)
|
?wikipediaArticle
|
||||||
(SAMPLE(?commonsArticle) AS ?commonsArticle)
|
?commonsArticle
|
||||||
(SAMPLE(?commonsCategory) AS ?commonsCategory)
|
?commonsCategory
|
||||||
(SAMPLE(?dateOfOfficialClosure) AS ?dateOfOfficialClosure)
|
?dateOfOfficialClosure
|
||||||
(SAMPLE(?pointInTime) AS ?pointInTime)
|
?pointInTime
|
||||||
WHERE {
|
WHERE {
|
||||||
SERVICE <https://query.wikidata.org/sparql> {
|
SERVICE <https://query.wikidata.org/sparql> {
|
||||||
values ?item {
|
VALUES ?item {${ENTITY}}
|
||||||
${ENTITY}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get the label in the preferred language of the user, or any other language if no label is available in that language.
|
# Get item label/class label/description in the preferred language of the user, or fallback.
|
||||||
OPTIONAL {?item rdfs:label ?itemLabelPreferredLanguage. FILTER (lang(?itemLabelPreferredLanguage) = "${LANG}")}
|
SERVICE wikibase:label { bd:serviceParam wikibase:language "${LANG},en,aa,ab,ae,af,ak,am,an,ar,as,av,ay,az,ba,be,bg,bh,bi,bm,bn,bo,br,bs,ca,ce,ch,co,cr,cs,cu,cv,cy,da,de,dv,dz,ee,el,eo,es,et,eu,fa,ff,fi,fj,fo,fr,fy,ga,gd,gl,gn,gu,gv,ha,he,hi,ho,hr,ht,hu,hy,hz,ia,id,ie,ig,ii,ik,io,is,it,iu,ja,jv,ka,kg,ki,kj,kk,kl,km,kn,ko,kr,ks,ku,kv,kw,ky,la,lb,lg,li,ln,lo,lt,lu,lv,mg,mh,mi,mk,ml,mn,mo,mr,ms,mt,my,na,nb,nd,ne,ng,nl,nn,no,ny,oc,oj,om,or,os,pa,pi,pl,ps,pt,qu,rm,rn,ro,ru,rw,sa,sc,sd,se,sg,sh,si,sk,sl,sm,sn,so,sq,sr,ss,st,su,sv,sw,ta,te,tg,th,ti,tk,tl,tn,to,tr,ts,tt,tw,ty,ug,uk,ur,uz,ve,vi,vo,wa,wo,xh,yi,yo,za,zh,zu". }
|
||||||
OPTIONAL {?item rdfs:label ?itemLabelAnyLanguage}
|
|
||||||
BIND(COALESCE(?itemLabelPreferredLanguage, ?itemLabelAnyLanguage, "?") as ?label)
|
|
||||||
|
|
||||||
# Get the description in the preferred language of the user, or any other language if no description is available in that language.
|
# Get class (such as forest or bridge)
|
||||||
OPTIONAL {?item schema:description ?itemDescriptionPreferredLanguage. FILTER (lang(?itemDescriptionPreferredLanguage) = "${LANG}")}
|
OPTIONAL {?item p:P31/ps:P31 ?class}
|
||||||
OPTIONAL {?item schema:description ?itemDescriptionAnyLanguage}
|
|
||||||
BIND(COALESCE(?itemDescriptionPreferredLanguage, ?itemDescriptionAnyLanguage, "?") as ?description)
|
|
||||||
|
|
||||||
# Get the class label in the preferred language of the user, or any other language if no label is available in that language.
|
# Get picture (items without a picture will be shown in red on the Nearby map)
|
||||||
OPTIONAL {
|
|
||||||
?item p:P31/ps:P31 ?class.
|
|
||||||
OPTIONAL {?class rdfs:label ?classLabelPreferredLanguage. FILTER (lang(?classLabelPreferredLanguage) = "${LANG}")}
|
|
||||||
OPTIONAL {?class rdfs:label ?classLabelAnyLanguage}
|
|
||||||
BIND(COALESCE(?classLabelPreferredLanguage, ?classLabelAnyLanguage, "?") as ?classLabel)
|
|
||||||
}
|
|
||||||
|
|
||||||
OPTIONAL {
|
|
||||||
?item p:P31/ps:P31 ?class.
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get picture
|
|
||||||
OPTIONAL {?item wdt:P18 ?pic}
|
OPTIONAL {?item wdt:P18 ?pic}
|
||||||
|
|
||||||
# Get existence
|
# Get existence (whether an item still exists or not)
|
||||||
OPTIONAL {?item wdt:P576 ?destroyed}
|
OPTIONAL {?item wdt:P576 ?destroyed}
|
||||||
OPTIONAL {?item wdt:P582 ?endTime}
|
OPTIONAL {?item wdt:P582 ?endTime}
|
||||||
OPTIONAL {?item wdt:P3999 ?dateOfOfficialClosure}
|
OPTIONAL {?item wdt:P3999 ?dateOfOfficialClosure}
|
||||||
|
|
@ -64,5 +46,4 @@ WHERE {
|
||||||
?commonsArticle schema:about ?item.
|
?commonsArticle schema:about ?item.
|
||||||
?commonsArticle schema:isPartOf <https://commons.wikimedia.org/>.
|
?commonsArticle schema:isPartOf <https://commons.wikimedia.org/>.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
GROUP BY ?item
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[versions]
|
[versions]
|
||||||
agp = "8.9.1"
|
agp = "8.12.0"
|
||||||
acra = "5.8.4"
|
acra = "5.8.4"
|
||||||
activityCompose = "1.9.3"
|
activityCompose = "1.9.3"
|
||||||
adapterdelegates = "4.3.0"
|
adapterdelegates = "4.3.0"
|
||||||
|
|
@ -19,7 +19,7 @@ githubTripletPlay = "2.7.2"
|
||||||
kotlinxCoroutinesRx2 = "1.8.0"
|
kotlinxCoroutinesRx2 = "1.8.0"
|
||||||
osmdroidAndroid = "6.1.17"
|
osmdroidAndroid = "6.1.17"
|
||||||
testCore = "1.4.0"
|
testCore = "1.4.0"
|
||||||
coreKtx = "1.9.0"
|
coreKtx = "1.16.0"
|
||||||
coreTesting = "2.2.0"
|
coreTesting = "2.2.0"
|
||||||
dagger = "2.23"
|
dagger = "2.23"
|
||||||
databindingCompiler = "8.0.2"
|
databindingCompiler = "8.0.2"
|
||||||
|
|
@ -57,7 +57,7 @@ preference = "1.2.1"
|
||||||
recyclerview = "1.2.0-alpha02"
|
recyclerview = "1.2.0-alpha02"
|
||||||
recyclerviewFastscroll = "2.0.1"
|
recyclerviewFastscroll = "2.0.1"
|
||||||
retrofit = "2.8.1"
|
retrofit = "2.8.1"
|
||||||
robolectric = "4.11.1"
|
robolectric = "4.14.1"
|
||||||
room = "2.6.1"
|
room = "2.6.1"
|
||||||
rules = "1.5.0"
|
rules = "1.5.0"
|
||||||
runner = "1.5.2"
|
runner = "1.5.2"
|
||||||
|
|
|
||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
|
@ -1,6 +1,6 @@
|
||||||
#Sun Apr 23 18:22:54 IST 2023
|
#Sun Apr 23 18:22:54 IST 2023
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
Loading…
Add table
Add a link
Reference in a new issue