diff --git a/app/build.gradle b/app/build.gradle index f5318e10a52..1883147dd2e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,7 +37,7 @@ android { applicationId 'org.wikipedia' minSdkVersion 21 targetSdkVersion 33 - versionCode 50444 + versionCode 50448 testApplicationId 'org.wikipedia.test' testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunnerArguments clearPackageData: 'true' @@ -56,6 +56,10 @@ android { buildConfigField "String", "META_WIKI_BASE_URI", '"https://meta.wikimedia.org"' buildConfigField "String", "EVENTGATE_ANALYTICS_EXTERNAL_BASE_URI", '"https://intake-analytics.wikimedia.org"' buildConfigField "String", "EVENTGATE_LOGGING_EXTERNAL_BASE_URI", '"https://intake-logging.wikimedia.org"' + def TEST_LOGIN_USERNAME = System.getenv('TEST_LOGIN_USERNAME') + def TEST_LOGIN_PASSWORD = System.getenv('TEST_LOGIN_PASSWORD') + buildConfigField "String", "TEST_LOGIN_USERNAME", TEST_LOGIN_USERNAME != null ? "\"${TEST_LOGIN_USERNAME}\"" : '"Foo"' + buildConfigField "String", "TEST_LOGIN_PASSWORD", TEST_LOGIN_PASSWORD != null ? "\"${TEST_LOGIN_PASSWORD}\"" : '"Bar"' } testOptions { @@ -110,11 +114,6 @@ android { buildConfigField "String", "META_WIKI_BASE_URI", '"https://meta.wikimedia.beta.wmflabs.org"' buildConfigField "String", "EVENTGATE_ANALYTICS_EXTERNAL_BASE_URI", '"https://intake-analytics.wikimedia.beta.wmflabs.org"' buildConfigField "String", "EVENTGATE_LOGGING_EXTERNAL_BASE_URI", '"https://intake-logging.wikimedia.beta.wmflabs.org"' - - def TEST_LOGIN_USERNAME = System.getenv('TEST_LOGIN_USERNAME') - def TEST_LOGIN_PASSWORD = System.getenv('TEST_LOGIN_PASSWORD') - buildConfigField "String", "TEST_LOGIN_USERNAME", TEST_LOGIN_USERNAME != null ? "\"${TEST_LOGIN_USERNAME}\"" : '"Foo"' - buildConfigField "String", "TEST_LOGIN_PASSWORD", TEST_LOGIN_PASSWORD != null ? "\"${TEST_LOGIN_PASSWORD}\"" : '"Bar"' } prod { versionName computeVersionName(defaultConfig.versionCode, 'r') @@ -172,15 +171,16 @@ dependencies { String okHttpVersion = '4.10.0' String retrofitVersion = '2.9.0' - String glideVersion = '4.13.2' + String glideVersion = '4.15.1' String mockitoVersion = '5.2.0' - String leakCanaryVersion = '2.10' - String kotlinCoroutinesVersion = '1.3.9' + String leakCanaryVersion = '2.11' + String kotlinCoroutinesVersion = '1.7.1' String firebaseMessagingVersion = '23.1.2' String mlKitVersion = '17.0.4' String roomVersion = "2.5.1" String espressoVersion = '3.5.1' - String serialization_version = '1.4.0' + String serialization_version = '1.5.1' + String metricsVersion = '1.12' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3' @@ -204,6 +204,7 @@ dependencies { implementation 'com.android.installreferrer:installreferrer:2.2' implementation 'androidx.drawerlayout:drawerlayout:1.2.0' implementation 'androidx.work:work-runtime-ktx:2.8.1' + implementation "org.wikimedia.metrics:metrics-platform:$metricsVersion" implementation ('com.github.michael-rapp:chrome-like-tab-switcher:0.4.6') { exclude group: 'org.jetbrains' @@ -219,10 +220,10 @@ dependencies { implementation "io.reactivex.rxjava3:rxjava:3.1.6" implementation "io.reactivex.rxjava3:rxandroid:3.0.2" implementation 'org.apache.commons:commons-lang3:3.12.0' - implementation 'org.jsoup:jsoup:1.15.4' + implementation 'org.jsoup:jsoup:1.16.1' implementation 'com.github.chrisbanes:PhotoView:2.3.0' - implementation "com.github.skydoves:balloon:1.3.4" - implementation "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0" + implementation "com.github.skydoves:balloon:1.5.3" + implementation "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0" implementation("androidx.room:room-runtime:$roomVersion") annotationProcessor "androidx.room:room-compiler:$roomVersion" @@ -249,7 +250,7 @@ dependencies { testImplementation 'junit:junit:4.13.2' testImplementation "org.mockito:mockito-inline:$mockitoVersion" - testImplementation 'org.robolectric:robolectric:4.9.2' + testImplementation 'org.robolectric:robolectric:4.10.3' testImplementation "com.squareup.okhttp3:okhttp:$okHttpVersion" testImplementation "com.squareup.okhttp3:mockwebserver:$okHttpVersion" testImplementation 'org.hamcrest:hamcrest:2.2' diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index e97f446a604..782306469e2 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -41,4 +41,10 @@ } -keepclasseswithmembers class org.wikipedia.** { kotlinx.serialization.KSerializer serializer(...); -} \ No newline at end of file +} + +# --- Metrics Platform --- +-dontwarn edu.umd.cs.findbugs.annotations.SuppressFBWarnings +-dontwarn java.beans.ConstructorProperties +-dontwarn lombok.Generated +# --- /Metrics Platform --- diff --git a/app/src/androidTest/java/org/wikipedia/main/LoggedInTests.kt b/app/src/androidTest/java/org/wikipedia/main/LoggedInTests.kt index 3bc250a2130..5aca5553da6 100644 --- a/app/src/androidTest/java/org/wikipedia/main/LoggedInTests.kt +++ b/app/src/androidTest/java/org/wikipedia/main/LoggedInTests.kt @@ -12,6 +12,7 @@ import org.hamcrest.Matchers.allOf import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith +import org.wikipedia.BuildConfig import org.wikipedia.R import org.wikipedia.TestUtil @@ -52,10 +53,10 @@ class LoggedInTests { // Type in an incorrect username and password onView(allOf(TestUtil.withGrandparent(withId(R.id.login_username_text)), withClassName(`is`("org.wikipedia.views.PlainPasteEditText")))) - .perform(replaceText("Foo"), closeSoftKeyboard()) + .perform(replaceText(BuildConfig.TEST_LOGIN_USERNAME), closeSoftKeyboard()) onView(allOf(TestUtil.withGrandparent(withId(R.id.login_password_input)), withClassName(`is`("org.wikipedia.views.PlainPasteEditText")))) - .perform(replaceText("Bar"), closeSoftKeyboard()) + .perform(replaceText(BuildConfig.TEST_LOGIN_PASSWORD), closeSoftKeyboard()) // Click the login button onView(withId(R.id.login_button)) diff --git a/app/src/androidTest/java/org/wikipedia/main/SmokeTests.kt b/app/src/androidTest/java/org/wikipedia/main/SmokeTests.kt index c66c07497a8..89223cc3a04 100644 --- a/app/src/androidTest/java/org/wikipedia/main/SmokeTests.kt +++ b/app/src/androidTest/java/org/wikipedia/main/SmokeTests.kt @@ -477,7 +477,7 @@ class SmokeTests { TestUtil.delay(1) // Go to Saved tab - onView(withId(NavTab.READING_LISTS.id())).perform(click()) + onView(withId(NavTab.READING_LISTS.id)).perform(click()) TestUtil.delay(1) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0b5e534d336..9ff95569266 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -305,6 +305,10 @@ + + , pageData: PageData? = null) { + if (ReleaseUtil.isPreProdRelease && Prefs.isEventLoggingEnabled) { + MetricsPlatform.client.submitMetricsEvent( + EVENT_NAME_BASE + eventName, + getClientData(pageData), + customData + applicationData) + } + } + + private fun getClientData(pageData: PageData?): ClientData { + return ClientData( + MetricsPlatform.agentData, + pageData, + MetricsPlatform.mediawikiData, + getPerformerData(), + MetricsPlatform.domain + ) + } + + protected fun getPageData(fragment: PageFragment?): PageData? { + val pageProperties = fragment?.page?.pageProperties ?: return null + return PageData( + pageProperties.pageId, + fragment.model.title?.prefixedText.orEmpty(), + pageProperties.namespace.code(), + Namespace.of(pageProperties.namespace.code()).toString(), + pageProperties.revisionId, + pageProperties.wikiBaseItem.orEmpty(), + fragment.model.title?.wikiSite?.languageCode.orEmpty(), + null, + null, + null + ) + } + + protected fun getPageData(pageTitle: PageTitle?, pageId: Int = 0, revisionId: Long = 0): PageData? { + if (pageTitle == null) return null + return PageData( + pageId, + pageTitle.prefixedText, + pageTitle.namespace().code(), + Namespace.of(pageTitle.namespace().code()).toString(), + revisionId, + "", + pageTitle.wikiSite.languageCode, + null, null, null) + } + + private fun getPerformerData(): PerformerData { + return PerformerData( + AccountUtil.userName, + AccountUtil.isLoggedIn, + AccountUtil.hashCode(), + EventPlatformClient.AssociationController.sessionId, + EventPlatformClient.AssociationController.pageViewId, + AccountUtil.groups, + null, + WikipediaApp.instance.languageState.appLanguageCode, + WikipediaApp.instance.languageState.appLanguageCodes.toString(), + null, + null, + null, + null + ) + } + + companion object { + private const val EVENT_NAME_BASE = "android.metrics_platform." + } +} diff --git a/app/src/main/java/org/wikipedia/analytics/metricsplatform/MetricsPlatform.kt b/app/src/main/java/org/wikipedia/analytics/metricsplatform/MetricsPlatform.kt new file mode 100644 index 00000000000..dd0e1717d36 --- /dev/null +++ b/app/src/main/java/org/wikipedia/analytics/metricsplatform/MetricsPlatform.kt @@ -0,0 +1,45 @@ +package org.wikipedia.analytics.metricsplatform + +import org.wikimedia.metrics_platform.MetricsClient +import org.wikimedia.metrics_platform.context.AgentData +import org.wikimedia.metrics_platform.context.ClientData +import org.wikimedia.metrics_platform.context.MediawikiData +import org.wikipedia.WikipediaApp +import org.wikipedia.settings.Prefs +import org.wikipedia.util.ReleaseUtil +import java.time.Duration + +object MetricsPlatform { + val agentData = AgentData( + WikipediaApp.instance.appInstallID, + "android", + "app" + ) + + val mediawikiData = MediawikiData( + WikipediaApp.instance.currentTheme.toString(), + WikipediaApp.instance.versionCode.toString(), + ReleaseUtil.isProdRelease, + ReleaseUtil.isDevRelease, + WikipediaApp.instance.wikiSite.dbName(), + WikipediaApp.instance.languageState.systemLanguageCode, + null + ) + + val domain = WikipediaApp.instance.wikiSite.authority() + + private val clientData = ClientData( + agentData, + null, + mediawikiData, + null, + domain + ) + + val client: MetricsClient = MetricsClient.builder(clientData) + .eventQueueCapacity(Prefs.analyticsQueueSize) + .streamConfigFetchInterval(Duration.ofHours(12)) + .sendEventsInterval(Duration.ofSeconds(30)) + .isDebug(ReleaseUtil.isDevRelease) + .build() +} diff --git a/app/src/main/java/org/wikipedia/analytics/metricsplatform/TimedMetricsEvent.kt b/app/src/main/java/org/wikipedia/analytics/metricsplatform/TimedMetricsEvent.kt new file mode 100644 index 00000000000..571daa80132 --- /dev/null +++ b/app/src/main/java/org/wikipedia/analytics/metricsplatform/TimedMetricsEvent.kt @@ -0,0 +1,7 @@ +package org.wikipedia.analytics.metricsplatform + +import org.wikipedia.util.ActiveTimer + +open class TimedMetricsEvent : MetricsEvent() { + protected val timer = ActiveTimer() +} diff --git a/app/src/main/java/org/wikipedia/bridge/JavaScriptActionHandler.kt b/app/src/main/java/org/wikipedia/bridge/JavaScriptActionHandler.kt index e4f05bd0c3e..ccc052943b8 100644 --- a/app/src/main/java/org/wikipedia/bridge/JavaScriptActionHandler.kt +++ b/app/src/main/java/org/wikipedia/bridge/JavaScriptActionHandler.kt @@ -30,7 +30,11 @@ object JavaScriptActionHandler { } fun setTopMargin(top: Int): String { - return String.format(Locale.ROOT, "pcs.c1.Page.setMargins({ top:'%dpx', right:'%dpx', bottom:'%dpx', left:'%dpx' })", top + 16, 16, 48, 16) + return setMargins(16, top + 16, 16, 48) + } + + fun setMargins(left: Int, top: Int, right: Int, bottom: Int): String { + return "pcs.c1.Page.setMargins({ top:'${top}px', right:'${right}px', bottom:'${bottom}px', left:'${left}px' })" } fun getTextSelection(): String { @@ -110,7 +114,7 @@ object JavaScriptActionHandler { " \"dimImages\": ${(app.currentTheme.isDark && Prefs.dimDarkModeImages)}," + " \"margins\": { \"top\": \"%dpx\", \"right\": \"%dpx\", \"bottom\": \"%dpx\", \"left\": \"%dpx\" }," + " \"leadImageHeight\": \"%dpx\"," + - " \"areTablesInitiallyExpanded\": ${!Prefs.isCollapseTablesEnabled}," + + " \"areTablesInitiallyExpanded\": ${isPreview || !Prefs.isCollapseTablesEnabled}," + " \"textSizeAdjustmentPercentage\": \"100%%\"," + " \"loadImages\": ${Prefs.isImageDownloadEnabled}," + " \"userGroups\": \"${AccountUtil.groups}\"," + @@ -141,6 +145,7 @@ object JavaScriptActionHandler { "pcs.c1.Footer.MenuItemType.lastEdited, " + (if (showTalkLink) "pcs.c1.Footer.MenuItemType.talkPage, " else "") + (if (showMapLink) "pcs.c1.Footer.MenuItemType.coordinate, " else "") + + "pcs.c1.Footer.MenuItemType.pageIssues, " + " pcs.c1.Footer.MenuItemType.referenceList " + " ]," + " fragment: \"pcs-menu\"," + diff --git a/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.kt b/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.kt index 500d9affabb..eaa43aa88b4 100644 --- a/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.kt +++ b/app/src/main/java/org/wikipedia/captcha/CaptchaHandler.kt @@ -83,7 +83,7 @@ class CaptchaHandler(private val activity: Activity, private val wiki: WikiSite, } fun hideCaptcha() { - (activity as AppCompatActivity).supportActionBar!!.title = prevTitle + (activity as AppCompatActivity).supportActionBar?.title = prevTitle ViewAnimations.crossFade(binding.root, primaryView) } diff --git a/app/src/main/java/org/wikipedia/categories/CategoryActivity.kt b/app/src/main/java/org/wikipedia/categories/CategoryActivity.kt index b1491b01dca..646add199ad 100644 --- a/app/src/main/java/org/wikipedia/categories/CategoryActivity.kt +++ b/app/src/main/java/org/wikipedia/categories/CategoryActivity.kt @@ -23,6 +23,7 @@ import androidx.recyclerview.widget.RecyclerView import com.google.android.material.tabs.TabLayout import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch +import org.wikipedia.Constants import org.wikipedia.Constants.InvokeSource import org.wikipedia.R import org.wikipedia.activity.BaseActivity @@ -255,11 +256,9 @@ class CategoryActivity : BaseActivity(), LinkPreviewDialog.Callback { } companion object { - const val EXTRA_TITLE = "categoryTitle" - fun newIntent(context: Context, categoryTitle: PageTitle): Intent { return Intent(context, CategoryActivity::class.java) - .putExtra(EXTRA_TITLE, categoryTitle) + .putExtra(Constants.ARG_TITLE, categoryTitle) } } } diff --git a/app/src/main/java/org/wikipedia/categories/CategoryActivityViewModel.kt b/app/src/main/java/org/wikipedia/categories/CategoryActivityViewModel.kt index 4456ede6c02..83169767984 100644 --- a/app/src/main/java/org/wikipedia/categories/CategoryActivityViewModel.kt +++ b/app/src/main/java/org/wikipedia/categories/CategoryActivityViewModel.kt @@ -5,13 +5,14 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.paging.* +import org.wikipedia.Constants import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.page.PageTitle class CategoryActivityViewModel(bundle: Bundle) : ViewModel() { - val pageTitle = bundle.getParcelable(CategoryActivity.EXTRA_TITLE)!! + val pageTitle = bundle.getParcelable(Constants.ARG_TITLE)!! var showSubcategories = false val categoryMembersFlow = Pager(PagingConfig(pageSize = 10)) { diff --git a/app/src/main/java/org/wikipedia/categories/CategoryDialog.kt b/app/src/main/java/org/wikipedia/categories/CategoryDialog.kt index 8dc2fc9b481..490c139c4c6 100644 --- a/app/src/main/java/org/wikipedia/categories/CategoryDialog.kt +++ b/app/src/main/java/org/wikipedia/categories/CategoryDialog.kt @@ -10,6 +10,7 @@ import androidx.core.view.isVisible import androidx.fragment.app.viewModels import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import org.wikipedia.Constants import org.wikipedia.R import org.wikipedia.databinding.DialogCategoriesBinding import org.wikipedia.page.ExtendedBottomSheetDialogFragment @@ -120,10 +121,8 @@ class CategoryDialog : ExtendedBottomSheetDialogFragment() { } companion object { - const val ARG_TITLE = "title" - fun newInstance(title: PageTitle): CategoryDialog { - return CategoryDialog().apply { arguments = bundleOf(ARG_TITLE to title) } + return CategoryDialog().apply { arguments = bundleOf(Constants.ARG_TITLE to title) } } } } diff --git a/app/src/main/java/org/wikipedia/categories/CategoryDialogViewModel.kt b/app/src/main/java/org/wikipedia/categories/CategoryDialogViewModel.kt index bee84981a30..c1c9bd31c22 100644 --- a/app/src/main/java/org/wikipedia/categories/CategoryDialogViewModel.kt +++ b/app/src/main/java/org/wikipedia/categories/CategoryDialogViewModel.kt @@ -7,13 +7,14 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.launch +import org.wikipedia.Constants import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.page.PageTitle import org.wikipedia.util.Resource class CategoryDialogViewModel(bundle: Bundle) : ViewModel() { - val pageTitle = bundle.getParcelable(CategoryDialog.ARG_TITLE)!! + val pageTitle = bundle.getParcelable(Constants.ARG_TITLE)!! val categoriesData = MutableLiveData>>() init { diff --git a/app/src/main/java/org/wikipedia/commons/FilePageActivity.kt b/app/src/main/java/org/wikipedia/commons/FilePageActivity.kt index d79aff27373..1803d64a4fd 100644 --- a/app/src/main/java/org/wikipedia/commons/FilePageActivity.kt +++ b/app/src/main/java/org/wikipedia/commons/FilePageActivity.kt @@ -3,6 +3,7 @@ package org.wikipedia.commons import android.content.Context import android.content.Intent import android.os.Bundle +import org.wikipedia.Constants import org.wikipedia.R import org.wikipedia.activity.SingleFragmentActivity import org.wikipedia.page.PageTitle @@ -18,17 +19,16 @@ class FilePageActivity : SingleFragmentActivity() { } override fun createFragment(): FilePageFragment { - return FilePageFragment.newInstance(intent.getParcelableExtra(INTENT_EXTRA_PAGE_TITLE)!!, + return FilePageFragment.newInstance(intent.getParcelableExtra(Constants.ARG_TITLE)!!, intent.getBooleanExtra(INTENT_EXTRA_ALLOW_EDIT, true)) } companion object { - const val INTENT_EXTRA_PAGE_TITLE = "pageTitle" const val INTENT_EXTRA_ALLOW_EDIT = "allowEdit" fun newIntent(context: Context, pageTitle: PageTitle, allowEdit: Boolean = true): Intent { return Intent(context, FilePageActivity::class.java) - .putExtra(INTENT_EXTRA_PAGE_TITLE, pageTitle) + .putExtra(Constants.ARG_TITLE, pageTitle) .putExtra(INTENT_EXTRA_ALLOW_EDIT, allowEdit) } } diff --git a/app/src/main/java/org/wikipedia/commons/FilePageFragment.kt b/app/src/main/java/org/wikipedia/commons/FilePageFragment.kt index ff66f4633a0..d04e8451a8d 100644 --- a/app/src/main/java/org/wikipedia/commons/FilePageFragment.kt +++ b/app/src/main/java/org/wikipedia/commons/FilePageFragment.kt @@ -51,7 +51,7 @@ class FilePageFragment : Fragment(), FilePageView.Callback { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - pageTitle = requireArguments().getParcelable(FilePageActivity.INTENT_EXTRA_PAGE_TITLE)!! + pageTitle = requireArguments().getParcelable(Constants.ARG_TITLE)!! allowEdit = requireArguments().getBoolean(FilePageActivity.INTENT_EXTRA_ALLOW_EDIT) retainInstance = true } @@ -180,7 +180,7 @@ class FilePageFragment : Fragment(), FilePageView.Callback { companion object { fun newInstance(pageTitle: PageTitle, allowEdit: Boolean): FilePageFragment { return FilePageFragment().apply { - arguments = bundleOf(FilePageActivity.INTENT_EXTRA_PAGE_TITLE to pageTitle, + arguments = bundleOf(Constants.ARG_TITLE to pageTitle, FilePageActivity.INTENT_EXTRA_ALLOW_EDIT to allowEdit) } } diff --git a/app/src/main/java/org/wikipedia/connectivity/ConnectionStateMonitor.kt b/app/src/main/java/org/wikipedia/connectivity/ConnectionStateMonitor.kt index a94cf104584..dd436dcbaf7 100644 --- a/app/src/main/java/org/wikipedia/connectivity/ConnectionStateMonitor.kt +++ b/app/src/main/java/org/wikipedia/connectivity/ConnectionStateMonitor.kt @@ -22,18 +22,10 @@ class ConnectionStateMonitor : ConnectivityManager.NetworkCallback() { private var prevOnline = true private var lastCheckedMillis = 0L private val callbacks = mutableListOf() + private var networkCallbackRegistered = false - fun enable(context: Context) { - val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - connectivityManager.registerDefaultNetworkCallback(this) - } else { - connectivityManager.registerNetworkCallback(NetworkRequest.Builder() - .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) - .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) - .build(), this) - } + fun enable() { + ensureNetworkCallbackRegistered() updateOnlineState() } @@ -46,6 +38,7 @@ class ConnectionStateMonitor : ConnectivityManager.NetworkCallback() { } fun registerCallback(callback: Callback) { + ensureNetworkCallbackRegistered() callbacks.add(callback) } @@ -63,6 +56,29 @@ class ConnectionStateMonitor : ConnectivityManager.NetworkCallback() { updateOnlineState() } + private fun ensureNetworkCallbackRegistered() { + if (networkCallbackRegistered) { + return + } + try { + val connectivityManager = WikipediaApp.instance.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + connectivityManager.registerDefaultNetworkCallback(this) + } else { + connectivityManager.registerNetworkCallback( + NetworkRequest.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) + .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) + .build(), this + ) + } + networkCallbackRegistered = true + } catch (e: Exception) { + // Framework bug, will only be fixed in Android S: + // https://issuetracker.google.com/issues/175055271 + } + } + private fun updateOnlineState() { val connectivityManager = WikipediaApp.instance.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager online = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { diff --git a/app/src/main/java/org/wikipedia/dataclient/CoreRestService.kt b/app/src/main/java/org/wikipedia/dataclient/CoreRestService.kt index 65a1802986a..5e4f1f37a7d 100644 --- a/app/src/main/java/org/wikipedia/dataclient/CoreRestService.kt +++ b/app/src/main/java/org/wikipedia/dataclient/CoreRestService.kt @@ -1,31 +1,40 @@ package org.wikipedia.dataclient +import org.wikipedia.dataclient.growthtasks.GrowthImageSuggestion import org.wikipedia.dataclient.restbase.DiffResponse import org.wikipedia.dataclient.restbase.EditCount import org.wikipedia.dataclient.restbase.Revision +import retrofit2.http.Body import retrofit2.http.GET +import retrofit2.http.PUT import retrofit2.http.Path interface CoreRestService { - @GET("revision/{oldRev}/compare/{newRev}") + @GET("v1/revision/{oldRev}/compare/{newRev}") suspend fun getDiff( @Path("oldRev") oldRev: Long, @Path("newRev") newRev: Long ): DiffResponse - @GET("page/{title}/history/counts/{editType}") + @GET("v1/page/{title}/history/counts/{editType}") suspend fun getEditCount( @Path("title") title: String, @Path("editType") editType: String ): EditCount - @GET("revision/{rev}") + @GET("v1/revision/{rev}") suspend fun getRevision( @Path("rev") rev: Long ): Revision + @PUT("growthexperiments/v0/suggestions/addimage/feedback/{title}") + suspend fun addImageFeedback( + @Path("title") title: String, + @Body body: GrowthImageSuggestion.AddImageFeedbackBody + ) + companion object { - const val CORE_REST_API_PREFIX = "w/rest.php/v1/" + const val CORE_REST_API_PREFIX = "w/rest.php/" } } diff --git a/app/src/main/java/org/wikipedia/dataclient/RestService.kt b/app/src/main/java/org/wikipedia/dataclient/RestService.kt index 425611817db..2e1f36f6377 100644 --- a/app/src/main/java/org/wikipedia/dataclient/RestService.kt +++ b/app/src/main/java/org/wikipedia/dataclient/RestService.kt @@ -58,8 +58,8 @@ interface RestService { @Headers("x-analytics: preview=1", "Accept: $ACCEPT_HEADER_SUMMARY") @GET("page/summary/{title}") suspend fun getPageSummary( - @Header("Referer") referrerUrl: String?, - @Path("title") title: String + @Header("Referer") referrerUrl: String?, + @Path("title") title: String ): PageSummary // todo: this Content Service-only endpoint is under page/ but that implementation detail should diff --git a/app/src/main/java/org/wikipedia/dataclient/Service.kt b/app/src/main/java/org/wikipedia/dataclient/Service.kt index 522529455b1..35180b2bf3c 100644 --- a/app/src/main/java/org/wikipedia/dataclient/Service.kt +++ b/app/src/main/java/org/wikipedia/dataclient/Service.kt @@ -60,6 +60,17 @@ interface Service { @Query("aulimit") maxResults: Int ): Observable + @GET( + MW_API_PREFIX + "action=query&generator=search&prop=imageinfo&iiprop=extmetadata|url" + + "&gsrnamespace=6&iiurlwidth=" + PREFERRED_THUMB_SIZE + ) + suspend fun fullTextSearchCommons( + @Query("gsrsearch") searchTerm: String?, + @Query("gsroffset") gsrOffset: String?, + @Query("gsrlimit") gsrLimit: Int, + @Query("continue") cont: String? + ): MwQueryResponse + // ------- Miscellaneous ------- @get:GET(MW_API_PREFIX + "action=fancycaptchareload") @@ -71,11 +82,8 @@ interface Service { @GET(MW_API_PREFIX + "action=query&prop=description&redirects=1") fun getDescription(@Query("titles") titles: String): Observable - @GET(MW_API_PREFIX + "action=query&prop=info|description&inprop=varianttitles|displaytitle&redirects=1") - fun getInfoByPageId(@Query("pageids") pageIds: String): Observable - - @GET(MW_API_PREFIX + "action=query&prop=info|description|pageimages&inprop=varianttitles|displaytitle&redirects=1") - suspend fun getPageTitlesByPageIdsOrTitles(@Query("pageids") pageIds: String? = null, @Query("titles") titles: String? = null): MwQueryResponse + @GET(MW_API_PREFIX + "action=query&prop=info|description|pageimages&inprop=varianttitles|displaytitle&redirects=1&pithumbsize=" + PREFERRED_THUMB_SIZE) + suspend fun getInfoByPageIdsOrTitles(@Query("pageids") pageIds: String? = null, @Query("titles") titles: String? = null): MwQueryResponse @GET(MW_API_PREFIX + "action=query") suspend fun getPageIds(@Query("titles") titles: String): MwQueryResponse @@ -125,6 +133,9 @@ interface Service { @get:GET(MW_API_PREFIX + "action=query&meta=siteinfo&maxage=" + SITE_INFO_MAXAGE + "&smaxage=" + SITE_INFO_MAXAGE) val siteInfo: Observable + @GET(MW_API_PREFIX + "action=query&meta=siteinfo&siprop=general|magicwords") + suspend fun getSiteInfoWithMagicWords(): MwQueryResponse + @GET(MW_API_PREFIX + "action=parse&prop=text&mobileformat=1") fun parsePage(@Query("page") pageTitle: String): Observable @@ -260,11 +271,11 @@ interface Service { @FormUrlEncoded @POST(MW_API_PREFIX + "action=echomarkread") - fun markRead( + suspend fun markRead( @Field("token") token: String, @Field("list") readList: String?, @Field("unreadlist") unreadList: String? - ): Observable + ): MwQueryResponse @Headers("Cache-Control: no-cache") @GET(MW_API_PREFIX + "action=query&meta=notifications¬wikis=*¬prop=list¬filter=!read¬limit=1") @@ -295,7 +306,7 @@ interface Service { // ------- Editing ------- - @GET(MW_API_PREFIX + "action=query&prop=revisions|info&rvslots=main&rvprop=content|timestamp|ids&rvlimit=1&converttitles=&intestactions=edit&intestactionsdetail=full") + @GET(MW_API_PREFIX + "action=query&prop=revisions|info&rvslots=main&rvprop=content|timestamp|ids&rvlimit=1&converttitles=&intestactions=edit&intestactionsdetail=full&inprop=editintro") fun getWikiTextForSectionWithInfo( @Query("titles") title: String, @Query("rvsection") section: Int? @@ -330,6 +341,24 @@ interface Service { @Field("watchlist") watchlist: String? = null, ): Observable + @FormUrlEncoded + @POST(MW_API_PREFIX + "action=visualeditoredit") + suspend fun postVisualEditorEdit( + @Field("paction") action: String, + @Field("page") title: String, + @Field("token") token: String, + @Field("section") section: Int, + @Field("sectiontitle") newSectionTitle: String?, + @Field("summary") summary: String, + @Field("assert") user: String?, + @Field("captchaid") captchaId: String?, + @Field("captchaword") captchaWord: String?, + @Field("minor") minor: Boolean? = null, + @Field("watchlist") watchlist: String? = null, + @Field("plugins") plugins: String? = null, + @Field("data-ge-task-image-recommendation") imageRecommendationJson: String? = null, + ): Edit + @GET(MW_API_PREFIX + "action=query&list=usercontribs&ucprop=ids|title|timestamp|comment|size|flags|sizediff|tags&meta=userinfo&uiprop=groups|blockinfo|editcount|latestcontrib") suspend fun getUserContributions( @Query("ucuser") username: String, @@ -347,10 +376,10 @@ interface Service { ): MwQueryResponse @GET(MW_API_PREFIX + "action=query&prop=pageviews") - fun getPageViewsForTitles(@Query("titles") titles: String): Observable + suspend fun getPageViewsForTitles(@Query("titles") titles: String): MwQueryResponse - @get:GET(MW_API_PREFIX + "action=query&meta=wikimediaeditortaskscounts|userinfo&uiprop=groups|blockinfo|editcount|latestcontrib") - val editorTaskCounts: Observable + @GET(MW_API_PREFIX + "action=query&meta=wikimediaeditortaskscounts|userinfo&uiprop=groups|blockinfo|editcount|latestcontrib") + suspend fun getEditorTaskCounts(): MwQueryResponse @FormUrlEncoded @POST(MW_API_PREFIX + "action=rollback") @@ -389,7 +418,7 @@ interface Service { ): Observable @GET(MW_API_PREFIX + "action=wbgetentities&props=descriptions|labels|sitelinks") - fun getWikidataLabelsAndDescriptions(@Query("ids") idList: String): Observable + suspend fun getWikidataLabelsAndDescriptions(@Query("ids") idList: String): Entities @POST(MW_API_PREFIX + "action=wbsetclaim&errorlang=uselang") @FormUrlEncoded @@ -436,9 +465,6 @@ interface Service { @Field("tags") tags: String? ): Observable - @GET(MW_API_PREFIX + "action=visualeditor&paction=metadata") - fun getVisualEditorMetadata(@Query("page") page: String): Observable - // ------- Watchlist ------- @Headers("Cache-Control: no-cache") @@ -583,12 +609,20 @@ interface Service { @Query("ggtlimit") count: Int ): MwQueryResponse - @GET(MW_API_PREFIX + "action=query&prop=growthimagesuggestiondata") - suspend fun getImageRecommendationForPage( - @Query("titles") titles: String?, - @Query("pageids") pageIds: String? = null + @GET(MW_API_PREFIX + "action=query&prop=growthimagesuggestiondata&generator=search&gsrsearch=hasrecommendation%3Aimage&gsrnamespace=0&gsrsort=random") + suspend fun getPagesWithImageRecommendations( + @Query("gsrlimit") count: Int ): MwQueryResponse + @POST(MW_API_PREFIX + "action=growthinvalidateimagerecommendation") + @FormUrlEncoded + suspend fun invalidateImageRecommendation( + @Field("tasktype") taskType: String, + @Field("title") title: String, + @Field("filename") fileName: String, + @Field("token") token: String + ): MwPostResponse + @GET(MW_API_PREFIX + "action=paraminfo") suspend fun getParamInfo( @Query("modules") modules: String diff --git a/app/src/main/java/org/wikipedia/dataclient/WikiSite.kt b/app/src/main/java/org/wikipedia/dataclient/WikiSite.kt index 9087e079f80..7c8bc198f95 100644 --- a/app/src/main/java/org/wikipedia/dataclient/WikiSite.kt +++ b/app/src/main/java/org/wikipedia/dataclient/WikiSite.kt @@ -5,6 +5,7 @@ import android.os.Parcelable import kotlinx.parcelize.Parcelize import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import org.wikipedia.Constants import org.wikipedia.WikipediaApp import org.wikipedia.json.UriSerializer import org.wikipedia.language.AppLanguageLookUpTable @@ -45,11 +46,11 @@ data class WikiSite( constructor(uri: Uri) : this(uri, "") { val tempUri = ensureScheme(uri) var authority = tempUri.authority.orEmpty() - if ((BASE_DOMAIN == authority || ("www." + BASE_DOMAIN) == authority) && + if ((BASE_DOMAIN == authority || ("www.$BASE_DOMAIN") == authority) && tempUri.path?.startsWith("/wiki") == true ) { // Special case for Wikipedia only: assume English subdomain when none given. - authority = "en." + BASE_DOMAIN + authority = "en.$BASE_DOMAIN" } // Unconditionally transform any mobile authority to canonical. @@ -61,6 +62,12 @@ data class WikiSite( languageCode = LanguageUtil.firstSelectedChineseVariant } + if (languageCode == Constants.WIKI_CODE_COMMONS) { + // Special case for Commons: if the WikiSite was constructed from "commons.wikimedia.org", + // then the languageCode will be "commons" which is incorrect, so set it to the default language. + languageCode = WikipediaApp.instance.appOrSystemLanguageCode + } + // Use default subdomain in authority to prevent error when requesting endpoints. e.g. zh-tw.wikipedia.org if (authority.contains(BASE_DOMAIN) && subdomain().isNotEmpty()) { authority = subdomain() + "." + BASE_DOMAIN diff --git a/app/src/main/java/org/wikipedia/dataclient/growthtasks/GrowthImageSuggestion.kt b/app/src/main/java/org/wikipedia/dataclient/growthtasks/GrowthImageSuggestion.kt index 8c75ea452db..7636ae5d0de 100644 --- a/app/src/main/java/org/wikipedia/dataclient/growthtasks/GrowthImageSuggestion.kt +++ b/app/src/main/java/org/wikipedia/dataclient/growthtasks/GrowthImageSuggestion.kt @@ -8,7 +8,7 @@ class GrowthImageSuggestion( val titleNamespace: Int = 0, val titleText: String = "", val datasetId: String = "", - val images: List = emptyList(), + val images: List = emptyList() ) { @Serializable class ImageItem( @@ -16,7 +16,7 @@ class GrowthImageSuggestion( val displayFilename: String = "", val source: String = "", val projects: List = emptyList(), - val metadata: ImageMetadata? = null, + val metadata: ImageMetadata? = null ) @Serializable @@ -34,6 +34,17 @@ class GrowthImageSuggestion( val caption: String = "", val categories: List = emptyList(), val reason: String = "", - val contentLanguageName: String = "", + val contentLanguageName: String = "" + ) + + @Serializable + class AddImageFeedbackBody( + val token: String = "", + val editRevId: Long = 0, + val filename: String = "", + // Boolean fields must be nullable for androidx.serialization to serialize properly. + val accepted: Boolean? = null, + val reasons: List = emptyList(), + val caption: String? = null ) } diff --git a/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.kt b/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.kt index d966699231a..9c3967a193c 100644 --- a/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.kt +++ b/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryPage.kt @@ -2,9 +2,13 @@ package org.wikipedia.dataclient.mwapi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.decodeFromJsonElement import org.wikipedia.dataclient.growthtasks.GrowthImageSuggestion import org.wikipedia.dataclient.page.Protection import org.wikipedia.gallery.ImageInfo +import org.wikipedia.json.JsonUtil import org.wikipedia.page.Namespace import org.wikipedia.util.DateUtil @@ -23,8 +27,9 @@ class MwQueryPage { private val ns = 0 val coordinates: List? = null private val thumbnail: Thumbnail? = null - private val varianttitles: Map? = null + val varianttitles: Map? = null private val actions: Map>? = null + private val editintro: JsonElement? = null val index = 0 var title: String = "" @@ -76,6 +81,10 @@ class MwQueryPage { return actions?.get(actionName) ?: emptyList() } + fun getEditNotices(): Map { + return if (editintro != null && editintro is JsonObject) JsonUtil.json.decodeFromJsonElement(editintro) else emptyMap() + } + @Serializable class Revision { private val slots: Map? = null diff --git a/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResult.kt b/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResult.kt index 036952b247f..1190a970b72 100644 --- a/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResult.kt +++ b/app/src/main/java/org/wikipedia/dataclient/mwapi/MwQueryResult.kt @@ -24,17 +24,18 @@ class MwQueryResult { @SerialName("allusers") val allUsers: List? = null @SerialName("globaluserinfo") val globalUserInfo: UserInfo? = null - private val redirects: MutableList? = null - private val converted: MutableList? = null + private val redirects: List? = null + private val converted: List? = null private val tokens: Tokens? = null private val echomarkread: MarkReadResponse? = null val users: List? = null - val pages: MutableList? = null + val pages: List? = null val echomarkseen: MarkReadResponse? = null val notifications: NotificationList? = null val watchlist: List = emptyList() val namespaces: Map? = null val allmessages: List? = null + val magicwords: List? = null init { resolveConvertedTitles() @@ -75,7 +76,7 @@ class MwQueryResult { return users?.find { StringUtil.capitalize(userName) == it.name } } - fun langLinks(): MutableList { + fun langLinks(): List { val result = mutableListOf() if (pages.isNullOrEmpty()) { return result @@ -194,4 +195,10 @@ class MwQueryResult { val name: String = "" val content: String = "" } + + @Serializable + class MagicWord { + val name: String = "" + val aliases: List = emptyList() + } } diff --git a/app/src/main/java/org/wikipedia/dataclient/mwapi/MwVisualEditorResponse.kt b/app/src/main/java/org/wikipedia/dataclient/mwapi/MwVisualEditorResponse.kt deleted file mode 100644 index 038e34535a7..00000000000 --- a/app/src/main/java/org/wikipedia/dataclient/mwapi/MwVisualEditorResponse.kt +++ /dev/null @@ -1,21 +0,0 @@ -package org.wikipedia.dataclient.mwapi - -import kotlinx.serialization.Serializable -import kotlinx.serialization.json.JsonElement -import kotlinx.serialization.json.JsonObject -import kotlinx.serialization.json.decodeFromJsonElement -import org.wikipedia.json.JsonUtil - -@Serializable -class MwVisualEditorResponse : MwResponse() { - var visualeditor: VisualEditorData? = null - - @Serializable - class VisualEditorData { - private val notices: JsonElement? = null - - fun getEditNotices(): Map? { - return if (notices != null && notices is JsonObject) JsonUtil.json.decodeFromJsonElement(notices) else null - } - } -} diff --git a/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpGlideModule.kt b/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpGlideModule.kt index b17c712fccb..6b13a5343cd 100644 --- a/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpGlideModule.kt +++ b/app/src/main/java/org/wikipedia/dataclient/okhttp/OkHttpGlideModule.kt @@ -15,7 +15,7 @@ import java.io.InputStream @GlideModule class OkHttpGlideModule : AppGlideModule() { override fun registerComponents(context: Context, glide: Glide, registry: Registry) { - glide.registry.replace(GlideUrl::class.java, InputStream::class.java, + registry.replace(GlideUrl::class.java, InputStream::class.java, OkHttpUrlLoader.Factory(OkHttpConnectionFactory.client)) } diff --git a/app/src/main/java/org/wikipedia/dataclient/restbase/RbServiceError.kt b/app/src/main/java/org/wikipedia/dataclient/restbase/RbServiceError.kt index 97fe747b63c..2f896dbff85 100644 --- a/app/src/main/java/org/wikipedia/dataclient/restbase/RbServiceError.kt +++ b/app/src/main/java/org/wikipedia/dataclient/restbase/RbServiceError.kt @@ -12,9 +12,18 @@ class RbServiceError : ServiceError { private val method: String? = null private val uri: String? = null + private val errorKey: String? = null + private val messageTranslations: Map? = null + override val title: String = "" - override val details: String get() = detail.orEmpty() + override val details: String get() { + return if (messageTranslations != null) { + messageTranslations.values.firstOrNull() ?: "" + } else { + detail.orEmpty() + } + } companion object { fun create(rspBody: String): RbServiceError { diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt index d268008647c..6fff194f490 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt @@ -35,7 +35,7 @@ class DescriptionEditActivity : SingleFragmentActivity( override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val action = intent.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as Action - val pageTitle = intent.getParcelableExtra(EXTRA_TITLE)!! + val pageTitle = intent.getParcelableExtra(Constants.ARG_TITLE)!! MachineGeneratedArticleDescriptionsAnalyticsHelper.isUserInExperiment = (ReleaseUtil.isPreBetaRelease && AccountUtil.isLoggedIn && action == Action.ADD_DESCRIPTION && pageTitle.description.isNullOrEmpty() && @@ -53,7 +53,7 @@ class DescriptionEditActivity : SingleFragmentActivity( public override fun createFragment(): DescriptionEditFragment { val invokeSource = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource val action = intent.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as Action - val title = intent.getParcelableExtra(EXTRA_TITLE)!! + val title = intent.getParcelableExtra(Constants.ARG_TITLE)!! return DescriptionEditFragment.newInstance(title, intent.getStringExtra(EXTRA_HIGHLIGHT_TEXT), intent.getParcelableExtra(EXTRA_SOURCE_SUMMARY), @@ -121,7 +121,6 @@ class DescriptionEditActivity : SingleFragmentActivity( } companion object { - private const val EXTRA_TITLE = "title" private const val EXTRA_HIGHLIGHT_TEXT = "highlightText" private const val EXTRA_SOURCE_SUMMARY = "sourceSummary" private const val EXTRA_TARGET_SUMMARY = "targetSummary" @@ -134,7 +133,7 @@ class DescriptionEditActivity : SingleFragmentActivity( action: Action, invokeSource: InvokeSource): Intent { return Intent(context, DescriptionEditActivity::class.java) - .putExtra(EXTRA_TITLE, title) + .putExtra(Constants.ARG_TITLE, title) .putExtra(EXTRA_HIGHLIGHT_TEXT, highlightText) .putExtra(EXTRA_SOURCE_SUMMARY, sourceSummary) .putExtra(EXTRA_TARGET_SUMMARY, targetSummary) diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt index 753262a2282..444e6296e15 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt @@ -26,6 +26,8 @@ import org.wikipedia.analytics.eventplatform.ABTest.Companion.GROUP_3 import org.wikipedia.analytics.eventplatform.EditAttemptStepEvent import org.wikipedia.analytics.eventplatform.MachineGeneratedArticleDescriptionsAnalyticsHelper import org.wikipedia.auth.AccountUtil +import org.wikipedia.captcha.CaptchaHandler +import org.wikipedia.captcha.CaptchaResult import org.wikipedia.csrf.CsrfTokenClient import org.wikipedia.databinding.FragmentDescriptionEditBinding import org.wikipedia.dataclient.ServiceFactory @@ -64,6 +66,7 @@ class DescriptionEditFragment : Fragment() { private var targetSummary: PageSummaryForEdit? = null private var highlightText: String? = null private var editingAllowed = true + private lateinit var captchaHandler: CaptchaHandler private val analyticsHelper = MachineGeneratedArticleDescriptionsAnalyticsHelper() @@ -117,7 +120,7 @@ class DescriptionEditFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - pageTitle = requireArguments().getParcelable(ARG_TITLE)!! + pageTitle = requireArguments().getParcelable(Constants.ARG_TITLE)!! highlightText = requireArguments().getString(ARG_HIGHLIGHT_TEXT) action = requireArguments().getSerializable(ARG_ACTION) as DescriptionEditActivity.Action invokeSource = requireArguments().getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource @@ -139,6 +142,8 @@ class DescriptionEditFragment : Fragment() { val loginIntent = LoginActivity.newIntent(requireActivity(), LoginActivity.SOURCE_EDIT) loginLauncher.launch(loginIntent) } + captchaHandler = CaptchaHandler(requireActivity(), pageTitle.wikiSite, binding.fragmentDescriptionEditView.getCaptchaContainer().root, + binding.fragmentDescriptionEditView.getDescriptionEditTextView(), "", null) return binding.root } @@ -153,6 +158,7 @@ class DescriptionEditFragment : Fragment() { } override fun onDestroyView() { + captchaHandler.dispose() binding.fragmentDescriptionEditView.callback = null _binding = null super.onDestroyView() @@ -296,6 +302,9 @@ class DescriptionEditFragment : Fragment() { } private fun getEditTokenThenSave() { + if (captchaHandler.isActive) { + captchaHandler.hideCaptcha() + } val csrfSite = if (action == DescriptionEditActivity.Action.ADD_CAPTION || action == DescriptionEditActivity.Action.TRANSLATE_CAPTION) { Constants.commonsWikiSite @@ -330,10 +339,13 @@ class DescriptionEditFragment : Fragment() { text = updateDescriptionInArticle(text, binding.fragmentDescriptionEditView.description.orEmpty()) ServiceFactory.get(wikiSite).postEditSubmit(pageTitle.prefixedText, "0", null, - getEditComment().orEmpty(), - if (AccountUtil.isLoggedIn) "user" - else null, text, null, baseRevId, editToken, null, null) - .subscribeOn(Schedulers.io()) + getEditComment().orEmpty(), + if (AccountUtil.isLoggedIn) "user" + else null, text, null, baseRevId, editToken, + if (captchaHandler.isActive) captchaHandler.captchaId() else null, + if (captchaHandler.isActive) captchaHandler.captchaWord() else null + ) + .subscribeOn(Schedulers.io()) } .observeOn(AndroidSchedulers.mainThread()) .subscribe({ result -> @@ -354,8 +366,9 @@ class DescriptionEditFragment : Fragment() { editFailed(MwException(MwServiceError(code, spamblacklist)), false) } hasCaptchaResponse -> { - // TODO: handle captcha - // new CaptchaResult(result.edit().captchaId()); + binding.fragmentDescriptionEditView.showProgressBar(false) + binding.fragmentDescriptionEditView.setSaveState(false) + captchaHandler.handleCaptcha(null, CaptchaResult(result.edit.captchaId)) } hasSpamBlacklistResponse -> { editFailed(MwException(MwServiceError(code, info)), false) @@ -475,7 +488,9 @@ class DescriptionEditFragment : Fragment() { } override fun onCancelClick() { - if (binding.fragmentDescriptionEditView.showingReviewContent()) { + if (captchaHandler.isActive) { + captchaHandler.cancelCaptcha() + } else if (binding.fragmentDescriptionEditView.showingReviewContent()) { binding.fragmentDescriptionEditView.loadReviewContent(false) analyticsHelper.timer.resume() } else { @@ -513,7 +528,6 @@ class DescriptionEditFragment : Fragment() { } companion object { - private const val ARG_TITLE = "title" private const val ARG_REVIEWING = "inReviewing" private const val ARG_DESCRIPTION = "description" private const val ARG_HIGHLIGHT_TEXT = "highlightText" @@ -539,7 +553,7 @@ class DescriptionEditFragment : Fragment() { action: DescriptionEditActivity.Action, source: InvokeSource): DescriptionEditFragment { return DescriptionEditFragment().apply { - arguments = bundleOf(ARG_TITLE to title, + arguments = bundleOf(Constants.ARG_TITLE to title, ARG_HIGHLIGHT_TEXT to highlightText, ARG_SOURCE_SUMMARY to sourceSummary, ARG_TARGET_SUMMARY to targetSummary, diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditLicenseView.kt b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditLicenseView.kt index fbe424aac06..1bcbe7a90c6 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditLicenseView.kt +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditLicenseView.kt @@ -44,7 +44,7 @@ class DescriptionEditLicenseView constructor(context: Context, attrs: AttributeS DescriptionEditUtil.wikiUsesLocalDescriptions(lang.orEmpty())) { binding.licenseText.text = StringUtil.fromHtml(context.getString(R.string.edit_save_action_license_logged_in, context.getString(R.string.terms_of_use_url), - context.getString(R.string.cc_by_sa_3_url))) + context.getString(R.string.cc_by_sa_4_url))) } else { binding.licenseText.text = StringUtil.fromHtml(context.getString(when (arg) { ARG_NOTICE_ARTICLE_DESCRIPTION -> R.string.suggested_edits_license_notice diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditView.kt b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditView.kt index 8a091772bd6..53ec90f45be 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditView.kt +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditView.kt @@ -17,6 +17,7 @@ import de.mrapp.android.view.drawable.CircularProgressDrawable import org.wikipedia.R import org.wikipedia.WikipediaApp import org.wikipedia.analytics.eventplatform.MachineGeneratedArticleDescriptionsAnalyticsHelper +import org.wikipedia.databinding.GroupCaptchaBinding import org.wikipedia.databinding.ViewDescriptionEditBinding import org.wikipedia.language.LanguageUtil import org.wikipedia.mlkit.MlKitLanguageDetector @@ -402,6 +403,10 @@ class DescriptionEditView : LinearLayout, MlKitLanguageDetector.Callback { } } + fun getDescriptionEditTextView(): LinearLayout { + return binding.viewDescriptionEditTextLayout + } + fun updateInfoText() { binding.learnMoreButton.text = if (action == DescriptionEditActivity.Action.ADD_DESCRIPTION || @@ -455,6 +460,10 @@ class DescriptionEditView : LinearLayout, MlKitLanguageDetector.Callback { } } + fun getCaptchaContainer(): GroupCaptchaBinding { + return binding.captchaContainer + } + companion object { private const val TEXT_VALIDATE_DELAY_MILLIS = 1000L } diff --git a/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsFragment.kt b/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsFragment.kt index 0f3f66f4a66..699aa364094 100644 --- a/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsFragment.kt +++ b/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsFragment.kt @@ -24,6 +24,7 @@ import org.wikipedia.Constants.InvokeSource import org.wikipedia.R import org.wikipedia.analytics.eventplatform.EditHistoryInteractionEvent import org.wikipedia.auth.AccountUtil +import org.wikipedia.commons.FilePageActivity import org.wikipedia.databinding.FragmentArticleEditDetailsBinding import org.wikipedia.dataclient.mwapi.MwQueryPage.Revision import org.wikipedia.dataclient.watch.Watch @@ -206,6 +207,8 @@ class ArticleEditDetailsFragment : Fragment(), WatchlistExpiryDialog.Callback, L binding.articleTitleView.setOnClickListener { if (viewModel.pageTitle.namespace() == Namespace.USER_TALK || viewModel.pageTitle.namespace() == Namespace.TALK) { startActivity(TalkTopicsActivity.newIntent(requireContext(), viewModel.pageTitle, InvokeSource.DIFF_ACTIVITY)) + } else if (viewModel.pageTitle.namespace() == Namespace.FILE) { + startActivity(FilePageActivity.newIntent(requireContext(), viewModel.pageTitle)) } else { ExclusiveBottomSheetPresenter.show(childFragmentManager, LinkPreviewDialog.newInstance( HistoryEntry(viewModel.pageTitle, HistoryEntry.SOURCE_EDIT_DIFF_DETAILS), null)) @@ -253,6 +256,7 @@ class ArticleEditDetailsFragment : Fragment(), WatchlistExpiryDialog.Callback, L override fun onPrepareMenu(menu: Menu) { val watchlistItem = menu.findItem(R.id.menu_add_watchlist) + watchlistItem.isVisible = AccountUtil.isLoggedIn watchlistItem.title = getString(if (isWatched) R.string.menu_page_unwatch else R.string.menu_page_watch) watchlistItem.setIcon(getWatchlistIcon(isWatched, hasWatchlistExpiry)) } @@ -359,7 +363,7 @@ class ArticleEditDetailsFragment : Fragment(), WatchlistExpiryDialog.Callback, L private fun setEnableDisableTint(view: ImageView, isDisabled: Boolean) { ImageViewCompat.setImageTintList(view, AppCompatResources.getColorStateList(requireContext(), ResourceUtil.getThemedAttributeId(requireContext(), if (isDisabled) - R.attr.placeholder_color else R.attr.secondary_color))) + R.attr.inactive_color else R.attr.secondary_color))) } private fun setButtonTextAndIconColor(view: MaterialButton, themedColor: Int) { diff --git a/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt b/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt index c8aa3323df8..52785d0e163 100644 --- a/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt +++ b/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt @@ -60,25 +60,29 @@ class ArticleEditDetailsViewModel(bundle: Bundle) : ViewModel() { viewModelScope.launch(CoroutineExceptionHandler { _, throwable -> revisionDetails.postValue(Resource.Error(throwable)) }) { + revisionToId = revisionIdTo if (watchedStatus.value !is Resource.Success) { val query = ServiceFactory.get(pageTitle.wikiSite).getWatchedStatusWithRights(pageTitle.prefixedText).query!! val page = query.firstPage()!! if (pageId < 0) { pageId = page.pageId } + if (revisionToId < 0) { + revisionToId = page.lastrevid + } watchedStatus.postValue(Resource.Success(page)) hasRollbackRights = query.userInfo?.rights?.contains("rollback") == true rollbackRights.postValue(Resource.Success(hasRollbackRights)) } if (revisionIdFrom >= 0) { val responseFrom = async { ServiceFactory.get(pageTitle.wikiSite).getRevisionDetailsWithInfo(pageId.toString(), 2, revisionIdFrom) } - val responseTo = async { ServiceFactory.get(pageTitle.wikiSite).getRevisionDetailsWithInfo(pageId.toString(), 2, revisionIdTo) } + val responseTo = async { ServiceFactory.get(pageTitle.wikiSite).getRevisionDetailsWithInfo(pageId.toString(), 2, revisionToId) } val pageTo = responseTo.await().query?.firstPage()!! revisionFrom = responseFrom.await().query?.firstPage()!!.revisions[0] revisionTo = pageTo.revisions[0] canGoForward = revisionTo!!.revId < pageTo.lastrevid } else { - val response = ServiceFactory.get(pageTitle.wikiSite).getRevisionDetailsWithInfo(pageId.toString(), 2, revisionIdTo) + val response = ServiceFactory.get(pageTitle.wikiSite).getRevisionDetailsWithInfo(pageId.toString(), 2, revisionToId) val page = response.query?.firstPage()!! val revisions = page.revisions revisionTo = revisions[0] diff --git a/app/src/main/java/org/wikipedia/edit/EditSectionActivity.kt b/app/src/main/java/org/wikipedia/edit/EditSectionActivity.kt index 154dd71f398..619b723561e 100644 --- a/app/src/main/java/org/wikipedia/edit/EditSectionActivity.kt +++ b/app/src/main/java/org/wikipedia/edit/EditSectionActivity.kt @@ -143,7 +143,7 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback { } override fun onRequestInsertMedia() { - requestInsertMedia.launch(InsertMediaActivity.newIntent(this@EditSectionActivity, pageTitle.displayText)) + requestInsertMedia.launch(InsertMediaActivity.newIntent(this@EditSectionActivity, pageTitle.wikiSite, pageTitle.displayText)) } override fun onRequestInsertLink() { @@ -181,7 +181,7 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback { setContentView(binding.root) setNavigationBarColor(ResourceUtil.getThemedColor(this, android.R.attr.colorBackground)) - pageTitle = intent.getParcelableExtra(EXTRA_TITLE)!! + pageTitle = intent.getParcelableExtra(Constants.ARG_TITLE)!! sectionID = intent.getIntExtra(EXTRA_SECTION_ID, -1) sectionAnchor = intent.getStringExtra(EXTRA_SECTION_ANCHOR) textToHighlight = intent.getStringExtra(EXTRA_HIGHLIGHT_TEXT) @@ -280,7 +280,7 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback { val editLicenseText = ActivityCompat.requireViewById(this, R.id.licenseText) editLicenseText.text = StringUtil.fromHtml(getString(if (isLoggedIn) R.string.edit_save_action_license_logged_in else R.string.edit_save_action_license_anon, getString(R.string.terms_of_use_url), - getString(R.string.cc_by_sa_3_url))) + getString(R.string.cc_by_sa_4_url))) editLicenseText.movementMethod = LinkMovementMethodExt { url: String -> if (url == "https://#login") { val loginIntent = LoginActivity.newIntent(this@EditSectionActivity, LoginActivity.SOURCE_EDIT) @@ -611,27 +611,23 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback { } displaySectionText() maybeShowEditSourceDialog() - }) { - showError(it) - L.e(it) - }) - disposables.add(ServiceFactory.get(pageTitle.wikiSite).getVisualEditorMetadata(pageTitle.prefixedText) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ + editNotices.clear() // Populate edit notices, but filter out anonymous edit warnings, since // we show that type of warning ourselves when previewing. - editNotices.addAll(it.visualeditor?.getEditNotices().orEmpty() - .filterKeys { key -> key.startsWith("editnotice") } - .values.filter { str -> StringUtil.fromHtml(str).trim().isNotEmpty() }) + editNotices.addAll(firstPage.getEditNotices() + .filterKeys { key -> (key.startsWith("editnotice") && !key.endsWith("-notext")) } + .values.filter { str -> StringUtil.fromHtml(str).trim().isNotEmpty() }) invalidateOptionsMenu() if (Prefs.autoShowEditNotices) { showEditNotices() } else { maybeShowEditNoticesTooltip() } - }, { L.e(it) })) + }) { + showError(it) + L.e(it) + }) } else { displaySectionText() } @@ -740,7 +736,6 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback { private const val EXTRA_KEY_SECTION_TEXT_MODIFIED = "sectionTextModified" private const val EXTRA_KEY_TEMPORARY_WIKITEXT_STORED = "hasTemporaryWikitextStored" private const val EXTRA_KEY_EDITING_ALLOWED = "editingAllowed" - const val EXTRA_TITLE = "org.wikipedia.edit_section.title" const val EXTRA_SECTION_ID = "org.wikipedia.edit_section.sectionid" const val EXTRA_SECTION_ANCHOR = "org.wikipedia.edit_section.anchor" const val EXTRA_HIGHLIGHT_TEXT = "org.wikipedia.edit_section.highlight" @@ -749,7 +744,7 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback { return Intent(context, EditSectionActivity::class.java) .putExtra(EXTRA_SECTION_ID, sectionId) .putExtra(EXTRA_SECTION_ANCHOR, sectionAnchor) - .putExtra(EXTRA_TITLE, title) + .putExtra(Constants.ARG_TITLE, title) .putExtra(EXTRA_HIGHLIGHT_TEXT, highlightText) } } diff --git a/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaActivity.kt b/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaActivity.kt index 514215babf8..9e12fe1f51d 100644 --- a/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaActivity.kt +++ b/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaActivity.kt @@ -37,6 +37,7 @@ import org.wikipedia.databinding.ItemInsertMediaBinding import org.wikipedia.dataclient.WikiSite import org.wikipedia.history.SearchActionModeCallback import org.wikipedia.page.PageTitle +import org.wikipedia.staticdata.FileAliasData import org.wikipedia.util.DimenUtil import org.wikipedia.util.ImageUrlUtil import org.wikipedia.util.ResourceUtil @@ -171,13 +172,21 @@ class InsertMediaActivity : BaseActivity() { } private fun combineMediaWikitext(): String { - viewModel.selectedImage?.prefixedText?.let { - var wikiText = "[[$it|${viewModel.imageSize}px|${viewModel.imageType}|${viewModel.imagePosition}" + viewModel.selectedImage?.let { + var wikiText = "[[" + FileAliasData.valueFor(viewModel.wikiSite.languageCode) + ":" + it.text + if (viewModel.imageSize != InsertMediaViewModel.IMAGE_SIZE_DEFAULT) { + wikiText += "|${viewModel.imageSize}px" + } + InsertMediaViewModel.magicWords[viewModel.imageType]?.let { type -> + wikiText += "|$type" + } + InsertMediaViewModel.magicWords[viewModel.imagePosition]?.let { pos -> + wikiText += "|$pos" + } if (insertMediaSettingsFragment.alternativeText.isNotEmpty()) { - wikiText += "|alt=${insertMediaSettingsFragment.alternativeText}" + wikiText += "|" + InsertMediaViewModel.magicWords[InsertMediaViewModel.IMAGE_ALT_TEXT].orEmpty().replace("$1", insertMediaSettingsFragment.alternativeText) } - if (insertMediaSettingsFragment.captionText.isNotEmpty()) { wikiText += "|${insertMediaSettingsFragment.captionText}" } @@ -347,9 +356,10 @@ class InsertMediaActivity : BaseActivity() { const val RESULT_WIKITEXT = "insertMediaWikitext" const val RESULT_INSERT_MEDIA_SUCCESS = 100 - fun newIntent(context: Context, searchQuery: String): Intent { + fun newIntent(context: Context, wikiSite: WikiSite, searchQuery: String): Intent { return Intent(context, InsertMediaActivity::class.java) - .putExtra(EXTRA_SEARCH_QUERY, searchQuery) + .putExtra(Constants.ARG_WIKISITE, wikiSite) + .putExtra(EXTRA_SEARCH_QUERY, searchQuery) } } } diff --git a/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaSettingsFragment.kt b/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaSettingsFragment.kt index 789441e1b42..390c4dc2653 100644 --- a/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaSettingsFragment.kt +++ b/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaSettingsFragment.kt @@ -99,7 +99,8 @@ class InsertMediaSettingsFragment : Fragment() { activity.supportActionBar?.title = getString(R.string.insert_media_settings) viewModel.selectedImage?.let { ViewUtil.loadImageWithRoundedCorners(binding.imageView, it.thumbUrl, true) - binding.mediaDescription.text = StringUtil.removeHTMLTags(it.description.orEmpty().ifEmpty { it.displayText }) + binding.mediaTitle.text = it.text + binding.mediaDescription.text = StringUtil.removeHTMLTags(it.description.orEmpty().ifEmpty { it.displayText }).trim() } binding.mediaCaptionLayout.requestFocus() DeviceUtil.showSoftKeyboard(binding.mediaCaptionText) diff --git a/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaViewModel.kt b/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaViewModel.kt index 150a8e13c9e..9b0145ed45a 100644 --- a/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaViewModel.kt +++ b/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaViewModel.kt @@ -5,18 +5,24 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.paging.* +import kotlinx.coroutines.CoroutineExceptionHandler +import kotlinx.coroutines.launch +import org.wikipedia.Constants import org.wikipedia.dataclient.Service import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.dataclient.mwapi.MwQueryResponse import org.wikipedia.page.PageTitle import org.wikipedia.util.StringUtil +import org.wikipedia.util.log.L class InsertMediaViewModel(bundle: Bundle) : ViewModel() { + val wikiSite = bundle.getParcelable(Constants.ARG_WIKISITE)!! var searchQuery = StringUtil.removeHTMLTags(StringUtil.removeUnderscores(bundle.getString(InsertMediaActivity.EXTRA_SEARCH_QUERY)!!)) val originalSearchQuery = searchQuery var selectedImage: PageTitle? = null + var imagePosition = IMAGE_POSITION_RIGHT var imageType = IMAGE_TYPE_THUMBNAIL var imageSize = IMAGE_SIZE_DEFAULT @@ -25,6 +31,10 @@ class InsertMediaViewModel(bundle: Bundle) : ViewModel() { InsertMediaPagingSource(searchQuery) }.flow.cachedIn(viewModelScope) + init { + loadMagicWords() + } + class InsertMediaPagingSource( val searchQuery: String, ) : PagingSource() { @@ -32,12 +42,17 @@ class InsertMediaViewModel(bundle: Bundle) : ViewModel() { return try { val wikiSite = WikiSite(Service.COMMONS_URL) val response = ServiceFactory.get(WikiSite(Service.COMMONS_URL)) - .fullTextSearch("File: $searchQuery", params.key?.gsroffset?.toString(), params.loadSize, params.key?.continuation) + .fullTextSearchCommons(searchQuery, params.key?.gsroffset?.toString(), params.loadSize, params.key?.continuation) return response.query?.pages?.let { list -> val results = list.sortedBy { it.index }.map { val pageTitle = PageTitle(it.title, wikiSite, it.thumbUrl()) - pageTitle.description = it.description + // since this is an imageinfo query, the thumb URL and description will + // come from image metadata. + it.imageInfo()?.let { imageInfo -> + pageTitle.thumbUrl = imageInfo.thumbUrl + pageTitle.description = imageInfo.metadata?.imageDescription() + } pageTitle } LoadResult.Page(results, null, response.continuation) @@ -54,6 +69,39 @@ class InsertMediaViewModel(bundle: Bundle) : ViewModel() { } } + private fun loadMagicWords() { + if (magicWordsLang == wikiSite.languageCode) { + return + } + + magicWords[IMAGE_POSITION_NONE] = "none" + magicWords[IMAGE_POSITION_CENTER] = "center" + magicWords[IMAGE_POSITION_LEFT] = "left" + magicWords[IMAGE_POSITION_RIGHT] = "right" + magicWords[IMAGE_TYPE_THUMBNAIL] = "thumb" + magicWords[IMAGE_TYPE_FRAMELESS] = "frameless" + magicWords[IMAGE_TYPE_FRAME] = "frame" + magicWords[IMAGE_ALT_TEXT] = "alt=$1" + + viewModelScope.launch(CoroutineExceptionHandler { _, throwable -> + L.e(throwable) + }) { + ServiceFactory.get(wikiSite).getSiteInfoWithMagicWords() + .query?.magicwords?.let { it -> + it.find { it.name == IMAGE_POSITION_NONE }?.aliases?.first()?.let { magicWords[IMAGE_POSITION_NONE] = it } + it.find { it.name == IMAGE_POSITION_CENTER }?.aliases?.first()?.let { magicWords[IMAGE_POSITION_CENTER] = it } + it.find { it.name == IMAGE_POSITION_LEFT }?.aliases?.first()?.let { magicWords[IMAGE_POSITION_LEFT] = it } + it.find { it.name == IMAGE_POSITION_RIGHT }?.aliases?.first()?.let { magicWords[IMAGE_POSITION_RIGHT] = it } + it.find { it.name == IMAGE_TYPE_THUMBNAIL }?.aliases?.first()?.let { magicWords[IMAGE_TYPE_THUMBNAIL] = it } + it.find { it.name == IMAGE_TYPE_FRAMELESS }?.aliases?.first()?.let { magicWords[IMAGE_TYPE_FRAMELESS] = it } + it.find { it.name == IMAGE_TYPE_FRAME }?.aliases?.first()?.let { magicWords[IMAGE_TYPE_FRAME] = it } + it.find { it.name == IMAGE_ALT_TEXT }?.aliases?.first()?.let { magicWords[IMAGE_ALT_TEXT] = it } + it.find { it.name == IMAGE_POSITION_NONE }?.aliases?.first()?.let { magicWords[IMAGE_POSITION_NONE] = it } + } + magicWordsLang = wikiSite.languageCode + } + } + class Factory(private val bundle: Bundle) : ViewModelProvider.Factory { @Suppress("unchecked_cast") override fun create(modelClass: Class): T { @@ -62,14 +110,18 @@ class InsertMediaViewModel(bundle: Bundle) : ViewModel() { } companion object { - const val IMAGE_POSITION_NONE = "none" - const val IMAGE_POSITION_CENTER = "center" - const val IMAGE_POSITION_LEFT = "left" - const val IMAGE_POSITION_RIGHT = "right" - const val IMAGE_TYPE_THUMBNAIL = "thumb" - const val IMAGE_TYPE_FRAMELESS = "frameless" - const val IMAGE_TYPE_FRAME = "frame" + const val IMAGE_POSITION_NONE = "img_none" + const val IMAGE_POSITION_CENTER = "img_center" + const val IMAGE_POSITION_LEFT = "img_left" + const val IMAGE_POSITION_RIGHT = "img_right" + const val IMAGE_TYPE_THUMBNAIL = "img_thumbnail" + const val IMAGE_TYPE_FRAMELESS = "img_frameless" + const val IMAGE_TYPE_FRAME = "img_framed" const val IMAGE_TYPE_BASIC = "basic" + const val IMAGE_ALT_TEXT = "img_alt" const val IMAGE_SIZE_DEFAULT = "220x124" + + private var magicWordsLang = "" + val magicWords = mutableMapOf() } } diff --git a/app/src/main/java/org/wikipedia/edit/preview/EditPreviewFragment.kt b/app/src/main/java/org/wikipedia/edit/preview/EditPreviewFragment.kt index 6011827e30e..6fc5d37bf3d 100644 --- a/app/src/main/java/org/wikipedia/edit/preview/EditPreviewFragment.kt +++ b/app/src/main/java/org/wikipedia/edit/preview/EditPreviewFragment.kt @@ -8,6 +8,7 @@ import android.view.View import android.view.ViewGroup import android.webkit.WebView import androidx.core.app.ActivityCompat +import androidx.core.view.isVisible import androidx.fragment.app.Fragment import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.wikipedia.R @@ -26,9 +27,9 @@ import org.wikipedia.page.* import org.wikipedia.page.references.PageReferences import org.wikipedia.page.references.ReferenceDialog import org.wikipedia.util.DeviceUtil +import org.wikipedia.util.DimenUtil import org.wikipedia.util.ResourceUtil import org.wikipedia.util.UriUtil -import org.wikipedia.views.ViewAnimations class EditPreviewFragment : Fragment(), CommunicationBridgeListener, ReferenceDialog.Callback { @@ -74,8 +75,9 @@ class EditPreviewFragment : Fragment(), CommunicationBridgeListener, ReferenceDi RestService.PAGE_HTML_PREVIEW_ENDPOINT + UriUtil.encodeURL(title.prefixedText) val postData = "wikitext=" + UriUtil.encodeURL(wikiText) binding.editPreviewWebview.postUrl(url, postData.toByteArray()) - ViewAnimations.fadeIn(binding.editPreviewContainer) { requireActivity().invalidateOptionsMenu() } - ViewAnimations.fadeOut(ActivityCompat.requireViewById(requireActivity(), R.id.edit_section_container)) + ActivityCompat.requireViewById(requireActivity(), R.id.edit_section_container).isVisible = false + binding.editPreviewContainer.isVisible = true + requireActivity().invalidateOptionsMenu() } private fun initWebView() { @@ -91,9 +93,10 @@ class EditPreviewFragment : Fragment(), CommunicationBridgeListener, ReferenceDi if (!isAdded) { return } + bridge.onMetadataReady() + bridge.execute(JavaScriptActionHandler.setMargins(16, 0, 16, 16 + DimenUtil.roundedPxToDp(binding.licenseText.height.toFloat()))) (requireActivity() as EditSectionActivity).showProgressBar(false) requireActivity().invalidateOptionsMenu() - bridge.execute(JavaScriptActionHandler.setTopMargin(0)) } } @@ -130,7 +133,9 @@ class EditPreviewFragment : Fragment(), CommunicationBridgeListener, ReferenceDi * When fade-out completes, the state of the actionbar button(s) is updated. */ fun hide(toView: View) { - ViewAnimations.crossFade(binding.editPreviewContainer, toView) { requireActivity().invalidateOptionsMenu() } + binding.editPreviewContainer.isVisible = false + toView.isVisible = true + requireActivity().invalidateOptionsMenu() } inner class EditLinkHandler constructor(context: Context) : LinkHandler(context) { diff --git a/app/src/main/java/org/wikipedia/feed/news/NewsActivity.kt b/app/src/main/java/org/wikipedia/feed/news/NewsActivity.kt index 6dfb609fcf9..e383b38bc6d 100644 --- a/app/src/main/java/org/wikipedia/feed/news/NewsActivity.kt +++ b/app/src/main/java/org/wikipedia/feed/news/NewsActivity.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import android.graphics.Color import android.os.Bundle +import org.wikipedia.Constants import org.wikipedia.R import org.wikipedia.activity.SingleFragmentActivity import org.wikipedia.dataclient.WikiSite @@ -19,7 +20,7 @@ class NewsActivity : SingleFragmentActivity() { public override fun createFragment(): NewsFragment { return newInstance(intent.getParcelableExtra(EXTRA_NEWS_ITEM)!!, - intent.getParcelableExtra(EXTRA_WIKI)!!) + intent.getParcelableExtra(Constants.ARG_WIKISITE)!!) } fun updateNavigationBarColor() { @@ -28,11 +29,11 @@ class NewsActivity : SingleFragmentActivity() { companion object { const val EXTRA_NEWS_ITEM = "item" - const val EXTRA_WIKI = "wiki" + fun newIntent(context: Context, item: NewsItem, wiki: WikiSite): Intent { return Intent(context, NewsActivity::class.java) .putExtra(EXTRA_NEWS_ITEM, item) - .putExtra(EXTRA_WIKI, wiki) + .putExtra(Constants.ARG_WIKISITE, wiki) } } } diff --git a/app/src/main/java/org/wikipedia/feed/news/NewsFragment.kt b/app/src/main/java/org/wikipedia/feed/news/NewsFragment.kt index a39db1e5675..6429fe4cd80 100644 --- a/app/src/main/java/org/wikipedia/feed/news/NewsFragment.kt +++ b/app/src/main/java/org/wikipedia/feed/news/NewsFragment.kt @@ -134,7 +134,7 @@ class NewsFragment : Fragment() { fun newInstance(item: NewsItem, wiki: WikiSite): NewsFragment { return NewsFragment().apply { arguments = bundleOf(NewsActivity.EXTRA_NEWS_ITEM to item, - NewsActivity.EXTRA_WIKI to wiki) + Constants.ARG_WIKISITE to wiki) } } } diff --git a/app/src/main/java/org/wikipedia/feed/news/NewsViewModel.kt b/app/src/main/java/org/wikipedia/feed/news/NewsViewModel.kt index bb5387ede3b..26d4342bbac 100644 --- a/app/src/main/java/org/wikipedia/feed/news/NewsViewModel.kt +++ b/app/src/main/java/org/wikipedia/feed/news/NewsViewModel.kt @@ -3,12 +3,13 @@ package org.wikipedia.feed.news import android.os.Bundle import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider +import org.wikipedia.Constants import org.wikipedia.dataclient.WikiSite class NewsViewModel(bundle: Bundle) : ViewModel() { val item = bundle.getParcelable(NewsActivity.EXTRA_NEWS_ITEM)!! - val wiki = bundle.getParcelable(NewsActivity.EXTRA_WIKI)!! + val wiki = bundle.getParcelable(Constants.ARG_WIKISITE)!! class Factory(private val bundle: Bundle) : ViewModelProvider.Factory { @Suppress("unchecked_cast") diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayActivity.kt b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayActivity.kt index 3662a64ec54..f1124acdbee 100644 --- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayActivity.kt +++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayActivity.kt @@ -11,7 +11,7 @@ class OnThisDayActivity : SingleFragmentActivity() { override fun createFragment(): OnThisDayFragment { return OnThisDayFragment.newInstance(intent.getIntExtra(EXTRA_AGE, 0), - intent.getParcelableExtra(EXTRA_WIKISITE)!!, + intent.getParcelableExtra(Constants.ARG_WIKISITE)!!, intent.getIntExtra(EXTRA_YEAR, -1), intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource) } @@ -19,13 +19,12 @@ class OnThisDayActivity : SingleFragmentActivity() { companion object { const val EXTRA_AGE = "age" const val EXTRA_YEAR = "year" - const val EXTRA_WIKISITE = "wikiSite" fun newIntent(context: Context, age: Int, year: Int, wikiSite: WikiSite, invokeSource: InvokeSource): Intent { return Intent(context, OnThisDayActivity::class.java) .putExtra(EXTRA_AGE, age) - .putExtra(EXTRA_WIKISITE, wikiSite) + .putExtra(Constants.ARG_WIKISITE, wikiSite) .putExtra(EXTRA_YEAR, year) .putExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE, invokeSource) } diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.kt b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.kt index 54fea9caefa..43e5e8b36b3 100644 --- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.kt +++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.kt @@ -53,7 +53,7 @@ class OnThisDayFragment : Fragment(), CustomDatePicker.Callback { val topDecorationDp = 24 val age = requireArguments().getInt(OnThisDayActivity.EXTRA_AGE, 0) - wiki = requireArguments().getParcelable(OnThisDayActivity.EXTRA_WIKISITE)!! + wiki = requireArguments().getParcelable(Constants.ARG_WIKISITE)!! invokeSource = requireArguments().getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource date = DateUtil.getDefaultDateFor(age) yearOnCardView = requireArguments().getInt(OnThisDayActivity.EXTRA_YEAR, -1) @@ -294,7 +294,7 @@ class OnThisDayFragment : Fragment(), CustomDatePicker.Callback { fun newInstance(age: Int, wikiSite: WikiSite, year: Int, invokeSource: InvokeSource): OnThisDayFragment { return OnThisDayFragment().apply { arguments = bundleOf(OnThisDayActivity.EXTRA_AGE to age, - OnThisDayActivity.EXTRA_WIKISITE to wikiSite, + Constants.ARG_WIKISITE to wikiSite, OnThisDayActivity.EXTRA_YEAR to year, Constants.INTENT_EXTRA_INVOKE_SOURCE to invokeSource) } diff --git a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsFeedClient.kt b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsFeedClient.kt index 1aba55b23d5..663f44e453e 100644 --- a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsFeedClient.kt +++ b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsFeedClient.kt @@ -5,6 +5,10 @@ import android.os.Parcelable import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.disposables.CompositeDisposable import io.reactivex.rxjava3.schedulers.Schedulers +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import kotlinx.parcelize.Parcelize import org.wikipedia.Constants import org.wikipedia.WikipediaApp @@ -47,7 +51,16 @@ class SuggestedEditsFeedClient : FeedClient { if (age == 0) { // In the background, fetch the user's latest contribution stats, so that we can update whether the // Suggested Edits feature is paused or disabled, the next time the feed is refreshed. - UserContribStats.getEditCountsObservable().subscribe() + CoroutineScope(Dispatchers.Main).launch { + withContext(Dispatchers.IO) { + try { + UserContribStats.verifyEditCountsAndPauseState() + } catch (e: Exception) { + // Log the exception; will retry next time the feed is refreshed. + L.e(e) + } + } + } } if (UserContribStats.isDisabled() || UserContribStats.maybePauseAndGetEndDate() != null) { diff --git a/app/src/main/java/org/wikipedia/gallery/GalleryActivity.kt b/app/src/main/java/org/wikipedia/gallery/GalleryActivity.kt index 64302ee60f5..ca4f423934c 100644 --- a/app/src/main/java/org/wikipedia/gallery/GalleryActivity.kt +++ b/app/src/main/java/org/wikipedia/gallery/GalleryActivity.kt @@ -126,12 +126,12 @@ class GalleryActivity : BaseActivity(), LinkPreviewDialog.Callback, GalleryItemF binding.errorView.visibility = View.GONE loadGalleryContent() } - if (intent.hasExtra(EXTRA_PAGETITLE)) { - pageTitle = intent.getParcelableExtra(EXTRA_PAGETITLE) + if (intent.hasExtra(Constants.ARG_TITLE)) { + pageTitle = intent.getParcelableExtra(Constants.ARG_TITLE) } initialFilename = intent.getStringExtra(EXTRA_FILENAME) revision = intent.getLongExtra(EXTRA_REVISION, 0) - sourceWiki = intent.getParcelableExtra(EXTRA_WIKI)!! + sourceWiki = intent.getParcelableExtra(Constants.ARG_WIKISITE)!! galleryAdapter = GalleryItemAdapter(this@GalleryActivity) binding.pager.adapter = galleryAdapter binding.pager.registerOnPageChangeCallback(pageChangeListener) @@ -669,9 +669,7 @@ class GalleryActivity : BaseActivity(), LinkPreviewDialog.Callback, GalleryItemF const val ACTIVITY_RESULT_PAGE_SELECTED = 1 const val ACTIVITY_RESULT_IMAGE_CAPTION_ADDED = 2 const val ACTIVITY_RESULT_IMAGE_TAGS_ADDED = 3 - const val EXTRA_PAGETITLE = "pageTitle" const val EXTRA_FILENAME = "filename" - const val EXTRA_WIKI = "wiki" const val EXTRA_REVISION = "revision" const val EXTRA_SOURCE = "source" const val SOURCE_LEAD_IMAGE = 0 @@ -683,11 +681,11 @@ class GalleryActivity : BaseActivity(), LinkPreviewDialog.Callback, GalleryItemF val intent = Intent() .setClass(context, GalleryActivity::class.java) .putExtra(EXTRA_FILENAME, filename) - .putExtra(EXTRA_WIKI, wiki) + .putExtra(Constants.ARG_WIKISITE, wiki) .putExtra(EXTRA_REVISION, revision) .putExtra(EXTRA_SOURCE, source) if (pageTitle != null) { - intent.putExtra(EXTRA_PAGETITLE, pageTitle) + intent.putExtra(Constants.ARG_TITLE, pageTitle) } return intent } diff --git a/app/src/main/java/org/wikipedia/gallery/GalleryItemFragment.kt b/app/src/main/java/org/wikipedia/gallery/GalleryItemFragment.kt index d4e22f13fcb..aa1bd42fb8a 100644 --- a/app/src/main/java/org/wikipedia/gallery/GalleryItemFragment.kt +++ b/app/src/main/java/org/wikipedia/gallery/GalleryItemFragment.kt @@ -66,7 +66,7 @@ class GalleryItemFragment : Fragment(), MenuProvider, RequestListener override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mediaListItem = requireArguments().getParcelable(ARG_GALLERY_ITEM)!! - pageTitle = requireArguments().getParcelable(ARG_PAGETITLE) + pageTitle = requireArguments().getParcelable(Constants.ARG_TITLE) if (pageTitle == null) { pageTitle = PageTitle(mediaListItem.title, Constants.commonsWikiSite) } @@ -300,12 +300,11 @@ class GalleryItemFragment : Fragment(), MenuProvider, RequestListener } companion object { - private const val ARG_PAGETITLE = "pageTitle" private const val ARG_GALLERY_ITEM = "galleryItem" fun newInstance(pageTitle: PageTitle?, item: MediaListItem): GalleryItemFragment { return GalleryItemFragment().apply { - arguments = bundleOf(ARG_PAGETITLE to pageTitle, ARG_GALLERY_ITEM to item) + arguments = bundleOf(Constants.ARG_TITLE to pageTitle, ARG_GALLERY_ITEM to item) } } } diff --git a/app/src/main/java/org/wikipedia/language/AcceptLanguageUtil.java b/app/src/main/java/org/wikipedia/language/AcceptLanguageUtil.java deleted file mode 100644 index 0b0bdb01991..00000000000 --- a/app/src/main/java/org/wikipedia/language/AcceptLanguageUtil.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.wikipedia.language; - -import androidx.annotation.NonNull; - -import java.util.Locale; - -public final class AcceptLanguageUtil { - private static final float APP_LANGUAGE_QUALITY = .9f; - private static final float SYSTEM_LANGUAGE_QUALITY = .8f; - - /** - * @return The value that should go in the Accept-Language header. - */ - @NonNull - public static String getAcceptLanguage(@NonNull String wikiLanguageCode, - @NonNull String appLanguageCode, - @NonNull String systemLanguageCode) { - String acceptLanguage = wikiLanguageCode; - acceptLanguage = appendToAcceptLanguage(acceptLanguage, appLanguageCode, APP_LANGUAGE_QUALITY); - acceptLanguage = appendToAcceptLanguage(acceptLanguage, systemLanguageCode, SYSTEM_LANGUAGE_QUALITY); - return acceptLanguage; - } - - @NonNull - private static String appendToAcceptLanguage(@NonNull String acceptLanguage, - @NonNull String languageCode, float quality) { - // If accept-language already contains the language, just return accept-language. - if (acceptLanguage.contains(languageCode)) { - return acceptLanguage; - } - - // If accept-language is empty, don't append. Just return the language. - if (acceptLanguage.isEmpty()) { - return languageCode; - } - - // Accept-language is nonempty, append the language. - return String.format(Locale.ROOT, "%s,%s;q=%.1f", acceptLanguage, languageCode, quality); - } - - private AcceptLanguageUtil() { } -} diff --git a/app/src/main/java/org/wikipedia/language/AcceptLanguageUtil.kt b/app/src/main/java/org/wikipedia/language/AcceptLanguageUtil.kt new file mode 100644 index 00000000000..e9baa133a2a --- /dev/null +++ b/app/src/main/java/org/wikipedia/language/AcceptLanguageUtil.kt @@ -0,0 +1,22 @@ +package org.wikipedia.language + +import java.util.Locale + +object AcceptLanguageUtil { + private const val APP_LANGUAGE_QUALITY = .9f + private const val SYSTEM_LANGUAGE_QUALITY = .8f + + fun getAcceptLanguage(wikiLanguageCode: String, appLanguageCode: String, systemLanguageCode: String): String { + var acceptLanguage = wikiLanguageCode + acceptLanguage = appendToAcceptLanguage(acceptLanguage, appLanguageCode, APP_LANGUAGE_QUALITY) + acceptLanguage = appendToAcceptLanguage(acceptLanguage, systemLanguageCode, SYSTEM_LANGUAGE_QUALITY) + return acceptLanguage + } + + private fun appendToAcceptLanguage(acceptLanguage: String, languageCode: String, quality: Float): String { + if (acceptLanguage.contains(languageCode)) { + return acceptLanguage + } + return if (acceptLanguage.isEmpty()) languageCode else String.format(Locale.ROOT, "%s,%s;q=%.1f", acceptLanguage, languageCode, quality) + } +} diff --git a/app/src/main/java/org/wikipedia/language/AppLanguageLookUpTable.kt b/app/src/main/java/org/wikipedia/language/AppLanguageLookUpTable.kt index 4ac4e260551..c2bf7ff2c8c 100644 --- a/app/src/main/java/org/wikipedia/language/AppLanguageLookUpTable.kt +++ b/app/src/main/java/org/wikipedia/language/AppLanguageLookUpTable.kt @@ -2,58 +2,38 @@ package org.wikipedia.language import android.content.Context import org.wikipedia.R -import java.lang.ref.SoftReference import java.util.* class AppLanguageLookUpTable(context: Context) { private val resources = context.resources - private var codesRef = SoftReference>(null) - private var canonicalNamesRef = SoftReference>(null) - private var localizedNamesRef = SoftReference>(null) - private var languagesVariantsRef = SoftReference>>(null) - - val codes: List - get() { - var codes = codesRef.get() - if (codes == null) { - codes = getStringList(R.array.preference_language_keys) - codesRef = SoftReference(codes) - } - return codes - } - private val canonicalNames: List - get() { - var names = canonicalNamesRef.get() - if (names == null) { - names = getStringList(R.array.preference_language_canonical_names) - canonicalNamesRef = SoftReference(names) - } - return names - } + val codes by lazy { + getStringList(R.array.preference_language_keys) + } - private val localizedNames: List - get() { - var names = localizedNamesRef.get() - if (names == null) { - names = getStringList(R.array.preference_language_local_names) - localizedNamesRef = SoftReference(names) - } - return names + val bcp47codes by lazy { + val bcpCodes = mutableMapOf() + val bcpList = getStringList(R.array.preference_bcp47_keys) + for (i in bcpList.indices) { + bcpCodes[codes[i]] = bcpList[i] } + bcpCodes + } - private val languagesVariants: Map> - get() { - var map = languagesVariantsRef.get() - if (map == null) { - map = getStringList(R.array.preference_language_variants) - .map { it.split(",") } - .filter { it.size > 1 } - .associate { it[0] to ArrayList(it.subList(1, it.size)) } - languagesVariantsRef = SoftReference(map) - } - return map - } + private val canonicalNames by lazy { + getStringList(R.array.preference_language_canonical_names) + } + + private val localizedNames by lazy { + getStringList(R.array.preference_language_local_names) + } + + private val languagesVariants by lazy { + getStringList(R.array.preference_language_variants) + .map { it.split(",") } + .filter { it.size > 1 } + .associate { it[0] to ArrayList(it.subList(1, it.size)) } + } fun getCanonicalName(code: String?): String? { var name = canonicalNames.getOrNull(indexOfCode(code)) @@ -89,6 +69,10 @@ class AppLanguageLookUpTable(context: Context) { return languagesVariants.entries.firstOrNull { (_, value) -> code in value }?.key } + fun getBcp47Code(code: String): String { + return bcp47codes[code].orEmpty().ifEmpty { code } + } + fun isSupportedCode(code: String?): Boolean { return code in codes } diff --git a/app/src/main/java/org/wikipedia/language/AppLanguageState.kt b/app/src/main/java/org/wikipedia/language/AppLanguageState.kt index 94aa33d6048..072d1dbce4f 100644 --- a/app/src/main/java/org/wikipedia/language/AppLanguageState.kt +++ b/app/src/main/java/org/wikipedia/language/AppLanguageState.kt @@ -136,6 +136,10 @@ class AppLanguageState(context: Context) { } } + fun getBcp47LanguageCode(langCode: String): String { + return appLanguageLookUpTable.getBcp47Code(langCode) + } + private fun initAppLanguageCodes() { if (_appLanguageCodes.isEmpty()) { if (Prefs.isInitialOnboardingEnabled) { @@ -145,5 +149,11 @@ class AppLanguageState(context: Context) { addAppLanguageCode(systemLanguageCode) } } + if (_appLanguageCodes.isEmpty()) { + // If the language list is still empty, add the fallback language. + // This is for devices that have very nonstandard language configurations, or + // variants of languages that we don't support yet. + addAppLanguageCode(systemLanguageCode) + } } } diff --git a/app/src/main/java/org/wikipedia/language/LangLinksActivity.kt b/app/src/main/java/org/wikipedia/language/LangLinksActivity.kt index a8d721f8b0a..af89297f848 100644 --- a/app/src/main/java/org/wikipedia/language/LangLinksActivity.kt +++ b/app/src/main/java/org/wikipedia/language/LangLinksActivity.kt @@ -156,7 +156,7 @@ class LangLinksActivity : BaseActivity() { private inner class LangLinksAdapter(languageEntries: List, private val appLanguageEntries: List) : RecyclerView.Adapter() { private val originalLanguageEntries = languageEntries.toMutableList() private val languageEntries = mutableListOf() - private val variantTitlesToUpdate = originalLanguageEntries.filter { !WikipediaApp.instance.languageState.getDefaultLanguageCode(it.wikiSite.languageCode).isNullOrEmpty() }.toMutableList() + private val variantLangsToUpdate = originalLanguageEntries.mapNotNull { WikipediaApp.instance.languageState.getDefaultLanguageCode(it.wikiSite.languageCode) }.toMutableSet() private var isSearching = false @@ -188,9 +188,10 @@ class LangLinksActivity : BaseActivity() { } override fun onBindViewHolder(holder: DefaultViewHolder, pos: Int) { - if (variantTitlesToUpdate.contains(languageEntries[pos])) { - viewModel.fetchLangVariantLink(languageEntries[pos]) - variantTitlesToUpdate.remove(languageEntries[pos]) + val langCode = WikipediaApp.instance.languageState.getDefaultLanguageCode(languageEntries[pos].wikiSite.languageCode) + if (langCode != null && variantLangsToUpdate.contains(langCode)) { + variantLangsToUpdate.remove(langCode) + viewModel.fetchLangVariantLinks(langCode, languageEntries[pos].prefixedText, originalLanguageEntries) } holder.bindItem(languageEntries[pos]) } @@ -273,7 +274,6 @@ class LangLinksActivity : BaseActivity() { companion object { const val ACTIVITY_RESULT_LANGLINK_SELECT = 1 const val ACTION_LANGLINKS_FOR_TITLE = "org.wikipedia.langlinks_for_title" - const val EXTRA_PAGETITLE = "org.wikipedia.pagetitle" private const val VIEW_TYPE_HEADER = 0 private const val VIEW_TYPE_ITEM = 1 diff --git a/app/src/main/java/org/wikipedia/language/LangLinksViewModel.kt b/app/src/main/java/org/wikipedia/language/LangLinksViewModel.kt index 919ab2ae213..1e4893e6713 100644 --- a/app/src/main/java/org/wikipedia/language/LangLinksViewModel.kt +++ b/app/src/main/java/org/wikipedia/language/LangLinksViewModel.kt @@ -6,6 +6,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import kotlinx.coroutines.* +import org.wikipedia.Constants import org.wikipedia.WikipediaApp import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite @@ -19,7 +20,7 @@ import org.wikipedia.util.log.L class LangLinksViewModel(bundle: Bundle) : ViewModel() { - var pageTitle: PageTitle = bundle.getParcelable(LangLinksActivity.EXTRA_PAGETITLE)!! + var pageTitle: PageTitle = bundle.getParcelable(Constants.ARG_TITLE)!! val languageEntries = MutableLiveData>>() val languageEntryVariantUpdate = SingleLiveData>() @@ -35,19 +36,25 @@ class LangLinksViewModel(bundle: Bundle) : ViewModel() { languageEntries.postValue(Resource.Error(throwable)) }) { val response = ServiceFactory.get(pageTitle.wikiSite).getLangLinks(pageTitle.prefixedText) - val langLinks = response.query!!.langLinks() + val langLinks = response.query!!.langLinks().toMutableList() updateLanguageEntriesSupported(langLinks) sortLanguageEntriesByMru(langLinks) languageEntries.postValue(Resource.Success(langLinks)) } } - fun fetchLangVariantLink(title: PageTitle) { + fun fetchLangVariantLinks(langCode: String, title: String, titles: List) { viewModelScope.launch(CoroutineExceptionHandler { _, throwable -> languageEntries.postValue(Resource.Error(throwable)) }) { - val summary = ServiceFactory.getRest(title.wikiSite).getPageSummary(null, title.prefixedText) - title.displayText = summary.displayTitle + val response = ServiceFactory.get(WikiSite.forLanguageCode(langCode)).getInfoByPageIdsOrTitles(null, title) + response.query?.firstPage()?.varianttitles?.let { variantMap -> + titles.forEach { + variantMap[it.wikiSite.languageCode]?.let { text -> + it.displayText = text + } + } + } languageEntryVariantUpdate.postValue(Resource.Success(Unit)) } } diff --git a/app/src/main/java/org/wikipedia/language/LanguageUtil.kt b/app/src/main/java/org/wikipedia/language/LanguageUtil.kt index 7459c450446..f73ba6d003c 100644 --- a/app/src/main/java/org/wikipedia/language/LanguageUtil.kt +++ b/app/src/main/java/org/wikipedia/language/LanguageUtil.kt @@ -140,4 +140,8 @@ object LanguageUtil { fun convertToUselangIfNeeded(languageCode: String): String { return if (languageCode == "test") "uselang" else languageCode } + + fun formatLangCodeForButton(languageCode: String): String { + return languageCode.replace("-", "-\n") + } } diff --git a/app/src/main/java/org/wikipedia/navtab/MenuNavTabDialog.kt b/app/src/main/java/org/wikipedia/navtab/MenuNavTabDialog.kt index 4c0e30c24d7..b5959d43d5a 100644 --- a/app/src/main/java/org/wikipedia/navtab/MenuNavTabDialog.kt +++ b/app/src/main/java/org/wikipedia/navtab/MenuNavTabDialog.kt @@ -15,8 +15,7 @@ import org.wikipedia.analytics.eventplatform.BreadCrumbLogEvent import org.wikipedia.auth.AccountUtil import org.wikipedia.databinding.ViewMainDrawerBinding import org.wikipedia.page.ExtendedBottomSheetDialogFragment -import org.wikipedia.util.DimenUtil.getDimension -import org.wikipedia.util.DimenUtil.roundedDpToPx +import org.wikipedia.util.DimenUtil import org.wikipedia.util.ResourceUtil.getThemedColorStateList import org.wikipedia.util.UriUtil.visitInExternalBrowser @@ -89,7 +88,7 @@ class MenuNavTabDialog : ExtendedBottomSheetDialogFragment() { override fun onStart() { super.onStart() - BottomSheetBehavior.from(binding.root.parent as View).peekHeight = roundedDpToPx(getDimension(R.dimen.navTabDialogPeekHeight)) + BottomSheetBehavior.from(binding.root.parent as View).peekHeight = DimenUtil.displayHeightPx } private fun updateState() { diff --git a/app/src/main/java/org/wikipedia/notifications/NotificationActivity.kt b/app/src/main/java/org/wikipedia/notifications/NotificationActivity.kt index a7d8327241b..94d20cd07df 100644 --- a/app/src/main/java/org/wikipedia/notifications/NotificationActivity.kt +++ b/app/src/main/java/org/wikipedia/notifications/NotificationActivity.kt @@ -71,7 +71,7 @@ class NotificationActivity : BaseActivity() { private val resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> if (result.resultCode == NotificationFilterActivity.ACTIVITY_RESULT_LANGUAGES_CHANGED) { - beginUpdateList() + viewModel.fetchAndSave(true) } else { viewModel.updateTabSelection(binding.notificationTabLayout.selectedTabPosition) } @@ -84,7 +84,7 @@ class NotificationActivity : BaseActivity() { setSupportActionBar(binding.notificationsToolbar) supportActionBar?.title = getString(R.string.notifications_activity_title) - binding.notificationsErrorView.retryClickListener = View.OnClickListener { beginUpdateList() } + binding.notificationsErrorView.retryClickListener = View.OnClickListener { viewModel.fetchAndSave() } binding.notificationsErrorView.backClickListener = View.OnClickListener { onBackPressed() } binding.notificationsRecyclerView.layoutManager = LinearLayoutManager(this) binding.notificationsRecyclerView.adapter = NotificationItemAdapter() @@ -104,9 +104,8 @@ class NotificationActivity : BaseActivity() { itemTouchHelper.attachToRecyclerView(binding.notificationsRecyclerView) binding.notificationsRefreshView.setOnRefreshListener { - binding.notificationsRefreshView.isRefreshing = false finishActionMode() - beginUpdateList() + viewModel.fetchAndSave(true) } binding.notificationTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener { @@ -123,8 +122,7 @@ class NotificationActivity : BaseActivity() { }) Prefs.notificationUnreadCount = 0 - - beginUpdateList() + setLoadingState() lifecycleScope.launch { repeatOnLifecycle(Lifecycle.State.CREATED) { @@ -182,7 +180,7 @@ class NotificationActivity : BaseActivity() { } } - private fun beginUpdateList() { + private fun setLoadingState() { binding.notificationsErrorView.visibility = View.GONE binding.notificationsRecyclerView.visibility = View.GONE binding.notificationsEmptyContainer.visibility = View.GONE @@ -190,10 +188,10 @@ class NotificationActivity : BaseActivity() { binding.notificationsProgressBar.visibility = View.VISIBLE binding.notificationTabLayout.visibility = View.GONE supportActionBar?.setTitle(R.string.notifications_activity_title) - viewModel.fetchAndSave() } private fun setSuccessState() { + binding.notificationsRefreshView.isRefreshing = false binding.notificationsProgressBar.visibility = View.GONE binding.notificationsErrorView.visibility = View.GONE binding.notificationsRecyclerView.visibility = View.VISIBLE @@ -202,6 +200,7 @@ class NotificationActivity : BaseActivity() { private fun setErrorState(throwable: Throwable) { L.e(throwable) + binding.notificationsRefreshView.isRefreshing = false binding.notificationsProgressBar.visibility = View.GONE binding.notificationsRecyclerView.visibility = View.GONE binding.notificationsEmptyContainer.visibility = View.GONE diff --git a/app/src/main/java/org/wikipedia/notifications/NotificationPollBroadcastReceiver.kt b/app/src/main/java/org/wikipedia/notifications/NotificationPollBroadcastReceiver.kt index 6476be0f3ce..a6736875698 100644 --- a/app/src/main/java/org/wikipedia/notifications/NotificationPollBroadcastReceiver.kt +++ b/app/src/main/java/org/wikipedia/notifications/NotificationPollBroadcastReceiver.kt @@ -5,18 +5,19 @@ import android.app.PendingIntent import android.content.BroadcastReceiver import android.content.Context import android.content.Intent -import android.os.Build import android.os.SystemClock import androidx.annotation.StringRes import androidx.core.app.PendingIntentCompat import androidx.core.app.RemoteInput -import io.reactivex.rxjava3.schedulers.Schedulers +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext import org.wikipedia.Constants import org.wikipedia.R import org.wikipedia.WikipediaApp import org.wikipedia.analytics.eventplatform.NotificationInteractionEvent import org.wikipedia.auth.AccountUtil import org.wikipedia.csrf.CsrfTokenClient +import org.wikipedia.database.AppDatabase import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.events.UnreadNotificationsEvent @@ -60,10 +61,10 @@ class NotificationPollBroadcastReceiver : BroadcastReceiver() { val remoteInput = RemoteInput.getResultsFromIntent(intent) val text = remoteInput?.getCharSequence(RESULT_KEY_DIRECT_REPLY) - if (intent.hasExtra(RESULT_EXTRA_WIKI) && intent.hasExtra(RESULT_EXTRA_TITLE) && !text.isNullOrEmpty()) { + if (intent.hasExtra(Constants.ARG_WIKISITE) && intent.hasExtra(Constants.ARG_TITLE) && !text.isNullOrEmpty()) { NotificationDirectReplyHelper.handleReply(context, - intent.getParcelableExtra(RESULT_EXTRA_WIKI)!!, - intent.getParcelableExtra(RESULT_EXTRA_TITLE)!!, + intent.getParcelableExtra(Constants.ARG_WIKISITE)!!, + intent.getParcelableExtra(Constants.ARG_TITLE)!!, text.toString(), intent.getStringExtra(RESULT_EXTRA_REPLY_TO).orEmpty(), intent.getIntExtra(RESULT_EXTRA_ID, 0)) @@ -77,14 +78,11 @@ class NotificationPollBroadcastReceiver : BroadcastReceiver() { const val ACTION_CANCEL = "action_notification_cancel" const val ACTION_DIRECT_REPLY = "action_direct_reply" const val RESULT_KEY_DIRECT_REPLY = "key_direct_reply" - const val RESULT_EXTRA_WIKI = "extra_wiki" - const val RESULT_EXTRA_TITLE = "extra_title" const val RESULT_EXTRA_REPLY_TO = "extra_reply_to" const val RESULT_EXTRA_ID = "extra_id" const val TYPE_MULTIPLE = "multiple" private const val TYPE_LOCAL = "local" - private const val MAX_LOCALLY_KNOWN_NOTIFICATIONS = 32 private const val FIRST_EDITOR_REACTIVATION_NOTIFICATION_SHOW_ON_DAY = 3 private const val SECOND_EDITOR_REACTIVATION_NOTIFICATION_SHOW_ON_DAY = 7 @@ -123,38 +121,26 @@ class NotificationPollBroadcastReceiver : BroadcastReceiver() { return PendingIntentCompat.getBroadcast(context, id.toInt(), intent, 0, false) } - fun onNotificationsComplete(context: Context, + fun onNotificationsComplete(context: Context, notifications: List, dbWikiSiteMap: Map, dbWikiNameMap: Map) { if (Prefs.isSuggestedEditsHighestPriorityEnabled) { return } - var locallyKnownModified = false - val knownNotifications = mutableListOf() - val notificationsToDisplay = mutableListOf() - val locallyKnownNotifications = Prefs.locallyKnownNotifications.toMutableList() - for (n in notifications) { - knownNotifications.add(n) - if (locallyKnownNotifications.contains(n.key())) { - continue - } - locallyKnownNotifications.add(n.key()) - if (locallyKnownNotifications.size > MAX_LOCALLY_KNOWN_NOTIFICATIONS) { - locallyKnownNotifications.removeAt(0) - } - notificationsToDisplay.add(n) - locallyKnownModified = true + + // The notifications that we need to display are those that don't exist in our db yet. + val notificationsToDisplay = notifications.filter { + AppDatabase.instance.notificationDao().getNotificationById(it.wiki, it.id) == null } + AppDatabase.instance.notificationDao().insertNotifications(notificationsToDisplay) + if (notificationsToDisplay.isNotEmpty()) { Prefs.notificationUnreadCount = notificationsToDisplay.size WikipediaApp.instance.bus.post(UnreadNotificationsEvent()) } - // Android 7.0 and above performs automatic grouping of multiple notifications, in case - // there are significantly more than one. But in the case of Android 6.0 and below, - // we show our own custom "grouped" notification. - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N && notificationsToDisplay.size > 2) { + if (notificationsToDisplay.size > 2) { // Record that there is an incoming notification to track/compare further actions on it. NotificationInteractionEvent.logIncoming(notificationsToDisplay[0], TYPE_MULTIPLE) NotificationPresenter.showMultipleUnread(context, notificationsToDisplay.size) @@ -167,32 +153,18 @@ class NotificationPollBroadcastReceiver : BroadcastReceiver() { dbWikiSiteMap.getValue(n.wiki).languageCode) } } - if (locallyKnownModified) { - Prefs.locallyKnownNotifications = locallyKnownNotifications - } - if (knownNotifications.size > MAX_LOCALLY_KNOWN_NOTIFICATIONS) { - markItemsAsRead(knownNotifications.subList(0, knownNotifications.size - MAX_LOCALLY_KNOWN_NOTIFICATIONS), dbWikiSiteMap) - } } - private fun markItemsAsRead(items: List, dbWikiSiteMap: Map) { - val notificationsPerWiki = items.groupBy { dbWikiSiteMap.getValue(it.wiki) } - for ((wiki, notifications) in notificationsPerWiki) { - markRead(wiki, notifications, false) + suspend fun markRead(wiki: WikiSite, notifications: List, unread: Boolean) { + withContext(Dispatchers.IO) { + val token = CsrfTokenClient.getToken(wiki).blockingSingle() + notifications.windowed(50, partialWindows = true).forEach { window -> + val idListStr = window.joinToString("|") + ServiceFactory.get(wiki).markRead(token, if (unread) null else idListStr, if (unread) idListStr else null) + } } } - fun markRead(wiki: WikiSite, notifications: List, unread: Boolean) { - val idListStr = notifications.joinToString("|") - CsrfTokenClient.getToken(wiki) - .subscribeOn(Schedulers.io()) - .flatMap { - ServiceFactory.get(wiki).markRead(it, if (unread) null else idListStr, if (unread) idListStr else null) - .subscribeOn(Schedulers.io()) - } - .subscribe({ }, { L.e(it) }) - } - private fun maybeShowLocalNotificationForEditorReactivation(context: Context) { if (Prefs.lastDescriptionEditTime == 0L || WikipediaApp.instance.isAnyActivityResumed) { return diff --git a/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.kt b/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.kt index 992417f5bb4..06bf3ec9b96 100644 --- a/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.kt +++ b/app/src/main/java/org/wikipedia/notifications/NotificationPresenter.kt @@ -149,8 +149,8 @@ object NotificationPresenter { .build() val resultIntent = Intent(context, NotificationPollBroadcastReceiver::class.java) .setAction(NotificationPollBroadcastReceiver.ACTION_DIRECT_REPLY) - .putExtra(NotificationPollBroadcastReceiver.RESULT_EXTRA_WIKI, title.wikiSite) - .putExtra(NotificationPollBroadcastReceiver.RESULT_EXTRA_TITLE, title) + .putExtra(Constants.ARG_WIKISITE, title.wikiSite) + .putExtra(Constants.ARG_TITLE, title) .putExtra(NotificationPollBroadcastReceiver.RESULT_EXTRA_REPLY_TO, replyTo) .putExtra(NotificationPollBroadcastReceiver.RESULT_EXTRA_ID, id) val resultPendingIntent = PendingIntentCompat.getBroadcast(context, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT, false) diff --git a/app/src/main/java/org/wikipedia/notifications/NotificationRepository.kt b/app/src/main/java/org/wikipedia/notifications/NotificationRepository.kt index ec44b0dc8b8..42a01725e5e 100644 --- a/app/src/main/java/org/wikipedia/notifications/NotificationRepository.kt +++ b/app/src/main/java/org/wikipedia/notifications/NotificationRepository.kt @@ -11,7 +11,7 @@ class NotificationRepository constructor(private val notificationDao: Notificati fun getAllNotifications() = notificationDao.getAllNotifications() - suspend fun insertNotifications(notifications: List) { + fun insertNotifications(notifications: List) { notificationDao.insertNotifications(notifications) } diff --git a/app/src/main/java/org/wikipedia/notifications/NotificationViewModel.kt b/app/src/main/java/org/wikipedia/notifications/NotificationViewModel.kt index d2672cfd7ca..f0ad655b41d 100644 --- a/app/src/main/java/org/wikipedia/notifications/NotificationViewModel.kt +++ b/app/src/main/java/org/wikipedia/notifications/NotificationViewModel.kt @@ -38,21 +38,20 @@ class NotificationViewModel : ViewModel() { viewModelScope.launch(handler) { dbNameMap = notificationRepository.fetchUnreadWikiDbNames() } + fetchAndSave() } - private suspend fun collectionNotifications() = notificationRepository.getAllNotifications() - .collect { list -> - _uiState.value = UiState.Success(processList(list), !currentContinueStr.isNullOrEmpty()) - } + private fun filterAndPostNotifications() { + _uiState.value = UiState.Success(processList(notificationRepository.getAllNotifications()), + !currentContinueStr.isNullOrEmpty()) + } private fun processList(list: List): List { - - // Reduce duplicate notifications if (currentContinueStr.isNullOrEmpty()) { notificationList.clear() } for (n in list) { - if (notificationList.none { it.id == n.id }) { + if (notificationList.none { it.id == n.id && it.wiki == n.wiki }) { notificationList.add(n) } } @@ -125,26 +124,31 @@ class NotificationViewModel : ViewModel() { NotificationFilterActivity.allTypesIdList().count { excludedTypeCodes.contains(it) } } - fun fetchAndSave() { + fun fetchAndSave(refresh: Boolean = false) { + if (refresh) { + currentContinueStr = null + notificationList.clear() + } + viewModelScope.launch(handler) { if (WikipediaApp.instance.isOnline) { currentContinueStr = notificationRepository.fetchAndSave(delimitedWikiList(), "read|!read", currentContinueStr) } - collectionNotifications() + filterAndPostNotifications() } } fun updateSearchQuery(query: String?) { currentSearchQuery = query viewModelScope.launch(handler) { - collectionNotifications() + filterAndPostNotifications() } } fun updateTabSelection(position: Int) { selectedFilterTab = position viewModelScope.launch(handler) { - collectionNotifications() + filterAndPostNotifications() } } @@ -163,32 +167,34 @@ class NotificationViewModel : ViewModel() { } } } - notificationsPerWiki.getOrPut(wiki) { ArrayList() }.add(notification) + notificationsPerWiki.getOrPut(wiki) { mutableListOf() }.add(notification) if (!markUnread) { NotificationInteractionEvent.logMarkRead(notification, selectionKey) } } - for ((wiki, notifications) in notificationsPerWiki) { - NotificationPollBroadcastReceiver.markRead(wiki, notifications, markUnread) + viewModelScope.launch(handler) { + for ((wiki, notifications) in notificationsPerWiki) { + NotificationPollBroadcastReceiver.markRead(wiki, notifications, markUnread) + } } // Mark items in read state and save into database - notificationList - .filter { n -> items.map { container -> container.notification?.id } - .firstOrNull { it == n.id } != null } - .map { - it.read = if (markUnread) null else Date().toString() - viewModelScope.launch(handler) { + viewModelScope.launch(handler) { + notificationList + .filter { n -> items.map { container -> container.notification?.id } + .firstOrNull { it == n.id } != null } + .map { + it.read = if (markUnread) null else Date().toString() notificationRepository.updateNotification(it) - collectionNotifications() } - } + filterAndPostNotifications() + } } open class UiState { - data class Success(val notifications: List, - val fromContinuation: Boolean) : UiState() - data class Error(val throwable: Throwable) : UiState() + class Success(val notifications: List, + val fromContinuation: Boolean) : UiState() + class Error(val throwable: Throwable) : UiState() } } diff --git a/app/src/main/java/org/wikipedia/notifications/PollNotificationWorker.kt b/app/src/main/java/org/wikipedia/notifications/PollNotificationWorker.kt index b8ee813e0a5..3d17899c9bc 100644 --- a/app/src/main/java/org/wikipedia/notifications/PollNotificationWorker.kt +++ b/app/src/main/java/org/wikipedia/notifications/PollNotificationWorker.kt @@ -5,7 +5,6 @@ import androidx.work.* import io.reactivex.rxjava3.schedulers.Schedulers import org.wikipedia.WikipediaApp import org.wikipedia.csrf.CsrfTokenClient -import org.wikipedia.database.AppDatabase import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.dataclient.mwapi.MwException @@ -47,11 +46,9 @@ class PollNotificationWorker( } } - val notificationRepository = NotificationRepository(AppDatabase.instance.notificationDao()) ServiceFactory.get(WikipediaApp.instance.wikiSite) .getAllNotifications(if (foreignWikis.isEmpty()) "*" else foreignWikis.joinToString("|"), "!read", null) .query?.notifications?.list?.let { - notificationRepository.insertNotifications(it) NotificationPollBroadcastReceiver.onNotificationsComplete(appContext, it, dbWikiSiteMap, dbWikiNameMap) } } diff --git a/app/src/main/java/org/wikipedia/notifications/db/NotificationDao.kt b/app/src/main/java/org/wikipedia/notifications/db/NotificationDao.kt index 44adc128587..18bf76838f7 100644 --- a/app/src/main/java/org/wikipedia/notifications/db/NotificationDao.kt +++ b/app/src/main/java/org/wikipedia/notifications/db/NotificationDao.kt @@ -6,7 +6,7 @@ import kotlinx.coroutines.flow.Flow @Dao interface NotificationDao { @Insert(onConflict = OnConflictStrategy.REPLACE) - suspend fun insertNotifications(notifications: List) + fun insertNotifications(notifications: List) @Update(onConflict = OnConflictStrategy.REPLACE) suspend fun updateNotification(notification: Notification) @@ -15,8 +15,11 @@ interface NotificationDao { suspend fun deleteNotification(notification: Notification) @Query("SELECT * FROM Notification") - fun getAllNotifications(): Flow> + fun getAllNotifications(): List @Query("SELECT * FROM Notification WHERE `wiki` IN (:wiki)") fun getNotificationsByWiki(wiki: List): Flow> + + @Query("SELECT * FROM Notification WHERE `wiki` IN (:wiki) AND `id` IN (:id)") + fun getNotificationById(wiki: String, id: Long): Notification? } diff --git a/app/src/main/java/org/wikipedia/page/FindInWebPageActionProvider.kt b/app/src/main/java/org/wikipedia/page/FindInWebPageActionProvider.kt index 9e36ae39915..38a51079051 100644 --- a/app/src/main/java/org/wikipedia/page/FindInWebPageActionProvider.kt +++ b/app/src/main/java/org/wikipedia/page/FindInWebPageActionProvider.kt @@ -1,6 +1,7 @@ package org.wikipedia.page import org.wikipedia.analytics.eventplatform.ArticleFindInPageInteractionEvent +import org.wikipedia.analytics.metricsplatform.ArticleFindInPageInteraction import org.wikipedia.views.FindInPageActionProvider import org.wikipedia.views.FindInPageActionProvider.FindInPageListener @@ -9,6 +10,7 @@ class FindInWebPageActionProvider(private val fragment: PageFragment, FindInPageActionProvider(fragment.requireContext()), FindInPageListener { private var searchQuery: String? = null + private val metricsPlatformArticleFindInPageInteraction = ArticleFindInPageInteraction(fragment) init { listener = this @@ -27,12 +29,14 @@ class FindInWebPageActionProvider(private val fragment: PageFragment, override fun onFindNextClicked() { articleFindInPageInteractionEvent.addFindNext() + metricsPlatformArticleFindInPageInteraction.addFindNext() fragment.webView.findNext(true) } override fun onFindNextLongClicked() { // Go to the last match by going to the first one and then going one back. articleFindInPageInteractionEvent.addFindPrev() + metricsPlatformArticleFindInPageInteraction.addFindPrev() fragment.webView.clearMatches() searchQuery?.let { fragment.webView.findAllAsync(it) @@ -41,12 +45,14 @@ class FindInWebPageActionProvider(private val fragment: PageFragment, override fun onFindPrevClicked() { articleFindInPageInteractionEvent.addFindPrev() + metricsPlatformArticleFindInPageInteraction.addFindPrev() fragment.webView.findNext(false) } override fun onFindPrevLongClicked() { // Go to the first match by "restarting" the search. articleFindInPageInteractionEvent.addFindNext() + metricsPlatformArticleFindInPageInteraction.addFindNext() fragment.webView.clearMatches() searchQuery?.let { fragment.webView.findAllAsync(it) @@ -59,6 +65,7 @@ class FindInWebPageActionProvider(private val fragment: PageFragment, override fun onSearchTextChanged(text: String?) { articleFindInPageInteractionEvent.findText = text.orEmpty() + metricsPlatformArticleFindInPageInteraction.findText = text.orEmpty() if (!text.isNullOrEmpty()) { searchQuery = text findInPage(text) diff --git a/app/src/main/java/org/wikipedia/page/LinkHandler.kt b/app/src/main/java/org/wikipedia/page/LinkHandler.kt index 86f60595507..66f1b61aff6 100644 --- a/app/src/main/java/org/wikipedia/page/LinkHandler.kt +++ b/app/src/main/java/org/wikipedia/page/LinkHandler.kt @@ -85,7 +85,12 @@ abstract class LinkHandler(protected val context: Context) : JSEventListener, Ur onPageLinkClicked(uri.fragment!!, linkText) } !uri.getQueryParameter("title").isNullOrEmpty() && !uri.getQueryParameter("diff").isNullOrEmpty() && supportedAuthority -> { - onDiffLinkClicked(PageTitle(uri.getQueryParameter("title"), site), uri.getQueryParameter("diff")!!.toLong()) + val diffAttr = uri.getQueryParameter("diff").orEmpty() + var diffRev = diffAttr.toLongOrNull() ?: -1 + if (diffAttr == "next" || diffAttr == "prev") { + diffRev = uri.getQueryParameter("oldid")?.toLongOrNull() ?: -1 + } + onDiffLinkClicked(PageTitle(uri.getQueryParameter("title"), site), diffRev) } else -> { onExternalLinkClicked(uri) diff --git a/app/src/main/java/org/wikipedia/page/PageActivity.kt b/app/src/main/java/org/wikipedia/page/PageActivity.kt index 92d91f59359..b4aeec92f60 100644 --- a/app/src/main/java/org/wikipedia/page/PageActivity.kt +++ b/app/src/main/java/org/wikipedia/page/PageActivity.kt @@ -23,6 +23,7 @@ import org.wikipedia.WikipediaApp import org.wikipedia.activity.BaseActivity import org.wikipedia.analytics.eventplatform.ArticleLinkPreviewInteractionEvent import org.wikipedia.analytics.eventplatform.BreadCrumbLogEvent +import org.wikipedia.analytics.metricsplatform.ArticleLinkPreviewInteraction import org.wikipedia.auth.AccountUtil import org.wikipedia.commons.FilePageActivity import org.wikipedia.databinding.ActivityPageBinding @@ -177,11 +178,13 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca supportActionBar?.setDisplayHomeAsUpEnabled(true) binding.pageToolbarButtonSearch.setOnClickListener { pageFragment.articleInteractionEvent?.logSearchWikipediaClick() + pageFragment.metricsPlatformArticleEventToolbarInteraction?.logSearchWikipediaClick() startActivity(SearchActivity.newIntent(this@PageActivity, InvokeSource.TOOLBAR, null)) } binding.pageToolbarButtonTabs.updateTabCount(false) binding.pageToolbarButtonTabs.setOnClickListener { pageFragment.articleInteractionEvent?.logTabsClick() + pageFragment.metricsPlatformArticleEventToolbarInteraction?.logTabsClick() TabActivity.captureFirstTabBitmap(pageFragment.containerView, pageFragment.title?.prefixedText.orEmpty()) requestBrowseTabLauncher.launch(TabActivity.newIntentFromPageActivity(this)) } @@ -190,12 +193,14 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca binding.pageToolbarButtonShowOverflowMenu.setOnClickListener { pageFragment.showOverflowMenu(it) pageFragment.articleInteractionEvent?.logMoreClick() + pageFragment.metricsPlatformArticleEventToolbarInteraction?.logMoreClick() Prefs.showOneTimeCustomizeToolbarTooltip = false } binding.pageToolbarButtonNotifications.isVisible = AccountUtil.isLoggedIn binding.pageToolbarButtonNotifications.setOnClickListener { pageFragment.articleInteractionEvent?.logNotificationClick() + pageFragment.metricsPlatformArticleEventToolbarInteraction?.logNotificationClick() if (AccountUtil.isLoggedIn) { startActivity(NotificationActivity.newIntent(this@PageActivity)) } else if (AnonymousNotificationHelper.isWithinAnonNotificationTime() && !Prefs.lastAnonNotificationLang.isNullOrEmpty()) { @@ -337,6 +342,7 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca override fun onNavMenuSwipeRequest(gravity: Int) { if (!isCabOpen && gravity == Gravity.END) { pageFragment.articleInteractionEvent?.logTocSwipe() + pageFragment.metricsPlatformArticleEventToolbarInteraction?.logTocSwipe() pageFragment.sidePanelHandler.showToC() } } @@ -420,7 +426,7 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca val langIntent = Intent() langIntent.setClass(this, LangLinksActivity::class.java) langIntent.action = LangLinksActivity.ACTION_LANGLINKS_FOR_TITLE - langIntent.putExtra(LangLinksActivity.EXTRA_PAGETITLE, title) + langIntent.putExtra(Constants.ARG_TITLE, title) requestHandleIntentLauncher.launch(langIntent) } @@ -498,7 +504,7 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca } } else if ((ACTION_LOAD_IN_NEW_TAB == intent.action || ACTION_LOAD_IN_CURRENT_TAB == intent.action || ACTION_LOAD_IN_CURRENT_TAB_SQUASH == intent.action) && intent.hasExtra(EXTRA_HISTORYENTRY)) { - val title = intent.getParcelableExtra(EXTRA_PAGETITLE) + val title = intent.getParcelableExtra(Constants.ARG_TITLE) val historyEntry = intent.getParcelableExtra(EXTRA_HISTORYENTRY) when (intent.action) { ACTION_LOAD_IN_NEW_TAB -> loadPage(title, historyEntry, TabPosition.NEW_TAB_FOREGROUND) @@ -509,7 +515,7 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca showDescriptionEditRevertDialog(intent.getStringExtra(Constants.INTENT_EXTRA_REVERT_QNUMBER)!!) } } else if (ACTION_LOAD_FROM_EXISTING_TAB == intent.action && intent.hasExtra(EXTRA_HISTORYENTRY)) { - val title = intent.getParcelableExtra(EXTRA_PAGETITLE) + val title = intent.getParcelableExtra(Constants.ARG_TITLE) val historyEntry = intent.getParcelableExtra(EXTRA_HISTORYENTRY) loadPage(title, historyEntry, TabPosition.EXISTING_TAB) } else if (ACTION_RESUME_READING == intent.action || intent.hasExtra(Constants.INTENT_APP_SHORTCUT_CONTINUE_READING)) { @@ -520,7 +526,7 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca val historyEntry = HistoryEntry(title, HistoryEntry.SOURCE_SEARCH) loadPage(title, historyEntry, TabPosition.EXISTING_TAB) } else if (intent.hasExtra(Constants.INTENT_FEATURED_ARTICLE_FROM_WIDGET)) { - val title = intent.getParcelableExtra(EXTRA_PAGETITLE) + val title = intent.getParcelableExtra(Constants.ARG_TITLE) title?.let { val historyEntry = HistoryEntry(it, HistoryEntry.SOURCE_WIDGET) loadPage(it, historyEntry, TabPosition.EXISTING_TAB) @@ -553,6 +559,8 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca val articleLinkPreviewInteractionEvent = ArticleLinkPreviewInteractionEvent(pageTitle.wikiSite.dbName(), pageFragment.page?.pageProperties?.pageId ?: 0, entry.source) articleLinkPreviewInteractionEvent.logNavigate() + + ArticleLinkPreviewInteraction(pageFragment, entry.source).logNavigate() } app.putCrashReportProperty("api", pageTitle.wikiSite.authority()) app.putCrashReportProperty("title", pageTitle.toString()) @@ -809,7 +817,6 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca const val ACTION_LOAD_FROM_EXISTING_TAB = "org.wikipedia.load_from_existing_tab" const val ACTION_CREATE_NEW_TAB = "org.wikipedia.create_new_tab" const val ACTION_RESUME_READING = "org.wikipedia.resume_reading" - const val EXTRA_PAGETITLE = "org.wikipedia.pagetitle" const val EXTRA_HISTORYENTRY = "org.wikipedia.history.historyentry" fun newIntent(context: Context): Intent { @@ -824,21 +831,21 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Ca return Intent(ACTION_LOAD_IN_NEW_TAB) .setClass(context, PageActivity::class.java) .putExtra(EXTRA_HISTORYENTRY, entry) - .putExtra(EXTRA_PAGETITLE, title) + .putExtra(Constants.ARG_TITLE, title) } fun newIntentForCurrentTab(context: Context, entry: HistoryEntry, title: PageTitle, squashBackstack: Boolean = true): Intent { return Intent(if (squashBackstack) ACTION_LOAD_IN_CURRENT_TAB_SQUASH else ACTION_LOAD_IN_CURRENT_TAB) .setClass(context, PageActivity::class.java) .putExtra(EXTRA_HISTORYENTRY, entry) - .putExtra(EXTRA_PAGETITLE, title) + .putExtra(Constants.ARG_TITLE, title) } fun newIntentForExistingTab(context: Context, entry: HistoryEntry, title: PageTitle): Intent { return Intent(ACTION_LOAD_FROM_EXISTING_TAB) .setClass(context, PageActivity::class.java) .putExtra(EXTRA_HISTORYENTRY, entry) - .putExtra(EXTRA_PAGETITLE, title) + .putExtra(Constants.ARG_TITLE, title) } } } diff --git a/app/src/main/java/org/wikipedia/page/PageCacher.kt b/app/src/main/java/org/wikipedia/page/PageCacher.kt deleted file mode 100644 index 235a4748302..00000000000 --- a/app/src/main/java/org/wikipedia/page/PageCacher.kt +++ /dev/null @@ -1,22 +0,0 @@ -package org.wikipedia.page - -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers -import io.reactivex.rxjava3.schedulers.Schedulers -import org.wikipedia.WikipediaApp -import org.wikipedia.dataclient.ServiceFactory -import org.wikipedia.util.log.L - -object PageCacher { - fun loadIntoCache(title: PageTitle) { - L.d("Loading page into cache: " + title.prefixedText) - ServiceFactory.getRest(title.wikiSite) - .getSummaryResponse(title.prefixedText, null, null, null, null, null) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ summaryRsp -> - WikipediaApp.instance.tabList.asReversed().find { it.backStackPositionTitle == title }?.backStackPositionTitle?.apply { - thumbUrl = summaryRsp.body()!!.thumbnailUrl - } - }) { caught -> L.e(caught) } - } -} diff --git a/app/src/main/java/org/wikipedia/page/PageFragment.kt b/app/src/main/java/org/wikipedia/page/PageFragment.kt index a9aa1af0f1a..e0f3e4efba6 100644 --- a/app/src/main/java/org/wikipedia/page/PageFragment.kt +++ b/app/src/main/java/org/wikipedia/page/PageFragment.kt @@ -23,6 +23,7 @@ import androidx.lifecycle.lifecycleScope import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.snackbar.Snackbar import com.google.android.material.textview.MaterialTextView import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Completable @@ -41,6 +42,8 @@ import org.wikipedia.analytics.eventplatform.ArticleFindInPageInteractionEvent import org.wikipedia.analytics.eventplatform.ArticleInteractionEvent import org.wikipedia.analytics.eventplatform.EventPlatformClient import org.wikipedia.analytics.eventplatform.WatchlistAnalyticsHelper +import org.wikipedia.analytics.metricsplatform.ArticleFindInPageInteraction +import org.wikipedia.analytics.metricsplatform.ArticleToolbarInteraction import org.wikipedia.auth.AccountUtil import org.wikipedia.bridge.CommunicationBridge import org.wikipedia.bridge.JavaScriptActionHandler @@ -69,9 +72,9 @@ import org.wikipedia.main.MainActivity import org.wikipedia.media.AvPlayer import org.wikipedia.navtab.NavTab import org.wikipedia.notifications.PollNotificationWorker -import org.wikipedia.page.PageCacher.loadIntoCache import org.wikipedia.page.action.PageActionItem import org.wikipedia.page.edithistory.EditHistoryListActivity +import org.wikipedia.page.issues.PageIssuesDialog import org.wikipedia.page.leadimages.LeadImagesHandler import org.wikipedia.page.references.PageReferences import org.wikipedia.page.references.ReferenceDialog @@ -136,6 +139,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi private lateinit var pageFragmentLoadState: PageFragmentLoadState private lateinit var bottomBarHideHandler: ViewHideHandler internal var articleInteractionEvent: ArticleInteractionEvent? = null + internal var metricsPlatformArticleEventToolbarInteraction = ArticleToolbarInteraction(this) private var pageRefreshed = false private var errorState = false private var watchlistExpiryChanged = false @@ -262,6 +266,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi val time = if (app.tabList.size >= 1 && !pageFragmentLoadState.backStackEmpty()) System.currentTimeMillis() else 0 Prefs.pageLastShown = time articleInteractionEvent?.pause() + metricsPlatformArticleEventToolbarInteraction.pause() } override fun onResume() { @@ -273,6 +278,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi binding.pageActionsTabLayout.update() updateQuickActionsAndMenuOptions() articleInteractionEvent?.resume() + metricsPlatformArticleEventToolbarInteraction.resume() } override fun onConfigurationChanged(newConfig: Configuration) { @@ -286,6 +292,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi override fun onBackPressed(): Boolean { articleInteractionEvent?.logBackClick() + metricsPlatformArticleEventToolbarInteraction.logBackClick() if (sidePanelHandler.isVisible) { sidePanelHandler.hide() return true @@ -504,7 +511,15 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi // add the requested page to its backstack tab.backStack.add(PageBackStackItem(title, entry)) if (!isForeground) { - loadIntoCache(title) + lifecycleScope.launch(CoroutineExceptionHandler { _, t -> L.e(t) }) { + ServiceFactory.get(title.wikiSite).getInfoByPageIdsOrTitles(null, title.prefixedText) + .query?.firstPage()?.let { page -> + WikipediaApp.instance.tabList.find { it.backStackPositionTitle == title }?.backStackPositionTitle?.apply { + thumbUrl = page.thumbUrl() + description = page.description + } + } + } } requireActivity().invalidateOptionsMenu() } else { @@ -715,6 +730,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi } bridge.onPcsReady() articleInteractionEvent?.logLoaded() + metricsPlatformArticleEventToolbarInteraction.logLoaded() callback()?.onPageLoadComplete() // do we have a URL fragment to scroll to? @@ -795,12 +811,14 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi when (payload["itemType"]?.jsonPrimitive?.content) { "talkPage" -> model.title?.run { articleInteractionEvent?.logTalkPageArticleClick() + metricsPlatformArticleEventToolbarInteraction.logTalkPageArticleClick() startTalkTopicsActivity(this, true) } "languages" -> startLangLinksActivity() "lastEdited" -> { model.title?.run { articleInteractionEvent?.logEditHistoryArticleClick() + metricsPlatformArticleEventToolbarInteraction.logEditHistoryArticleClick() startActivity(EditHistoryListActivity.newIntent(requireContext(), this)) } } @@ -811,6 +829,20 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi } } } + "pageIssues" -> { + val array = payload["payload"] + if (array != null && array.jsonArray.isNotEmpty() && model.title != null) { + val issues = array.jsonArray.mapNotNull { + it.jsonObject["html"]?.jsonPrimitive?.content + } + PageIssuesDialog(requireActivity(), model.title!!.wikiSite, issues) { url, title, linkText -> + linkHandler.onUrlClick(url, title, linkText) + } + .setTitle(R.string.page_issues_title) + .setPositiveButton(android.R.string.ok, null) + .show() + } + } "disambiguation" -> { // TODO // messagePayload contains an array of URLs called "payload". @@ -820,7 +852,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi } bridge.addListener("read_more_titles_retrieved") { _, _ -> } bridge.addListener("view_license") { _, _ -> - UriUtil.visitInExternalBrowser(requireContext(), Uri.parse(getString(R.string.cc_by_sa_3_url))) + UriUtil.visitInExternalBrowser(requireContext(), Uri.parse(getString(R.string.cc_by_sa_4_url))) } bridge.addListener("view_in_browser") { _, _ -> model.title?.let { @@ -843,7 +875,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi binding.pageRefreshContainer.setProgressViewOffset(false, -swipeOffset, swipeOffset) } - fun onPageMetadataLoaded() { + fun onPageMetadataLoaded(redirectedFrom: String? = null) { updateQuickActionsAndMenuOptions() if (model.page == null) { return @@ -855,6 +887,9 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi binding.pageRefreshContainer.isEnabled = true binding.pageRefreshContainer.isRefreshing = false requireActivity().invalidateOptionsMenu() + redirectedFrom?.let { + FeedbackUtil.showMessage(requireActivity(), getString(R.string.redirected_from_snackbar, it), Snackbar.LENGTH_SHORT) + } model.readingListPage?.let { page -> model.title?.let { title -> disposables.add(Completable.fromAction { @@ -1025,6 +1060,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi return@evaluate } val articleFindInPageInteractionEvent = ArticleFindInPageInteractionEvent(model.page?.pageProperties?.pageId ?: -1) + val metricsPlatformArticleEventFindInPageInteraction = ArticleFindInPageInteraction(this) val findInPageActionProvider = FindInWebPageActionProvider(this, articleFindInPageInteractionEvent) startSupportActionMode(object : ActionMode.Callback { override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean { @@ -1050,6 +1086,8 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi } articleFindInPageInteractionEvent.pageHeight = webView.contentHeight articleFindInPageInteractionEvent.logDone() + metricsPlatformArticleEventFindInPageInteraction.pageHeight = webView.contentHeight + metricsPlatformArticleEventFindInPageInteraction.logDone() webView.clearMatches() callback()?.onPageHideSoftKeyboard() callback()?.onPageSetToolbarElevationEnabled(true) @@ -1159,20 +1197,19 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi fun addToReadingList(title: PageTitle, source: InvokeSource, addToDefault: Boolean) { if (addToDefault) { - var finalPageTitle = title - // Make sure handle redirected title before saving into database - disposables.add(ServiceFactory.getRest(title.wikiSite).getSummary(null, title.prefixedText) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .doAfterTerminate { + // If the title is a redirect, resolve it before saving to the reading list. + lifecycleScope.launch(CoroutineExceptionHandler { _, t -> L.e(t) }) { + var finalPageTitle = title + try { + ServiceFactory.get(title.wikiSite).getInfoByPageIdsOrTitles(null, title.prefixedText) + .query?.firstPage()?.let { + finalPageTitle = PageTitle(it.title, title.wikiSite, it.thumbUrl(), it.description, it.displayTitle(title.wikiSite.languageCode), null) + } + } finally { ReadingListBehaviorsUtil.addToDefaultList(requireActivity(), finalPageTitle, source) { readingListId -> moveToReadingList(readingListId, finalPageTitle, source, false) } } - .subscribe({ - finalPageTitle = it.getPageTitle(title.wikiSite) - }, { - L.e(it) - })) + } } else { callback()?.onPageAddToReadingList(title, source) } @@ -1339,20 +1376,24 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi } } articleInteractionEvent?.logSaveClick() + metricsPlatformArticleEventToolbarInteraction.logSaveClick() } override fun onLanguageSelected() { startLangLinksActivity() articleInteractionEvent?.logLanguageClick() + metricsPlatformArticleEventToolbarInteraction.logLanguageClick() } override fun onFindInArticleSelected() { showFindInPage() articleInteractionEvent?.logFindInArticleClick() + metricsPlatformArticleEventToolbarInteraction.logFindInArticleClick() } override fun onThemeSelected() { articleInteractionEvent?.logThemeClick() + metricsPlatformArticleEventToolbarInteraction.logThemeClick() // If we're looking at the top of the article, then scroll down a bit so that at least // some of the text is shown. @@ -1373,20 +1414,24 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi override fun onContentsSelected() { sidePanelHandler.showToC() articleInteractionEvent?.logContentsClick() + metricsPlatformArticleEventToolbarInteraction.logContentsClick() } override fun onShareSelected() { sharePageLink() articleInteractionEvent?.logShareClick() + metricsPlatformArticleEventToolbarInteraction.logShareClick() } override fun onAddToWatchlistSelected() { if (model.isWatched) { WatchlistAnalyticsHelper.logRemovedFromWatchlist(model.title, requireContext()) articleInteractionEvent?.logUnWatchClick() + metricsPlatformArticleEventToolbarInteraction.logUnWatchClick() } else { WatchlistAnalyticsHelper.logAddedToWatchlist(model.title, requireContext()) articleInteractionEvent?.logWatchClick() + metricsPlatformArticleEventToolbarInteraction.logWatchClick() } updateWatchlist(WatchlistExpiry.NEVER, model.isWatched) } @@ -1396,6 +1441,7 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi startTalkTopicsActivity(it, true) } articleInteractionEvent?.logTalkPageClick() + metricsPlatformArticleEventToolbarInteraction.logTalkPageClick() } override fun onViewEditHistorySelected() { @@ -1403,16 +1449,19 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi startActivity(EditHistoryListActivity.newIntent(requireContext(), this)) } articleInteractionEvent?.logEditHistoryClick() + metricsPlatformArticleEventToolbarInteraction.logEditHistoryClick() } override fun onNewTabSelected() { startActivity(PageActivity.newIntentForNewTab(requireContext())) articleInteractionEvent?.logNewTabClick() + metricsPlatformArticleEventToolbarInteraction.logNewTabClick() } override fun onExploreSelected() { goToMainTab() articleInteractionEvent?.logExploreClick() + metricsPlatformArticleEventToolbarInteraction.logExploreClick() } override fun onCategoriesSelected() { @@ -1420,16 +1469,19 @@ class PageFragment : Fragment(), BackPressedHandler, CommunicationBridge.Communi ExclusiveBottomSheetPresenter.show(childFragmentManager, CategoryDialog.newInstance(it)) } articleInteractionEvent?.logCategoriesClick() + metricsPlatformArticleEventToolbarInteraction.logCategoriesClick() } override fun onEditArticleSelected() { editHandler.startEditingArticle() articleInteractionEvent?.logEditArticleClick() + metricsPlatformArticleEventToolbarInteraction.logEditArticleClick() } override fun forwardClick() { goForward() articleInteractionEvent?.logForwardClick() + metricsPlatformArticleEventToolbarInteraction.logForwardClick() } } diff --git a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.kt b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.kt index 24a8a5f7d0b..5ae28f169f7 100644 --- a/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.kt +++ b/app/src/main/java/org/wikipedia/page/PageFragmentLoadState.kt @@ -176,6 +176,7 @@ class PageFragmentLoadState(private var model: PageViewModel, if (pageSummaryResponse.body() == null) { throw RuntimeException("Summary response was invalid.") } + val redirectedFrom = if (pageSummaryResponse.raw().priorResponse?.isRedirect == true) model.title?.displayText else null createPageModel(pageSummaryResponse, isWatched, hasWatchlistExpiry) if (OfflineCacheInterceptor.SAVE_HEADER_SAVE == pageSummaryResponse.headers()[OfflineCacheInterceptor.SAVE_HEADER]) { showPageOfflineMessage(pageSummaryResponse.headers().getInstant("date")) @@ -183,7 +184,7 @@ class PageFragmentLoadState(private var model: PageViewModel, if (delayLoadHtml) { bridge.resetHtml(title) } - fragment.onPageMetadataLoaded() + fragment.onPageMetadataLoaded(redirectedFrom) if (AnonymousNotificationHelper.shouldCheckAnonNotifications(watchedResponse)) { checkAnonNotifications(title) diff --git a/app/src/main/java/org/wikipedia/page/SidePanelHandler.kt b/app/src/main/java/org/wikipedia/page/SidePanelHandler.kt index f4baefae584..87674034fcd 100644 --- a/app/src/main/java/org/wikipedia/page/SidePanelHandler.kt +++ b/app/src/main/java/org/wikipedia/page/SidePanelHandler.kt @@ -20,6 +20,7 @@ import org.json.JSONException import org.json.JSONObject import org.wikipedia.R import org.wikipedia.analytics.eventplatform.ArticleTocInteractionEvent +import org.wikipedia.analytics.metricsplatform.ArticleTocInteraction import org.wikipedia.bridge.CommunicationBridge import org.wikipedia.bridge.JavaScriptActionHandler import org.wikipedia.util.DimenUtil @@ -42,6 +43,7 @@ class SidePanelHandler internal constructor(private val fragment: PageFragment, private var rtl = false private var currentItemSelected = 0 private var articleTocInteractionEvent: ArticleTocInteractionEvent? = null + private var metricsPlatformArticleEventTocInteraction: ArticleTocInteraction? = null private val sectionOffsetsCallback: ValueCallback = ValueCallback { value -> if (!fragment.isAdded) { @@ -102,6 +104,9 @@ class SidePanelHandler internal constructor(private val fragment: PageFragment, log() articleTocInteractionEvent = ArticleTocInteractionEvent(page.pageProperties.pageId, page.title.wikiSite.dbName(), tocAdapter.count) articleTocInteractionEvent?.logClick() + + metricsPlatformArticleEventTocInteraction = ArticleTocInteraction(fragment, tocAdapter.count) + metricsPlatformArticleEventTocInteraction?.logClick() } private fun scrollToSection(section: Section?) { @@ -118,6 +123,7 @@ class SidePanelHandler internal constructor(private val fragment: PageFragment, currentItemSelected = -1 onScrollerMoved(0f, false) articleTocInteractionEvent?.scrollStart() + metricsPlatformArticleEventTocInteraction?.scrollStart() } fun showToC() { @@ -128,10 +134,12 @@ class SidePanelHandler internal constructor(private val fragment: PageFragment, fun hide() { binding.navigationDrawer.closeDrawers() articleTocInteractionEvent?.scrollStop() + metricsPlatformArticleEventTocInteraction?.scrollStop() } fun log() { articleTocInteractionEvent?.logEvent() + metricsPlatformArticleEventTocInteraction?.logEvent() } fun setEnabled(enabled: Boolean) { diff --git a/app/src/main/java/org/wikipedia/page/edithistory/EditHistoryListActivity.kt b/app/src/main/java/org/wikipedia/page/edithistory/EditHistoryListActivity.kt index d8d5e9e6f34..0f543b9ee8c 100644 --- a/app/src/main/java/org/wikipedia/page/edithistory/EditHistoryListActivity.kt +++ b/app/src/main/java/org/wikipedia/page/edithistory/EditHistoryListActivity.kt @@ -546,11 +546,10 @@ class EditHistoryListActivity : BaseActivity() { private const val VIEW_TYPE_SEPARATOR = 0 private const val VIEW_TYPE_ITEM = 1 - const val INTENT_EXTRA_PAGE_TITLE = "pageTitle" fun newIntent(context: Context, pageTitle: PageTitle): Intent { return Intent(context, EditHistoryListActivity::class.java) - .putExtra(INTENT_EXTRA_PAGE_TITLE, pageTitle) + .putExtra(Constants.ARG_TITLE, pageTitle) } } } diff --git a/app/src/main/java/org/wikipedia/page/edithistory/EditHistoryListViewModel.kt b/app/src/main/java/org/wikipedia/page/edithistory/EditHistoryListViewModel.kt index e7200b35061..f0b28640eac 100644 --- a/app/src/main/java/org/wikipedia/page/edithistory/EditHistoryListViewModel.kt +++ b/app/src/main/java/org/wikipedia/page/edithistory/EditHistoryListViewModel.kt @@ -8,6 +8,7 @@ import androidx.lifecycle.viewModelScope import androidx.paging.* import kotlinx.coroutines.* import kotlinx.coroutines.flow.map +import org.wikipedia.Constants import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.dataclient.mwapi.MwQueryPage @@ -26,7 +27,7 @@ class EditHistoryListViewModel(bundle: Bundle) : ViewModel() { val editHistoryStatsData = MutableLiveData>() - var pageTitle: PageTitle = bundle.getParcelable(EditHistoryListActivity.INTENT_EXTRA_PAGE_TITLE)!! + var pageTitle: PageTitle = bundle.getParcelable(Constants.ARG_TITLE)!! var pageId = -1 private set var comparing = false diff --git a/app/src/main/java/org/wikipedia/page/issues/PageIssuesDialog.kt b/app/src/main/java/org/wikipedia/page/issues/PageIssuesDialog.kt new file mode 100644 index 00000000000..79dccc765d8 --- /dev/null +++ b/app/src/main/java/org/wikipedia/page/issues/PageIssuesDialog.kt @@ -0,0 +1,78 @@ +package org.wikipedia.page.issues + +import android.app.Activity +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.appcompat.app.AlertDialog +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import org.wikipedia.R +import org.wikipedia.databinding.DialogPageIssuesBinding +import org.wikipedia.dataclient.WikiSite +import org.wikipedia.page.LinkMovementMethodExt +import org.wikipedia.util.DimenUtil +import org.wikipedia.util.ResourceUtil +import org.wikipedia.util.StringUtil +import org.wikipedia.views.DrawableItemDecoration + +class PageIssuesDialog constructor( + activity: Activity, + val wikiSite: WikiSite, + val pageIssues: List, + val callback: Callback +) : MaterialAlertDialogBuilder(activity) { + + fun interface Callback { + fun onLinkClicked(url: String, title: String?, linkText: String) + } + + private val binding = DialogPageIssuesBinding.inflate(activity.layoutInflater) + private var dialog: AlertDialog? = null + + private val movementMethod = LinkMovementMethodExt { url, title, linkText -> + callback.onLinkClicked(url, title, linkText) + dialog?.dismiss() + } + + init { + setView(binding.root) + + binding.recycler.adapter = EditNoticesAdapter() + binding.recycler.layoutManager = LinearLayoutManager(context) + binding.recycler.addItemDecoration(DrawableItemDecoration(context, R.attr.list_divider, drawStart = true, drawEnd = true)) + } + + override fun show(): AlertDialog { + dialog = super.show() + return dialog!! + } + + private inner class EditNoticesAdapter : RecyclerView.Adapter() { + override fun getItemCount(): Int { + return pageIssues.size + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DefaultViewHolder { + val textView = TextView(context) + textView.layoutParams = RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + textView.setTextColor(ResourceUtil.getThemedColor(context, R.attr.primary_color)) + textView.setLineSpacing(DimenUtil.dpToPx(6f), 1f) + textView.movementMethod = movementMethod + + textView.setPadding(0, DimenUtil.roundedDpToPx(16f), 0, DimenUtil.roundedDpToPx(16f)) + return DefaultViewHolder(textView) + } + + override fun onBindViewHolder(holder: DefaultViewHolder, pos: Int) { + holder.bindItem(pos) + } + } + + private open inner class DefaultViewHolder constructor(itemView: View) : RecyclerView.ViewHolder(itemView) { + open fun bindItem(position: Int) { + (itemView as TextView).text = StringUtil.fromHtml(StringUtil.removeStyleTags(pageIssues[position])) + } + } +} diff --git a/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.kt b/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.kt index fbbca7553b4..c3ddc9b1375 100644 --- a/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.kt +++ b/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.kt @@ -19,6 +19,7 @@ import kotlinx.coroutines.launch import org.wikipedia.R import org.wikipedia.activity.FragmentUtil.getCallback import org.wikipedia.analytics.eventplatform.ArticleLinkPreviewInteractionEvent +import org.wikipedia.analytics.metricsplatform.ArticleLinkPreviewInteraction import org.wikipedia.bridge.JavaScriptActionHandler import org.wikipedia.databinding.DialogLinkPreviewBinding import org.wikipedia.dataclient.page.PageSummary @@ -47,6 +48,7 @@ class LinkPreviewDialog : ExtendedBottomSheetDialogFragment(), LinkPreviewErrorV private val binding get() = _binding!! private var articleLinkPreviewInteractionEvent: ArticleLinkPreviewInteractionEvent? = null + private var linkPreviewInteraction: ArticleLinkPreviewInteraction? = null private var overlayView: LinkPreviewOverlayView? = null private var navigateSuccess = false private var revision: Long = 0 @@ -124,9 +126,9 @@ class LinkPreviewDialog : ExtendedBottomSheetDialogFragment(), LinkPreviewErrorV } } } - return binding.root } + private fun renderGalleryState(it: LinkPreviewViewState.Gallery) { binding.linkPreviewThumbnailGallery.setGalleryList(it.data) binding.linkPreviewThumbnailGallery.listener = galleryViewListener @@ -140,6 +142,14 @@ class LinkPreviewDialog : ExtendedBottomSheetDialogFragment(), LinkPreviewErrorV viewModel.historyEntry.source ) articleLinkPreviewInteractionEvent?.logLinkClick() + + linkPreviewInteraction = ArticleLinkPreviewInteraction( + viewModel.pageTitle, + summary.pageId, + viewModel.historyEntry.source + ) + linkPreviewInteraction?.logLinkClick() + revision = summary.revision binding.linkPreviewTitle.text = StringUtil.fromHtml(summary.displayTitle) @@ -193,6 +203,7 @@ class LinkPreviewDialog : ExtendedBottomSheetDialogFragment(), LinkPreviewErrorV super.onDismiss(dialogInterface) if (!navigateSuccess) { articleLinkPreviewInteractionEvent?.logCancel() + linkPreviewInteraction?.logCancel() } } @@ -274,6 +285,7 @@ class LinkPreviewDialog : ExtendedBottomSheetDialogFragment(), LinkPreviewErrorV private fun goToLinkedPage(inNewTab: Boolean) { navigateSuccess = true articleLinkPreviewInteractionEvent?.logNavigate() + linkPreviewInteraction?.logNavigate() dialog?.dismiss() loadPage(viewModel.pageTitle, viewModel.historyEntry, inNewTab) } diff --git a/app/src/main/java/org/wikipedia/random/RandomActivity.kt b/app/src/main/java/org/wikipedia/random/RandomActivity.kt index c3fafdde003..ff787728f41 100644 --- a/app/src/main/java/org/wikipedia/random/RandomActivity.kt +++ b/app/src/main/java/org/wikipedia/random/RandomActivity.kt @@ -11,11 +11,9 @@ import org.wikipedia.dataclient.WikiSite class RandomActivity : SingleFragmentActivity() { companion object { - const val INTENT_EXTRA_WIKISITE = "wikiSite" - fun newIntent(context: Context, wikiSite: WikiSite, invokeSource: InvokeSource?): Intent { return Intent(context, RandomActivity::class.java).apply { - putExtra(INTENT_EXTRA_WIKISITE, wikiSite) + putExtra(Constants.ARG_WIKISITE, wikiSite) putExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE, invokeSource) } } @@ -28,7 +26,7 @@ class RandomActivity : SingleFragmentActivity() { } public override fun createFragment(): RandomFragment { - return RandomFragment.newInstance(intent.getParcelableExtra(INTENT_EXTRA_WIKISITE)!!, + return RandomFragment.newInstance(intent.getParcelableExtra(Constants.ARG_WIKISITE)!!, intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource) } } diff --git a/app/src/main/java/org/wikipedia/random/RandomFragment.kt b/app/src/main/java/org/wikipedia/random/RandomFragment.kt index 82566888d5b..829a1f316e4 100644 --- a/app/src/main/java/org/wikipedia/random/RandomFragment.kt +++ b/app/src/main/java/org/wikipedia/random/RandomFragment.kt @@ -50,7 +50,7 @@ class RandomFragment : Fragment() { fun newInstance(wikiSite: WikiSite, invokeSource: InvokeSource) = RandomFragment().apply { arguments = bundleOf( - RandomActivity.INTENT_EXTRA_WIKISITE to wikiSite, + Constants.ARG_WIKISITE to wikiSite, Constants.INTENT_EXTRA_INVOKE_SOURCE to invokeSource ) } @@ -77,7 +77,7 @@ class RandomFragment : Fragment() { FeedbackUtil.setButtonLongPressToast(binding.randomNextButton, binding.randomSaveButton) - wikiSite = requireArguments().getParcelable(RandomActivity.INTENT_EXTRA_WIKISITE)!! + wikiSite = requireArguments().getParcelable(Constants.ARG_WIKISITE)!! binding.randomItemPager.offscreenPageLimit = 2 binding.randomItemPager.adapter = RandomItemAdapter(this) diff --git a/app/src/main/java/org/wikipedia/random/RandomItemFragment.kt b/app/src/main/java/org/wikipedia/random/RandomItemFragment.kt index 5cb66208af8..7910a16d783 100644 --- a/app/src/main/java/org/wikipedia/random/RandomItemFragment.kt +++ b/app/src/main/java/org/wikipedia/random/RandomItemFragment.kt @@ -26,7 +26,7 @@ class RandomItemFragment : Fragment() { private const val EXTRACT_MAX_LINES = 4 fun newInstance(wikiSite: WikiSite) = RandomItemFragment().apply { - arguments = bundleOf(RandomActivity.INTENT_EXTRA_WIKISITE to wikiSite) + arguments = bundleOf(Constants.ARG_WIKISITE to wikiSite) } } @@ -44,7 +44,7 @@ class RandomItemFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - wikiSite = requireArguments().getParcelable(RandomActivity.INTENT_EXTRA_WIKISITE)!! + wikiSite = requireArguments().getParcelable(Constants.ARG_WIKISITE)!! retainInstance = true } diff --git a/app/src/main/java/org/wikipedia/readinglist/ReadingListsReceiveHelper.kt b/app/src/main/java/org/wikipedia/readinglist/ReadingListsReceiveHelper.kt index 4644dbda368..98e1bdf9bc6 100644 --- a/app/src/main/java/org/wikipedia/readinglist/ReadingListsReceiveHelper.kt +++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListsReceiveHelper.kt @@ -34,11 +34,11 @@ object ReadingListsReceiveHelper { val pages = mutableListOf() if (listOfIds.isNotEmpty()) { - pages.addAll(ServiceFactory.get(wikiSite).getPageTitlesByPageIdsOrTitles(pageIds = listOfIds.joinToString(separator = "|")) + pages.addAll(ServiceFactory.get(wikiSite).getInfoByPageIdsOrTitles(pageIds = listOfIds.joinToString(separator = "|")) .query?.pages.orEmpty()) } if (listOfTitles.isNotEmpty()) { - pages.addAll(ServiceFactory.get(wikiSite).getPageTitlesByPageIdsOrTitles(titles = listOfTitles.joinToString(separator = "|")) + pages.addAll(ServiceFactory.get(wikiSite).getInfoByPageIdsOrTitles(titles = listOfTitles.joinToString(separator = "|")) .query?.pages.orEmpty()) } pages.forEach { diff --git a/app/src/main/java/org/wikipedia/search/SearchFragment.kt b/app/src/main/java/org/wikipedia/search/SearchFragment.kt index 531558ae3a4..653da6c1677 100644 --- a/app/src/main/java/org/wikipedia/search/SearchFragment.kt +++ b/app/src/main/java/org/wikipedia/search/SearchFragment.kt @@ -24,6 +24,7 @@ import org.wikipedia.database.AppDatabase import org.wikipedia.databinding.FragmentSearchBinding import org.wikipedia.history.HistoryEntry import org.wikipedia.json.JsonUtil +import org.wikipedia.language.LanguageUtil import org.wikipedia.page.ExclusiveBottomSheetPresenter import org.wikipedia.page.PageActivity import org.wikipedia.page.PageTitle @@ -320,7 +321,7 @@ class SearchFragment : Fragment(), SearchResultsFragment.Callback, RecentSearche } private fun initLangButton() { - binding.searchLangButton.text = app.languageState.appLanguageCode.uppercase(Locale.ENGLISH) + binding.searchLangButton.text = LanguageUtil.formatLangCodeForButton(app.languageState.appLanguageCode.uppercase(Locale.ENGLISH)) ViewUtil.formatLangButton(binding.searchLangButton, app.languageState.appLanguageCode.uppercase(Locale.ENGLISH), LANG_BUTTON_TEXT_SIZE_SMALLER, LANG_BUTTON_TEXT_SIZE_LARGER) FeedbackUtil.setButtonLongPressToast(binding.searchLangButtonContainer) diff --git a/app/src/main/java/org/wikipedia/search/SearchResults.kt b/app/src/main/java/org/wikipedia/search/SearchResults.kt index 48ab0b78020..b02b6a3fb2f 100644 --- a/app/src/main/java/org/wikipedia/search/SearchResults.kt +++ b/app/src/main/java/org/wikipedia/search/SearchResults.kt @@ -6,9 +6,9 @@ import org.wikipedia.dataclient.mwapi.MwQueryPage import org.wikipedia.dataclient.mwapi.MwQueryResponse @Serializable -data class SearchResults constructor(var results: MutableList = ArrayList(), +data class SearchResults constructor(var results: MutableList = mutableListOf(), var continuation: MwQueryResponse.Continuation? = null) { - constructor(pages: MutableList, wiki: WikiSite, continuation: MwQueryResponse.Continuation?) : this() { + constructor(pages: List, wiki: WikiSite, continuation: MwQueryResponse.Continuation?) : this() { // Sort the array based on the "index" property results.addAll(pages.sortedBy { it.index }.map { SearchResult(it, wiki) }) this.continuation = continuation diff --git a/app/src/main/java/org/wikipedia/search/SearchResultsFragment.kt b/app/src/main/java/org/wikipedia/search/SearchResultsFragment.kt index a61a7fa061e..7e2bda8f6aa 100644 --- a/app/src/main/java/org/wikipedia/search/SearchResultsFragment.kt +++ b/app/src/main/java/org/wikipedia/search/SearchResultsFragment.kt @@ -26,6 +26,7 @@ import org.wikipedia.databinding.FragmentSearchResultsBinding import org.wikipedia.databinding.ItemSearchNoResultsBinding import org.wikipedia.databinding.ItemSearchResultBinding import org.wikipedia.history.HistoryEntry +import org.wikipedia.language.LanguageUtil import org.wikipedia.page.PageTitle import org.wikipedia.readinglist.LongPressMenu import org.wikipedia.readinglist.database.ReadingListPage @@ -195,7 +196,7 @@ class SearchResultsFragment : Fragment() { itemBinding.resultsText.text = if (resultsCount == 0) getString(R.string.search_results_count_zero) else resources.getQuantityString(R.plurals.search_results_count, resultsCount, resultsCount) itemBinding.resultsText.setTextColor(if (resultsCount == 0) secondaryColorStateList else accentColorStateList) itemBinding.languageCode.visibility = if (viewModel.resultsCount.size == 1) View.GONE else View.VISIBLE - itemBinding.languageCode.text = langCode + itemBinding.languageCode.text = LanguageUtil.formatLangCodeForButton(langCode) itemBinding.languageCode.setTextColor(if (resultsCount == 0) secondaryColorStateList else accentColorStateList) ViewCompat.setBackgroundTintList(itemBinding.languageCode, if (resultsCount == 0) secondaryColorStateList else accentColorStateList) formatLangButton(itemBinding.languageCode, langCode, diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.kt b/app/src/main/java/org/wikipedia/settings/Prefs.kt index 1e46816b297..87de422f9f2 100644 --- a/app/src/main/java/org/wikipedia/settings/Prefs.kt +++ b/app/src/main/java/org/wikipedia/settings/Prefs.kt @@ -367,11 +367,6 @@ object Prefs { get() = PrefsIoUtil.getBoolean(R.string.preference_key_show_remove_chinese_variant_prompt, true) set(enabled) = PrefsIoUtil.setBoolean(R.string.preference_key_show_remove_chinese_variant_prompt, enabled) - var locallyKnownNotifications - get() = JsonUtil.decodeFromString>(PrefsIoUtil.getString(R.string.preference_key_locally_known_notifications, null)) - ?: emptyList() - set(list) = PrefsIoUtil.setString(R.string.preference_key_locally_known_notifications, JsonUtil.encodeToString(list)) - var remoteNotificationsSeenTime get() = PrefsIoUtil.getString(R.string.preference_key_remote_notifications_seen_time, "").orEmpty() set(seenTime) = PrefsIoUtil.setString(R.string.preference_key_remote_notifications_seen_time, seenTime) diff --git a/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesItemView.kt b/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesItemView.kt index 3ecca53094d..45c91c69212 100644 --- a/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesItemView.kt +++ b/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesItemView.kt @@ -11,6 +11,7 @@ import androidx.appcompat.content.res.AppCompatResources import androidx.core.view.ViewCompat import org.wikipedia.R import org.wikipedia.databinding.ItemWikipediaLanguageBinding +import org.wikipedia.language.LanguageUtil import org.wikipedia.search.SearchFragment import org.wikipedia.util.DeviceUtil import org.wikipedia.util.ResourceUtil @@ -60,7 +61,7 @@ class WikipediaLanguagesItemView : LinearLayout { this.position = position binding.wikiLanguageOrder.text = (position + 1).toString() binding.wikiLanguageTitle.text = StringUtil.capitalize(languageLocalizedName.orEmpty()) - binding.wikiLanguageCode.text = langCode + binding.wikiLanguageCode.text = LanguageUtil.formatLangCodeForButton(langCode) val color = ResourceUtil.getThemedColorStateList(context, R.attr.secondary_color) binding.wikiLanguageCode.setTextColor(color) ViewCompat.setBackgroundTintList(binding.wikiLanguageCode, color) diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsFragment.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsFragment.kt index f67c9dbc022..ce7666b958b 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsFragment.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsFragment.kt @@ -62,7 +62,7 @@ class SuggestedEditsCardsFragment : Fragment(), MenuProvider, SuggestedEditsItem } } - private fun topBaseChild(): SuggestedEditsItemFragment? { + fun topBaseChild(): SuggestedEditsItemFragment? { return (binding.cardsViewPager.adapter as ViewPagerAdapter?)?.getFragmentAt(binding.cardsViewPager.currentItem) as SuggestedEditsItemFragment? } diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagEditActivity.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagEditActivity.kt index 661138846c7..92407e773a5 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagEditActivity.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagEditActivity.kt @@ -21,7 +21,7 @@ import org.wikipedia.util.ResourceUtil class SuggestedEditsImageTagEditActivity : BaseActivity(), SuggestedEditsItemFragment.Callback { private lateinit var binding: ActivitySuggestedEditsFeedCardImageTagsBinding - private var suggestedEditsImageTagsFragment: SuggestedEditsImageTagsFragment? = null + private lateinit var suggestedEditsImageTagsFragment: SuggestedEditsImageTagsFragment var page: MwQueryPage? = null override fun onCreate(savedInstanceState: Bundle?) { @@ -34,11 +34,11 @@ class SuggestedEditsImageTagEditActivity : BaseActivity(), SuggestedEditsItemFra supportActionBar!!.title = getString(R.string.suggested_edits_tag_images) setImageZoomHelper() - suggestedEditsImageTagsFragment = supportFragmentManager.findFragmentById(R.id.imageTagFragment) as SuggestedEditsImageTagsFragment? - suggestedEditsImageTagsFragment?.invokeSource = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource + suggestedEditsImageTagsFragment = supportFragmentManager.findFragmentById(R.id.imageTagFragment) as SuggestedEditsImageTagsFragment + suggestedEditsImageTagsFragment.invokeSource = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource - binding.addContributionButton.setOnClickListener { suggestedEditsImageTagsFragment!!.publish() } - binding.addContributionLandscapeImage.setOnClickListener { suggestedEditsImageTagsFragment!!.publish() } + binding.addContributionButton.setOnClickListener { suggestedEditsImageTagsFragment.publish() } + binding.addContributionLandscapeImage.setOnClickListener { suggestedEditsImageTagsFragment.publish() } maybeShowOnboarding() } @@ -51,13 +51,11 @@ class SuggestedEditsImageTagEditActivity : BaseActivity(), SuggestedEditsItemFra } override fun updateActionButton() { - if (suggestedEditsImageTagsFragment != null) { - binding.addContributionLandscapeImage.setBackgroundColor(ResourceUtil.getThemedColor(this, R.attr.progressive_color)) - binding.addContributionButton.isEnabled = suggestedEditsImageTagsFragment!!.publishEnabled() - binding.addContributionLandscapeImage.isEnabled = suggestedEditsImageTagsFragment!!.publishEnabled() - binding.addContributionButton.alpha = if (suggestedEditsImageTagsFragment!!.publishEnabled()) 1f else 0.5f - binding.addContributionLandscapeImage.alpha = if (suggestedEditsImageTagsFragment!!.publishEnabled()) 1f else 0.5f - } + binding.addContributionLandscapeImage.setBackgroundColor(ResourceUtil.getThemedColor(this, R.attr.progressive_color)) + binding.addContributionButton.isEnabled = suggestedEditsImageTagsFragment.publishEnabled() + binding.addContributionLandscapeImage.isEnabled = suggestedEditsImageTagsFragment.publishEnabled() + binding.addContributionButton.alpha = if (suggestedEditsImageTagsFragment.publishEnabled()) 1f else 0.5f + binding.addContributionLandscapeImage.alpha = if (suggestedEditsImageTagsFragment.publishEnabled()) 1f else 0.5f if (DimenUtil.isLandscape(this)) { binding.addContributionButton.visibility = GONE @@ -84,6 +82,13 @@ class SuggestedEditsImageTagEditActivity : BaseActivity(), SuggestedEditsItemFra } } + override fun onBackPressed() { + if (!suggestedEditsImageTagsFragment.onBackPressed()) { + return + } + super.onBackPressed() + } + companion object { private const val ARG_PAGE = "imageTagPage" diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagsFragment.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagsFragment.kt index 28a5e741ed9..b5aa2a2405d 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagsFragment.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagsFragment.kt @@ -15,6 +15,7 @@ import android.widget.Toast import androidx.core.view.children import androidx.core.widget.ImageViewCompat import com.google.android.material.chip.Chip +import com.google.android.material.dialog.MaterialAlertDialogBuilder import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers import org.wikipedia.Constants @@ -38,7 +39,7 @@ import org.wikipedia.util.L10nUtil.setConditionalLayoutDirection import org.wikipedia.util.log.L import org.wikipedia.views.ImageZoomHelper import org.wikipedia.views.ViewUtil -import java.util.* +import java.util.UUID class SuggestedEditsImageTagsFragment : SuggestedEditsItemFragment(), CompoundButton.OnCheckedChangeListener, OnClickListener, SuggestedEditsImageTagDialog.Callback { @@ -245,10 +246,18 @@ class SuggestedEditsImageTagsFragment : SuggestedEditsItemFragment(), CompoundBu return chip } - companion object { - fun newInstance(): SuggestedEditsItemFragment { - return SuggestedEditsImageTagsFragment() + override fun onBackPressed(): Boolean { + if (!atLeastOneTagChecked()) { + return true } + MaterialAlertDialogBuilder(requireActivity()) + .setCancelable(false) + .setTitle(R.string.talk_new_topic_exit_dialog_title) + .setMessage(R.string.suggested_edits_image_tags_exit_dialog_message) + .setPositiveButton(R.string.edit_abandon_confirm_yes) { _, _ -> requireActivity().finish() } + .setNegativeButton(R.string.edit_abandon_confirm_no, null) + .show() + return false } override fun onClick(v: View?) { @@ -463,4 +472,10 @@ class SuggestedEditsImageTagsFragment : SuggestedEditsItemFragment(), CompoundBu private fun callback(): Callback { return FragmentUtil.getCallback(this, Callback::class.java)!! } + + companion object { + fun newInstance(): SuggestedEditsItemFragment { + return SuggestedEditsImageTagsFragment() + } + } } diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsItemFragment.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsItemFragment.kt index 2b4a479c1b7..f138637b01c 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsItemFragment.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsItemFragment.kt @@ -39,4 +39,8 @@ abstract class SuggestedEditsItemFragment : Fragment() { } open fun publish() {} + + open fun onBackPressed(): Boolean { + return true + } } diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsTasksFragmentViewModel.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsTasksFragmentViewModel.kt index d870208d660..75f18faa165 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsTasksFragmentViewModel.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsTasksFragmentViewModel.kt @@ -3,12 +3,10 @@ package org.wikipedia.suggestededits import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.CoroutineExceptionHandler -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.async import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import org.wikipedia.Constants import org.wikipedia.WikipediaApp import org.wikipedia.auth.AccountUtil @@ -57,11 +55,12 @@ class SuggestedEditsTasksFragmentViewModel : ViewModel() { val homeSiteCall = async { ServiceFactory.get(WikipediaApp.instance.wikiSite).getUserContributions(AccountUtil.userName!!, 10, null) } val commonsCall = async { ServiceFactory.get(Constants.commonsWikiSite).getUserContributions(AccountUtil.userName!!, 10, null) } val wikidataCall = async { ServiceFactory.get(Constants.wikidataWikiSite).getUserContributions(AccountUtil.userName!!, 10, null) } - val editCountsCall = withContext(Dispatchers.IO) { UserContribStats.getEditCountsObservable().blockingSingle() } + val editCountsCall = async { UserContribStats.verifyEditCountsAndPauseState() } val homeSiteResponse = homeSiteCall.await() val commonsResponse = commonsCall.await() val wikidataResponse = wikidataCall.await() + editCountsCall.await() homeSiteResponse.query?.userInfo?.let { if (it.isBlocked) { @@ -100,9 +99,7 @@ class SuggestedEditsTasksFragmentViewModel : ViewModel() { ) revertSeverity = UserContribStats.getRevertSeverity() - withContext(Dispatchers.IO) { - totalPageviews = UserContribStats.getPageViewsObservable(wikidataResponse).blockingSingle() - } + totalPageviews = UserContribStats.getPageViews(wikidataResponse) _uiState.value = UiState.Success() } diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestionsActivity.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestionsActivity.kt index 7433b37da46..eb77dd60e44 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestionsActivity.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestionsActivity.kt @@ -9,7 +9,9 @@ import org.wikipedia.Constants.INTENT_EXTRA_INVOKE_SOURCE import org.wikipedia.R import org.wikipedia.activity.SingleFragmentActivity import org.wikipedia.descriptions.DescriptionEditActivity.Action -import org.wikipedia.descriptions.DescriptionEditActivity.Action.* +import org.wikipedia.descriptions.DescriptionEditActivity.Action.ADD_CAPTION +import org.wikipedia.descriptions.DescriptionEditActivity.Action.ADD_IMAGE_TAGS +import org.wikipedia.descriptions.DescriptionEditActivity.Action.TRANSLATE_CAPTION import org.wikipedia.suggestededits.SuggestedEditsCardsFragment.Companion.newInstance class SuggestionsActivity : SingleFragmentActivity() { @@ -21,6 +23,13 @@ class SuggestionsActivity : SingleFragmentActivity( setImageZoomHelper() } + override fun onBackPressed() { + if (fragment.topBaseChild()?.onBackPressed() == false) { + return + } + super.onBackPressed() + } + override fun createFragment(): SuggestedEditsCardsFragment { return newInstance(intent.getSerializableExtra(INTENT_EXTRA_ACTION) as Action, intent.getSerializableExtra(INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource) diff --git a/app/src/main/java/org/wikipedia/talk/ArchivedTalkPagesActivity.kt b/app/src/main/java/org/wikipedia/talk/ArchivedTalkPagesActivity.kt index 9e7da3e0947..208be444da3 100644 --- a/app/src/main/java/org/wikipedia/talk/ArchivedTalkPagesActivity.kt +++ b/app/src/main/java/org/wikipedia/talk/ArchivedTalkPagesActivity.kt @@ -20,6 +20,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.launch +import org.wikipedia.Constants import org.wikipedia.Constants.InvokeSource import org.wikipedia.R import org.wikipedia.activity.BaseActivity @@ -190,11 +191,9 @@ class ArchivedTalkPagesActivity : BaseActivity() { } companion object { - const val EXTRA_TITLE = "talkTopicTitle" - fun newIntent(context: Context, talkTopicTitle: PageTitle): Intent { return Intent(context, ArchivedTalkPagesActivity::class.java) - .putExtra(EXTRA_TITLE, talkTopicTitle) + .putExtra(Constants.ARG_TITLE, talkTopicTitle) } } } diff --git a/app/src/main/java/org/wikipedia/talk/ArchivedTalkPagesViewModel.kt b/app/src/main/java/org/wikipedia/talk/ArchivedTalkPagesViewModel.kt index e86f45c8ed8..0e09bfdf823 100644 --- a/app/src/main/java/org/wikipedia/talk/ArchivedTalkPagesViewModel.kt +++ b/app/src/main/java/org/wikipedia/talk/ArchivedTalkPagesViewModel.kt @@ -5,13 +5,14 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.paging.* +import org.wikipedia.Constants import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.page.PageTitle class ArchivedTalkPagesViewModel(bundle: Bundle) : ViewModel() { - val pageTitle = bundle.getParcelable(ArchivedTalkPagesActivity.EXTRA_TITLE)!! + val pageTitle = bundle.getParcelable(Constants.ARG_TITLE)!! val archivedTalkPagesFlow = Pager(PagingConfig(pageSize = 10)) { ArchivedTalkPagesPagingSource(pageTitle) }.flow.cachedIn(viewModelScope) diff --git a/app/src/main/java/org/wikipedia/talk/TalkReplyActivity.kt b/app/src/main/java/org/wikipedia/talk/TalkReplyActivity.kt index 8f3c0ed66a6..f15f0d0a354 100644 --- a/app/src/main/java/org/wikipedia/talk/TalkReplyActivity.kt +++ b/app/src/main/java/org/wikipedia/talk/TalkReplyActivity.kt @@ -262,7 +262,7 @@ class TalkReplyActivity : BaseActivity(), LinkPreviewDialog.Callback, UserMentio private fun updateEditLicenseText() { binding.licenseText.text = StringUtil.fromHtml(getString(if (AccountUtil.isLoggedIn) R.string.edit_save_action_license_logged_in else R.string.edit_save_action_license_anon, getString(R.string.terms_of_use_url), - getString(R.string.cc_by_sa_3_url))) + getString(R.string.cc_by_sa_4_url))) binding.licenseText.movementMethod = LinkMovementMethodExt { url: String -> if (url == "https://#login") { val loginIntent = LoginActivity.newIntent(this, LoginActivity.SOURCE_EDIT) @@ -324,7 +324,6 @@ class TalkReplyActivity : BaseActivity(), LinkPreviewDialog.Callback, UserMentio } companion object { - const val EXTRA_PAGE_TITLE = "pageTitle" const val EXTRA_PARENT_SUBJECT = "parentSubject" const val EXTRA_TOPIC = "topic" const val EXTRA_TOPIC_ID = "topicId" @@ -345,7 +344,7 @@ class TalkReplyActivity : BaseActivity(), LinkPreviewDialog.Callback, UserMentio undoSubject: CharSequence? = null, undoBody: CharSequence? = null): Intent { return Intent(context, TalkReplyActivity::class.java) - .putExtra(EXTRA_PAGE_TITLE, pageTitle) + .putExtra(Constants.ARG_TITLE, pageTitle) .putExtra(EXTRA_PARENT_SUBJECT, parentSubject) .putExtra(EXTRA_TOPIC, topic) .putExtra(EXTRA_SUBJECT, undoSubject) diff --git a/app/src/main/java/org/wikipedia/talk/TalkReplyViewModel.kt b/app/src/main/java/org/wikipedia/talk/TalkReplyViewModel.kt index 9b85bb4fa11..b2beeccbd92 100644 --- a/app/src/main/java/org/wikipedia/talk/TalkReplyViewModel.kt +++ b/app/src/main/java/org/wikipedia/talk/TalkReplyViewModel.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import kotlinx.coroutines.* +import org.wikipedia.Constants import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.discussiontools.ThreadItem import org.wikipedia.page.PageTitle @@ -13,7 +14,7 @@ import org.wikipedia.util.SingleLiveData class TalkReplyViewModel(bundle: Bundle) : ViewModel() { - val pageTitle = bundle.getParcelable(TalkReplyActivity.EXTRA_PAGE_TITLE)!! + val pageTitle = bundle.getParcelable(Constants.ARG_TITLE)!! val topic = bundle.getParcelable(TalkReplyActivity.EXTRA_TOPIC) val isNewTopic = topic == null val postReplyData = SingleLiveData>() diff --git a/app/src/main/java/org/wikipedia/talk/TalkTopicActivity.kt b/app/src/main/java/org/wikipedia/talk/TalkTopicActivity.kt index 57df9e30257..91b301d1716 100644 --- a/app/src/main/java/org/wikipedia/talk/TalkTopicActivity.kt +++ b/app/src/main/java/org/wikipedia/talk/TalkTopicActivity.kt @@ -448,7 +448,6 @@ class TalkTopicActivity : BaseActivity(), LinkPreviewDialog.Callback { } companion object { - const val EXTRA_PAGE_TITLE = "pageTitle" const val EXTRA_TOPIC_NAME = "topicName" const val EXTRA_TOPIC_ID = "topicId" const val EXTRA_REPLY_ID = "replyId" @@ -462,7 +461,7 @@ class TalkTopicActivity : BaseActivity(), LinkPreviewDialog.Callback { searchQuery: String?, invokeSource: Constants.InvokeSource): Intent { return Intent(context, TalkTopicActivity::class.java) - .putExtra(EXTRA_PAGE_TITLE, pageTitle) + .putExtra(Constants.ARG_TITLE, pageTitle) .putExtra(EXTRA_TOPIC_NAME, topicName) .putExtra(EXTRA_TOPIC_ID, topicId) .putExtra(EXTRA_REPLY_ID, replyId) diff --git a/app/src/main/java/org/wikipedia/talk/TalkTopicViewModel.kt b/app/src/main/java/org/wikipedia/talk/TalkTopicViewModel.kt index 4b62dfa6853..f6e090e19d5 100644 --- a/app/src/main/java/org/wikipedia/talk/TalkTopicViewModel.kt +++ b/app/src/main/java/org/wikipedia/talk/TalkTopicViewModel.kt @@ -8,6 +8,7 @@ import androidx.lifecycle.viewModelScope import androidx.recyclerview.widget.DiffUtil import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.launch +import org.wikipedia.Constants import org.wikipedia.WikipediaApp import org.wikipedia.auth.AccountUtil import org.wikipedia.database.AppDatabase @@ -25,7 +26,7 @@ class TalkTopicViewModel(bundle: Bundle) : ViewModel() { private val topicName = bundle.getString(TalkTopicActivity.EXTRA_TOPIC_NAME)!! private val topicId = bundle.getString(TalkTopicActivity.EXTRA_TOPIC_ID)!! - val pageTitle = bundle.getParcelable(TalkTopicActivity.EXTRA_PAGE_TITLE)!! + val pageTitle = bundle.getParcelable(Constants.ARG_TITLE)!! var currentSearchQuery = bundle.getString(TalkTopicActivity.EXTRA_SEARCH_QUERY) var scrollTargetId = bundle.getString(TalkTopicActivity.EXTRA_REPLY_ID) diff --git a/app/src/main/java/org/wikipedia/talk/TalkTopicsActivity.kt b/app/src/main/java/org/wikipedia/talk/TalkTopicsActivity.kt index 45932af29a3..58c503e3899 100644 --- a/app/src/main/java/org/wikipedia/talk/TalkTopicsActivity.kt +++ b/app/src/main/java/org/wikipedia/talk/TalkTopicsActivity.kt @@ -54,7 +54,7 @@ class TalkTopicsActivity : BaseActivity(), WatchlistExpiryDialog.Callback { private lateinit var binding: ActivityTalkTopicsBinding private lateinit var invokeSource: Constants.InvokeSource private lateinit var notificationButtonView: NotificationButtonView - private val viewModel: TalkTopicsViewModel by viewModels { TalkTopicsViewModel.Factory(intent.getParcelableExtra(EXTRA_PAGE_TITLE)!!) } + private val viewModel: TalkTopicsViewModel by viewModels { TalkTopicsViewModel.Factory(intent.getParcelableExtra(Constants.ARG_TITLE)!!) } private val concatAdapter = ConcatAdapter() private val headerAdapter = HeaderItemAdapter() private val talkTopicItemAdapter = TalkTopicItemAdapter() @@ -535,12 +535,11 @@ class TalkTopicsActivity : BaseActivity(), WatchlistExpiryDialog.Callback { } companion object { - private const val EXTRA_PAGE_TITLE = "pageTitle" private const val EXTRA_GO_TO_TOPIC = "goToTopic" fun newIntent(context: Context, pageTitle: PageTitle, invokeSource: Constants.InvokeSource): Intent { return Intent(context, TalkTopicsActivity::class.java) - .putExtra(EXTRA_PAGE_TITLE, pageTitle) + .putExtra(Constants.ARG_TITLE, pageTitle) .putExtra(EXTRA_GO_TO_TOPIC, !pageTitle.fragment.isNullOrEmpty()) .putExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE, invokeSource) } diff --git a/app/src/main/java/org/wikipedia/usercontrib/UserContribFilterItemView.kt b/app/src/main/java/org/wikipedia/usercontrib/UserContribFilterItemView.kt index 2789dde802e..79c9efc1bf1 100644 --- a/app/src/main/java/org/wikipedia/usercontrib/UserContribFilterItemView.kt +++ b/app/src/main/java/org/wikipedia/usercontrib/UserContribFilterItemView.kt @@ -13,6 +13,7 @@ import org.wikipedia.Constants import org.wikipedia.R import org.wikipedia.WikipediaApp import org.wikipedia.databinding.ItemUserContribFilterBinding +import org.wikipedia.language.LanguageUtil import org.wikipedia.search.SearchFragment import org.wikipedia.util.DimenUtil import org.wikipedia.util.ResourceUtil @@ -43,7 +44,7 @@ class UserContribFilterItemView constructor(context: Context, attrs: AttributeSe if (item.type == UserContribFilterActivity.FILTER_TYPE_WIKI) { getTitleCodeFor(item.filterCode)?.let { - binding.languageCode.text = it + binding.languageCode.text = LanguageUtil.formatLangCodeForButton(it) binding.languageCode.visibility = View.VISIBLE ViewUtil.formatLangButton(binding.languageCode, it, SearchFragment.LANG_BUTTON_TEXT_SIZE_SMALLER, SearchFragment.LANG_BUTTON_TEXT_SIZE_LARGER) } ?: run { diff --git a/app/src/main/java/org/wikipedia/usercontrib/UserContribStats.kt b/app/src/main/java/org/wikipedia/usercontrib/UserContribStats.kt index 9352091f849..d2674750db6 100644 --- a/app/src/main/java/org/wikipedia/usercontrib/UserContribStats.kt +++ b/app/src/main/java/org/wikipedia/usercontrib/UserContribStats.kt @@ -1,8 +1,9 @@ package org.wikipedia.usercontrib -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers -import io.reactivex.rxjava3.core.Observable -import io.reactivex.rxjava3.schedulers.Schedulers +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.awaitAll +import kotlinx.coroutines.withContext import org.wikipedia.Constants import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite @@ -22,75 +23,64 @@ object UserContribStats { var totalImageCaptionEdits: Int = 0 var totalImageTagEdits: Int = 0 - fun getEditCountsObservable(): Observable { - return ServiceFactory.get(Constants.wikidataWikiSite).editorTaskCounts - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .doOnNext { - if (it.query?.userInfo?.isBlocked != true) { - val editorTaskCounts = it.query?.editorTaskCounts!! - totalEdits = editorTaskCounts.totalEdits - totalDescriptionEdits = editorTaskCounts.totalDescriptionEdits - totalImageCaptionEdits = editorTaskCounts.totalImageCaptionEdits - totalImageTagEdits = editorTaskCounts.totalDepictsEdits - totalReverts = editorTaskCounts.totalReverts - maybePauseAndGetEndDate() - } - } + suspend fun verifyEditCountsAndPauseState() { + val response = ServiceFactory.get(Constants.wikidataWikiSite).getEditorTaskCounts() + if (response.query?.userInfo?.isBlocked != true) { + response.query?.editorTaskCounts?.let { + totalEdits = it.totalEdits + totalDescriptionEdits = it.totalDescriptionEdits + totalImageCaptionEdits = it.totalImageCaptionEdits + totalImageTagEdits = it.totalDepictsEdits + totalReverts = it.totalReverts + maybePauseAndGetEndDate() + } + } } - fun getPageViewsObservable(response: MwQueryResponse): Observable { - val qLangMap = HashMap>() + suspend fun getPageViews(response: MwQueryResponse): Long { + val qLangMap = mutableMapOf>() for (userContribution in response.query!!.userContributions) { val descLang = userContribution.comment.split(" ") - .filter { "wbsetdescription" in it } - .flatMap { it.split("|") } - .getOrNull(1) - if (descLang.isNullOrEmpty()) { - continue + .filter { "wbsetdescription" in it } + .flatMap { it.split("|") } + .getOrNull(1) + if (!descLang.isNullOrEmpty()) { + qLangMap.getOrPut(userContribution.title) { mutableSetOf() }.add(descLang) } + } - qLangMap.getOrPut(userContribution.title) { HashSet() }.add(descLang) + val entities = ServiceFactory.get(Constants.wikidataWikiSite).getWikidataLabelsAndDescriptions(qLangMap.keys.joinToString("|")) + if (entities.entities.isEmpty()) { + return 0L } - return ServiceFactory.get(Constants.wikidataWikiSite).getWikidataLabelsAndDescriptions(qLangMap.keys.joinToString("|")) - .subscribeOn(Schedulers.io()) - .flatMap { entities -> - if (entities.entities.isEmpty()) { - return@flatMap Observable.just(0L) - } - val langArticleMap = HashMap>() - entities.entities.forEach { (entityKey, entity) -> - for ((qKey, langs) in qLangMap) { - if (qKey == entityKey) { - for (lang in langs) { - val dbName = WikiSite.forLanguageCode(lang).dbName() - if (entity.sitelinks.containsKey(dbName)) { - langArticleMap.getOrPut(lang) { ArrayList() } - .add(entity.sitelinks[dbName]?.title!!) - } - } - break - } + val langArticleMap = mutableMapOf>() + entities.entities.forEach { (entityKey, entity) -> + for ((qKey, langs) in qLangMap) { + if (qKey == entityKey) { + for (lang in langs) { + val dbName = WikiSite.forLanguageCode(lang).dbName() + if (entity.sitelinks.containsKey(dbName)) { + langArticleMap.getOrPut(lang) { mutableListOf() }.add(entity.sitelinks[dbName]?.title!!) } } - - val observableList = langArticleMap.map { (key, value) -> - val site = WikiSite.forLanguageCode(key) - ServiceFactory.get(site).getPageViewsForTitles(value.joinToString("|")) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - } - - Observable.zip(observableList) { resultList -> - resultList.filterIsInstance() - .mapNotNull { it.query } - .flatMap { it.pages!! } - .flatMap { it.pageViewsMap.values } - .sumOf { it ?: 0 } - } + break } + } + } + + withContext(Dispatchers.IO) { + langArticleMap.map { (key, value) -> + async { ServiceFactory.get(WikiSite.forLanguageCode(key)).getPageViewsForTitles(value.joinToString("|")) } + }.awaitAll() + .mapNotNull { it.query?.pages } + .flatten() + .flatMap { it.pageViewsMap.values } + .sumOf { it ?: 0 } + }.let { + return it + } } fun getRevertSeverity(): Int { diff --git a/app/src/main/java/org/wikipedia/util/FeedbackUtil.kt b/app/src/main/java/org/wikipedia/util/FeedbackUtil.kt index a4f614aeee6..3573a5b9e5b 100644 --- a/app/src/main/java/org/wikipedia/util/FeedbackUtil.kt +++ b/app/src/main/java/org/wikipedia/util/FeedbackUtil.kt @@ -11,6 +11,7 @@ import android.widget.Toast import androidx.annotation.LayoutRes import androidx.annotation.StringRes import androidx.core.app.ActivityCompat +import androidx.core.view.isVisible import androidx.fragment.app.Fragment import com.google.android.material.snackbar.Snackbar import com.skydoves.balloon.* @@ -119,8 +120,6 @@ object FeedbackUtil { val textView = snackbar.view.findViewById(com.google.android.material.R.id.snackbar_text) textView.setLinkTextColor(ResourceUtil.getThemedColor(view.context, R.attr.progressive_color)) textView.movementMethod = LinkMovementMethodExt.getExternalLinkMovementMethod(wikiSite) - val actionView = snackbar.view.findViewById(com.google.android.material.R.id.snackbar_action) - actionView.setTextColor(ResourceUtil.getThemedColor(view.context, R.attr.progressive_color)) return snackbar } @@ -165,9 +164,7 @@ object FeedbackUtil { topOrBottomMargin: Int = 0, aboveOrBelow: Boolean = false, showDismissButton: Boolean = false): Balloon { val binding = ViewPlainTextTooltipBinding.inflate(LayoutInflater.from(context)) binding.textView.text = text - if (showDismissButton) { - binding.buttonView.visibility = View.VISIBLE - } + binding.buttonView.isVisible = showDismissButton val balloon = createBalloon(context) { setArrowDrawableResource(R.drawable.ic_tooltip_arrow_up) diff --git a/app/src/main/java/org/wikipedia/views/LanguageScrollView.kt b/app/src/main/java/org/wikipedia/views/LanguageScrollView.kt index 768cecb0561..e471349ade0 100644 --- a/app/src/main/java/org/wikipedia/views/LanguageScrollView.kt +++ b/app/src/main/java/org/wikipedia/views/LanguageScrollView.kt @@ -16,6 +16,7 @@ import com.google.android.material.tabs.TabLayout.OnTabSelectedListener import org.wikipedia.R import org.wikipedia.WikipediaApp import org.wikipedia.databinding.ViewLanguageScrollBinding +import org.wikipedia.language.LanguageUtil import org.wikipedia.search.SearchFragment import org.wikipedia.util.ResourceUtil @@ -113,7 +114,7 @@ class LanguageScrollView constructor(context: Context, attrs: AttributeSet? = nu private fun updateTabLanguageCode(customView: View, languageCode: String?, @ColorInt textColor: Int?, background: Drawable?, @ColorInt backgroundColorTint: Int?) { val languageCodeTextView = customView.findViewById(R.id.language_code) if (languageCode != null) { - languageCodeTextView.text = languageCode + languageCodeTextView.text = LanguageUtil.formatLangCodeForButton(languageCode) ViewUtil.formatLangButton(languageCodeTextView, languageCode, SearchFragment.LANG_BUTTON_TEXT_SIZE_SMALLER, SearchFragment.LANG_BUTTON_TEXT_SIZE_LARGER) } textColor?.let { languageCodeTextView.setTextColor(it) } diff --git a/app/src/main/java/org/wikipedia/watchlist/WatchlistExpiryDialog.kt b/app/src/main/java/org/wikipedia/watchlist/WatchlistExpiryDialog.kt index e8bd05ea3c7..8f85fb73e77 100644 --- a/app/src/main/java/org/wikipedia/watchlist/WatchlistExpiryDialog.kt +++ b/app/src/main/java/org/wikipedia/watchlist/WatchlistExpiryDialog.kt @@ -9,7 +9,6 @@ import android.widget.ImageView import android.widget.TextView import androidx.core.os.bundleOf import com.google.android.material.bottomsheet.BottomSheetBehavior -import org.wikipedia.R import org.wikipedia.activity.FragmentUtil import org.wikipedia.databinding.DialogWatchlistExpiryBinding import org.wikipedia.page.ExtendedBottomSheetDialogFragment @@ -45,7 +44,7 @@ class WatchlistExpiryDialog : ExtendedBottomSheetDialogFragment() { override fun onStart() { super.onStart() - BottomSheetBehavior.from(requireView().parent as View).peekHeight = DimenUtil.roundedDpToPx(DimenUtil.getDimension(R.dimen.navTabDialogPeekHeight)) + BottomSheetBehavior.from(requireView().parent as View).peekHeight = DimenUtil.displayHeightPx } override fun onDestroyView() { diff --git a/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.kt b/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.kt index 0c4e4b065be..0fb29d4f30b 100644 --- a/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.kt +++ b/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.kt @@ -50,7 +50,7 @@ class WidgetProviderFeaturedPage : AppWidgetProvider() { val intent = Intent(context, PageActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK - intent.putExtra(PageActivity.EXTRA_PAGETITLE, pageTitle) + intent.putExtra(Constants.ARG_TITLE, pageTitle) intent.putExtra(Constants.INTENT_FEATURED_ARTICLE_FROM_WIDGET, true) val pendingIntent = PendingIntentCompat.getActivity(context, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT, false) diff --git a/app/src/main/res/color/color_state_nav_tab.xml b/app/src/main/res/color/color_state_nav_tab.xml new file mode 100644 index 00000000000..a8d507352c1 --- /dev/null +++ b/app/src/main/res/color/color_state_nav_tab.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/color/color_state_nav_tab_dark.xml b/app/src/main/res/color/color_state_nav_tab_dark.xml deleted file mode 100644 index 6d79f0c88b3..00000000000 --- a/app/src/main/res/color/color_state_nav_tab_dark.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/color/color_state_nav_tab_light.xml b/app/src/main/res/color/color_state_nav_tab_light.xml deleted file mode 100644 index ac1cefc21b4..00000000000 --- a/app/src/main/res/color/color_state_nav_tab_light.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_single_web_view.xml b/app/src/main/res/layout/activity_single_web_view.xml new file mode 100644 index 00000000000..a1395dc8d1d --- /dev/null +++ b/app/src/main/res/layout/activity_single_web_view.xml @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_link_preview.xml b/app/src/main/res/layout/dialog_link_preview.xml index e7417b859d7..a1304ee6ebf 100755 --- a/app/src/main/res/layout/dialog_link_preview.xml +++ b/app/src/main/res/layout/dialog_link_preview.xml @@ -5,8 +5,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="bottom" - app:behavior_peekHeight="@dimen/bottomSheetPeekHeight"> + android:layout_gravity="bottom"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_insert_media_settings.xml b/app/src/main/res/layout/fragment_insert_media_settings.xml index dc5d381f4ca..0e95f78e0f1 100644 --- a/app/src/main/res/layout/fragment_insert_media_settings.xml +++ b/app/src/main/res/layout/fragment_insert_media_settings.xml @@ -6,7 +6,7 @@ android:id="@+id/insertMediaPreviewContainer" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?android:windowBackground" + android:background="?attr/paper_color" android:orientation="vertical" android:visibility="gone" tools:visibility="visible"> @@ -38,6 +38,7 @@ tools:visibility="visible"> + android:textColor="?attr/placeholder_color"/> diff --git a/app/src/main/res/layout/fragment_page.xml b/app/src/main/res/layout/fragment_page.xml index a4dfe6f52db..5728445defb 100644 --- a/app/src/main/res/layout/fragment_page.xml +++ b/app/src/main/res/layout/fragment_page.xml @@ -43,7 +43,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" - android:layout_marginBottom="?attr/actionBarSize" /> + android:layout_marginBottom="@dimen/nav_bar_height" /> - - + android:layout_height="match_parent" /> - - - - - - - - - - - + android:layout_gravity="bottom" + android:background="?attr/paper_color"> + + - + + + + + diff --git a/app/src/main/res/layout/fragment_preview_summary.xml b/app/src/main/res/layout/fragment_preview_summary.xml index 5586767e49e..6ff48f3a590 100644 --- a/app/src/main/res/layout/fragment_preview_summary.xml +++ b/app/src/main/res/layout/fragment_preview_summary.xml @@ -68,8 +68,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/preview_edit_minor_edit" - android:textColor="?attr/primary_color" - android:buttonTint="?attr/progressive_color"/> + android:textColor="?attr/primary_color"/> + android:textColor="?attr/primary_color"/> diff --git a/app/src/main/res/layout/item_search_no_results.xml b/app/src/main/res/layout/item_search_no_results.xml index 3b4b541a9b6..b6c906765ac 100644 --- a/app/src/main/res/layout/item_search_no_results.xml +++ b/app/src/main/res/layout/item_search_no_results.xml @@ -28,11 +28,13 @@ diff --git a/app/src/main/res/layout/view_custom_language_tab.xml b/app/src/main/res/layout/view_custom_language_tab.xml index ac62bc4fc7e..46ffe483a06 100644 --- a/app/src/main/res/layout/view_custom_language_tab.xml +++ b/app/src/main/res/layout/view_custom_language_tab.xml @@ -9,10 +9,12 @@ diff --git a/app/src/main/res/layout/view_description_edit.xml b/app/src/main/res/layout/view_description_edit.xml index 18adaa8f8ec..7ae63b26338 100644 --- a/app/src/main/res/layout/view_description_edit.xml +++ b/app/src/main/res/layout/view_description_edit.xml @@ -4,7 +4,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:background="@android:color/white" tools:orientation="vertical" tools:parentTag="android.widget.LinearLayout"> @@ -70,153 +69,167 @@ - - - + android:layout_height="match_parent"> - + + + android:layout_height="match_parent" + android:orientation="vertical"> - + android:layout_height="0dp" + android:layout_weight="1"> - - - - - - - - + android:orientation="vertical"> - - - + + - - + + + android:maxLines="4" + android:textColor="?attr/primary_color" + android:textSize="16sp" + tools:text="Lorem ipsum" /> - - + - - + - - - - - + + + + + + + + + + + + + + + + + + - + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/view_plain_text_tooltip.xml b/app/src/main/res/layout/view_plain_text_tooltip.xml index 147daa6dfaf..f32e6371418 100644 --- a/app/src/main/res/layout/view_plain_text_tooltip.xml +++ b/app/src/main/res/layout/view_plain_text_tooltip.xml @@ -8,28 +8,20 @@ - + - - - - + style="@style/App.Button.Secondary" + android:minWidth="88dp" + android:text="@string/onboarding_got_it"/> diff --git a/app/src/main/res/layout/view_watchlist_main_tooltip.xml b/app/src/main/res/layout/view_watchlist_main_tooltip.xml index 907e3712af3..281a96c8835 100644 --- a/app/src/main/res/layout/view_watchlist_main_tooltip.xml +++ b/app/src/main/res/layout/view_watchlist_main_tooltip.xml @@ -5,7 +5,7 @@ android:orientation="vertical" android:padding="16dp"> - - @@ -60,8 +61,8 @@ Prikaži na mapi Pročitaj na drugom jeziku Dostupan na drugim jezicima (%d) - Objavljivanjem izmena, prihvatate <a href=\"%1$s\">uslove korišćenja</a> i neopozivo objavljivanje svojih doprinosa pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. - Objavljivanjem izmena, prihvatate <a href=\"%1$s\">uslove korišćenja</a> i neopozivo objavljivanje svojih doprinosa pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. Izmene će biti pripisane IP adresi vašeg uređaja. Ako se <a href=\"https://#login\">prijavite</a>, imaćete veću privatnost. + Objavljivanjem izmena, prihvatate <a href=\"%1$s\">uslove korišćenja</a> i neopozivo objavljivanje svojih doprinosa pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. + Objavljivanjem izmena, prihvatate <a href=\"%1$s\">uslove korišćenja</a> i neopozivo objavljivanje svojih doprinosa pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. Izmene će biti pripisane IP adresi vašeg uređaja. Ako se <a href=\"https://#login\">prijavite</a>, imaćete veću privatnost. Jezici Vikipedije Pretražite Ova stranica nije dostupna na drugim jezicima. @@ -181,7 +182,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.m.wikimedia.org/wiki/Terms_of_Use https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ + https://creativecommons.org/licenses/by-sa/4.0/deed.sr_LATN https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/sr Korišćene biblioteke diff --git a/app/src/main/res/values-b+tt+Cyrl/strings.xml b/app/src/main/res/values-b+tt+Cyrl/strings.xml index 5f6ab112347..6f135ec7d91 100644 --- a/app/src/main/res/values-b+tt+Cyrl/strings.xml +++ b/app/src/main/res/values-b+tt+Cyrl/strings.xml @@ -1,9 +1,12 @@ @@ -36,17 +39,38 @@ Кире кайтару Кире кайтару Кушымта көйләнмәләре + Эзләүне башлап өчен тамгачыкка яңадан басып алыгыз Тарих Сурәт: %s Бит: %s Викиҗыентык Викимәгълүмат Карау тарихын бушату + Бу сезнең барлык карау тарихыгызны бетерәчәк һәм хәзерге вакытта ачылган салынмаларны ябачак. Дәвам итәргәме? Әйе Юк Уртаклашу Уртаклашу %s битеннән юнәлтелде + Үзгәрешләр тарихы: %s + <b>м</b> %s + Мөхәррирләүнең эчтәлеге буш + Төзәтмәләрне эзләү яки фильтрлау + ... буенча фильтрлау: + Барлык төзәтмәләр (%s) + Кулланучылар төзәтмәләр (%s) + Аноним төзәтмәләр (%s) + Бот төзәтмәләре (%s) + %1$s-%2$s кадәрге күрсәткечләр + + %1$d %2$s белән мөхәррирләнә + %1$d %2$s белән мөхәррирләнә + + + %1$d %2$s (%3$s) белән мөхәррирләнә + %1$d %2$s (%3$s) белән мөхәррирләнә + + Үзгәрешләрне күбрәк күрү өчен href=\"#\">фильтрлар</a>ны үзгәртеп карагыз. Өстәмәләрне курсәтү Телне сайлау Биттә табу @@ -87,7 +111,10 @@ Харитада карау Башка телдә уку Башка %d телдә укып була - CC BY-SA 3.0 + CC BY-SA 4.0 + Үзгәрешләрне саклап, <a href=\"%1$s\">Куллану шартлары</a> белән ризалашасыз һәм үз материалларыгызны <a href=\"%2$s\">CC BY-SA 4.0</a> лицензиясе нигезендә кире кайтарылмаслык итеп бастырасыз. + Үзгәрешләрне саклап, <a href=\"%1$s\">Куллану шартлары</a> белән ризалашасыз һәм үз материалларыыгызны <a href=\"%2$s\">CC BY-SA 4.0</a> лицензиясе нигезендә кире кайтарылмаслык итеп бастырсыз. Үзгәрешләр җайланмагызның IP-адресына бәйле булачак. Әгәр дә <a href=\"https://#login\">системага керсәгез</a> конфиденциальлегегез күбрәк булачак. + Үзгәрешләр сезнең җайланманың IP-адресына бәйле булачак. Әгәр дә <a href=\"https://#login\">системага керсәгез</a>, конфиденциальлегегез күбрәк булачак. Википедия телләре Эзләү Бу битне башка телләрдә укып булмый. @@ -107,10 +134,17 @@ «%s» эчендә берни дә табылмаган Уку исемлекләрендә берни дә табылмаган Тарихта берни дә табылмаган + Автомат спамнан саклану өчен, түбәндәге сүзләрне кертегез. + Сурәт күренмиме? <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Request_an_account\">Хисап язмасын соратырга</a> + Өстә күрсәтелгән сүзләрне кабатлагыз + CAPTCHAны кертегез + Яңадан йөкләү өчен CAPTCHAга басыгыз. Википедиягә керү Кулланучы исеме Серсүз Серсүз + Ике факторлы аутентификация коды + Ике факторлы аутентификация таләп ителә! Зинһар, төп гамәлгә кире кайтыгыз, үзегезнең 2FA токены ярдәмендә системага керегез һәм аннан соң омтылышны кабатлагыз. Керү Керү Керү @@ -125,81 +159,436 @@ Саклау һәм керү Чыгу Сез чыктыгыз + Хисап язмагыз хәзерге вакытта системага кергән барлык җайланмалардан да чыгачак. Сез дәвам итәргә телисезме? Кире алу Сез чыктыгыз + Сез Википедиядән чыктыгыз. Яңадан системага керергә телисезме? Керү Кире алу + Күптән түгел генә каралган мәкаләләр юк. + Монда укыганнарыгызны күзәтеп торыгыз. + Тарихтагы кайбер мәкаләләрне оффлайн карау мөмкин түгел. + Ирекле энциклопедияне үз телегездә эзләгез һәм укыгыз + Википедиядә башка телләрдә эзләү + Сайланган элементларны бетерергә + <big>W</big>ИКИПЕДИ\n<big>A</big> Кулланучы исеме + Сезнең хисап язмагыз юкмы? Википедиягә кушылу Серсүзегезне оныттыгызмы? + Сезнең хисап язмагыз бармы инде? Хисап язмасын төзү Тикшерү бара Электрон почта (мәҗбүр түгел) Серсүзне кабатлагыз + Серсүз кулланучы исеме белән туры килә алмый Серсүзләр туры килмиләр Яраксыз электрон почта адресы + Кулланучы исемендә рөхсәт ителмәгән символлар + Серсүз ким дигәндә 8 символдан торырга тиеш + Хисап язмасын төзеп булмады Алга таба + Хисап язмасын электрон почта адресыннан башка төзергәме? + Электрон почта адресы мәҗбүри булмаса да, без аны <b>катгый рәвештә кулланырга киңәш итәбез</b>, чөнки әгәр дә сез үзегезнең серсүзегезне кайчан да булса югалтсагыз, электрон почта адресы хисап язмасын торгызу өчен кирәк. + Бу тәкъдим ителә, чөнки хисап язмасын торгызу өчен электрон хат таләп ителә. + Электрон почтадан башка дәвам итәргә + Электрон почта адресын өстәргә + Хисап язмасын булдырырга + \"%s\" кулланучының исеме укылмый. Зинһар, башка исем сайлагыз. + Гафу итегез, хәзерге вакытта сезнең IP-адресыгыз яңа хисап язмалары булдыру өчен блокланган. + https://en.wikipedia.org/wiki/Help:Мин блокланган Тулырак + Гомуми + Хисап язмасы + Википедия кушымтасы турында еш бирелә торган сораулар + Кушымта турында фикер белдерергә + Хисап язмасы булдырылды! + Синхронлаштыру + Мәгълүматларны куллану + Эксперименталь + Уку исемлеген синхронлаштыру + Укыр исемлегеннән мәкаләләр йөкләү + Википедиядә үзегезнең хисап язмагызда уку исемлекләрен саклап, аларны төрле җайланмаларда синхронлаштырыгыз. + Википедиядә үзегезнең хисап язмагызда - «%s» - уку исемлекләрен саклап, аларны төрле җайланмаларда синхронлаштырыгыз. + \"%s\"дан укуның синхронлаштырылган исемлекләрен алырга + Бу бетерелгән саклагычтан укуның барлык элеккеге синхронлаштырылган исемлекләрен тулысынча юк итәчәк. Сезнең \"%s\" хисап язмасыннан барлык синхронлаштырылган исемлекләрне бетерергәме? + Конфиденциальлек + Куллану турында хәбәр җибәрергә + Викимедиага, кушымтаны яхшырак итү өчен, аны ничек куллануыгыз турында мәгълүмат җыярга рөхсәт итегез + Өзеклекләр турында хәбәр җибәрергә + Без сезнең өзеклекне тикшерә, хатаны тизрәк һәм җиңелрәк төзәтә алсын өчен, кушымтага өченче хезмәт күрсәтүчегә автомат рәвештә өзеклек турында хисап җибәрергә рөхсәт итегез. + Блокланган доменнарга (%s) сылтамалар табылды. Зинһар, аларны бетерегез һәм яңадан кабатлап карагыз. + Фильтрлар тарихы + Бу сылтаманы күрсәтеп булмады + Бу бит өлешчә сакланган. + Бу бит тулысынча сакланган. + Бу бит түбәндәге дәрәҗәләрдә саклана: %s + Кызганычка каршы, хәзерге вакытта сезнең хисап язмагызның бу битне мөхәррирләү өчен хокуклары җитәрлек түгел. + Кызганычка каршы, хәзерге вакытта бу битне аноним рәвештә мөхәррирләргә ярамый. Бу бит якланган + Күзәтү исемлегенә өстәргә + Сезне кызыксындырган мәкаләләр белән нәрсә булганын күзәтегез. Мәкаләдәге үзгәрешләрне карау өчен, өстәлмә менюга басыгыз һәм <b>Күзәтү исемлегенә өстәргә</b>не сайлагыз. Көйләнмәләр Көйләнмәләр + Википедия кушымтасы турында Яшеренлек сәясәте Куллану шартлары https://tt.wikipedia.org/wiki/Википедия:Turında + https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/tt#Оффлайнда_уку_һәм_мәгълүматлар + https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/tt + https://en.wikipedia.org/wiki/Wikipedia:Request_an_account + https://creativecommons.org/licenses/by-sa/4.0/ + https://creativecommons.org/publicdomain/zero/1.0/ + https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/tt + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags + Кулланыла торган китапханәләр + Авторлар + <a href=\"https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/Android\">Команда бите</a> Тәрҗемәчеләр + Бу кушымта ирекмәннәр тарафыннан <a href=\"https://translatewiki.net\">translatewiki.net</a> адресы буенча тәрҗемә ителде. + Лицензия + Башлангыч кодны <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> and <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> бүлегендә <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 License\n</a> карарга була. Әгәр дә башкасы күрсәтелмәсә, эчтәлек <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 License\n</a> сылтамасы буенча бар. + <a href=\"https://wikimediafoundation.org/\">Викимедиа Фонды</a> продукты Кушымта турында + Бит үзгәртелгән. Сез үзгәрешләрне сакламыйча чыгарга телисезме? Әйе Юк Тыелган + Бу викида редакцияләү өчен сезнең кулланучы хисап язмасы блокланган. + Сезнең IP-адресыгыз мөхәррирләү өчен блокланган. + Сез битне ничек яхшырттыгыз? Алга таба Саклау Алдан карау Кире кайтару Кабатлау + Кире кайтарырга + + %s байт + %s байт + Якынайту Ерагайту + Хата төзәтелгән + Грамматика төзәтелгән + Сылтамалар өстәлде Башка + Битне яхшыртуның башка ысуллары + Мөхәррирләү конфликты + Бит башка кулланучы тарафыннан үзгәртелгән һәм сезнең мөхәррирләүгә каршы килә.\nЗинһар, үзегезнең үзгәрешләрне йөкләп алыгыз, биткә кире кайтыгыз һәм яңартыгыз, шуннан соң мөхәррирләү омтылышын кабатлагыз. + Хәбәрнамәне мөхәррирләү + Зинһар, редакцияләгәнче укып чыгыгыз + Үзгәрешләр турында хәбәрнамәләрне автомат рәвештә күрсәтергә + Бу мәкаләнең үзгәрешләре турында хәбәрнамәне карау өчен төймәгә басыгыз + Киләсене табарга + Алдагысын табарга + Бу беренче очрак + Бу соңгы вакыйга + Мәкалә фонлы салынмада ачык + Бу конструктив булмаган редакцияләү булырга мөмкин. Сез аны бастырырга телисезме? + Сез бу үзгәрешне бастыра алмыйсыз. Зинһар, кире кайтыгыз һәм аны үзгәртегез. + Автомат фильтр бу үзгәрешне потенциаль конструктив булмаган дип билгели. Ул түбәндәге бер яисә берничә элементны үз эченә ала: <br /><br /> - Баш хәрефләр белән кертү<br /> - Мәкаләләрне бетерү яисә спам тарату<br /> - Туры килми торган тышкы сылтамалар яки сурәтләр<br />. Кабатлана торган символлар. + Автомат фильтр бу үзгәрешне потенциаль конструктив булмаган яисә потенциаль вандаллык дип билдәләде.<br /><br />Википедия — ул энциклопедия, һәм монда нейтраль, күренеп торган эчтәлек кенә булырга мөмкин. Охшаш битләр Сез «%s» исегездә тоттыгыз? + Күптән түгел булган эзләүләр: + Нәтиҗәсез + + 1 нәтиҗә + %d нәтиҗәләр + + Күптән түгел булган эзләүләрне бетерергә + Сез эзләү тарихын чистартырга телисезме? Әйе Юк + Веб-битне ачу мөмкин булмады (браузер өчен кушымта табылмады). + Кыска фактлар + Күбрәк мәгълүмат Ябу + Википедиянең сайланган бите + Көннең сайланган бите: Википедиядә эзләү + Аңлатмалар табылмады. + Яңа альфа-яңарту бар + Йөкләү өчен басыгыз Ябу Сурәтләрне күрсәтү + Битләрдә сурәтләр йөкләүне кабызыгыз яисә өзеп куегыз. Әгәр дә сезнең интернетка тоташу әкрен барса яисә тариф планыгыз чикле булса, түбәндәге флагны алыгыз. Wi-Fi аша гына күчереп алырга + Мобиль мәгълүмат кулланып йөкләүне расларгамы? + Сезнең көйләүләрегездә \"Wi-Fi аша гына йөкләү\" кабызылган. Бу йөкләү өчен мобиль тариф планын гына куллануны рөхсәт итәргәме? Рөхсәт итү + Җентеклерәк + Бу мәкалә турында + Сурәт битенә күчәргә + Сурәтне чыгарырга мөмкин булмады. + %s өчен лизенция Уртаклашу + Сурәт белән бүлешеп булмады: %s Файл күчереп алына… + Файл сакланды. + Видеоны уйнатып булмый. + Сурәтләрне йөкләү өчен сезнең җайланма саклагычына яздыруга рөхсәт кирәк. + Сурәт язмасын үзгәртү Сурәт язмасын өстәү + Сурәткә (%s) язма өстәү + Файлны саклау мөмкин түгел + Ачу өчен басыгыз Creative Commons рөхсәтнамәсе Captcha сурәте + Намуслы куллану + Йөкләүче билгесез + Галереяны автоном режимда карау мөмкин түгел + Ябарга + Яңа кушымта + Барлык кушымталарны ябарға + Сез барлык кушымталарны да ябарга телисезме? Әйе Юк + Кушымтаны ябырға + Кушымта ябык. + %s ябык. + Барлык кушымталар да ябык. + Уку исемлегенә өстәргә + Уку исемлегенә мәкаләне йөкләү өчен кыстыргыч билгесенә басыгыз. + Браузердагы битне карарга + Мәкалә исеменә тиз керү + Сез мәкаләнең исемен ачар, шулай ук төрле бүлекләренә тиз арада күчү өчен, әлеге әйләндерү төймәсенә басып һәм күчереп, сул кулыгыз белән сулга таба йөртә аласыз. + Хәзер сез кушымтада Википедиянең берничә телендә эзли һәм укый аласыз.\n\nӨстәмә телләр өстәр өчен тамгага басыгыз. + Сервер җавабы дөрес форматланмаган. + Билгесез хата килеп чыкты. Хәбәр: «%s» + Адрес алмашу буферына күчерелгән. + Текст алмашу буферына күчерелгән. + Мәкаләне укырга + Фикер алышу битен ачарга + Охшаш битләрне карарга + Бу баш исем берничә биткә карый: + Уку исемлегенә өстәргә + Мәкалә автоном режимда йөкләнә алмый. + Киңәш: Уку исемлегенә мәкалә өстәгез һәм ул сез интернетка керү белән йөкләнәчәк. + Сез бу мәкаләнең офлайн-версиясен укыйсыз, ул %s сакланган. + Юнәлеш алырга + Маршрут төзи торган бер генә кушымтаны да табып булмады. + Лентаны тикшерергә + Сылтамаларны алдан карау + \"Күзәтү\" лентасын көйләргә + Сылтамалар буенча күчеп, мәкаләләрне тиз алдан карау + Таблицаларны яшерергә + Мәкаләләрдә мәгълүмат бокслары, сылтамалар һәм искәрмәләр кебек таблица блокларын автомат рәвештә яшерергә. + Иганә итү + Кызганычка каршы, тавышны тану мөмкин түгел. + Урынны билгеләү хезмәтләре өзеп куелган. Кабызу + Сезнең белән янәшәдәге урыннарны күрү өчен урынны билгеләүгә рөхсәтне кабызыгыз. Кабызу + Android System WebView хәзерге вакытта яңартыла. Омтылышны соңрак кабатлагыз. + + %d сайланган + %d сайланган + + %d сайланган + Хата бар + яшерергә + Бу бит юк + Википедиядә шул ук исемдәге <a href=\"%1$s\">кулланучы бите</a> юк. Кагыйдә буларак, бу битне <b>%2$s</b> төзәтергә һәм мөхәррирләргә тиеш. Әгәр дә сез шикләнәсез икән, \"%3$s\" барлыгына ышаныгыз. + Интернетка тоташып булмый + Википедиягә тоташып булмый. Интернет челтәренә тоташуны тикшерегез һәм омтылышны соңрак кабатлагыз. + %s искәрмәсе + Искәрмәләр + Сурәтнең караңгылатылуы (караңгы темада) + Офлайн-эчтәлек өстенлеге + Мәкаләнең соңгы версиясен һәрвакыт йөкләү урынына, автоном режимда булган мәкаләләрне йөкләп, мәгълүмат куллану трафигын саклагыз. + Туры килү системасы темасы + Әгәр башкасы күрсәтелмәсә, эчтәлек $1 нигезендә бар. + Яңа салынма + Барлык салынмаларны сакларга + Сезнең кулланучы исеме яки IP-адресыгыз блокланган + Блоклау <a href=\"%2$s\">%1$s</a> кулланучы тарафыннан ясалган + Сәбәбе түбәндә күрсәтелгән: %s + Блокның башы: %s + Блокның гамәлдә булу вакыты: %s + Блоклау идентификаторы: %s + Сез блоклау турында фикер алышу өчен <a href=\"%2$s\">%1$s</a> яки башка <a href=\"https://en.wikipedia.org/wiki/Википедия: идарәчеләр\">идарәче</a> белән элемтәгә керә аласыз. + Үзегезнең кораллар панелен көйләгез + Сез блоклау турында фикер алышу өчен <a href=\"https://en.wikipedia.org/wiki\n/Википедия:идарәчеләр\">идарәче</a> белән элемтәгә керә аласыз. + Кушымта хатасы + Гафу үтенәбез, Википедия кушымтасында хата барлыкка килде һәм ул ябылды.\n\nБаштан башларга яки чыгарга телисезме? + Яңадан башларга Чыгу + Сакларга + Тел + Эзләргә + Тема + Эчтәлек Үзгәртергә… + Мәкалә тасвирламасын үзгәртергә + Кереш сүзне мөхәррирләргә Күренеш Аксыл Карасу Кара Сепия Мисал булырлык текст + Мәкаләләр укыганда кулланыла торган текстның размерын үзгәртү өчен слайдерны күчерегез. Кушымтаның калган өлешендә текстның зурлыгын билгеләү өчен, система текстының зурлыгын үзгәртегез. + Кушымта темасы + Кушымтаның кара төсле темасын куллануга күчәргә + Текстның размерын арттырырга + Текстның размерын киметергә + %s (Программа көйләгән буенча) + Шрифт + Уку + Мөхәррирләү + Укуның фокуслау режимы + Әйләндерү вакытында мөхәррирләү функцияләрен һәм аскы кораллар панелен яшерә + Синтаксисның аерым төс белән бирелүе + Юлларның номерларын күрсәтергә + Бер киңлектәге шрифт кулланырга + Кертү вариантларын күрсәтергә + Сакланган Уку исемлегенә өстәү + Уку исемлегенә күчәргә Яңаны төзү + \"%s\" уку исемлеге инде бар. + %1$s %2$s өстәлде. + %s сакланган. Сез аны исемлеккә өстәргә телисезме? + %1$s %2$s күчерелгән. + Барысы да яхшы! %1$s үз эченә %2$s ала. + Барысы да яхшы! %s барлык мәкаләләрне дә үз эченә ала. + Исемлекне карарга + Исемлеккә өстәргә + + 1 мәкалә + %d мәкаләләр + + + 1 мәкалә, %2$.2f MB + %1$d мәкаләләр, %2$.2f MB + + + %1$d автоном режимда булган 1 мәкалә + %2$d мәкаләсеннән %1$d мәкаләсе автоном режимда бар + + + %1$d автоном режимда булган 1 мәкалә, %3$.2f MB + %2$d мәкаләсеннән %1$d мәкаләсе автоном режимда бар, %3$.2f MB + + Сортларга аеру + ...буенча сортларга аеру + Исем буенча сортларга аеру + Исем буенча сортларга аеру (кире тәртиптә) + Өстәлү датасы буенча сортларга аеру (иң яңалары) + Өстәлү датасы буенча сортларга аеру (иң искеләре) + Төзү датасы буенча сортларга аеру (иң яңалары) + Төзү датасы буенча сортларга аеру (иң искеләре) + Исемлекне бетерергә + Экспортлау исемлеге + Сайларга + Сайлауны гамәлдән чыгарырга + Уку исемлеген экспортлау өчен сезнең җайланмада саклагычка яздыруга рөхсәт таләп ителә. + Исем/тасвирламаны үзгәртергә + Автоном режимнан бетерергә + Автоном режим өчен сакларга + Автоном режимнан барысын да бетерергә + Барысын да автоном режим өчен сайларга + Башка исемлеккә өстәргә + Башка исемлеккә күчәргә + Уку өчен минем исемлек + Бу исемлекнең исеме + Тасвирлама (мәҗбүри түгел) + %s исемлектән бетерелгән + %1$s %2$s исемлегеннән бетерелгән + + %d мәкалә исемлектән бетерелгән + %d мәкаләләр исемлектән бетерелгән + + + %d мәкаләсе бетерелде %s + %d мәкаләләре бетерелде %s + + + %d исемлек бетерелде + %d исемлекләр бетерелде + + Программа көйләгән исемлек (%s) бетерелә алмый + %1$s бетерелгән. Программа көйләгән исемлек (%2$s) бетерелә алмый. + Исемлекләр бетерелде. Программа көйләгән исемлек (%s) бетерелә алмый. + %s (Википедияне уку исемлеге).json + Википедияне уку исемлекләре (%s һәм аннан да күбрәк).json + Исемлектән %d мәкаләләре бетерелгән. + Исемлектән %s бетерелгән. Кире кайтару + %s бетерелгән + Әлегә сакланган битләр юк + Автоном режимда булганда да сонрак уку өчен исемлеккә мәкаләләр өстәгез. + Бу исемлеккә өстәлгән мәкаләләрегез юк. + Автоном режимда бар + Бу мәкаләне автоном режимда куллана алырлык итеп ясагыз. + Башка уку исемлегенә күчәргә + Башка уку исемлегенә күчәргә + %s исемлегеннән башкасына күчәргә: + %s бетерергә + Уку исемлекләреннән бетерергә Сайлау + Автоном режимнан бетерергә + Мәкалә берничә исемлектә күрсәтелә + %s башка барлык уку исемлекләре өчен автоном режимда кулланылмаячак: + Уку исемлеген синхронлаштыруны кабызыргамы? + Уку исемлекләрендә сакланган мәкаләләрне хәзер сезнең Википедиядәге хисап язмагыз белән синхронлаштырып була. <a href=\"https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Synced_reading_lists\">Тулырак</a> + Уку исемлекләрен хәзер җайланмалар арасында синхронлаштырырга мөмкин. Үзегезнең Википедиялагы хисап язмасына керегез һәм исемлекләрегезне сакларга рөхсәт бирегез. <a href=\"https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Synced_reading_lists\">Тулырак</a> + Синхронлаштыруны кабызырга + Уку исемлекләрен синхронлаштырырга + Уку исемлекләрен хәзер төрле җайланмаларда синхронлаштырырга мөмкин. Үзегезнең Википедия хисап язмасына керегез һәм сезнең исемлекләрне сакларга рөхсәт бирегез. + Системага керегез / Википедиягә кушылыгыз + Хәзер түгел Әйе Юк + Мәкалә йөкләнә һәм тәмамлангач, ул автоном режимда булачак. + %1$d мәкаләсе %2$s мәкаләсенә өстәлгән + %1$d мәкаләсен %2$s мәкаләсенә күчерергә + Сез %s бетерергә телисезме? + Сайланган исемлекне (исемлекләрне) бетерергәме? + + сез %d исемлеген бетерергә телисезме? + сез %d исемлекләрен бетерергә телисезме? + + Синхронлаштыруны кабызу өчен системага керегез + Сезнең уку исемлекләрен хисап язмагызда сакларга рөхсәт итү өчен системага керегез. Кире алу Керү + Уку исемлеген синхронлаштыру өзеп куелган + Сезнең хисап язмасы өчен уку исемлеген синхронлаштыру өзеп куелган һәм системага кергән җайланмаларда сакланган мәкаләләрнең резерв күчермәләре башка ясалмый. Көйләүләрдә уку исемлеген синхронлаштыруны кабызыгыз. Ярар Көйләнмәләр + Уку исемлеген синхронлаштыруны кабызыгыз? + Уку исемлегендә сакланган мәкаләләр хәзер сезнең Википедиядәге хисап язмагыз белән синхронлашырга мөмкин. <a href=\"#faq\">Тулырак</a> + Миңа моны кабат күрсәтмә + Синхронлаштыруны кабызырга Юк, рәхмәт Сакланган + Сезнең сакланган мәкаләләр өчен программа көйләгән исемлек + Мәкаләләр җыелмасын саклагыз + Сәяхәт итү урыннары, яраткан темалар һәм башка бик күп нәрсәләр буенча исемлекләр төзегез + %1$s (кулланучы тарафыннан булдырылды) + Чикләүләр бар: уку өчен исемлеккә %d мәкалә керә.\nБу чикләүдән артыграк гамәлдәге исемлекләр берничә исемлеккә бүленгән. + Бу исемлеккә күчү мөмкин түгел. Сез \"%1$s\" исемлегендә %2$d мәкаләләр чигенә җиттегез. + Бу исемлеккә өстәү мөмкин түгел. Сез \"%1$s\" исемлегендә %2$d мәкаләләр чигенә җиттегез. + Башка исемлек төзеп булмый. Сез бер хисап язмасы өчен 100 исемлекнең чигенә җиттегез. Яңа исемлекне төзү + Импортлау исемлеге + ... буенча сортларга аеру + Синхронлаштыруны яңарту + Системага керегез / теркәлегез + + Хәзер бу мәкалә автоном режимда булачак. + Хәзер бу мәкаләләр автоном режимда булачак. + + + Бу мәкалә башка автоном режимда булмаячак. + Бу мәкаләләр башка автоном режимда булмаячак. + + Синхронлаштырылган уку исемлекләре + Соңгы синхронлаштыру: %s Ярар Ярар Кире алу @@ -207,41 +596,465 @@ Кире алу Кире алу Ярар + Бетерергә + Уку исемлеге: %s + Экспортланган уку исемлеге (исемлекләре) + %d уку исемлеге (исемлекләре) сезнең йөкләүләр папкасына \'reading_lists export.json\' буларак экспортланган. + Уку исемлекләре түбәндәгегә экспортланган: \'reading_lists_export.json\' + Экспортларга + Импортлау өчен файлны сайлагыз + Уку исемлекләрен импортлап булмады + Экспортлау өчен исемлек(ләр)не сайлагыз + Уку өчен экспортланган исемлек(ләр) + + Уку исемлеген экспортлау хатасы + Уку исемлекләрен экспортлау хатасы + + + Импортланган уку исемлеге + Импортланган уку исемлекләре + + Гомуми исемлек + Сакларга + Исемлекне сакларга + Исемнәрне санап чыгыгыз һәм саклап калу өчен мәкаләләрне сайлагыз. + Башисем + Кире алу + Сакларга + Сакланган уку исемлеге + Карарга Көйләнмәләр Кире кагылган төзәтмә + Мәкаләләрне йөкләргә Күчереп алу прогрессы Тыныш + Яңадан торгызырга Кире алу + Уку исемлекләрен синхронлаштыру + Уку исемлекләрен синхронлаштыру барышы + Сезнең %d укылмаган хәбәрнамәгез бар + + Мәкаләне йөкләү + Мәкаләләрне йөкләү + + + %1$d мәкаләне йөкләү… + %1$d мәкаләне йөкләү… + + + %1$d мәкалә калды + %1$d мәкалә калды + + + Уку исемлеген синхронлаштыру + Уку исемлекләрен синхронлаштыру + + + %1$d исемлекнең синхронлаштырылуы... + %1$d исемлекләрнең синхронлаштырылуы... + + + %1$d исемлек калды + %1$d исемлек калды + + Википедия хәбәрнамәләре + Хәбәрнамәләр + Хәбәрнамәләр (архивлаштырылган) + Эзләү турында хәбәрнамәләр + Укылмаганнарны карау + Архивлаштырылганны карау + Хәбәрнамәләрне көйләү + Укылган дип билгеләгез һәм архивлагыз + + Хәбәрнамә архивланган + %d хәбәрнамәләр архивланган + + Хәбәрнамәләрне кабызырга + Кабызырга + Хәзер түгел + Яңы хәбәрнамәләр юк! + Архивланган хәбәрнамәләрне карау + Хәбәрнамәләрне көйләү + Укылмаган дип билгеләргә + Барысын да укылган дип билгеләргә + Җавап бирергә + %s исемле кулланучыга җавап җибәрү... + Җавап бастырылган. + Автомат рәвештә җавапны җибәреп булмады. + %d укылган дип билгеләнгән + %d укылмаган дип билгеләнгән + + 1 укылган дип билгеләнгән + %d укылган дип билгеләнгән + + + 1 укылмаган дип билгеләнгән + %d укылмаган дип билгеләнгән + + Күзәтү исемлеге + Сораштырулар турында хәбәрнамәләр + Кушымтага фонлы режимда яңа хәбәрнамәләрне тикшерү өчен мәгълүматларны кулланырга рөхсәт итегез. + Кушымтадагы хәбәрнамәләрнең төрләре + Система + Системадан хәбәрләр + Чор + Төзәтмәләрнең билгеле бер санына ирешелгән + Рәхмәт + Кемдер сезгә төзәтү өчен рәхмәт әйтә Кире кайтару + Сезнең кертемнәрнең берсе кире кайтарылды + Системага керү + Системага кергәндәге гамәлләрегез + Искә алырға + Кемдер сезне биттә искә ала + Фикер алышу бите + Фикер алышу битләреннән хәбәрләр һәм җаваплар + Электрон хат алынды + Кемдер сезгә wiki аша электрон хат җибәрде + Кулланучы хокукларында үзгәрешләр + Сезнең кулланучы хокукларын үзгәрткәндә алынган + Сез ясаган мәкаләләргә сылтамалар + Сез ясаган биткә яңа сылтама ясаганда килеп чыга + Push-хәбәрнамәләр + Push-хәбәрнамәләрне көйләргә + Күрсәтү көйләүләре + Уку турында хәбәрнамәләрне яшерергә + Википедия + Википедиядән хәбәрнамәләр + Башка + Кушымтадан башка хәбәрнамәләр + Хәбәрнамәләрне фильтрларга + Хәбәрнамәләрне фильтрларга + Кушымта телләрен яңартырга + Күбрәк хәбәрнамәләрне күрү өчен %s бетерергә тырышыгыз + + %d фильтр + %d фильтрлар + + Барлык фильтрларны сайлагыз + Барысы + Искә алулар + Хәбәрнамәләрне эзләү яки фильтрлау + Хәбәрнамәләр фильтры + Укылган дип билгеләргә + Укылмаган дип билгеләргә + Укырга + Укылмаган + Барлык элементларны да тикшерегез + Барлык элементлардан да тамгаларны алыгыз + Вики-фильтр + Фильтр төре + Барлык \"вики\" + Барлык \"төрләр\" + %s фикер алышу бите + Бу функция автоном режимда кулланылмый + Укыганнар нигезендә + Рандомизатор + Очраклы мәкалә + Күбрәк очраклы мәкаләләр + Иң күп укылган + Күбрәк популяр мәкаләләр + %d мең + %d миллион + Башка очраклы мәкаләне йөкләгез + Бүген Википедиядә + Төп битне карарга + Көн сурәте + Йөкләргә + Уртаклашу + Бу картаны яшерергә + Карта яшерелгән. + Карта телләрен мөхәррирләү + Күп вариантлар + Викиҗыентыктан сайланган сурәт + Тикшерергә + Төп + Карта билгесе + Яңалыкларда + + кичә + %d көн элек + бүген + %s укылган Юк, рәхмәт + Эчтәлек автоном режимда йөкләнә алмый + Сайланган мәкалә Саклау + Лентаны көйләргә + Күренешне программа көйләгән буенча торгызу Барысын да күрсәтү Барысын да яшерү + Игьтибар итегез, Википедиянең барлык телләрендә карталарның барлык төрләре дә юк. Сайлаган телләрне көйләүләрдә мөхәррирләгез. + Агымдагы вакыйгалар турында мәкаләләр + Бу көнне тарихтагы вакыйгалар + Сезнең тарихтагы күптән түгел укылган мәкаләгә нигезләнгән тәкъдимнәр + Википедиядә көндәлек сайланган мәкалә + Бер көн эчендә иң күп каралган мәкаләләр + Викиҗыентыктан сайланган көн сурәте + Википедиянең бер көн эчендә сайланган эчтәлеге белән Баш бите + Уку өчен очраклы мәкаләләр булдырыгыз + Википедиягә эчтәлек өстәү буенча тәкъдимнәр + Сезнең \"Тикшеренүләр\" лентасында бернәрсә дә юк + Көйләргә Ярар Кире алу + <strong>Үзегезнең тикшеренүләр лентасын көйләгез</strong><br /><br />\nХәзер сез үзегезнең лентада нәрсә күрсәтергә кирәклеген, шулай ук сезнең яраткан эчтәлек төрләре өчен өстенлекләрне сайлый аласыз. Ярар Кире алу + Сез лентаның аскы өлешенә барып җиттегез. + Күбрәк йөкләргә + %s иң күп укылганнар + Өстәлмәләр + Мәкалә тасвирламасы Мәкалә Мәкалә тасвирламасы (%s) + Мәкаләнең тасвирламасы (%s) Сурәт тасвирламасы Сурәт язмасы Сурәт язмасы (%s) + Сурәт аңлатмасы (%s) Саклау Уку + Мәкалә тасвирламасын өстәргә + Мәкалә тасвирламасын тәрҗемә итәргә + Мәкалә тасвирламасын мөхәррирләү + Сурәткә аңлатма өстәргә + Сурәт аңлатмасын үзгәртергә + Сурәт аңлатмасын тәрҗемә итәргә Кире алырга + Мәгълүмат: мәкаләләрнең язмалары + Викимәгълүматлар турында + Викимәгълүматларда тасвирламалар язу буенча кулланма + Мәкалә тасвирламаларын мөхәррирләү белән һәрвакыт кызыксынганыгыз өчен рәхмәт! Зинһар, өстәмә төзәтмәләр кертү өчен Википедиядәге үз хисап язмагызга керегез. + Язма тасвирламасын үзгәрткәндә мин <a href=\"%1$s\">куллану шартлары</a> белән килешәм һәм шулай ук <a href=\"%2$s\">Creative Commons CC0</a> лицензиясе буенча үз материалларымны кире кайтарып булмаслык итеп бастырам. + Гадәттә юл хәрефеннән башланалар + Тавышлы язма + Мәкаләләрнең тасвирламалары турында тулырак + Сурәтләргә язмалар турында тулырак + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Article_descriptions + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_captions + Текст бик кыска. + Текст тыныш билгеләре белән тәмамланырга тиеш түгел. + Беренче сүз ялгызлык исем булмаса, юл хрефтән башлагыз. + Юл хәрефтән башларга тырышмагыз. + Текст көтелмәгән телдә язылган кебек. Телне %s эзләргә кирәк. + Сезнең тасвирлау теле %1$s булуына инаныгыз. Әгәр %2$s булса, сез бу кисәтүне игътибарсыз калдыра аласыз. + Тәкъдим ителгән тасвирламаларны күрсәтергә + Машина тәкъдим иткән мәкаләләрнең тасвирламаларын карагыз + Мәкалә тасвирламасы басылды! + Мәкалә тасвирламасы басылды! + Мәкалә тасвирламасы басылды! (%s) + Сурәткә язма басылды! + Сурәткә (%s) язма басылды! + Сүрәтләрнең теглары басылды! + Ошадымы бу? Безгә күбрәк өстәргә ярдәм итегез. + Сез әле яңа гына Википедияне барысы өчен дә яхшырак иттегез Тәмам Сез белдегезмә? + Сез шулай ук бу кушымтада мәкаләләрне мөхәррирли аласыз.Икенче тапкыр ^1 тамгасына басып, хаталарны һәм кечкенә җөмләләрне төзәтеп карагыз. + Мәкаләләрнең тасвирламалары + Укучыларга предметны беренче караштан ачыкларга ярдәм итү өчен мәкаләне кыскача бәян итә + Кыскача сөйләгез + Иң яхшы дигәндә - ике-унике сүздән торган бер юл + Мөхәррирли башларга + Башлап, мин бу функцияне зыянлы кулланмаска вәгъдә итәм. + Автомат язган җөмләләр + Җөмләләр машина ярдәмендә ясала, ә ирекле кешеләр яисә Викимедиа Фонды тарафыннан түгел + Кораллар панелен көйләргә + Үзегез иң файдалы дип санаган 5 ярлык ярдәмендә аскы кораллар панелен көйләгез. + Кораллар панеле + Меню + Үзегезнең яраткан элементларыгызны бирегә 👋 күчерегез + Программа көйләүләрен кире кайтарыгыз + Элементны күчерү өчен, күчерү тамгасын тотып торыгыз. + Элементның торышын үзгәртү өчен, аңа басыгыз һәм күчерегез + Мәкаләләрне тасвирларга + Анлатмалы сурәтләр + Сурәтләрне теглар белән билгеләгез + Күзәтеү мәкаләсенең тасвирламасы + Тасвирлама өстәргә + Тасвирламаны мөхәррирләү + Тәрҗемә өстәргә + Тәрҗемәне мөхәррирләргә + Башисем өстәргә + Башисемне мөхәррирләргә + Сурәткә аңлатманы карагыз + Минем кертемем + Бу файлның тасвирламасы юк + Кыска тасвирлама өстәп, мин <a href=\"%1$s\">куллану шартлары</a> белән килешәм һәм шулай ук <a href=\"%2$s\">Creative Commons CC0</a> лицензиясе буенча үз материалларымны кире кайтарып булмаслык итеп бастырам. + Сурәткә аңлатма өстәп, мин <a href=\"%1$s\">куллану шартлары</a> белән килешәм һәм шулай ук <a href=\"%2$s\">Creative Commons CC0</a> лицензиясе буенча үз материалларымны кире кайтарып булмаслык итеп бастырам. + Мәгълүмат + Мәкалә тасвирламасын өстәргә + Тасвирламасыз мәкаләләр төзегез + Сурәтләргә аңлатма өстәргә + Сурәтләргә җитмәгән кыска аңлатмалар өстәгез + Сурәт аңлатмасын тәрҗемә итәргә + Сурәткә аңлатманы башка телләргә тәрҗемә итәргә + Күптелле мөхәррирләр өчен өстәмә бурычлар + Әгәр дә сез бердән артык Википедия телендә укыйсыз һәм язасыз икән, тәрҗемә өчен биремнәр ачык. + Сез %d сурәт язмасын мөхәррирләгәнчегә кадәр блокланган. + Сез %d (тикшерелгән) мәкаләләр тасвирламасын мөхәррирләгәнчегә кадәр блокланган. + Минем өчен түгел + Телләр өстәргә + Сурәт + Автор + Автор + Чыганак + Лицензия Дата бер генә төзәтмә %d төзәтмә + Тәкъдим ителгән үзгәртүләр + Мәкаләләргә тасвирлама өстәргә + Мәкаләләргә (%s) тасвирлама өстәргә + Башларга + Сурәтнең (%s) аңлатмасы + Сурәт + Викиҗыентыктан файл + Автор + Теглар + Дата + Чыганак/Фотограф + Лицензияләү + Өстәмә мәгълүмат + Викиҗыентыктагы файл бите + Википедиядәге файл бите + Сурәткә теглар өстәгез Сурәт язмасын өстәү Сурәт язмасын өстәү (%s) + Карарга + Сурәткә аңлатма өстәргә + Сурәткә %s аңлатма өстәргә + Сурәт тегларын өстәгез + Сезнең мөхәррирләү тәҗрибәсе нинди иде? \nЗинһар, кушымтада мөхәррирләү буенча сораштыру узу өчен бер генә минут вакытыгызны сарыф итегез. + Сораштыруда катнашу + Өстәргә + Тәрҗемә итәргә + Сурәт аңлатмасы + Сурәт теглары + Бастырып чыгару + Бастырылды + Сурәтләрне билгеләү аларны эзләүне җиңеләйтә. + Сурәткә тегларны өстәп, сез Викиҗыентыкта - Википедия үз мәкаләләрен бизәү өчен куллана торган ирекле сурәтләр табарга ярдәм итәрсез. + Сурәткә сез сайлаган теглар гына өстәләчәк. + Сурәтне эзләүне җиңеләйтү өчен аңа кулланучылар тегларын өстәгез. + Туры килә торган тегларны өстәгез яки сайлагыз + Бастырылган теглар + Эзләү теглары + Бу сурәт өчен сез бернин дә тег сайламадыгыз + Рәсемнәргә сез сайлаган теглар гына өстәләчәк. Сайланмаган теглар кире кагылган дип билгеләнәчәк. Сез барлык тегларны кире кагылган дип билгеләргә телисезме? + Тег өстәргә + Бастырылмаган теглар сакланмаячак + Бу сурәтне зурайту өчен басыгыз. + %s, төзәтмәләр өчен рәхмәт. Түбәндә сез Википедиягә үз өлешегезне кертүнең күбрәк ысулларын таба аласыз. + <b>Сәлам %s</b>, түбәндә сез Википедияне яхшыртуга ярдәм итә торган берничә тиз һәм гади ысулны таба аласыз. Башлагач, үзегез ясаган аерманы күрерсез. Уңышлы мөхәррирләү сезгә! + Укучыларга аның мәгънәсен һәм эчтәлеген аңларга ярдәм итү өчен сурәтне тасвирлагыз. + Укучыларга бер күрүдә предметны ачыкларга ярдәм итү өчен мәкаләне кыскача бәян итегез. + Хәзерге вакытка сезнең керемнәрнең гомуми саны. + Ничә көн рәттән керемнәр керттегез?\nӘгәр дә сез берникадәр вакыт керемнәр кертмәгәнсез икән, монда сезнең соңгы кертемегезнең датасы күрсәтелә. + Сез соңгы 30 көн эчендә өлеш керткән материалларның битләрен карауның гомуми саны + Сезнең кертемнәрнең берсе ничә тапкыр кире кайтарылуы(башка мөхәррир тарафыннан гамәлдән чыгарылган) нигезендә. Кире кайтарылган төзәтмәләр: %d. + Тәкъдим ителгән үзгәрешләр түбәндәге вакытка кадәр туктатыла: %1$s. Гафу итегез, %2$s, сезнең күптән түгел булган кертемнәрегезнең кайберләре кире кайтарылды. + Тәкъдим ителгән үзгәрешләр өзеп куелган. Гафу итегез, %s, сезнең күптән түгел булган кертемнәрнең күбесе кире кайтарылган. + Сезнең IP-адресыгыз (яисә IP-адреслар диапазоны) хәзерге вакытта Википедияне мөхәррирләү өчен блокланган. + Гафу итегез, %s, сез бу функцияне куллану өчен мәкаләгә кимендә өч төзәтмә кертергә тиеш. + Мөхәррирләү буенча киңәшләр һәм тәкъдимнәр + Тәкъдим ителгән төзәтмәләр буенча белешмә бите + Төзәтүләр сериясе + Караулар + Мөхәррирләү сыйфаты + Искиткеч + Искиткеч яхшы + Бик яхшы + Яхшы + Яхшы + Җитәрлек + Сыйфатсыз + Начар Тәкъдим ителгән үзгәртүләр + + Кертем + Кертемнәр + + + %d көн + %d көн + + Нәрсә ул Тәкъдим ителә торган үзгәрешләр? + Тәкъдим ителә торган төзәтмәләр Википедиягә зур булмаган, әмма мөһим өлеш кертү өчен мөмкинлекләр ача. + Күбрәк белергә + Туктатылган + Сүндерелгән + IP блокланган + Соңгы мөхәррирләү Һичкайчан + яңа + Бастырып чыгарганда, Сез <a href=\"%1$s\">куллану шартлары</a> белән килешәсез һәм бу керемне <a href=\"%2$s\">CC0</a> лицензиясе нигезендә кире кайтара алмаслык рәвештә бастырасыз. Тәкъдим ителгән үзгәртүләр + Википедияне мөхәррирләгән өчен рәхмәт! Нигә сез тукталган урыннан дәвам итмәскә? + Википедияне яхшырту өчен бер минут вакытыгыз бармы? Мөхәррирләү буенча әлеге тәкъдимнәр белән танышыгыз. + %s кертемнәре + Тел + Дата / вакыт + Кертемнең төре + Сурәт + Мәкалә + %s карау + + Соңгы 30 көн эчендә бер тапкыр каралган. + Соңгы 30 көн эчендә %s тапкыр каралган. + + Соңгы 30 көн эчендә %s тапкыр каралган. + + Сез %d тег өстәдегез + Сез %d тег өстәдегез + + %1$d %2$s + Кичә + Ә сез Википедияне һәркем мөхәррирли алуын беләсезме? + Тәкъдим ителә торган төзәтмәләр - Android та Википедияне мөхәррирләүнең яңа ысулы. Бу сезгә Википедиягә зур булмаган, әмма мөһим өлеш кертергә ярдәм итәчәк. Безнең максат - мөхәррирләүне гадиләштерү һәм һәркемгә куллану өчен уңайлы итү! Башлар өчен системага керегез яисә Википедиягә кушылыгыз. + Системага керегез / Википедиягә кушылыгыз + Сурәт тегы + Сезнең төзәтмәгез хәзерге вакытта Википедиядә басылган. + Өстәмә тәкъдим ителә торган төзәтмәләр + Тәкъдим ителгән тасвирламалар + Нәрсә турында хәбәр итәргә телисез? + Мәгълүмат аз + Тәкъдим ителгән тасвирламаларны күрү мөмкин түгел + Урынсыз тәкъдим + Бурычны аңламыйм + Хәбәр итәргә + Тапшырылган хәбәр + + %1$s тег + %1$s тег + + + %1$s символ + %1$s символ + + + Сез %d символны алып ташладыгыз + Сез %d символны алып ташладыгыз + + + Сез %d символны өстәдегез + Сез %d символны өстәдегез + + Мәкалә сурәтләре + Википедия мәкаләләренә, аңлауны яхшырту өчен, тәкъдим ителгән сурәтләрне өстәгез. + Сез бу сурәтне мәкаләгә өсти алмассызмы? + Җитәкчелек + Әйе + Юк + Җавап бирергә кыенсынам + Ник булмасын? + Сезнең җавапларыгыз булачак киңәшләрне яхшырта. + Сурәтнең катнашы юк + Карар кабул итү өчен җитәрлек мәгълүмат юк Эзләү Телләрегез Тел өстәү diff --git a/app/src/main/res/values-ba/strings.xml b/app/src/main/res/values-ba/strings.xml index 61fa60d055a..4316c586156 100644 --- a/app/src/main/res/values-ba/strings.xml +++ b/app/src/main/res/values-ba/strings.xml @@ -1,5 +1,6 @@ Википедия - Википедия бета - Википедия альфа + Википедия Бета + Википедия Альфа Викимедиа Артҡа Артҡа @@ -45,12 +47,13 @@ Тарихты юйыу \"%s\" мәҡәләһе ҡарау тарихынан юйылған %d мәҡәлә ҡарау тарихынан юйылған - Кире ҡайтарыу - Кире ҡайтарыу + Кире алырға + Кире алырға Ҡушымта көйләүҙәре - Эҙләү һорауын яҙа башлау өсөн тағы бер тапҡып тамғаға баҫығыҙ. + Эҙләгән һорауһы яҙа башлау өсөн яңынан иконаға баҫығыҙ. Тарих Рәсем: %s + Бит: %s Викимилек Викидата Тарихты таҙартырға @@ -60,13 +63,34 @@ Уртаҡлашырға Уртаҡлашырға %s битенән йүнәлтелде + Үҙгәртеүҙәр тарихы: %s + <b>м</b> %s + Үҙгәртеүҙәр аңлатмаһы буш + Төҙәтеүҙәрҙе табырға һәм һөҙгөс аша үткәрергә + Һөҙгөс идентификаторы + Бөтә төҙәтеүҙәр (%s) + Ҡатнашыусы төҙәтеүҙәре (%s) + Аноним төҙәтеүселәр (%s) + Робот төҙәтеүҙәре (%s) + %1$s тиклем %2$s метрикалар + {{PLURAL\n|one=%1$d төҙәтеүҙәр %2$s|%1$d төҙәтеүҙәр %2$s}} + + %2$s юлынан %1$d төҙәтеү (%3$s) + %2$s юлынан %1$d төҙәтеү(%3$s) + + Төҙәтеүҙәрҙе күберәк күреү өсөн үҙгәртеп ҡарағыҙ <a href=\"#\">фильтры</a> Ҡушымтаны күрһәтергә Телде һайларға Мәҡәләлә эҙләү Күҙәтеү исемлегенә өҫтәргә + Күҙәтергә + Күҙәтмәҫкә Әңгәмә битен ҡарау + Фекер алышыу бите Үҙгәртеүҙәр тарихын ҡарау + Үҙгәртеүҙәр тарихы Күҙәтеү исемлегенән юйырға + Күҙәтеүселәр Биттә эҙләргә Шрифты һәм биҙәлеште үҙгәртергә Уҡыу исемлегенә өҫтәргә @@ -74,10 +98,13 @@ Уҡыу исемлегенә өҫтәргә Һаҡларға Һылтанма менән бүлешергә + Мәҡәлә менән ураҡлашыу + Уртаҡлашырға Яңы ҡушылманы асырға Яңы ҡушымта Уҡыу исемлектәре Яңыраҡ ҡаралған + Архивланған Асырға Битте яңы ҡушылмала асырға Һылтанма адресын күсереп алырға @@ -85,15 +112,17 @@ Уртаҡлашырға Уртаҡлашырға Бында төҙәтергә + Мәҡәләне төҙәтергә Һуңғы яңыртыу %s Әңгәмә битен ҡарау Үҙгәртеүҙәр тарихын ҡарау Картала ҡарау Башҡа телдә уҡыу Башҡа %d телдәрҙә бар - CC-BY-SA 3.0 - Үҙгәртеүҙәрҙе ебәреп, һеҙ <a href=\"%1$s\">Ҡулланыу шарттарына</a> ризалашаһығыҙ, шулай уҡ ошо лицензия буйынса, кире алынмай торған баҫтырыуға ризалыҡ бирәһегеҙ<a href=\"%2$s\">CC BY-SA 3.0</a>. - Үҙгәрештәрҙе һаҡлап, һеҙ <a href=\"%1$s\"> </a> менән килешәһегеҙ, шулай уҡ <a href=\"%2$s\">CC BY-SA 3.0</a> лицензияһы буйынса баҫманы кире таптырып алмаҫҡа ризалашаһығыҙ. Төҙәтмәләр һеҙҙең ҡоролманың IP-адресына бәйләнәсәк. Әгәр ҙә <a href=\"https://#login\">танылһағыҙ</a>, сер һаҡлауҙың юғары кимәле менән ҡуллана алаһығыҙ. + CC BY-SA 4.0 + Яҙҙырып ҡуйып, <a href=\"%1$s\">ҡулланыу шарттары</a> һәм мәҡәләләрегеҙҙе <a href=\"%2$s\">CC BY-SA 4.0</a> лицензияһына ярашлы, ирекле ҡулланыу менән ризалашаһығыҙ. + Үҙгәрештәрҙе яҙҙырып ҡуйып, <a href=\"%1$s\">ҡулланыу шарттары</a> менән килешәһегеҙ һәм мәҡәләләрегеҙҙе <a href=\"%2$s\">CC BY-SA 4.0</a> лицензияһына ярашлы баҫтыраһығыҙ. Төҙәтеүҙәр ҡоролмағыҙҙың IP-адресына бәйләнәсәк. Әгәр ҙә <a href=\"https://#login\">танылһағыҙ</a>, сер һаҡлауҙың юғары кимәле менән ҡуллана алаһығыҙ. + Төҙәтеү имзаһына һеҙҙең ҡоролманың IP-адресы яҙыла. Әгәр системаға инһәгеҙ <a href=\"https://#login\">шәхси эшләргә мөмкинлектәр күберәк буласаҡ</a>. Википедия телдәре Эҙләү Был бит башҡа телдәрҙә юҡ. @@ -160,6 +189,7 @@ Тикшереү Электрон почта адресы (мотлаҡ түгел) Серһүҙҙе ҡабатлау + Серһүҙ хисап яҙмаһы менән бер төрлө була алмай Серһүҙ тура килмәй Электрон почта адресы дөрөҫ түгел Ҡатнашыусы исемендә дөрөҫ булмаған символдар @@ -189,7 +219,7 @@ Уҡыу исемлектәрен ҡулайламалар аша Википедия аккаунтына һаҡлап синхронлаштыра Уҡыу исемлектәрен ҡулайламалар аша Википедия аккаунтығыҙға «%s» һаҡлап синхронлаштыра «%s» синхрон уҡыу исемлектәрен юйырғамы? - Был элек синхрон уҡыу исемлектәрен алыҫтағы һаҡлағыстан тулыһынса алып ташлай. Бөтә синхрон исемлектәрҙе үҙегеҙҙең \"%s\" аккаунтығыҙҙан юйырғамы? + Был элек синхрон уҡыу исемлектәрен алыҫтағы һаҡлағыстан тулыһынса алып ташлай. Бөтә синхрон исемлектәрҙе үҙегеҙҙең \"%s\" аккаунтығыҙҙан юйырғамы? Сер һаҡлау Файҙаланыу тураһында отчет ебәреү Викимедиаға һеҙҙең ҡушымтаны нисек файҙаланыуығыҙ тураһында мәғлүмәт бирергә рөхсәт итеү. Был уны тағы ла яҡшыраҡ итергә мөмкинселек бирәсәк @@ -215,7 +245,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/ba#Офлайнда_уҡыу_һәм_мәғлүмәттәр https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/ba https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ + https\n://creativecommons.org/licenses/by-sa/4.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -225,7 +255,7 @@ Тәржемәселәр Был ҡушымта <a href=\"https://translatewiki.net\">translatewiki.net</a> төркөмө ирекмәндәре тарафынан тәржемә ителгән. Лицензия - <a href=\"https://github.com/wikimedia/apps-android-wikipedia/blob/master/COPYING\">Apache 2.0</a> лицензияһы буйынса\nбашланғыс код бында <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> һәм <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">Gerrit</a> алырға мөмкин. Әгәр ҙә башҡа күрһәтмә булмаһа, йөкмәтке <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike</a> лицезияһына ярашлы алына. + Башланғыс код <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> һәм <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a>\'da <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 Lisansı</a> урынлашҡан. Башҡа шарт күрһәтелмәһә, эстәлекте <a href=\"https://creativecommons.org/licenses/by-sa/4.0\">Creative Commons Attribution-ShareAlike License</a> һылтанмаһы буйынса ҡарап була. <a href=\"https://wikimediafoundation.org/\"> Викимедиа фонды </a>-ның продукты Ҡушымта тураһында \nБит үҙгәртелде. Үҙгәртеүҙәрҙе һаҡламайынса сығырға уйлайһығыҙмы? @@ -240,6 +270,13 @@ Ҡарап сығырға Кире алырға Ҡабатлау + кире ҡайтарырға + + %s байт + %s байт + %s байт + %s байт + Яҡынайтырға Йырағайтырға Баҫылған хата төҙәтелде @@ -251,6 +288,7 @@ Мөхәррирләү конфликты килеп сыҡты, сөнки был башҡа ҡулланыусы тарафынан үҙгәртелгән. Үҙгәрештәрегеҙҙе күсерегеҙ, кире ҡайтығыҙ һәм битте яңыртығыҙ, ә һуңынан мөхәррирләп ҡарағыҙ. Мөхәррирләү билдәләре Зинһар, төҙәтер алдынан уҡығыҙ + Төҙәтеүҙәр тураһында иҫкәрмәне автомитик рәүештә күрһәтергә Был мәҡәлә өсөн төҙәтелгән белдереүҙәрҙе ҡарау өсөн ошо төймәгә баҫырға. Артабан эҙләп табырға Тәүгеләрҙе эҙләү @@ -301,6 +339,7 @@ Файл һаҡланды. Видеоны күрһәтеп булмай Һүрәтте һаҡлау өсөн һеҙҙең ҡорамалдың һаҡлағысына яҙҙырырға рөхсәт талап ителә. + Һүрәт тасуирламаһын төҙәтеү Һүрәт тасуирламаһын өҫтәү Һүрәт тасуирламаһын өҫтәү (%s) \nФайлды һаҡлап булмай @@ -338,39 +377,265 @@ Уҡыу исемлегенә өҫтәргә Мәҡәләне Интернетҡа тоташмайынса күсереп алып булмай. Кәңәш:Был мәҡәләне уҡыу исемлегенә өҫтәгеҙ, ул һеҙ онлайн булғас уҡ йөкләнәсәк. + %s проценты һаҡланған офлайн-мәҡәләне уҡыйһығыҙ. Маршрут һалыу Маршрут һалырлыҡ бер ҡушымтаны ла табып булманы + Таҫманы тикшереүсе Һылтанмаларға байҡауҙы алдан күрһәтеп ҡуйыу + Таҫманы көйләгеҙ Һылтанмаға баҫып, мәҡәләне алдан тиҙ ҡарауҙы күрһәтергә - Википедияға ярҙам итергә + Таблицаларҙы төрөргә + Инфобокс, иҫкәрмәләр һәм комментарийҙар кеүек таблица блоктарын автоматик төрөргә + Иғәнә бирергә Ҡыҙғанысҡа ҡаршы, телмәрҙе таныу мөмкин түгел. + Геолокация хеҙмәте һүндерелгән. + Әүҙемләштерергә + Үҙебеҙҙән алыҫ түгел урындарҙы күреү өсөн ҡайҙа булыуын билдәләргә рөхсәт итергә. + Ҡабыҙырға + Android System WebView хәҙерге ваҡытта яңыртыла. Зинһар өсөн, бер аҙ һуңыраҡ ҡабатлап ҡарағыҙ. + + Һайланған %d + Һайланған %d + Выбрано %d + Һайланған %d + + %d һайланды + Хата + Ябырға + Был бит юҡ + Википедияла<a href=\"%1$s\">исемле ҡулланыуы бите</a> юҡ. Был бит <b>%2$s</b> тарафынан булдырылған булырға тейеш. Шикләнһәгеҙ, \"%3$s\" бармы икәнен тикшереп ҡарағыҙ. + Интернет бәйләнеше юҡ. + Википедияға тоташып булмай. Интернет бәйләнеше бармы икәнен тикшереп ҡарағыҙ, һуңғараҡ эшләп ҡарағыҙ. + Һылтанмалар %s + Һылтанмалар + Рәсемде ҡарайтырға (ҡараңғы тема өсөн) + Офлайн-бирелмәләр өҫтөнлөгө + Һәр ваҡыт мәҡәләне тейәү урынына, мәҡәләнең офлайн-версияһын күрһәтеү трафикты экономиялай. + Система темаһына тура килә + Башҡа шарт күрһәтелмәһә, $1 эстәлеге менән файҙаланырға мөмкин. + Яңы ҡушымта + Бөтә ҡушымталарҙы һаҡларға + Һеҙҙең ҡушамат йәки IP-адрес бикләнгән. + Бикләү <a href=\"%2$s\">%1$s</a> тарафынан ҡуйылған + Сәбәбе: %s + Бикләү башлана:%s + Бикләү тамамлана: %s + Бикләү идентификаторы: %s + <a href=\"%2$s\">%1$s</a> менән йәки башҡа <a href=\"https://ru.wikipedia.org/wiki/Википедия:Администраторы\">администратор</a> бикләү тураһында фекер алыша алаһығыҙ. + Инструменттар панелын көйләгеҙ + <a href=\"https://ru.wikipedia.org/wiki/Википедия:Администраторы\">Администратор</a> менән бикләү сәбәптәре тураһында фекер алыша алаһығыҙ. Ҡушымта хатаһы Һеҙ яңынан башларға йәки сығырға теләйһегеҙме? Яңынан ебәреү Сығырға + Һаҡларға + Тел + Табырға + Тема + Йөкмәткеһе + Мөхәррирләргә... + Мәҡәлә тасуирламаһын мөхәррирләргә + Инешен мөхәррирләргә Биҙәү Асыҡ Ҡараңғы + Ҡара тема + Сепия + Өлгө текст + Мәҡәләләрҙе уҡығанда ҡулланылған текст үлсәмен үҙгәртеү өсөн слайдерҙы йөрөтөгөҙ. Бөтә ҡушымтала текст үлсәмен билдәләү өсөн тотош система өсөн текст күләмен үҙгәртегеҙ. + Тема ҡушымтаһы + Ҡушымтала ҡара темаға күсеү өсөн күсергес Текст ҙурлығын арттырырға Шрифт ҙурлығын кәметергә + %s (өндәшмәйенсә) + Шрифт + Уҡыу + Мөхәррирләү + Уҡыу режимы + Инструменттар панеленың өйрөлткөсөн һәм мөхәррирләү функцияһын йәшерә + Синтаксисты яҡтыртырға + Юл номерҙарын күрһәтергә + Монокиңлектәге шрифт ҡулланырға + Дөрөҫ яҙыу өлгөләрен күрһәтергә + Һаҡланған Уҡыу исемлегенә һаҡларға + Уҡыу исемлегенә ташырға Яңыны төҙөргә + \"%s\" уҡыу исемлеге бар. + %1$s, %2$s өҫтәлгән. + %s һаҡланған. Исемлеккә өҫтәргә теләйһегеҙме? + %1$s, %2$s исемлегенә ташылған. + %2$s, был %1$s исемлектә бар. + Барыһы ла яҡшы! %s исемлегендә бөтә мәҡәләләр ҙә бар. Исемлекте ҡарау + Исемлеккә өҫтәргә + + 1 мәҡәлә + %d мәҡәәләләр + + {{PLURAL\n|one=1 мәҡәлә, %2$.2f MB|%1$d мәҡәлә, %2$.2f MB}} + + %1$d исемлегенән 1 мәҡәлә офлайн-режимында асыла + %1$d исемлегенән %2$d мәҡәлә офлайн-режимында асыла + + + %1$d - 1 мәҡәлә офлайн режимда бар, %3$.2f MB + %1$d - %2$d мәҡәлә офлайн режимда бар, %3$.2f MB + Сортҡа айырыу + Айырыу: Исем буйынса айырыу Атама буйынса айырыу (киреһенсә) - Дата буйынса айырыу (һуңғылары) - Дата буйынса айырыу (иҫкеләре) - Уҡыу исемлеген юйырға + Өҫтәү датаһы буйынса айырыу (яңылары өҫтә) + Өҫтәү датаһы буйынса айырыу (тәүгеләре өҫтә) + Яҙылыу датаһы буйынса айырыу (яңылары өҫтә) + Яҙылыу датаһы буйынса айырыу (алда яҙылғандары өҫтә) + Исемлекте юйырға + Исемлекте экспортлау + Һайларға + Һайлауҙы кире ҡағырға + Уҡыу исемлеген экспортлау өсөн һеҙҙең ҡорамалдың һаҡлағысына яҙҙырырға рөхсәт кәрәк. + Исемде/тасуирламаны үҙгәртергә + Офлайн-режимдан юйырға + Офлайн-режимда һаҡларға + Барыһын да офлайн-режимдан юйырға + Барыһын да офлайн-режим өсөн һаҡларға + Башҡа исемлеккә өҫтәргә + Икенсе исемлеккә күсерергә Уҡыу исемлегем Был исемлек атамаһы Тасуирлама (мотлаҡ түгел) %s исемлектән юйылған + %1$s мәҡәләһе %2$s исемлегенән юйылған + + %d мәҡәлә исемлектән юйылған + %d мәҡәләләр исемлектән юйылған + + + %d мәҡәлә %s исемлектән юйылған + %d мәҡәләләр %s исемлектән юйылған + + + %d исемлек юйылған + %d исемлек юйылған + + Программа көйләгән исемлек (%s) юйыла алмай + %1$s исемлеге юйылған. Программа көйләгән исемлек (%2$s) юйыла алмай. + Исемлектәр юйылған. Программа көйләгән исемлек (%s) юйыла алмай. + %s (Wikipedia reading list).json + Википедия уҡыу исемлеге (%s һәм күберәк).json + %d мәҡәлә исемлектән юйылған + %s исемлектәрҙән юйылған Кире алырға %s юйылды - Уҡыу исемлектәре юҡ әле. - Әле ҡараған мәҡәләләрҙе уҡыу өсөн теҙмәгә туплағыҙ! Уҡыу теҙмәһенә индереү өсөн, уҡыу барышында мәҡәләнең өҫкө өлөшөндәге закладка тамғаһына баҫығыҙ. - Был уҡыу теҙмәһен ысынлап юйырға теләйһегеҙме %s? + Әлегә һаҡланған биттәр юҡ + Офлайн-режимда булһағыҙ ҙа, мәҡәләләрҙе аҙаҡ уҡыу өсөн исемлеккә өҫтәгеҙ. + Был исемлеккә индерелгән мәҡәләләрегеҙ юҡ. + Офлайн-режимда ла ҡулланырға була + Мәҡәләне офлайн-режимда уҡырлыҡ итергә + Икенсе уҡыу исемлегенә өҫтәргә + Икенсе уҡыу исемлегенә күсергә + %s исемлегенән икенсе уҡыу исемлегенә күсергә + %s исемлегенән юйырға + Уҡыу исемлектәренән юйырға + Һайларға + Офлайн-режимдан юйырға + Мәҡәлә бер-нисә исемлеккә индерелгән + барлыҡ уҡыу исемлектәрендә %s бите башҡаса офлайн-режимда булмаясаҡ + Уҡыу исемлеген синхронлаштырыуҙы ҡабыҙырғамы? + Уҡыу исемлегендә һаҡланған мәҡәләләрҙе хәҙер Википедиялағы иҫәп яҙмаһы менән синхронлаштырырға мөмкин. <a href=\"https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/tr#Synced_reading_lists\">Күберәк белергә</a> + Уҡыу өсөн исемлектәрҙе хәҙер ҡулайламалар араһында синхронлаштырырға мөмкин. Википедияның иҫәп яҙмаһына инегеҙ һәм исемлектәрҙе һаҡларға рөхсәт итегеҙ. <a href=\"https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Synced_reading_lists\">Күберәк белергә</a> + Синхронлаштырыуҙы ҡабыҙырға + Уҡыу исемлектәрен синхронлаштырырға + Уҡыу исемлеге хәҙер ҡоролмалар араһында синхронлаштырыла. Үҙегеҙҙең иҫәп яҙмаһына инегеҙ һәм исемлектәрҙе һаҡларға рөхсәт итегеҙ. + Инегеҙ / Википедияға ҡушылығыҙ + Хәҙер түгел + Эйе + Юҡ + Бит тейәлә. Тамаланғандан һуң уны офлайн-режимда уҡып буласаҡ. + %2$s исемлегенә %1$d мәҡәлә өҫтәлде + %2$s исемлегенә %1$d мәҡәлә күсереп ҡуйылды + Ысынлап %s юйырға теләйһегеҙме? + Һайланған исемлекте (исемлектәрҙе) юйырғамы? + + %d Исемлекте юйырға теләйһегеҙме? + %d Исемлектәрҙе юйырға теләйһегеҙме? + + Синхронлаштырыуҙы ҡабыҙыу өсөн инегеҙ + Уҡыу исемлектәре иҫәп яҙмаһында һаҡланһын өсөн иҫәп яҙмаһына инегеҙ. + Кире алырға + Инергә + Уҡыу исемлеген синхронлаштырыу һүндерелгән + Уҡыу исемлеген синхронлаштырыу һеҙҙең иҫәп яҙмаһы өсөн һүндерелгән, һәм системаға ингән ҡоролмаларығыҙҙағы һаҡланған мәҡәләләрҙең күсермәләре башҡаса төҙөлмәй. Уҡыу исемлеген көйләүҙәрҙә синхронлаштырыуҙы ҡабыҙығыҙ. + Яҡшы + Көйләүҙәр + Уҡыу исемлеген синхронлаштырыуҙы ҡабыҙырғамы? + Уҡыу өсөн исемлектәрҙә һаҡланған мәҡәләләрҙе хәҙер Википедиялағы иҫәп яҙмаһы менән синхронлаштырырға мөмкин.<a href=\"#faq\">Күберәк белергә</a> + Ҡабат күрһәтмәҫкә + Синхронлаштырыуҙы ҡабыҙырға + Юҡ, рәхмәт + Һаҡланған + Һайлаған мәҡәләләрегеҙ өсөн программа көйләгән исемлек + Мәҡәләләр шәлкемен һаҡлағыҙ + Сәйәхәт итеү урындары, яратҡан темалар һәм башҡа күп нәмәләр буйынса исемлектәр төҙөгөҙ + %1$s (ҡатнашыусы булдырған) + Уҡыу исемлегендә максималь мәҡәләләр һаны: %d. Был лимиттан артығыраҡ булған мәҡәләләр бер нисә исемлеккә бүленде. + Был исемлеккә күсереү мөмкин түгел. \"%1$s\" өсөн һеҙ %2$d сигенә еттегеҙ. + Был исемлеккә өҫтәп булмай. \"%1$s\" исемлеге өсөн %2$d сигенә еттегеҙ. + Башҡа исемлек төҙөп булмай. Бер иҫәп яҙмаһы өсөн 100 уҡыу исемлеге сигенә еттегеҙ. + Яңы исемлек булдырырға + Исемлекте импортлау + Айырыу + Синхронлаштырыуҙы яңыртырға + Инергә / теркәлергә + + Был мәҡәлә офлайн режимда асыласаҡ. + Был мәҡәләләр офлайн режимда асыласаҡ. + + {{PLURAL\n|one=Был мәҡәлә офлайн режимда асылмаясаҡ.|Был мәҡәләләр офлайн режимда асылмаясаҡ.}} + Уҡыу исемлектәре синхронлаштырылған + Һуңғы синхронлаштырыу ваҡыты:%s + Яҡшы + Яҡшы + Кире алырға + Кире алырға + Кире алырға + Кире алырға + Яҡшы + Юйырға + Уҡыу исемлеге:%s + Уҡыу исемлеген/исемлектәрҙе экспортлау + %d Уҡыу исемлеге/исемлектәре, \'reading_lists export.json\' файлы булараҡ, һеҙҙең папкаға күсерелгән + Уҡыу исемлектәре \'reading_lists_export.json\' файлына экспортланған + Экспортларға + Импортлау өсөн файл һайлағыҙ + Уҡыу исемлектәрен импортлап булманы + Экспорт өсөн исемлек/исемлектәр һайлағыҙ + Уҡыу исемлеге/исемлектәре экспортланды + + Уҡыу исемлеген экспортҡа сығарыу мөмкин түгел + Уҡыу исемлектәрен экспортҡа сығарыу мөмкин түгел + + + Уҡыу исемлеге импортланды + Уҡыу исемлектәре импортланды + + Дөйөм исемлек + Яҙҙырып ҡуйырға + Исемлекте һаҡларға + Исемдәрҙе һанағыҙ һәм һаҡлау өсөн мәҡәләләр һайлағыҙ + Исем + Кире алырға + Һаҡларға + Һаҡланған уҡыу исемлеге + Ҡарарға Көйләүҙәр + Төҙәтеү кире алынған + Мәҡәләләрҙе йөкләү + Йөкләү үҫеше + Пауза + Кире алырға + Уҡыу исемлектәрен синхронлаштырыу үҫеше Өҫтәргә + Рәсем тасуирламаһы diff --git a/app/src/main/res/values-ban/strings.xml b/app/src/main/res/values-ban/strings.xml index 13d8bb31a12..9582a740428 100644 --- a/app/src/main/res/values-ban/strings.xml +++ b/app/src/main/res/values-ban/strings.xml @@ -105,9 +105,9 @@ Cingak ring peta Wacen ring basa tiosan Cumawis ring %d basa tiosan - CC BY-SA 3.0 - Antuk ngawedar, Ida ngidep majeng <a href=\"%1$s\">Katentuan Sang Anganggé</a>, miwah ngalepas pituut Ida ring metén lisénsi <a href=\"%2$s\">CC BY-SA 3.0</a>. - Antuk ngawedar, Ida ngidep majeng <a href=\"%1$s\">Katentuan Sang Angaggé</a>, miwah ngalepas pituut Ida ring metén lisénsi <a href=\"%2$s\">CC BY-SA 3.0</a>. Uahan pacang katemonin nuju alamat IP piranti. Pinaka Ida <a href=\"https://#login\">manjing log</a>, Ida pacang medué privasi langkung. + CC BY-SA 3.0 + Antuk ngawedar, Ida ngidep majeng <a href=\"%1$s\">Katentuan Sang Anganggé</a>, miwah ngalepas pituut Ida ring metén lisénsi <a href=\"%2$s\">CC BY-SA 3.0</a>. + Antuk ngawedar, Ida ngidep majeng <a href=\"%1$s\">Katentuan Sang Angaggé</a>, miwah ngalepas pituut Ida ring metén lisénsi <a href=\"%2$s\">CC BY-SA 3.0</a>. Uahan pacang katemonin nuju alamat IP piranti. Pinaka Ida <a href=\"https://#login\">manjing log</a>, Ida pacang medué privasi langkung. Uahan pacang kasuwécayang nuju alamat IP piranti ragané. Pinaka ragané <a href=\"https://#login\">manjing log</a>, ragané pacang polih langkung paragaan. Basa Wikipédia Rereh @@ -232,7 +232,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.wikimedia.org/wiki/Terms_of_Use https://ban.wikipedia.org/wiki/Wikipedia:Pinunas_satunggal_akun - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -242,7 +241,7 @@ Pangalih basa Aplikasi puniki sampun kaalih basa olih rélawan pangalih basa ring <a href=\"https://translatewiki.net\">translatewiki.net</a>. Lisénsi - Kode wit kasedia ring <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> miwah <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> ring sor <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 License\">Lisénsi Apache 2.0</a>. Kontén kasedia ring sor <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Lisénsi Atribusi-MawagiSarupa Creative Commons</a> tiosan kanikayang liyanan. + Kode wit kasedia ring <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> miwah <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> ring sor <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 License\">Lisénsi Apache 2.0</a>. Kontén kasedia ring sor <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Lisénsi Atribusi-MawagiSarupa Creative Commons</a> tiosan kanikayang liyanan. Satunggil produk saking <a href=\"https://wikimediafoundation.org/\">Yayasan Wikimédia</a> Indik Kaca puniki sampun kauah. Napiké ragané yakti pacang medal tanpa nyimpen pagentosan? @@ -301,7 +300,7 @@ Unduh wantah saking Wi-Fi Konfirmasi unduhan nganggén data sélulér? Lugrayang - Wacen malih + Wacén malih Indik suratan puniki Nuju kaca gambar Tan prasida ngambar gambar @@ -768,9 +767,9 @@ Sisipang média Pilih berkas saking Wikimédia Commons Rereh média - Setélan média + Setélan média Gambar kaunggah - Sesirah + Sesirah Setélan lantur Genah gambar Tengen diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index c2698c8447d..8ee4979481f 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -127,9 +127,9 @@ Гл. на карце Чытаць на іншай мове Даступна на %d іншых мовах - CC BY-SA 3.0 - Публікуючы змены, вы згаджаецеся з <a href=\"%1$s\">Умовамі выкарыстання</a>, а таксама згаджаецеся на неадклікальную публікацыю па ліцэнзіі <a href=\"%2$s\">CC BY-SA 3.0</a>. - Публікуючы ўнёскі, вы згаджаецеся з <a href=\"%1$s\">Умовамі выкарыстання</a>, а таксама згаджаецеся на неадклікальную публікацыю па ліцэнзіі <a href=\"%2$s\">CC BY-SA 3.0</a>. Праўкі будуць прывязаны да IP-адрасу вашай прылады. Калі вы <a href=\"https://#login\">аўтарызуецеся</a>, то атрымаеце вышэйшы ўзровень прыватнасці. + CC BY-SA 3.0 + Публікуючы змены, вы згаджаецеся з <a href=\"%1$s\">Умовамі выкарыстання</a>, а таксама згаджаецеся на неадклікальную публікацыю па ліцэнзіі <a href=\"%2$s\">CC BY-SA 3.0</a>. + Публікуючы змены, вы згаджаецеся з <a href=\"%1$s\">Умовамі выкарыстання</a>, а таксама згаджаецеся на неадклікальную публікацыю па ліцэнзіі <a href=\"%2$s\">CC BY-SA 3.0</a>. Праўкі будуць прывязаны да IP-адрасу вашай прылады. Калі вы <a href=\"https://#login\">аўтарызуецеся</a>, то атрымаеце вышэйшы ўзровень прыватнасці. Праўкі будуць звязаны з IP-адрасам вашай прылады. Калі вы <a href=\"https://#login\">ўвойдзеце</a>, у вас будзе больш прыватнасці. Мовы Вікіпедыі Пошук @@ -223,7 +223,7 @@ Выкарыстанне даных Эксперыментальныя Сінхранізацыя спісу для чытання - Загрузіць спіс артыкулаў для чытання + Спампаваць спіс артыкулаў для чытання Сінхранізуйце спісы для чытання на розных прыладах, захаваннем іх у сваім уліковым запісе Вікіпедыі Сінхранізуйце спісы для чытання на розных прыладах, захаваўшы іх у сваім уліковым запісе Вікіпедыі «%s» Выдаліць сінхранізаваныя спісы чытання з \"%s\"? @@ -253,7 +253,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.be + https://creativecommons.org/licenses/by-sa/4.0/deed.be https://creativecommons.org/publicdomain/zero/1.0/deed.be https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -263,7 +263,7 @@ Перакладчыкі Гэты дадатак быў перакладзены валанцёрамі <a href=\"https://translatewiki.net\">translatewiki.net</a>. Ліцэнзія - Зыходны код даступны на <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> і <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> паводле ліцэнзіі <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">Apache 2.0</a>. Калі не пазначана іншае, змесціва даступна паводле ліцэнзіі <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike</a>. + Зыходны код даступны на <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> і <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> паводле ліцэнзіі <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">Apache 2.0</a>. Калі не пазначана іншае, змесціва даступна паводле ліцэнзіі <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike</a>. Прадукт <a href=\"https://wikimediafoundation.org/\">Фонду Вікімедыа</a> Пра дадатак Старонка была зменена. Вы ўпэўненыя, што жадаеце выйсці без захавання зменаў? @@ -305,7 +305,7 @@ Артыкул быў адкрыты ў фонавай укладцы. Магчыма, гэта праўка неканструктыўная. Вы ўпэўнены, што хочаце апублікаваць яе? Вы не можаце захаваць гэтую праўку. Калі ласка, вярніцеся назад і змяніце яе. - Аўтаматызаваны фільтр вызначыў гэтую праўку як патэнцыйна неканструктыўную. Яна можа змяшчаць адно або некалькі з наступных дзеянняў:<br /><br />· Набор тэксту вялікімі літарамі<br />· Сціранне зместу артыкулаў або спам<br />· Недарэчныя вонкавыя спасылкі або відарысы<br />· Паўтаральныя сімвалы + Аўтаматызаваны фільтр вызначыў гэтую праўку як патэнцыйна неканструктыўную. Яна можа змяшчаць адно або некалькі з наступных дзеянняў:<br /><br />· Набор тэксту вялікімі літарамі<br />· Сціранне зместу артыкулаў або спам<br />· Недарэчныя вонкавыя спасылкі або выявы<br />· Паўтаральныя сімвалы Аўтаматызаваны фільтр вызначыў гэтую праўку як патэнцыйна неканструктыўную ці як патэнцыйны вандалізм.<br /><br />Вікіпедыя — энцыклапедыя і тут могуць існаваць толькі нейтральныя і змястоўныя артыкулы. Падобныя старонкі Магчыма, вы мелі на ўвазе \"%s\"? @@ -390,7 +390,7 @@ Вы чытаеце афлайн-версію артыкула, захаванага %s Пракласці маршрут Не атрымалася знайсці ні аднаго дадатка, якое б пракладвала маршрут. - Налады агляду + Праглядзець стужку Паказваць прадпрагляд спасылак Наладзьце стужку агляду Паказваць хуткі прадпрагляд артыкулаў пры націску на спасылкі. @@ -457,7 +457,7 @@ Пераключыць на цёмную каляровую тэму праграмы Павялічыць памер тэксту Паменшыць памер тэксту - %s (па змаўчанні) + %s (прадвызначана) Шрыфт Чытанне Рэдагаванне @@ -604,7 +604,7 @@ Уключыць сінхранізацыю Не, дзякуй Захаванае - Спіс па змаўчанні для вашых захаваных артыкулаў + Прадвызначаны спіс для вашых захаваных артыкулаў Арганізуйце артыкулы ў спісы Стварайце спісы месцаў для падарожжаў, любімых тэм і шмат чаго іншага %1$s (створаны карыстальнікам) @@ -818,8 +818,8 @@ Выпадковы артыкул Выпадковы артыкул Больш выпадковых артыкулаў - Найчытнае - Больш найчытнага + Найбольш чытанае + Больш папулярных артыкулаў %d тыс %d млн Загрузіць іншы выпадковы артыкул @@ -831,7 +831,7 @@ Схаваць гэту картку Картка схавана. Змяніць мовы картак - Больш наладак + Больш наладаў Выбраная выява з Вікісховішча Агляд Галоўная @@ -853,12 +853,12 @@ Аднавіць прадвызначаны выгляд Паказаць усё Схаваць усё - Не ўсе тыпы картак Агляду даступны на ўсіх мовах Вікіпедыі. Змяняйце свае выбраныя мовы ў Наладах. + Не ўсе тыпы картак Агляду даступны на ўсіх мовах Вікіпедыі. Вы можаце змяніць свае выбраныя мовы ў Наладах. Артыкулы пра апошнія падзеі Гістарычныя падзеі ў гэты дзень Прапанаваны артыкул з гісторыі прачытанага - Штодзённы рэкамендаваны артыкул на Вікіпедыі - Штодзённыя найбольш чытныя артыкулы + Абраны артыкул дня ў Вікіпедыі + Найбольш чытаныя артыкулы за дзень Выбраная выява дня з Вікісховішча Галоўная старонка Вікіпедыі з штодзённа рэкамендаваным кантэнтам Стварыць спіс выпадковых артыкулаў для чытання @@ -872,7 +872,7 @@ Скасаваць Вы дасягнулі канца стужкі Загрузіць больш - Найчытнае з %s + Найбольш чытанае з %s Укладкі Апісанне артыкула Артыкул @@ -950,7 +950,7 @@ Дадаючы апісанне выявы, я згаджаюся з <a href=\"%1$s\">Умовамі выкарыстання</a>, а таксама згаджаюся на неадклікальную публікацыю майго ўнёска па ліцэнзіі <a href=\"%2$s\">Creative Commons CC0</a>. Інфармацыя Даданне апісанняў артыкулаў - Рабіце ўклад у артыкулы без апісання + Дадаць інфармацыю ў артыкулы без апісання Дадаць подпіс выявы Дадаць адсутны кароткі подпіс выявы Перакласці подпіс выявы @@ -995,7 +995,7 @@ Дадаць подпіс выяве Дадаць подпіс выявы (%s) Дадаць тэгі выявам - Якім быў ваш досвед рэдагавання? Калі ласка, знайдзіце час, каб запоўніць апытанне пра рэдагаванне ў праграме. + Якім быў ваш досвед рэдагавання? Калі ласка, знайдзіце час, каб запоўніць апытанне пра рэдагаванне ў дадатку. Прайсці апытанне Дадаць Перакласці @@ -1136,7 +1136,7 @@ Пачаць Можа, пазней Новыя спосабы даследаванняў - Вандруйце ў прасторах Вікіпедыі з шторазова абнаўляльнай стужкай Агляду. <br/> <b>Наладзьце</b> стужку адпаведна вашым зацікаўленасцям - няхай гэта будзе вывучэнне гістарычных падзей <b>У гэты дзень</b>, або шукайце нешта новае з <b>Выпадковым артыкулам</b>. + Вандруйце ў прасторах Вікіпедыі з шторазова абнаўляльнай стужкай Агляду. <br/> <b>Наладзьце</b> стужку адпаведна вашым зацікаўленасцям — няхай гэта будзе вывучэнне гістарычных падзей <b>У гэты дзень</b>, або шукайце нешта новае з <b>Выпадковым артыкулам</b>. Спісы для чытання з сінхранізацыяй Вы можаце складаць спісы для чытання з артыкулаў, якія вы хочаце прачытаць пазней, нават калі вы знаходзіцеся ў пазасеткавым рэжыме. <br/>Увайдзіце ў свой уліковы запіс Вікіпедыі, каб сінхранізаваць свае спісы для чытання. <a href=\"#login\">Далучайцеся да Вікіпедыі</a> Адпраўляць ананімныя даныя @@ -1219,12 +1219,12 @@ Уставіць медыя Выберыце файл з Вікісховішча Пошук медыя - Налады медыя + Налады медыя Загружаная выява - Подпіс - Цэтлік, які адлюстроўваецца побач з элементам для ўсіх чытачоў + Подпіс + Цэтлік, які адлюстроўваецца побач з элементам для ўсіх чытачоў Альтэрнатыўны тэкст - Тэкставае апісанне для чытачоў, якія не бачаць выяву + Тэкставае апісанне для чытачоў, якія не бачаць выяву Дадатковыя параметры Абцяканне тэкстам вакол выявы Размяшчэнне выявы @@ -1332,7 +1332,7 @@ Дзякуй Праглядзець старонку ўдзельніка Публічна адправіць \"Дзякуй\" - \"Дзякуй\" - просты спосаб падзякаваць за працу удзельніка ў Вікіпедыі. \"Дзякуй\" нельга скасаваць, і яны даступныя для агульнага прагляду + \"Дзякуй\" — просты спосаб падзякаваць за працу ўдзельніка ў Вікіпедыі. \"Дзякуй\" нельга скасаваць, і яны даступныя для агульнага прагляду Даслаць падзяку Скасаваць Ваш \"Дзякуй\" адпраўлены %s 👍 @@ -1405,7 +1405,7 @@ бягучая Памылка прайгравання мультымедыя. Уклад - Фільтр унёскаў + Фільтр укладу Імпартаваць спіс для чытання Як бы вы хацелі назваць спіс, якім з вамі падзяліліся? *новы* diff --git a/app/src/main/res/values-bew/strings.xml b/app/src/main/res/values-bew/strings.xml new file mode 100644 index 00000000000..81dbc43a994 --- /dev/null +++ b/app/src/main/res/values-bew/strings.xml @@ -0,0 +1,1415 @@ + + + + Wikipédi + Wikipédi Béta + Wikipédi Alpa + Wikimédia + Kombali + Kombali + Terus + Cari Wikipédi + Penyarian liwat suara + Cari basa + Saring gua punya daptar + Permakan + Laènnya + Cari + Kaga\' bisa ngubungin ke internèt. + Jal lagi + Jal lagi + Jal lagi + Jal lagi + Jal lagi + Kombali + Kombali + Terus + Bersiin riwayat + %s dibuang deri riwayat + %d makalah dibuang deri riwayat + Balikin + Balikin + Penyetèlan aplikasi + Teken lambang lagi bakal langsung mulain ngetik istilah penyarian. + Riwayat + Gambar: %s + Halaman: %s + Wikimedia Commons + Wikidata + Bersiin riwayat pengoragan + Ni bakal ngapus semua lu punya riwayat pengoragan, èn nutup mana-mana lembaran nyang masing kebuka. Apa lu yakin? + Ya + Kaga\' + Dumanin liwat + Dumanin liwat + Dialihin deri %s + Riwayat répisi: %s + <b>k</b> %s + Rangkuman permakan kosong + Cari atawa saring permakan + Saring berales + Semua permakan (%s) + Permakan pemaké (%s) + Permakan sondernama (%s) + Permakan bot (%s) + Mètrik deri %1$s ampé %2$s + + %1$d permakan sedari %2$s + %1$d permakan sedari %2$s + + + %1$d permakan sedari %2$s (%3$s) + %1$d permakan sedari %2$s (%3$s) + + Jal robah <a href=\"#\">saringan</a> bakal ngiat lebi banyak permakan + Kasi unjuk lembaran + Robah basa + Cari di makalah + Tambahin ke Daptar Pantengan + Pantengin + Urungin panteng + Deleng halaman obrolan + Halaman obrolan + Deleng riwayat permakan + Riwayat permakan + Buang deri Daptar Pantengan + Kepanteng + Cari di halaman + Gaya tulisan èn tèma + Tambahin ke daptar bacaan + Simpen + Tambahin ke daptar bacaan + Simpen + Dumanin sènggètan + Dumanin makalah + Dumanin + Buka lembaran baru + Lembaran baru + Daptar bacaan + Barusan dideleng + Arsip + Buka + Buka di lembaran baru + Jiplak aderès sènggètan + Ta\'rip + Dumanin + Dumanin + Permak di mari + Permak makalah + Paling akir diperbaruin %s + Deleng halaman obrolan + Deleng riwayat permakan + Deleng di peta + Baca dalem basa laèn + Kesedia di %d basa laèn + CC BY-SA 4.0 + Dengen nerebitin, lu akur ama <a href=\"%1$s\">Ketentuan Pemakéan</a>, èn lu tetep akur bakal ngelansir lu punya sumbangsih di bawah lisènsi <a href=\"%2$s\">CC BY-SA 4.0</a>. + Dengen nerebitin, lu akur ama <a href=\"%1$s\">Ketentuan Pemakéan</a>, èn lu tetep akur bakal ngelansir lu punya sumbangsih di bawah lisènsi <a href=\"%2$s\">CC BY-SA 4.0</a>. Permakan bakal dinisbatin ke aderès IP lu punya alat. Kalo lu <a href=\"https://#login\">masup</a>, lu bakal ada punya keresiaan dèwèk nyang lebi. + Permakan bakal dinisbatin ke aderès IP lu punya alat. Kalo lu <a href=\"https://#login\">masup</a>, lu bakal ada punya keresiaan lebi. + Basa Wikipédi + Cari + Ni halaman kaga\' kesedia dalem laèn-laèn basa. + Basa kaga\' ketemu + Laèn-laèn basa + Basa lu punya Wikipédi + Terebitin perobahan + Permakan diterebitin! + Permakan gagal! + Jal lagi + Urungin + Lu punya perobahan belon diterebitin. Apa lu yakin pèngèn ninggalin ni halaman? + Tinggalin + Tetep di mari + Daptar isi + Hasil kaga\' ketemu + Hasil kaga\' ketemu di \"%s\" + Hasil kaga\' ketemu di daptar bacaan + Hasil kaga\' ketemu di riwayat + Bakal nglindungin deri sampahan otomatis, masupin dah kata-kata nyang nongol di bawah ni + Kaga\' bisa ngiat gambar? <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Request_an_account\">Minta\' bikinin rèkening</a> + Ulangin kata-kata di atas + Masupin CAPTCHA + Teken CAPTCHA bakal muat ulang + Masup ke Wikipédi + Nama pemaké + Kata sandi + Kata sandi + Kode Otèntipikasi Dua-Paktor + Otèntipikasi dua-paktor dibutuhin! Padol dah, kombali ke aktipitèt utama èn masup paké lu punya token 2FA, terus jal lagi dah. + Masup + Masup + Masup + Masup + Masup + Masup + Lagi masup... + Udah masup! + Setèl lu punya kata sandi + Lu udah masup paké kode sandi sementara. Bakal ngerampungin masup, lu misti setèl kata sandi baru di mari. + Kata sandi baru + Simpen èn masup + Kuar + Udah kuar + Ni bakal nguarin lu deri mana-mana alat nyang di dalemnya lu masup. Apa lu pèngèn terus? + Urungin + Udah kuar + Lu udah kuar deri Wikipédi. Apa lu pèngèn masup lagi? + Masup + Urungin + Kaga\' ada makalah nyang baru dideleng + Lacak lu punya baca di mari. + Ada makalah nyang di riwayat nyang kaga\' kena dideleng pas luar-jala. + Cari èn baca ènsiklopédi perdèo di lu punya basa + Cari Wikipédi paké lu punya basa + Apus butir nyang dipilih + <big>W</big>IKIPÉD<big>I</big> + Nama pemaké + Belon gableg rèkening? + Nimbrung ama Wikipédi + Kata sandi lu lalèn? + Udah gableg rèkening? + Keja rèkening + Nahkik + Surlès (Opsionil) + Ulangin kata sandi + Kata sandi kaga\' bolé sama ama nama pemaké + Kata sandi kaga\' cocok + Aderès surlès kaga\' aci + Lèter kaga\' aci di nama pemaké + Kata sandi palingan misti 8 lèter + Kaga\' bisa ngeja rèkening + Terus + Keja rèkening sonder aderès surlès? + Bagèn aderès surlès – opsionil, palingan <b>sunah muakadah</b> dah tu, sebab surlès dibutuhin pas mulihin rèkening kalo-kalo lu ilang kata sandinya. + Disaranin sebab surlès dibutuhin bakal mulihin rèkening. + Terusin sonder surlès + Tambahin aderès surlès + Keja rèkening + Nama pemaké \"%s\" kaga\' kesedia. Padol dah, pilih nama nyang bèda. + Maap, lu punya aderès IP sekarang ni lagi diblokir deri pengejaan rèkening baru. + https://en.wikipedia.org/wiki/Help:I_have_been_blocked + Tètèk bengèk + Umum + Rèkening + Pertanyaan Sering + Kirim empan balik bakal aplikasi + Rèkening dikeja! + Penjuntrungan + Pemakéan data + Coba-cobaan + Penjuntrungan daptar bacaan + Comot makalah di daptar bacaan + Juntrungin daptar bacaan di mana-mana alat dengen nyimpen tu pada ke lu punya rèkening Wikipédi + Juntrungin daptar bacaan di mana-mana alat dengen nyimpen tu pada ke lu punya rèkening Wikipédi \"%s\" + Buang daptar bacaan kejuntrung deri \"%s\"? + Ni bakal bener-bener ngapus semua-muanya daptar bacaan kejuntrung deri penampungan jarak jauh. Buang semua daptar kejuntrung deri lu punya rèkening \"%s\"? + Keresiaan dèwèk + Kirim laporan pemakéan + Ijinin Wikimédia ngumpulin inpormasi pasal cara lu maké ni aplikasi biar mangkin bagus dah ni aplikasi + Kirim laporan kerusakan + Ijinin aplikasi otomatis ngirim laporan kerusakan ke penyedia ladènan pihak ketiga biar kita bisa merèksa dah lu punya kerusakan èn ngebetulin tu bangsat lebi lekas èn gampil. + Sènggètan ke domén nyang diblokir (%s) keendus. Dimohon buang tu èn jal lagi. + Saring riwayat + Kaga\' bisa mampangin ni sènggètan + Ni halaman udah separo-dilindungin. + Ni halaman udah lengkep dilindungin. + Ni halaman udah dilindungin ampé ni trap-trap: %s + Maap, lu punya rèkening kaga\' punya cukup keistimèwaan bakal mermak ni halaman sekarang ni. + Maap, ni halaman kaga\' bisa dipermak dengen sondernama sekarang ni. + Ni halaman dilindungin + Tambahin ke Daptar Pantengan + Terus lacak apa nyang kejadian ama makalah amanya lu punya kebèngbat. Teken menu tambahan èn pilih <b>Tambahin ke Daptar Pantengan</b bakal ngiat perobahan di makalah. + Penyetèlan + Penyetèlan + Pasal aplikasi Wikipédi + Belèd keresiaan + Ketentuan pemakéan + https://en.wikipedia.org/wiki/Wikipédi:Pasal + https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/id#Baca_luar_jala_èn_data + https://www.mediawiki.org/wiki/Wikimedia_Apps/Pertanyaan_Sering_Android + https://en.wikipedia.org/wiki/Wikipédi:Bikinin_rèkening + https://creativecommons.org/licenses/by-sa/4.0/ + https://creativecommons.org/publicdomain/zero/1.0/ + https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Tenger_gambar + Bibliotik nyang dipaké + Penyumbang + <a href=\"https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/Android\">Halaman tim</a> + Penerjemah + Ni aplikasi udah diterjemahin ama penerjemah sukarèla di <a href=\"https://translatewiki.net\">translatewiki.net</a>. + Lisènsi + Kode sumber kesedia di <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> èn <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> di bawah <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Lisènsi Apache 2.0</a>. Kecuali ada ketentuan tambahan nyang belakon, isi kesedia di bawahnya <a href=\"\"https://creativecommons.org/licenses/by-sa/4.0\">Lisènsi Nisbat-DumanSetumbras Creative Commons</a>. + Produk deri <a href=\"https://wikimediafoundation.org/\">Yayasan Wikimédia</a> + Pasal + Ni halaman udah didandanin. Apa lu yakin pèngèn kuar sonder nyimpen lu punya perobahan? + Ya + Kaga\' + Diblokir + Lu punya rèkening pemaké udah diblokir deri pemermakan di ni wiki. + Lu punya aderès IP udah diblokir deri pemermakan. + Bagémana lu ningkatin halamannya? + Terus + Terebitin + Pradeleng + Balikin + Ulangin + Aterèt + + %s bèt + %s bèt + + Gedéin + Kecilin + Pembetulan salah ketik + Pembetulan kaèdah basa + Penambahan sènggètan + Laènnya + Cara laèn lu nyempurnain halaman + Bentrok permakan + Ni halaman udah didandanin ama pemaké laèn, èn bentrok ama lu punya permakan. Dimohon jiplak lu punya permakan, balik, èn segerin halaman, terus jal permak lagi. + Ma\'lumat permakan + Dimohon baca dulu sebelonnya mermak + Otomatis kasi unjuk ma\'lumat permakan + Teken ni tombol bakal ndeleng ma\'lumat permakan bakal ni makalah. + Cari terusnya + Cari sebelonnya + Ni – hasil pertama + Ni – hasil paling akir + Makalah udah dibuka di lembaran latar belakang. + Ni barangkali permakan nyang kaga\' ngebangun. Apa lu yakin pèngèn nerebitin? + Lu kaga\' bisa nerebitin ni permakan. Padol dah, balik èn robah lagi. + Saringan otomatis ngendus ni permakan rasa-rasanya kaga\' ngebangun. Ni barangkali ada atu atawa lebi ni:<br /><br />· Ngetik paké hurup gedé semua<br />· Ngosongin makalah atawa nyampah<br />· Sènggètan luar atawa gambar nyang kaga\' nyambung<br />· Lèter nyang ngulang-ngulang + Saringan otomatis ngendus ni permakan rasa-rasanya kaga\' ngebangun, atawa rasa-rasanya penggratilan.<br /><br />Wikipédi entu ènsiklopédi èn cuman isi nyang nètral lagi penting doangan nyang ada di mari. + Halaman semacem + Maksud lu \"%s\"? + Penyarian mutahir: + Kaga\' ada hasil + + 1 hasil + %d hasil + + Bersiin penyarian mutahir + Apa lu yakin pèngèn ngebersiin lu punya riwayat penyarian? + Ya + Kaga\' + Kaga\' bisa ngebuka halaman jala (aplikasi pengorag kaga\' ketemu). + Pakta Singket + Inpormasi lebi lanjut + Tutup + Isi pilihan Wikipédi + Ni ari punya isi pilihan: + Penyarian Wikipédi + Ta\'rip kaga\' ketemu. + Pembaruan alpa baru kesedia + Teken bakal nyomot + Tutup + Kasi unjuk gambar + Nyalain atawa matiin muat gambar di halaman. Ilangin cèntang ni penyetèlan kalo lu punya sambungan internèt lèlèt, atawa kalo lu punya pakèt data kewates. + Comot cuman liwat Wi-Fi + Konpirmir comot paké pakèt data? + Lu ada punya \"Comot cuman liwat Wi-Fi\" nyang dinyalain di penyetèlan. Apa lu pèngèn ngijinin lu punya pakèt data bakal ni comotan doang? + Ijinin + Baca lebi lanjut + Pasal ni makalah + Ke halaman gambar + Kaga\' bisa narik gambar. + Lisènsi bakal %s + Dumanin + Kaga\' bisa ngedumanin gambar: %s + Nyomot berekas... + Berekas kesimpen. + Kaga\' bisa muter tongtonannya. + Ijin bakal nulis ke penampungan di lu punya alat dibutuhin bakal nyimpen gambar. + Permak keterangan gambar + Tambahin keterangan gambar + Tambahin keterangan gambar (%s) + Kaga\' bisa nyimpen berekas + Teken bakal mbèntangin + Lisènsi Creative Commons + Gambar Captcha + Pemakéan wajar + Pengangkat kaga\' ditauin + Tampang galeré kaga\' kesedia di luar-jala. + Tutup + Lembaran baru + Tutup semua lembaran + Apa lu yakin pèngèn nutup semua lembaran? + Ya + Kaga\' + Tutup lembaran + Lembaran ketutup. + %s ketutup. + Semua lembaran ketutup. + Tambahin ke daptar bacaan + Teken lambang tenger kitap bakal nyimpen makalah ke daptar bacaan. + Deleng halaman di pengorag + Aksès lekas daptar isi + Lu sekarang bisa mingsèrin ke kèbot bakal ngebuka daptar isi, èn juga\' teken-tarik di ni tombol pengglincir biar lekas loncat ke bagèan laèn deri makalah. + Lu sekarang bisa nyari èn ngebaca dalem banyak basa Wikipédi di aplikasi.\n\nTeken lambang bakal nambah lebi banyak basa. + Waroan deri pengladèn kaga\' bener kepormatnya. + Ada kengabluan nyang kaga\' ditauin kejadian. + Pesen: \"%s\" + Aderès dijiplak ke papan klip. + Tèks dijiplak ke papan klip. + Baca makalah + Buka halaman obrolan + Deleng halaman semacem + Ni judul bekaètan ama lebi deri atu halaman: + Tambahin ke daptar bacaan + Makalah kaga\' bisa dimuat di luar-jala. + Bocoran: Tambahin makalah ke daptar bacaan èn bakal langsung kecomot pas lu balik ke dalem-jala. + Lu lagi ngebaca pèrsi luar-jala deri ni makalah nyang kesimpen di %s. + Dapetin arah + Kaga\' bisa nemuin aplikasi nyang nyediain arah. + Jelajahin Empan + Kasi unjuk pradeleng sènggètan + Cèngliin empan Jelajah + Kasi unjuk pradeleng singket deri makalah pas neken sènggètannya. + Ciutin jadwal + Otomatis ciutin jadwal di makalah, kaya\' kotak inpo, ruju\'an, èn catetan. + Nyumbang + Maap, pengenalan suara kaga\' kesedia. + Ladènan lokasi dimatiin. + Nyalain + Nyalain ijin lokasi bakal ngiat tempat di sekuliling lu. + Nyalain + TampangJala Sistim Android sekarang ni lagi diperbaruin. Jal coba lagi entaran. + + %d dipilih + %d dipilih + + %d dipilih + Ada kengabluan + Tutup + Ni halaman kaga\' ada + Wikipédi kaga\' punya <a href=\"%1$s\">halaman pemaké</a> nyang namanya percis begini. Umumnya, ni halaman aturannya mah dikeja èn dipermak ama <b>%2$s</b>. Cuman kalo ragu, perèksa dah apa bener \"%3$s\" ada. + Kaga\' bisa ngubungin ke internèt + Kaga\' bisa ngubungin ke Wikipédi. Perèksa dulu dah sambungan jaringannya, atawa jal lagi dah entaran. + Ruju\'an %s + Ruju\'an + Pengremengan gambar (di tèma Kereng) + Utamain isi luar-jaringan dulu + Iritin pemakéan data dengen muat makalah nyang kesedia di luar-jala deripada muat pèrsi mutahir deri makalahnya melulu + Cocokin ama tèma sistim + Isi kesedia di bawah $1, kecuali ada catetan tambahan + Lembaran baru + Simpen semua lembaran + Lu punya nama pemaké atawa aderès IP udah diblokir. + Pemblokiran dikeja ama <a href=\"%2$s\">%1$s</a> + Alesan nyang dikasiin: %s + Awal pemblokiran: %s + Kedaluwarsa pemblokiran: %s + ID Pemblokiran: %s + Lu bisa ubungin <a href=\"%2$s\">%1$s</a> <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Administrators\">merbot</a> nyang laèn bakal ngobrolin pasal pemblokiran. + Cèngliin lu punya palang peranti + Lu bisa ubungin <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Administrators\">merbot</a> bakal ngobrolin pasal pemblokiran. + Aplikasi ngablu + Kita mohon maap, ni aplikasi Wikipédi ngablu èn diberentiin.\n\nApa lu pèngèn mulain lagi apa kuar aja? + Mulain lagi + Kuar + Simpen + Basa + Cari + Tèma + Daptar isi + Permak... + Permak jabaran makalah + Permak mukadimah + Tèma + Terang + Kereng + Item + Coklat tua + Tulad tèks + Tarik penyelèrèk bakal ngrobah ukuran tèks nyang dipaké pas ngebaca makalah. Bakal nyetèl ukuran tèks di antéro aplikasi laènnya, robah lu punya ukuran tèks sistimnya. + Tèma aplikasi + Ganti ke aplikasi punya tèma kereng + Gedéin ukuran tèks + Kecilin ukuran tèks + %s (Bawaan) + Gaya tulisan + Ngebaca + Pemermakan + Mode bekutet ngebaca + Umpetin keboléan pemermakan èn palang peranti bawah pas nggelincir + Penyorotan nahwu + Kasi unjuk nomer baris + Paké gaya tulisan apstan tunggal + Kasi unjuk saran pengetikan + Kesimpen + Simpen ke daptar bacaan + Pindahin ke daptar bacaan + Keja baru + Daptar bacaan \"%s\" udah ada. + Nambahin %1$s ke %2$s. + %s kesimpen. Apa lu pèngèn nambahin tu ke daptar? + Mindahin %1$s ke %2$s. + Bèrès dah! %1$s udah ada %2$s. + Bèrès dah! %s udah ada semua makalahnya. + Deleng daptar + Tambah ke daptar + + 1 makalah + %d makalah + + + 1 makalah, %2$.2f MB + %1$d makalah, %2$.2f MB + + + %1$d deri 1 makalah kesedia di luar-jala + %1$d deri %2$d makalah kesedia di luar-jala + + + %1$d deri 1 makalah kesedia di luar-jala, %3$.2f MB + %1$d deri %2$d makalah kesedia di luar-jala, %3$.2f MB + + Sortir + Sortir berales... + Sortir berales nama + Sortir berales nama (kebalik) + Sortir berales tanggal ditambahinnya (paling baru) + Sortir berales tanggal ditambahinnya (paling lama) + Sortir berales tanggal dikejanya (paling baru) + Sortir berales tanggal dikejanya (paling lama) + Apus daptar + Èkspor daptar + Pilih + Urungin pilih + Ijin bakal nulis ke penampungan di lu punya alat dibutuhin bakal ngèkspor lu punya daptar bacaan. + Permak nama/jabaran + Buang deri luar-jala + Simpen bakal luar-jala + Apus semua deri luar-jala + Simpen semua bakal luar-jala + Tambah ke daptar laènnya + Pindahin ke daptar laènnya + Gua punya daptar bacaan + Nama ni daptar + Jabaran (opsionil) + %s dibuang deri daptar + %1$s dibuang deri %2$s + + %d makalah dibuang deri daptar + %d makalah dibuang deri daptar + + + %d makalah dibuang deri daptar %s + %d makalah dibuang deri daptar %s + + + %d daptar diapus + %d daptar diapus + + Daptar bawaan (%s) kaga\' bisa diapus + %1$s diapus. Daptar bawaan (%2$s) kaga\' bisa diapus. + Daptar diapus. Daptar bawaan (%s) kaga\' bisa diapus. + %s (daptar bacaan Wikipédi).json + Daptar bacaan Wikipédia (%s èn laènnya).json + %d makalah dibuang deri daptar + %s dibuang deri daptar + Balikin + %s keapus + Belon ada halaman kesimpen + Tambahin makalah ke daptar bacaan bakal entarannya, hata lu lagi di luar-jala. + Lu kaga\' punya makalah nyang ditambahin ke ni daptar. + Kesedia di luar-jala + Keja ni makalah kesedia di luar-jala + Tambahin daptar bacaan laènnya + Pindahin ke daptar bacaan laènnya + Pindahin deri %s ke daptar bacaan laènnya + Buang deri %s + Buang deri daptar bacaan + Pilih + Buang deri luar-jala + Makalah nongol di beberapa daptar + %s kaga\' bakal lagi kesedia di luar-jala bakal semua daptar bacaan: + Nyalain penjuntrungan daptar bacaan? + Makalah nyang disimpen di daptar bacaan sekarang bisa dijuntrungin ke lu punya rèkening Wikipédi. <a href=\"https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Synced_reading_lists\">Belajarin lebi lanjut</a> + Daptar bacaan sekarang bisa dijuntrungin di mana-mana alat. Masup ke lu punya rèkening Wikipédi èn ijinin lu punya daptar disimpen. <a href=\"https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Synced_reading_lists\">Belajarin lebi lanjut</a> + Nyalain penjuntrungan + Juntrungin daptar bacaan + Daptar bacaan sekarang bisa dijuntrungin di mana-mana alat. Masup ke lu punya rèkening Wikipédi èn ijinin lu punya daptar disimpen. + Masup / nimbrung ama Wikipédi + Entar dulu + Ya + Kaga\' + Makalah lagi dicomot, èn bakalan kesedia di luar-jala pas udah rampung. + Nambahin %1$d makalah ke %2$s + Mindahin %1$d makalah ke %2$s + Apa lu yakin pèngèn ngapus %s? + Apus daptar nyang dipilih? + + Apa lu yakin pèngèn ngapus %d daptar? + Apa lu yakin pèngèn ngapus %d daptar? + + Masup bakal nyalain penjuntrungan + Masup bakal ngijinin lu punya daptar bacaan disimpen di lu punya rèkening. + Urungin + Masup + Penjuntrungan daptar bacaan dimatiin + Penjuntrungan daptar bacaan dimatiin bakal lu punya rèkening, èn makalah kesimpen di lu punya alat nyang masup kaga\' lagi disèrepin. Nyalain penjuntrungan daptar bacaan di Penyetèlan. + Baè\' + Penyetèlan + Nyalain penjuntrungan daptar bacaan? + Makalah nyang disimpen ke daptar bacaan sekarang bisa dijuntrungin ama lu punya rèkening Wikipédi. <a href=\"#faq\">Belajarin lebi lanjut</a> + Jangan kasi gua unjuk lagi + Nyalain penjuntrungan + Kaga\', makasi. + Kesimpen + Daptar bawaan bakal lu punya makalah kesimpen + Atur makalah ke dalem daptar + Keja daptar bakal tempat nyang pèngèn disaba, topik kedemenan, èn banyak lagi laènnya + %1$s (dikeja ama pemaké) + Ada watesan %d makalah saban daptar bacaan. Daptar nyang udah ada nyang ngliwatin ni wates udah dibelèk jadi beberapa daptar. + Kaga\' bisa mindahin ke ni daptar. Lu udah nyampé wates %2$d makalah per daptar \"%1$s\". + Kaga\' bisa mindahin ke ni daptar. Lu udah nyampé wates %2$d makalah per daptar \"%1$s\". + Kaga\' bisa ngeja daptar laèn. Lu udah nyampé wates 100 daptar bacaan saban rèkening. + Keja daptar baru + Impor daptar + Sortir berales + Segerin penjuntrungan + Masup / daptar + + Ni makalah sekarang bakal kesedia di luar-jala. + Ni makalah sekarang pada bakal kesedia di luar-jala. + + + Ni makalah sekarang kaga\' bakal lagi kesedia di luar-jala. + Ni makalah sekarang pada kaga\' bakal lagi kesedia di luar-jala. + + Daptar bacaan kejuntrung + Penjuntrungan paling akir: %s + Baè\' + Baè\' + Urungin + Urungin + Urungin + Urungin + Baè\' + Apus + Daptar bacaan: %s + Daptar bacaan keèkspor + %d Daptar bacaan udah dièkspor sebagé \'reading_lists export.json\' ke lu punya map comotan + Daptar bacaan udah dièkspor ke \'reading_lists_export.json\' + Èkspor + Pili berekas bakal diimpor + Gagal ngimpor daptar bacaan + Pili daptar bakal dièkspor + Daptar bacaan keèkspor + + Gagal ngèkspor daptar bacaan + Gagal ngèkspor daptar bacaan + + + Daptar bacaan udah diimpor + Daptar bacaan udah diimpor + + Daptar barengan + Simpen + Simpen daptar + Daptar nama èn pili makalah bakal disimpen. + Judul + Urungin + Simpen + Daptar bacaan kesimpen + Deleng + Pengaturan + Permakan nyang dibalikin + Nyomot berekas + Kemajuan penyomotan + Rèhatin + Lanjutin + Urungin + Njuntrungin Daptar Bacaan + Kemajuan Penjuntrungan Daptar Bacaan + Lu ada punya %d ma\'lumat nyang belon dibaca + + Nyomot makalah + Nyomot makalah + + + Nyomot %1$d makalah… + Nyomot %1$d makalah… + + + %1$d makalah kesisa + %1$d makalah kesisa + + + Njuntrungin Daptar Bacaan + Njuntrungin Daptar Bacaan + + + Njuntrungin %1$d daptar… + Njuntrungin %1$d daptar… + + + %1$d daptar kesisa + %1$d daptar kesisa + + Ma\'lumat Wikipédi + Ma\'lumat + Ma\'lumat (kearsip) + Cari ma\'lumat + Deleng nyang belon dibaca + Deleng nyang diarsip + Pengaturan ma\'lumat + Tengerin udah dibaca èn arsipin + + Ma\'lumat kearsip + %d ma\'lumat kearsip + + Nyalain ma\'lumat + Nyalain + Entar dulu + Lu udah dapet semua ma\'lumatnya! + Deleng ma\'lumat kearsip + Pengaturan ma\'lumat + Tengerin belon dibaca + Tengerin semua udah dibaca + Bales + Mublisir balesan ke %s... + Jawaban dipublisir. + Kaga\' bisa mublisir otomatis. + %d ditengerin udah dibaca. + %d ditengerin belon dibaca. + + 1 ditengerin udah dibaca + %d ditengerin udah dibaca + + + 1 ditengerin belon dibaca + %d ditengerin belon dibaca + + Daptar pantengan + Pilih ma\'lumat + Ijinin aplikasi maké data bakal merèksa ma\'lumat baru di latar belakang. + Jenis ma\'lumat dalem-aplikasi + Sistim + Pesen deri sistim + Pendapetan + Jumblah permakan ketentu kesampéan + Makasi + Ada orang makasi ama lu bakal permakan + Balikin + Atu deri lu punya sumbangsih udah dibalikin + Masup + Lu punya aktipitèt rekeman + Penggeroan + Ada orang nggero lu di atu halaman + Halaman obrolan + Pesen èn balesan deri halaman obrolan + Surlès diterima + Ada orang ngirim lu surlès liwat wiki + Perobahan hak pemaké + Diterima pas lu punya hak pemaké berobah + Sènggètan ke makalah lu punya keja + Diterima pas ada sènggètan baru nyang dikeja ke halaman lu punya keja + Ma\'lumat tongolan + Cèngliin ma\'lumat tongolan + Setèlan pampangan + Umpetin ma\'lumat nyang udah dibaca + Wikipédi + Ma\'lumat deri Wikipédi + Laènnya + Laèn-laèn ma\'lumat deri aplikasi + Saring ma\'lumat + Saring ma\'lumat + Perbaruin basa aplikasi + Jal apus %s bakal liat lebi banyak ma\'lumat + + %d saringan + %d saringan + + Pilih semua saringan + Semua + Penggeroan + Cari atawa saring ma\'lumat + Saringan ma\'lumat + Tengerin udah dibaca + Tengerin belon dibaca + Dibaca + Belon dibaca + Cèntang semua butir + Ilangin cèntang semua butir + Saringan Wiki + Saringan jenis + Semua \"wiki\" + Semua \"jenis\" + %s punya halaman obrolan + Pungsi kaga\' kesedia pas di luar-jala. + Sebab lu baca + Penyembarang + Makalah sembarang + Lebi banyak makalah sembarang + Bacaan kesohor + Lebi banyak bacaan kesohor + %d rb + %d jt + Muat makalah sembarang laènnya + Ni ari di Wikipédi + Deleng balé-balé + Ni ari punya gambar + Comot + Dumanin + Umpetin ni kartu + Kartu keumpet. + Permak basa kartu + Opsi laènnya + Gambar pilihan deri Wikimedia Commons + Jelajahin + Balé + Lambang kartu + Dalem pemberitaan + + kemarèn + %d ari nyang liwat + + ni ari + Baca %s + Kaga\', makasi + Isi kaga\' bisa dimuat pas di luar-jala. + Makalah pilihan + Simpen + Cèngliin empan + Pulihin tampang bawaan + Kasi unjuk semua + Umpetin semua + Èling baè\'-baè\' kaga\' semua jenis kartu kesedia di semua basa Wikipédi. Permak basa lu punya pilih di Penyetèlan. + Makalah pasal peristiwa sekarang ni + Peristiwa dalem sejarah di ni ari + Saran berales makalah nyang baru-baru ni dibaca deri lu punya riwayat + Makalah pilihan saban-sarian di Wikipédi + Makalah paling dideleng saban-sarian + Gambar pilihan saban-sarian deri Wikimedia Commons + Balé-balé Wikipédi dengen isi pilihan saban-sarian + Buat makalah sembarang bakal dibaca + Saran nambahin isi di Wikipédi + Kaga\' ada acan di lu punya empan Jelajahin + Cèngliin + Baè\' + Urungin + <strong>Cèngliin lu punya empan Jelajahin</strong><br /><br />Lu sekarang bisa milih apa lu bakal kasi unjuk di lu punya empan, èn ngutamain lu punya jenis isi kedemenan. + Baè\' + Urungin + Lu udah nyampé bawahnya empan. + Muat lebi banyak + Bacaan kesohor di %s + Lembaran + Jabaran makalah + Makalah + Jabaran makalah (%s) + Jabaran makalah (%s) + Jabaran gambar + Keterangan gambar + Keterangan gambar (%s) + Keterangan gambar (%s) + Terebitin + Baca + Tambah jabaran makalah + Terjemahin jabaran makalah + Permak jabaran makalah + Tambahin keterangan gambar + Permak keterangan gambar + Terjemahin keterangan gambar + Urungin + Inpo: Jabaran makalah + Pasal Wikidata + Pedoman Wikidata bakal nulis jabaran + Makasi bakal lu punya minat dalem mermak jabaran makalah! Bakal ngeja permakan tambahan, padol dah, masup ke lu punya rèkening Wikipédi. + Dengen ngrobah jabaran makalah, gua akur ama <a href=\"%1$s\">Ketentuan Pemakéan</a> èn lu tetep akur bakal ngelansir lu punya sumbangsih di bawah lisènsi <a href=\"%2$s\">Creative Commons CC0</a>. + biasain mulain paké hurup kecil + Masupan suara + Belajarin lebi lanjut pasal jabaran makalah + Belajarin lebi lanjut pasal keterangan gambar + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Article_descriptions + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_captions + Tèks – kepèndèkan. + Tèks kaga\' bolé akirannya tenger baca. + Mulain paké hurup kecil, kecuali kalo kata pertamanya – nama peada dèwèk. + Jangan mulain paké hurup kecil. + Ni tèks kiatannya paké basa nyang kaga\' keancer. Ni basa kudunya – %s. + Tulung pastiin lu punya jabaran – dalem %1$s. Padol dah, cuèkin aja ni wanti-wanti kalo lu punya jabaran udah ditulis dalem %2$s. + Kasi unjuk jabaran nyang disaranin + Jal jabaran makalah saranan-mesin + Jabaran makalah diterebitin! + Jabaran makalah diterebitin! + Jabaran makalah diterebitin! (%s) + Keterangan gambar diterebitin! + Keterangan gambar diterebitin! (%s) + Tenger gambar diterebitin! + Mantep pan? Bantu kita nambahin lebi banyak. + Lu barusan ngeja Wikipédi jadi baè\'an bakal sapa-sapa + Kelar + Nyaho kaga\' lu? + Lu juga\' bisa mermak makalah di dalem ni aplikasi. Jal laèn kali betulin salah ketik èn kalimat kecil dengen ngeklik lambang ^1. + Jabaran makalah + Ngrangkum makalah bakal ngebantu pembaca mahamin perihal dengen seklèbatan. + Bikin pèndèk aja + Apdolnya mah sebaris aja, sekitaran dua ampé dua belas kata + Mulain mermak + Dengen mulain, gua janji kaga\' bakal nyalahgunain ni keboléan. + Saranan mesin + Saran dibuat ama mesin, bukan ama sukarèlawan atawa Yayasan Wikimédia + Cèngliin palang peranti + Cèngliin palang peranti bawah paké 5 jalan pintas nyang lu kira paling ngebantu. + Palang peranti + Menu + Sèrèt èn taroh barang lu punya demen di mari 👋 + Setèl ulang ke bawaan + Tahan lambang sèrèt bakal mindahin ni barang + Pijet èn sèrèt barang bakal ngrobah letaknya + Jabarin makalah + Kasi keterangan gambar + Tengerin gambar + Perèksa ulang jabaran makalah + Tambahin jabaran + Permak jabaran + Tambah terjemahan + Permak terjemahan + Tambah keterangan + Permak keterangan + Perèksa ulang keterangan gambar + Gua punya sumbangsih + Ni berekas kaga\' punya jabaran + Dengen nambahin jabaran, gua akur ama <a href=\"%1$s\">Ketentuan Pemakéan</a> èn gua tetep akur bakal ngelansir gua punya sumbangsih di bawah lisènsi <a href=\"%2$s\">Creative Commons CC0</a>. + Dengen nambahin keterangan gambar, gua akur ama <a href=\"%1$s\">Ketentuan Pemakéan</a> èn gua tetep akur bakal ngelansir gua punya sumbangsih di bawah lisènsi <a href=\"%2$s\">Creative Commons CC0</a>. + Inpo + Tambah jabaran makalah + Sumbang ke makalah sonder jabaran + Tambahin keterangan gambar + Tambahin keterangan gambar singket nyang belon ada + Terjemahin keterangan gambar + Terjemahin keterangan ke laèn-laèn basa + Tugas laènnya bakal pemermak anèkabasa + Tugas terjemahan kesedia kalo lu baca èn nulis di lebi deri atu basa Wikipédi. + Kekonci ampé lu mermak %d keterangan gambar + Kekonci ampé lu mermak %d jabaran makalah (ditahkik) + Bukan bakal gua + Tambah basa + Gambar + Pembikin + Mualip + Sumber + Lisènsi + Tanggal + + 1 sumbangsih + %d sumbangsih + + Permakan nyang disaranin + Tambah jabaran makalah + Tambah jabaran makalah (%s) + Mulain + Keterangan gambar (%s) + Gambar + Berekas deri Wikimedia Commons + Pembikin + Tenger + Tanggal + Sumber/Tukang jeprèt + Lisènsi + Inpo laènnya + Halaman berekas di Wikimedia Commons + Halaman berekas di Wikipédi + Tambahin tenger gambar + Tambahin keterangan gambar + Tambahin keterangan gambar (%s) + Deleng + Tambahin keterangan gambar + Tambahin keterangan gambar (%s) + Tambahin tenger gambar + Gimana mermaknya? Tulung dah barang bentaran isi ni angkèt pasal mermak dalem-aplikasi. + Isi Angkèt + Tambahin + Terjemahin + Keterangan gambar + Tenger gambar + Nerebitin + Diterebitin + Nengerin gambar ngeja orang gampil nemuinnya. + Dengen nambahin tenger gambar, lu bakal ngeja gambar gampil dicari di Commons, gudang gambar lisènsi perdèo nyang Wikipédi paké bakal gambar di makalah-makalahnya. + Cuman tenger lu punya pilih nyang bakal ditambahin ke gambar. + Tambahin tenger cènglian bakal gambar biar orang gampil nemuinnya. + Tambah atawa pilih tenger nyang cocok + Tenger nyang udah diterebitin + Cari tenger + Lu belon pilih tenger bakal ni gambar acan + Cuman tenger lu punya pilih nyang bakal ditambahin ke gambar. Tenger nyang kaga\' dipilih bakal ditengerin sebagé ditolak. Apa lu yakin pèngèn nengerin semua tenger sebagé ditolak? + Tambahin tenger + Tenger nyang kaga\' diterebitin kaga\' bakal kesimpen + Picuk bakal nggedéin ni gambar. + %s, makasi ya bakal permakannya. Lu bisa nemuin banyak cara laènnya di bawah ni bakal nyumbang ke Wikipédi. + <b>Tabé %s</b>, lu bisa nemuin beberapa cara lekas èn gampil di bawah ni bakal ngebantu nyempurnain Wikipédi. Lu bakal liat dah bèdanya nyang lu keja pas lu udah mulain.\nSelamet mermak dah! + Jabarin gambar bakal ngebantu pembaca\' ngarti ma\'na èn kontèksnya. + Rangkum makalah bakal ngebantu pembaca mahamin perihal dengen seklèbatan. + Lu punya jumblah sumbangsih sejauh ni. + Ada berapa ari berèntèt lu udah bikin sumbangsih. Kalo lu lama kaga\' bikin sumbangsih, ni ngasi unjuk tanggal lu punya sumbangsih nyang paling akir. + Jumblah pendelengan halaman butir di mana lu ada punya sumbangsih dalem 30 ari belakangan. + Berales berapa kali atu deri lu punya sumbangsih dibalikin (dibalikin ama pemermak laèn). Permakan nyang dibalikin: %d. + Permakan nyang disaranin dirèhatin ampé %1$s. Maap ya, %2$s, beberapa deri lu punya sumbangsih nyang paling baru udah dibalikin. + Permakan nyang disaranin dimatiin. Maap ya, %s, udah kebanyakan lu punya sumbangsih nyang paling baru dibalikin. + Leliatanah, lu punya aderès IP (atawa jangkoan aderès IP) lagi diblokir deri mermak Wikipédi. + Maap ya, %s, lu misti ngeja paling kaga\' tiga permakan langsung di makalah bakal maké ni keboléan. + Wejangan èn pengakalan mermak + Halaman pertulungan permakan nyang disaranin + Rèrodan permakan + Pendelengan + Kualitèt permakan + Ajib + Mantep + Yahud + Bagus + Biasa + Cukup + Kurang + Jelèk + Permakan nyang disaranin + + Sumbangsih + Sumbangsih + + + %d ari + %d ari + + Apaan tu Permakan nyang disaranin? + Permakan nyang disaranin ngasi kesempetan bakal sumbangsih kecil tapi penting bakal Wikipédi. + Belajarin lebi lanjut + Dirèhatin + Dimatiin + IP diblokir + Paling akir dipermak + Kaga\' perna + baru + Dengen nerebitin, lu akur ama <a href=\"%1$s\">ketentuan pemakéan</a>, èn lu tetep akur bakal ngelansir lu punya sumbangsih di bawah <a href=\"%2$s\">lisènsi CC0</a>. + Permakan nyang disaranin + Makasi ya udah mermak Wikipédi! Ngapa kaga\' lanjutin nyang belakangan? + Gableg waktu bakal nerusin nyempurnain Wikipédi? Liat ni saran pemermakan dah. + %s punya sumbangsih + Basa + Tanggal / Waktu + Jenis sumbangsih + Gambar + Makalah + %s pendelengan + + Diliat sekali dalem 30 ari belakangan. + Diliat %s kali dalem 30 ari belakangan. + + Diliat %s kali dalem 30 ari belakangan. + + Lu udah nambahin %d tenger + Lu udah nambahin %d tenger + + %1$d %2$s + Kemarèn + Nyaho kaga\' lu kalo sapa aja bisa mermak Wikipédi? + Permakan nyang disaranin entu cara baru bakal mermak Wikipédi di Android. Ni ngebantu lu ngebikin sumbangsih kecil tapi penting bakal Wikipédi.\nKita punya tujuan mah bakal ngeja pemermakan gampil èn lebi kena diaksès ama sapa aja! Masup atawa nimbrung di Wikipédi bakal mulain. + Masup / nimbrung ama Wikipédi + Tenger gambar + Lu punya permakan sekarang ni lagi langsung di Wikipédi + Lebi banyak permakan nyang disaranin + Jabaran nyang disaranin + Pèngèn nglaporin apaan lu? + Kaga\' cukup inpormasi + Kaga\' bisa ngiat jabaran nyang disaranin + Saran kaga\' pantes + Kaga\' ngarti ama tugasnya + Laporin + Laporan diserahin + + %1$s tenger + %1$s tenger + + + %1$s lèter + %1$s lèter + + + Lu udah ngebuang %d lèter + Lu udah ngebuang %d lèter + + + Lu udah nambahin %d lèter + Lu udah nambahin %d lèter + + Gambar makalah + Tambah gambar makalah nyang disaranin ke makalah Wikipédi bakal ningkatin pemahaman. + Apa lu pèngèn nambahin ni gambar ke makalah? + Pedoman cara-cara + Ya + Kaga\' + Kaga\' yakin + Ngapa kaga\'? + Lu punya jawaban bakalan ningkatin saran entarannya. + Kaga\' kaga\' nyambung + Kaga\' cukup inpormasi bakal nentuin + Gambarnya nyinggung + Gambarnya kualitèt rendahan + Gua kaga\' nyaho ni perihal + Laènnya + Serahin + Tambahin gambar nyang ilang ke makalah di Saran Pemermakan + Gambar bakal ngebantu orang mahamin, cuman kebanyakan makalah kaga\' ada gambarnya. + Lu bakal nentuin apa gambar nyang disaranin kudu ditaroh di makalah Wikipédi, apa kaga\'. + Saran dibuat ama mesin èn lu bakal maké lu punya peniléan sendèwèk bakal nentuin diterima apa ngga\'nya. + Gambar – pada deri Wikimedia Commons, bunga rampé deri gambar lisènsi perdèo nyang dipaké ama Wikipédi. + Perèksa ulang ni makalah bakal mahamin topiknya + Perdatain gambar èn inpormasi nyang bekaètan + Tentuin apa ni gambar ngebantu pembaca mahamin ni topik lebi baè\' apa kaga\' + Terus + Dimohon perèksa ulang makalah bakal mahamin ni topik èn perdatain gambarnya + Gambar nyang ditambahin + Keterangan nyang ditambahin + Deleng + Halaman berekas + Tambahin keterangan gambar + Tambahin tenger gambar + Permak %s + Makasi ya udah mermak Wikipédi! + Kita ngarti dah lu udah jal sebagusnya, cuman atu deri pemerèksa ulang ada slempang. Alesan nyang rasa-rasanya jadi alesan pembalikan lu punya permakan antara laèn: + lu punya sumbangsih kaga\' ngikutin <a href=\"%1$s\">pedoman</a>. + lu punya sumbangsih kiatan kaya\' coba-coba atawa penggratilan. + Kalo lu kebèngbat, liat <a href=\"%1$s\">riwayat permakan</a>. + Urungin + Ijin ngaksès penampungan di lu punya alat dibutuhin bakal pengoragan luar-jala. + Ijin ngaksès penampungan di lu punya alat dibutuhin bakal maké Bibliotik Luar-Jala. + %.2f GB + %.2f MB + Liwatin + Terusin + Mulain + Entaran kali + Cara baru bakal njelajahin + Selemin liang kelinci Wikipédi paké empan Jelajahin nyang terus diperbaruin. <br/> <b>Cèngliin</b> empan bakal lu punya minat – mau entu belajar pasal peristiwa sejarah <b>Di ni ari</b> kè\', mau nglèmpar dadu paké <b>Sembarang</b> kè\'. + Daptar bacaan dengen penjuntrungan + Lu bisa ngeja daptar bacaan deri makalah nyang lu pèngèn baca entarnya, hata pas lu lagi di luar-jala. <br/>Masup ke lu punya rèkening Wikipédi bakal ngejuntrungin lu punya daptar bacaan. <a href=\"#login\">Nimbrung ama Wikipédi</a> + Kirin data sonder-nama + Bantu ngeja aplikasi jadi lebi baè\' dengen ngasi kita tau gimana lu makénya. Data nyang kekumpul – sonder-nama. <a href=\"#privacy\">Belajarin lebi lanjut</a> + Kirim data pemakéan + Ngarti dah + Kita nemuin ni basa di lu punya alat: + Tambah atawa permak basa + Ènsiklopédi Perdèo\n...dalem lebi deri 300 basa + Sembarang + Terus ngebaca + Cari + Di ni ari + Laènnya di ni ari + %1$s peristiwa sedari %2$s–%3$d + Ni tahon + Bulan bèsok + Bulan kemarèn + Buka pemilih tanggal + + Tahon kemarèn + %d tahon nyang liwat + + Lu nerobos wayah, lu 🚀 + Balik ke wayah dateng + Tambah basa + Disaranin + Semua basa + Basa Wikipédi + Lu punya basa + Tambah basa + Buang basa + Buang basa + + Buang basa nyang dipilih? + Buang basa nyang dipilih? + + Lu cuman bisa ngiat isi di empan Jelajahin èn saringan penyarian lekas bakal basa-basa Wikipédi laènnya nyang kesisa. + Kaga\' bisa ngebuang semua basa + Bikin paling kaga\' atu basa Wikipédia bakal nyari ama ngebaca isi. + laènnya + Tambah basa Wikipédi + Apus ragem basa Tionghoa deri lu punya basa aplikasi? + Lu sekarang ni lagi ada punya ragem Terdisionil ama Ringkes nyang kesetèl di lu punya basa aplikasi. Perbaruin lu punya penyetèlan basa aplikasi? + Permak basa + Kaga\', makasi + Urungin + Baè\' + Baè\' + Baè\' + Baè\' + Baè\' + Baè\' + Urungin + Semua sumbangsih + Halaman %1$d deri %2$d + Tebel + Doyong + Garis bawah + Corèt + Hurup kecit atas + Hurup kecit bawah + Tèks gedé + Tèks kecil + Kode + Sènggètan + Anak-kop %d + Pemormatan + Kop + Selesepin média + Daptar poinan + Daptar nomoran + Blatan + Ruju\'an + Sènggètan pradeleng + Selesepin média + Pilih berekas deri Wikimedia Commons + Cari média + Tambahin tètèk bengèk gambar + Gambar nyang diangkat + Keterangan gambar + Lèbel nyang dikasi unjuk di sebelahnya butir bakal semua pembaca + Tèks alternatip + Jabaran bakal pembaca nyang kaga\' bisa ngiat + Penyetèlan lanjutan + Bungkus tèks di sekuliling gambar + Penempatan gambar + Kanan + Kèbot + Tenga + Kaga\' ada + Jenis gambar + Longokan + Sonderpigura + Pigura + Dasar + Lu bisa setèl gimana butir média bakal nongol di halaman. Ni kudunya sih paké pormat longokan biar ajeg ama laèn-laèn halaman kebanyakan. + Ukuran gambar + Bawaan + Cèngliin + Lèbar + Tinggi + px + Selesepin + Pertulungan + Masup / nimbrung ama Wikipédi + Tabé %s, nyaho kaga\' lu kalo sapa aja bisa mermak Wikipédi? + Nyaho kaga\' lu kalo sapa aja bisa mermak Wikipédi? + Mulain + Daptar pantengan + Temuin makalah èn halaman nyang sebelonnya lu tambahin ke lu punya daptar pantengan di menu Laènnya di bawahnya <b>Daptar Pantengan</b>. + Baè\' + Baè\' + Urungin + Urungin + Obrolan + Obrolan: %s + Topik baru + Topik dipublisir. + Ni halaman oborolan – kosong. + Obrolan mulain di mari + Halaman obrolan ièlah tempat di mana orang pada perhadringan bakal ngeja isi Wikipédi sebagus-bagusnya. Mulain dengen nambahin topik perhadring baru bakal ubungan ama samenwèrkenan ama komunitèt tukang Wikipédi. + Bales + (Kaga\' ada perihal) + Perihal + Susun waroan + Susun pesen + Pesen kaga\' bolé kosong. + Perihal kaga\' bolé kosong. + Jawaban dipublisir. + Balikin + <b>Paling akir dipermak %1$s</b> ama %2$s + Makasi ya udah maké halaman obrolan. Apa lu bisa bantu kita nyempurnain ni aplikasi dengen ikutan angkèt? + Mulain + Wikipédi - perhadring di halaman obrolan pasal \"%s\" + Wikipédi - perhadring di halaman obrolan + Ni – halaman obrongan. Tulung hormatin pedoman halaman obrolan, èn jangan ampé lali nèken lu punya publisiran dengen ngetik empat tenger gelombang: ~~~~ pas mublisir paké wikitext.<br><br><a href=\"https://en.wikipedia.org/wiki/Wikipedia:Talk_page_guidelines\">Wikipédi:Pedoman halaman obrolan</a> + Cari pesen + Cari topik + Temuin di topik halaman obrolan + Sortir berales + Tanggal diterebitin + Tanggal diperbaruin + Nama topik + Apa lu yakin pèngèn kuar? + Perihal èn tèks isi kaga\' bakal kesimpen. + + Kasi unjuk balesan + Kasi unjuk balesan (%d) + + + Umpetin balesan + Umpetin balesan (%d) + + Langganan ke \"%s\" + Berenti langganan deri \"%s\" + Langganan + Langganan + Tengerin udah dibaca + Tengerin belon dibaca + Dumanin + Tanggepan paling baru: %s + Jumblah dibaca + Lambang pemaké + Baca + Belon dibaca + Masup bakal langganan ke topik + Langganan topik bakal mungkinin lu nerima ma\'lumat pasal tanggepan baru di ni topik. Padol dah, keja rèkening atawa masup ke lu punya rèkening Wikipédi bakal langganan ke topik. + Arsip obrolan: %s + Dumanin perhadring + Dumanin halaman obrolan + Dumanin permakan + %s punya sumbangsih + Permak sumber + Halaman pemaké %s + Cari di topik halaman pemaké + Jiplak sènggètan ke papan klip + Jiplak tèks + Bèntangin untelan + Ciutin untelan + Mantengin + Pantengin + Permakan selanjutnya + Permakan sebelonnya + Makasi + Deleng halaman pemaké + Kirim \'Makasi\' terang-terangan + \'Makasi\' entu cara nyang paling gampil bakal ngasi unjuk pengargaan bakal pemermak punya gawéan di Wikipédi.\n\'Makasi\' kaga\' bisa dibalikin èn kena dideleng ama halayak. + Kirim makasi + Urungin + Lu punya \'Makasi\' udah dikirim ke %s 👍 + Deleng halaman pemaké + Deleng halaman obrolan + Deleng sumbangsih pemaké + Bandingin répisi + Bandingin répisi: %s + Deri: + Ke: + Baris %d + Baris %d–%d + Baris %1$d–%2$d + Baris ditambahin + Baris dibuang + Paragrap ditambahin + Paragrap dibuang + Balikin permakan + Ni bakal mbalikin perobahan nyang dikeja ama répisi deri makalah nyang dikasi unjuk di mari. + Bakal nerusin, tulung kasi alesan ngapa balikin ni permakan: + Répisi udah dibalikin. + Apa lu yakin pèngèn ngaterèt ni permakan? + Permakan udah dibalikin. + Bandingin + Cuman dua répisi nyang bisa dipilih. + %1$s èn dia punya halaman obrolan udah ditambahin ke lu punya daptar pantengan %2$s. + Robah + ajeg + bakal seminggu + bakal sebulan + bakal 3 bulan + bakal 6 bulan + %s èn dia punya halaman obrolan udah dibuang deri lu punya daptar pantengan. + Pilih jangka waktu Daptar Pantengan + Ajeg + 1 minggu + 1 bulan + 3 bulan + 6 bulan + Lu kaga\' punya makalah acan di lu punya daptar pantengan. + Cari daptar pantengan + Semua + Obrolan + Halaman + Laènnya + Dipindahin + Dilindungin + Diapus + Saringan daptar pantengan + Wiki + Semua + Aktipitèt daptar pantengan + Perobahan nyang belon diliat + Perobahan nyang udah diliat + Ancer-ancer kualitèt sumbangsih + Roman-romannya bagus + Bisa aja ada masalah + Bisa jadi ada masalah + Roman-romannya ada masalah + Ancer-ancer niat pemaké + Roman-romannya niatnya baè\' + Bisa aja niatnya jelèk + Bisa jadi niatnya jelèk + Roman-romannya niatnya jelèk + Pendaptaran èn pengalaman pemaké + Kaga\' kedaptar + Kedaptar + Pendateng + Orang belajar + Pemaké kawakan + Kemualipan sumbangsih + Lu punya perobahan + Orang laèn punya perobahan + Sumbangsih otomatis + Bot + Manusia (bukan bot) + Kepentingan + Permakan kecit + Suntingan bukan-kecit + Répisi paling baru + Répisi paling baru + Bukan répisi nyang paling baru + Jenis perobahan + Permakan halaman + Pengejaan halaman + Perobahan katègori + Permakan Wikidata + Piil kerekem + Pemaké baru + Setèl ulang + Cari atawa saring daptar pantengan + Saringan daptar pantengan + Kaga\' ada hasil, jal buang %s bakal ngiat lebi banyak. + + %d saringan + %d saringan + + Pradeleng permakan + Rangkum permakan + Bagémana lu ningkatin halamannya? + Ni cuman permakan kecit + Pantengin ni halaman + Belajarin lebi lanjut pasal rangkuman permakan + Katègori + Ni halaman kaga\' masup katègori mana-mana. + Makalah + Anak-katègori + Kaga\' ketemu makalah di ni katègori. + Kaga\' ketemu anak-katègori di ni katègori. + Ruang nama + Kaga\' ada (ni – répisi pertama) + Sumbangsihnya %s + Kaga\' ketemu halaman kearsip. + Saringan berales ruang nama + Semua ruang nama + Saringan ruang nama + Makalah + nyang paling baru + Ngablu pas maènin média. + Sumbangsih + Saring sumbangsih + Impor daptar bacaan barengan + Bagémana lu pèngèn namain daptar nyang udah didumanin barengan ama lu? + *baru* + Daptar bacaan udah dibagiin barengan ama lu + Kita ngehin kalo ada daptar bacaan nyang udah didumanin barengan ama lu. Bakal ndeleng ni daptar di aplikasi, kombali ke pesen awal èn teken sènggètannya lagi. + Ngarti dah + Daptar bacaan keimpor + Dumanin... + Dumanin ni daptar bacaan ama nyang laènnya + Tabé! Gua pèngèn ngedumanin gua punya daptar bacaan Wikipédi ama lu: + Apa lu bisa bantu kita nyempurnain \"Dumanin daptar bacaan\"? + \"Dumanin daptar bacaan\" ièlah atu keboléan uji coba èn kita butuh lu punya empan balik bakal nyempurnain atawa ngebuang tu keboléan. + Terima + Tolak + Masalah halaman + Perbaèkan bangsat èn peningkatan kecit + diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 21648a7b2c5..b499350f15b 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -1,5 +1,6 @@ @@ -102,9 +103,9 @@ Diskwel war ur gartenn Lenn en ur yezh all A c\'haller kaout e %d yezh all - CC-BY-SA 3.0 - Pa\'z embannit e tegemerit an <a href=\"%1$s\">Amplegadoù implijout</a>,ha lakaat a rit ho tegasadennoù dindan an aotre-implijout <a href=\"%2$s\">CC BY-SA 3.0</a> en ur doare didorradus. - Pa\'z embannit e tegemerit an <a href=\"%1$s\">Amplegadoù implijout</a>, ha lakaat a rit ho tegasadennoù dindan aotre-implijout <a href=\"%2$s\">CC BY-SA 3.0</a> en un doare didorradus. Ar c\'hemmoù a vo deroet da chomlec\'h IP hoc\'h ardivink. M\'ho peus <a href=\"https://#login\">kevreit</a> ho po muioc\'h a zegasadennoù e kuzhut. + CC BY-SA 4.0 + Pa\'z embannit e tegemerit an <a href=\"%1$s\">Amplegadoù implijout</a>,ha lakaat a rit ho tegasadennoù dindan an aotre-implijout <a href=\"%2$s\">CC BY-SA 4.0</a> en ur doare didorradus. + Pa\'z embannit e tegemerit an <a href=\"%1$s\">Amplegadoù implijout</a>, ha lakaat a rit ho tegasadennoù dindan aotre-implijout <a href=\"%2$s\">CC BY-SA 4.0</a> en un doare didorradus. Ar c\'hemmoù a vo deroet da chomlec\'h IP hoc\'h ardivink. M\'ho peus <a href=\"https://#login\">kevreit</a> ho po muioc\'h a zegasadennoù e kuzhut. Lakaet e vo ar c\'hemmoù war gont chomlec\'h IP ho penveg. Ma <a href=\"https://#login\">kevreit</a>, ho po muioc\'h a brevezded. Yezhoù Wikipedia Klask @@ -229,7 +230,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/fr https://foundation.m.wikimedia.org/wiki/Terms_of_Use https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - http://creativecommons.org/licenses/by-sa/3.0/ + https://creativecommons.org/licenses/by-sa/4.0/ http://creativecommons.org/publicdomain/mark/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -238,7 +239,7 @@ Troerien Troet eo bet an arload-mañ gant troerien a-youl vat e <a href=\"https://translatewiki.net\">translatewiki.net</a>. Aotre-implijout - Kod mammennoù a c\'haller kaout e <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> ha <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">GitHub</a> dindan <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">licence Apache 2.0</a>. Nemet kemennoù kontrol a vefe, e c\'haller kaout an endalc\'had <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">licence Creative Commons Attribution-ShareAlike</a>. + Kod mammennoù a c\'haller kaout e <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> ha <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">GitHub</a> dindan <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">licence Apache 2.0</a>. Nemet kemennoù kontrol a vefe, e c\'haller kaout an endalc\'had <a href=\"https://creativecommons.org/licenses/by-sa/4.0\">aotre-implijout Creative Commons Attribution-ShareAlike</a>. Ur produ gant <a href=\"https://wikimediafoundation.org/\">Diazezadur Wikimedia</a> Diwar-benn Kemmet eo bet ar bajenn. Ha sur oc\'h e fell deoc\'h mont kuit anez enrollañ ho kemmoù ? @@ -877,6 +878,19 @@ Dec\'h Kevreañ ouzh / mont gant Wikipedia Danevelliñ + Skeudennoù ar pennad + Tuto + Ya + Ket + Perak pas ? + Tagus eo ar skeudenn + Skeudenn a galite izel + All + Kas + War-lerc\'h + Skeudenn ouzhpennet + Ouzhpennañ un alc\'hwez + Gwelet Pajenn ar restr Ouzhpennañ alc\'hwez ar skeudenn Kemm %s @@ -964,9 +978,9 @@ Patrom Dave Klask ur media - Arventennoù ar media + Ouzhpennañ munudoù d\'ar skeudenn Skeudenn enporzhiet - Alc\'hwez + Alc\'hwez ar skeudenn Testenn all Arventennoù araokaet Lec\'hiadur @@ -1057,4 +1071,5 @@ Rannañ… Asantiñ Disteurel + Kudennoù war ar bajenn diff --git a/app/src/main/res/values-bs/strings.xml b/app/src/main/res/values-bs/strings.xml index 4ae33ae7366..080ceb91997 100644 --- a/app/src/main/res/values-bs/strings.xml +++ b/app/src/main/res/values-bs/strings.xml @@ -103,9 +103,9 @@ Prikaži na karti Pročitaj na drugom jeziku Dostupan na %d dr. jezika - CC BY-SA 3.0 - Objavljivanjem prihvatate <a href=\"%1$s\">uslove korištenja</a> i neopozivo se slažete da svoj doprinos objavite pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. - Objavljivanjem prihvatate <a href=\"%1$s\">uslove korištenja</a> i neopozivo se slažete da svoj doprinos objavite pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. Izmjene koje napravite pripisat će se IP-adresi Vašeg uređaja. Ako se <a href=\"https://#login\">prijavite</a>, imat ćete veću privatnost. + CC BY-SA 3.0 + Objavljivanjem prihvatate <a href=\"%1$s\">uslove korištenja</a> i neopozivo se slažete da svoj doprinos objavite pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. + Objavljivanjem prihvatate <a href=\"%1$s\">uslove korištenja</a> i neopozivo se slažete da svoj doprinos objavite pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. Izmjene koje napravite pripisat će se IP-adresi Vašeg uređaja. Ako se <a href=\"https://#login\">prijavite</a>, imat ćete veću privatnost. Jezici Wikipedije Pretraži Ova stranica nije dostupna na drugim jezicima. @@ -230,7 +230,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/bs https://foundation.wikimedia.org/wiki/Terms_of_Use https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -240,7 +239,7 @@ Prevodioci Aplikaciju su preveli dobrovoljci na sajtu <a href=\"https://translatewiki.net\">translatewiki.net</a>. Licenca - Izvorni kôd dostupan je na <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerritu</a> i <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHubu</a> pod <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">licencom Apache 2.0</a>. Osim gdje je drukčije navedeno, sadržaj je dostupan pod <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">slobodnom licencom Autorstvo-Dijeliti pod istim uvjetima</a>. + Izvorni kôd dostupan je na <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerritu</a> i <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHubu</a> pod <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">licencom Apache 2.0</a>. Osim gdje je drukčije navedeno, sadržaj je dostupan pod <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">slobodnom licencom Autorstvo-Dijeliti pod istim uvjetima</a>. Proizvod <a href=\"https://wikimediafoundation.org/\">Fondacije Wikimedia</a> O aplikaciji Izmijenili ste stranicu. Jeste li sigurni da želite izaći bez da sačuvate izmjene? @@ -522,6 +521,11 @@ Spisak praćenja Sistem Zahvali se + Izaberi sve filtere + Sve + Spominjanja + Označi kao pročitano + Označi kao nepročitano Budući da ste pročitali Nasumična stranica Nasumični članak diff --git a/app/src/main/res/values-btm/strings.xml b/app/src/main/res/values-btm/strings.xml index 9ee991efb34..646f6ff32d1 100644 --- a/app/src/main/res/values-btm/strings.xml +++ b/app/src/main/res/values-btm/strings.xml @@ -140,7 +140,6 @@ https://id.m.wikipedia.org/wiki/Wikipedia:Parihal https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/btm#Baca_sacara_luring_dot_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/btm - https://creativecommons.org/licenses/by-sa/3.0/deed.btm https://creativecommons.org/publicdomain/zero/1.0/ Pustaha na ipake Kontributor diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index d60049cfbaa..2be42d0e8a6 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -16,6 +16,7 @@ * Kippelboy * Lluis tgn * Macofe +* McDutchie * Mguix * Paucabot * SMP @@ -128,9 +129,9 @@ Mostra al mapa Llegeix en una altra llengua Disponible en %d altres llengües - CC BY-SA 3.0 - En publicar accepteu les <a href=\"%1$s\">condicions d\'ús</a> i que alliberareu irrevocablement les vostres contribucions sota la llicència <a href=\"%2$s\">CC BY-SA 3.0</a>. - En publicar accepteu les <a href=\"%1$s\">condicions d\'ús</a> i que alliberareu irrevocablement les vostres contribucions sota la llicència <a href=\"%2$s\">CC BY-SA 3.0</a>. Les edicions s\'atribuiran a l\'adreça IP del vostre dispositiu. Si <a href=\"https://#login\">inicieu una sessió</a> gaudireu de més privadesa. + CC BY-SA 4.0 + En publicar accepteu les <a href=\"%1$s\">condicions d\'ús</a> i que alliberareu irrevocablement les vostres contribucions sota la llicència <a href=\"%2$s\">CC BY-SA 4.0</a>. + En publicar accepteu les <a href=\"%1$s\">condicions d\'ús</a> i que alliberareu irrevocablement les vostres contribucions sota la llicència <a href=\"%2$s\">CC BY-SA 4.0</a>. Les edicions s\'atribuiran a l\'adreça IP del vostre dispositiu. Si <a href=\"https://#login\">inicieu una sessió</a> gaudireu de més privadesa. Les edicions s\'atribuiran a l\'adreça IP del vostre dispositiu. Si <a href=\"https://#login\">inicieu una sessió</a>, gaudireu de més privadesa. Llengües de la Viquipèdia Cerca @@ -256,7 +257,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/ca https://foundation.m.wikimedia.org/wiki/Terms_of_Use https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.ca + https://creativecommons.org/licenses/by-sa/4.0/deed.ca https://creativecommons.org/publicdomain/zero/1.0/deed.ca https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/ca https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -266,7 +267,7 @@ Traductors La traducció de l\'aplicació és obra dels traductors voluntaris de <a href=\"https://translatewiki.net\">translatewiki.net</a>. Llicència - Codi font disponible a <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> i <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> sota la <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Llicència Apache 2.0</a>. Si no s\'indica el contrari, el contingut es troba disponible sota una llicència <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike</a>. + Codi font disponible a <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> i <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> sota la <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Llicència Apache 2.0</a>. Si no s\'indica el contrari, el contingut es troba disponible sota una llicència <a href=\"https://creativecommons.org/licenses/by-sa/4.0\">Creative Commons Reconeixement-CompartirIgual</a>. Un projecte de la <a href=\"https://wikimediafoundation.org/\">Fundació Wikimedia</a> Quant a S\'ha modificat la pàgina. Segur que voleu sortir sense desar-ne els canvis? @@ -969,6 +970,7 @@ No heu seleccionat cap etiqueta per a aquesta imatge S\'afegiran a les imatges només les etiquetes que trieu. Les etiquetes no seleccionades es marcaran com a rebutjades. Esteu segur que voleu marcar totes les etiquetes com a rebutjades? Afegeix una etiqueta + Les etiquetes no publicades no es desaran Utilitza els dits per a fer zoom de la imatge. %s, gràcies per les vostres edicions. A continuació podeu trobar més formes de contribuir a la Viquipèdia. <b>Hola %s</b>, a continuació podeu trobar com millorar ràpidament i fàcil la Viquipèdia. Vegeu la diferència tan bon punt hi comenceu. Gaudiu-ne editant-hi! @@ -984,7 +986,7 @@ %s, cal que feu com a mínim tres edicions en un article directament per a utilitzar aquesta funcionalitat. Consells i trucs d\'edició Pàgina d\'ajuda de les edicions suggerides - Modifica la marca + Ratxa d\'edicions Visualitzacions Qualitat d\'edició Perfecte @@ -1065,6 +1067,35 @@ heu afegit %d caràcter heu afegit %d caràcters + Imatges de l\'article + Afegiu les imatges suggerides als articles de la Viquipèdia per a millorar-ne la comprensió. + Voleu afegir aquesta imatge a l\'article? + Tutorial + + No + No n\'estic segur + Per què no? + Les vostres respostes milloren suggeriments futurs. + La imatge no és rellevant + No hi ha prou informació per a decidir + La imatge és ofensiva + La imatge és de baixa qualitat + No conec aquesta temàtica + Altres + Envia + Afegeix imatges que manquen a articles en les modificacions suggerides + Les imatges ajuden a la comprensió, però molts articles no en tenen. + Decidireu si una imatge suggerida cal col·locar-la en un article de la Viquipèdia. + Els suggeriments són generats automàticament i fareu servir el vostre criteri per a decidir si acceptar-los o no. + Les imatges són de Wikimedia Commons, una col·lecció d\'imatges amb llicència lliures utilitzades per la Viquipèdia. + Reviseu l\'article per a entendre\'n la temàtica + Inspeccioneu la imatge i la seva informació associada + Decidiu si la imatge ajuda als lectors a entendre millor la temàtica + Següent + Reviseu l\'article per a entendre\'n la temàtica i inspeccioneu la imatge + Imatge afegida + Llegenda afegida + Mostra Pàgina de fitxer Afegir una llegenda a la imatge Afegir una etiqueta a la imatge @@ -1163,12 +1194,12 @@ Insereix multimèdia Selecciona un fitxer de Wikimedia Commons Cerca multimèdia - Paràmetres multimèdia + Afegeix detalls de la imatge Imatge carregada - Llegenda - L\'etiqueta que es mostra al costat de l\'element per a tots els lectors + Llegenda de la imatge + Etiqueta d\'imatge visible en l\'article Text alternatiu - Descripció textual per als lectors que no poden veure la imatge + Descripció per a lectors amb problemes de visió Paràmetres avançats Ajusta el text al voltant de la imatge Posició de la imatge @@ -1408,4 +1439,6 @@ «Comparteix llistes de lectura» és una funcionalitat de prova i ens calen opinions per a millorar-la o bé treure-la. Accepta Rebutja + Problemes de la pàgina + Correccions d\'error menors i millores diff --git a/app/src/main/res/values-ce/strings.xml b/app/src/main/res/values-ce/strings.xml index 10a1ae17097..402a5574630 100644 --- a/app/src/main/res/values-ce/strings.xml +++ b/app/src/main/res/values-ce/strings.xml @@ -1,25 +1,68 @@ Википеди + Википеди Бета Википеди Альфа Викикимеди + ЙухагӀо + ЙухагӀо + Хьалха Википедин чухула лахар + Озан лахар + Мотт лаха + Нисдарш Кхин а - ЗӀе цакарий :( + Лахар + Интернет тӏе ца тасало:( ЙухагӀорта + Йухадан + Йухадан + Йухадан + Йухадан Йуханехьа + Йуханехьа + Кхидӏа ДӀацӀане истори? - ДӀацӀане истори? + Истори + Викидата + ДӀацӀанйе хьажарийн истори + Хӏаъ + Хӏан-хӏа Кхин меттанаш - Кечяр а, шрифт а хийцар - Екха - Хьажорг схьаелла + Йаззаман чохь лаха + Тидам бан + Тергалдар дита + Дийцарийн агӏоне хьажа + Дийцарийн агӀо + Хийцамийн историга хьажа + Нисдаран истори + ДӀайаккха тергаме могӀанна йуккъера + Тергам беш йу + АгӀонна тӏехь лаха + Кечйаран шрифт а, тема а + Йитаа + Ӏалашйе + Йекъа хьажорг + Бекъа йаззам + Йекъа + Керла йукъадиллар + Архив + Схьайелла Къастам + Йекъа + Йекъа + Нисйе кхузахь + Нисбе йаззам ТӀаьххьара карлайаккхар: %s + Дийцарийн агӀоне хьажа + Хийцамийн истори хьажар + Картин тӀехь хьажа + Йеша кхечу маттахь Мотт Лахар Хьан дехарца меттанаш цакарий @@ -34,13 +77,22 @@ ЧугӀо Декъашхочун цӀе Пароль + Пароль + Шина-факторан аутентификацин код + ЧугӀо + ЧугӀо + ЧугӀо + ЧугӀо ЧугӀо ЧугӀо Системин чудахар… Хьан пароль кхиамца тӀеэца! Болх дӀаберзор - Кеста хьаьжжина агӀонаш яц. - Кхузахь хьой бешна болу яззамашка хьажа. + Дӏайаккхар + ЧугӀо + Йухайаккха + Кеста хьаьжжина агӀонаш йац. + Кхузахь хьой бешна болу йаззамашка хьажа. <big>В</big>ИКИПЕД<big>И</big> Декъашхочун цӀе Кхолла аккаунт @@ -53,6 +105,7 @@ Кхин дӀа Мадарра Йукъара + Аккаунт Йуханехьа зӀе Параметраш Къайлаха политика @@ -62,10 +115,13 @@ https://foundation.m.wikimedia.org/wiki/Terms_of_Use гочдархой ХӀара тӀетохар гочйина <a href=\"https://translatewiki.net\">translatewiki.net</a> чуьра шен лаамернигаш. + ДӀайолалун код тӀекхочуш йу <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> а, <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">Github</a> а тӀехь <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">Apache 2.0</a> лицензица. Кхинаг билгалйина йацахь, чулацам тӀекхочу <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike</a> лицензица. Кхин дӀа Ӏалашдан Хьалххе хьажар - Нийсайаздар + Гӏалат нисдина + Нийса йаздар + Хьажоргаш тӏетоьхна Кхийерг Тера агӀонаш ДӀачӀагӀа @@ -73,6 +129,8 @@ ТӀетаӀае схьаэцархьама ДӀачӀагӀа Магаде + Йозуш йолу агlонаш + ХӀокху агӀонах лаьцна Файлан агӀонг гӀо Сурт гучудаккха цаделира Лицензин йоза %s библиотекина @@ -81,9 +139,14 @@ Блокан ID: %s Йуха доладан АрагӀо + Мотт + Кечйаран тема + Чулацам Кечяр Сирла Бодане + Дийцарийн агӀонашкахь + %s дийцарийн агӀо Тахана Википедехь Чуйаккха ХӀара карточка къайлайаккха @@ -102,6 +165,7 @@ Нисбе хаам ТӀетоха меттанаш Кховдийна нисдарш + Ма-дарра Кховдийна нисдарш Цул совнаха хаа IP заблоктоьхна ду @@ -109,10 +173,22 @@ Сурт Лахар РогӀера бутт + + шо хьалкха + %d шо хьалкха + ТӀетоха меттанаш Википедехь ДӀабаккха цийн мотт могӀаман йукъара? Хийца меттанаш Тергаме могӀам + Дийцар + Дийцар: %s + Керла тема + Тема дӀайазйина + Тема йаьсса хуьлийла дац. + Лаха теманашкахь + Карлайаккхаран терахь + Лаха тема дийцарийн агӀонгахь Баркалла Йухайаккхар Хьан \"Баркалла\" дӀадахийтина %s декъашхочуьнга 👍 diff --git a/app/src/main/res/values-ckb/strings.xml b/app/src/main/res/values-ckb/strings.xml index 7e076b4d83a..276e51e3c91 100644 --- a/app/src/main/res/values-ckb/strings.xml +++ b/app/src/main/res/values-ckb/strings.xml @@ -71,6 +71,10 @@ %1$d دەستکاری لە %2$sەوە %1$d دەستکاری لە %2$sەوە + + %1$d دەستکاری لە %2$sەوە (%3$s) + %1$d دەستکاری لە %2$sەوە (%3$s) + ھەوكی گۆڕینی <a href=\"#\">پاڵێوەرەکان</a> بدە بۆ بینینی دەستکاریی زیاتر نیشاندانی تابەکان گۆڕینی زمان @@ -112,9 +116,9 @@ بینین لەسەر نەخشە خوێندنەوە بە زمانێکی تر بە %d زمانی دیکە بەردەستە - CC BY-SA 3.0 - بە بڵاوکردنەوە، تۆ ڕازی دەبیت بە <a href=\"%1$s\">بەندەکانی بەکارھێنان</a>، و بە بڵاوکردنەوەی بەشدارییەکانت لەژێر مۆڵەتی <a href=\"%2$s\">CC BY-SA 3.0</a>. - بە بڵاوکردنەوە، تۆ ڕازی دەبیت بە <a href=\"%1$s\">مەرجەکانی بەکارھێنان</a>، ، ھەروەھا پەسەندی دەکەیت کە دەستکارییەکان و بەشدارییەکانت بڵاوبکرێنەوە لەژێر بەڵگەنامەی <a href=\"%2$s/\">CC BY-SA 3.0</a>. دەستکارییەکان دەدرێنە پاڵ ناونیشانی ئای-پی ئامێرەکەت. ئەگەر <a href=\"https://#login\">بچیتە ژوورەوە</a>، تایبەتێتی زیاترت دەبێت. + CC BY-SA 3.0 + بە بڵاوکردنەوە، تۆ ڕازی دەبیت بە <a href=\"%1$s\">بەندەکانی بەکارھێنان</a>، و بە بڵاوکردنەوەی بەشدارییەکانت لەژێر مۆڵەتی <a href=\"%2$s\">CC BY-SA 3.0</a>. + بە بڵاوکردنەوە، تۆ ڕازی دەبیت بە <a href=\"%1$s\">مەرجەکانی بەکارھێنان</a>، ، ھەروەھا پەسەندی دەکەیت کە دەستکارییەکان و بەشدارییەکانت بڵاوبکرێنەوە لەژێر بەڵگەنامەی <a href=\"%2$s/\">CC BY-SA 3.0</a>. دەستکارییەکان دەدرێنە پاڵ ناونیشانی ئای-پی ئامێرەکەت. ئەگەر <a href=\"https://#login\">بچیتە ژوورەوە</a>، تایبەتێتی زیاترت دەبێت. دەستکارییەکانی ناونیشانی ئای پیی ئامێرەکەشتی لەگەڵدا دەبێت. ئەگەر <a href=\"https://#login\">بچیتە ژوورەوە</a>، تایبەتێتیی زیاترت دەبێت. زمانەکانی ویکیپیدیا بگەڕێ @@ -228,6 +232,7 @@ ببوورە، ئەم پەڕەیە ناتوانرێت بە نەناسراوی دەستکاری بکرێت لەم ساتە. ئەم پەڕەیە پارێزراوە زیادکردن بۆ پێڕستی چاودێری + ئاگاداری ئەو گۆڕانکاریابە بە کە بەسەر ئەو وتارانەدا دێن کە ئارەزوویان پێ دەکەیت. پەنجە بنێ بە لیستەی سەرڕێژدا و <b>زیادکردن بۆ پێڕستی چاودێری</b> هەڵبژێرە بۆ بینینی گۆڕانکارییەکان لە وتارێکدا. ڕێکخستنەکان ڕێکخستنەکان دەربارەی نەرمەواڵەی ویکیپیدیا @@ -239,7 +244,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.wikimedia.org/wiki/Terms_of_Use https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -249,7 +253,7 @@ وەرگێڕەکان ئەم نەرمەواڵەیە وەرگێڕدراوە لەلایەن وەرگێڕە خۆبەخشەکان لە <a href=\"https://translatewiki.net\">translatewiki.net</a>. مۆڵەت - کۆدی سەرچاوە بەردەستە لە <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> and <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> under the <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 License</a>. Unless otherwise specified, content is available under a <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike License</a>. + کۆدی سەرچاوە بەردەستە لە <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> and <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> under the <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 License</a>. Unless otherwise specified, content is available under a <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike License</a>. بەرھەمی <a href=\"https://wikimediafoundation.org/\">دامەزراوەی ویکیمیدیا</a> دەربارە پەڕەکە گۆڕدراوە. دڵنیای کە دەتەوێت بچیە دەرەوە بەبێ پاشەکەوتکردنی گۆڕانکارییەکان؟ @@ -371,7 +375,9 @@ تۆ وەشانێکی دەرھێڵی ئەم وتارە دەخوێنیتەوە کە پاشەکەوتکراوە لە %s. وەرگرتنی ئاڕاستەکان ھیچ نەرمەواڵەیەک نەدۆزرایەوە کە ئاڕاستەکان دابین بکات. + پەڕەی سەرەکی نیشاندانی پێشبینینی بەستەرەکان + پەڕەی سەرەکی ساز بکە نیشاندانی بەشێکی خێرای وتارەکان لە کاتی داگرتنی بەستەرەکان. خشتەکان دابخە خۆکارانە خشتەکانی نێو وتارەکان دابخە، وەک زانیاریدان، سەرچاوەکان، و تێبینییەکان. @@ -402,6 +408,7 @@ بەسەرچوونی بەربەستکردن: %s پێناسی بەربەستکردن: %s دەتوانیت پەیوەندی بە <a href=\"%2$s\">%1$s</a>ەوە یان <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Administrators\">بەڕێوەبەر</a>ێکی ترەوە بکەیت بۆ وتووێژکردن لەسەر بەربەستکردنەکە. + تووڵامرازەکەت ساز بکە دەتوانیت پەیوەندی بە <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Administrators\">بەڕێوەبەر</a>ێکەوە بکەیت بۆ وتووێژکردن لەسەر بەربەستکردنەکە. ھەڵەی نەرمەواڵە دەتەوێت سەرلەنوێ دەست پێبکەیتەوە یان وازدەھێنیت؟ @@ -430,6 +437,9 @@ فۆنت خوێندنەوە دەستکاریکردن + دۆخی خوێندنەوە + ژمارەی دێڕەکان پیشان بدە + فۆنتی مۆنۆسپەیس بەکار ببە پاشەکەوت کرا پاشەکەوتکردن بۆ پێڕستی خوێندنەوە زیادکردن بۆ پێڕستی خوێندنەوە @@ -442,6 +452,10 @@ هەموو باشن! %s پێشتر هەموو بابەتەکانی تێدایە. بینینی پێڕست زیادکردن بۆ سەر پێڕست + + ١ وتار + %d وتار + 1 وتار, %2$.2f MB %1$d وتار, %2$.2f MB @@ -459,6 +473,8 @@ ڕیزکردنی زانیاری دروستکراو (نوێترین) ڕیزکردنی زانیاری دروستکراو (کۆنترین) سڕینەوەی پێڕست + پێڕستەکە ھەناردە بکە + ھەڵبژاردن دەستکاری ناو/وەسف سڕینەوەی لە دەرھێڵ پاشەکەوت بۆ دەرھێڵ @@ -511,6 +527,7 @@ %1$d وتار زیادکرا بۆ %2$s %1$d وتار گواسترایەوە بۆ %2$s دڵنیای کە دەتەوێت بسڕدرێتەوە %s ؟ + دڵنیایت لە سڕینەوەی پێڕستە ھەڵبژێردراوەکان؟ بچۆ ژوورەوە بۆ چالاککردنی هاوکاتکردن چوونە ژوورەوە بۆ ڕێگەدان بە پێڕستەکانی خوێندنەوەت بۆ پاشەکەوتکردن لە هەژمارەکەت. ھەڵوەشاندنەوە @@ -533,6 +550,7 @@ ناتواندرێت زیاد بکرێت بۆ ئەم پێڕستە. تۆ گەیشتوویتەتە سنووری %2$d وتار بۆ ھەر لیستێک بۆ «%1$s». ناتواندرێت پێڕستێکی تر دروست بکرێت. تۆ گەیشتوویتە سنووری ١٠٠ پێڕستی خوێندنەوە بۆ ھەر ھەژمارێک. دروستکردنی لیستی نوێ + پێڕست ھاوردە بکە ڕیزکردن بە چوونە ژوورەوە/تۆمارکردن @@ -550,7 +568,18 @@ ھەڵوەشاندنەوە ھەڵوەشاندنەوە باشە + بیسڕەوە پێڕستی خوێندنەوە: %s + پێڕستی خوێندنەوە(کان) ھاوردە کرا(ن) + پێڕستە ھاوبەشەکان + پاشەکەوتکردن + پێڕست پاشەکەوت بکە + پێڕستەکە ناو بنێ و وتارەکان ھەڵبژێرە بۆ پاشەکەوتکردن + ناونیشان + ھەڵوەشاندنەوە + پاشەکەوتکردن + پێڕستی خوێندنەوە پاشەکەوت کرا + بینین ھەڵبژاردەکان دەستکاری گەڕێندرایەوە داگرتنی وتارەکان @@ -615,18 +644,22 @@ جۆرەکانی ئاگاداریی نێو بەرنامە سیستم نامەکان لە سیستمەوە + ھەنگاوە گرنگەکان سپاس کەسێک سپاسی کردی بۆ دەستکاریەکەت گەڕاندنەوە بچۆ ژوورەوە چالاکییەکانی چوونە ژوورەوەت بانگکردن + یەکێک لە پەڕەیەکدا بانگت دەکات پەڕەی وتووێژ پەیام و وەڵامدانەوەکان لە پەڕەکانی وتووێژ ئاگاداریی گەیشتنی ئیمەیڵ کەسێک ئیمەیڵێکی بۆ ناردیت لەڕێی ویکییەوە گۆڕانەکانی مافەکانی بەکارھێنەر + لە کاتێکدا بۆت دێت کە مافەکانی بەکارھێنەرت گۆڕانکارییان تێدا دەکرێت بەستەر بۆ وتارەکانی دروستت کردوون + لە کاتێدا بۆت دێت کە بەستەرێکی نوێ زیاد دەکرێت بۆ پەڕەیەک کە دروستت کردووە ئاگاداریی پاڵنەر ڕێکخستنەکانی پێشاندان ئاگادارییە خوێندراوەکان بشراوە @@ -645,6 +678,7 @@ ھەموو فیلتەرەکان دیاری بکە ھەموو بانگکردنەکان + پاڵێوەری ئاگادارکەرەوەکان نیشانکردن وەک خوێندراوە نیشانکردن وەک نەخوێندراوە خوێندراوە @@ -756,6 +790,8 @@ باشترە کە یەک دێڕ بێت، لە نێوان دوو بۆ دوانزە وشە دەستکردن بە دەستکاری بە دەستپێکردن، من پەیمان دەدەم کە بە خراپی ئەم ئامرازە بەکارنەھێنم. + پێشنیارەکانی ئامێر + پێشنیارەکان لەلایەن ئامێرێکەوە دروست دەکرێن، نەک خۆبەخشەکان یان دامەزراوەی ویکیمیدیا تووڵامرازەکەت ساز بکە تووڵامراز پێڕست @@ -831,6 +867,7 @@ گەڕانی تاگەکان ھیچ تاگێکت ھەڵنەبژاردووە بۆ ئەم وێنەیە زیادکردنی تاگ + پەنجەکانت لەیەک نزیک بکەرەوە بۆ ھێنانەپێشەوەی ئەم وێنەیە. %s، سپاس بۆ دەستکارییەکانت. لە خوارەوە دەتوانیت شێوازی زیاتر بدۆزیتەوە بۆ بەشداریکردن لە ویکیپیدیا. کۆی ژمارەی بەشدارییەکانتان تا ئێستا. دەستکارییە پێشنیارکراوەکان ناچالاک کراوە. ببورە %s، زۆرینەی دەستکارییەکانی ئەم دوایییانەت گەڕێندراونەتەوە. @@ -894,6 +931,11 @@ تاگی وێنە گۆڕانکاریەکەت لە ئێستادا لەسەر ویکیپیدیا هەیە دەستکاری پێشنیارکراوی زیاتر + وەسفە پێشنیارکراوەکان + زانیاری تەواوی تێدا نییە + ناتوانم وەسفە پێشنیارکراوەکان ببینم + پێشنیارێکی نەشیاو + لە ئەرکەکە تێناگەم %1$s تاگ %1$s تاگ @@ -985,6 +1027,7 @@ تۆخ لار ژێرھێڵ + ھێڵبەنێوھاتوو سەرنووس ژێرنووس دەقی گەورە @@ -992,6 +1035,7 @@ کۆد بەستەر ژێر-سەردێڕ %d + ڕازاندنەوە سەردێڕەکان تێخستنی میدیا لیستی خاڵبەندکراو @@ -1002,11 +1046,11 @@ تێخستنی میدیا پەڕگەیەک ھەڵبژێرە لە ویکیمیدیا کۆمنز گەڕان بۆ میدیا - ڕێکخستنەکانی میدیا + ڕێکخستنەکانی میدیا وێنەی بارکراو - لێدوان + لێدوان دەقی جێگرەوە - وەسفی دەقی بۆ ئەو خوێنەرانەی ناتوانن وێنەکە ببینن + وەسفی دەقی بۆ ئەو خوێنەرانەی ناتوانن وێنەکە ببینن ڕێکخستنە پێشکەوتووەکان دەق لە وێنە بپێچە شوێنی وێنە @@ -1088,6 +1132,7 @@ دەستکاریی سەرچاوە پەڕەی بەکارھێنەری %s دۆزینەوە لە بابەتی پەڕەی وتووێژ + بەستەر کۆپی بکە بۆ کلیپبۆرد لەبەرگرتنەوەی دەق لقەکان درءژ بکەرەوە لقەکان دابخە @@ -1111,6 +1156,7 @@ بۆ: دێڕی %d دێڕی %d-%d + دێڕەکانی %1$d–%2$d دێڕ زیاد کرا دێڕ سڕدرایەوە پەڕەگراف زیاد کرا @@ -1138,6 +1184,7 @@ ٣ مانگ ٦ مانگ تۆ ھیچ وتارێکت نییە لە پێڕستی چاودێرییەکەت. + بە پێڕستی چاودێریدا بگەڕێ ھەموو وتووێژ پەڕەکان @@ -1145,6 +1192,55 @@ گواستراوە پارێزراوە سڕدراو + پالێوراوی پێڕستی چاودێری + ویکی + ھەموو + چالاکیی پێڕستی چاودێری + گۆڕانکارییە نەبیندراوەکان + گۆڕانکارییە بیندراوەکان + پێشبینییەکانی کوالێتیی بەشداری + بە ئەگەرێکی زۆرەوە باشە + لەوانەیە کێشەی ھەبێت + ئەهەری ھەیە کێشەی ھەبێت + بە ئەگەرێکی زۆرەوە کێشەی ھەیە + پێشبینییەکانی مەبەستی بەکارھێنەر + بە ئەگەرێکی زۆرەوە نیازپاکانەیە + لەوانەیە بە مەبەستی خراپ بێت + ئەهەری ھەیە بە مەبەستی خراپە بێت + بە ئەگەرێکی زۆرەوە بە مەبەستی خراپەیە + تۆماربوون و ئەزموونی بەکارھێنەر + تۆمارنەکراوەکان + تۆمارکراوەکان + تازەکاران + فێرخوازان + بەکارھێنەرانی پێشکەوتوو + بەشدارییەکان + گۆڕانکارییەکانت + گۆڕانکارییەکانی کەسانی تر + دەستکارییە خۆگەڕەکان + بۆت + مرۆڤ (بۆت نییە) + بەسوود + دەستکارییە بچووکەکان + دەستکارییە نابچووکەکان + دوایین پێداچوونەوەکان + دوایین پێداچوونەوە + دوایین گۆڕانکاری نا + جۆری گۆڕانکاری + دەستکارییەکانی پەڕە + دروستکردنەکانی پەڕە + گۆڕانکارییەکانی پۆل + دەستکارییەکانی ویکیدراوە + کردارە لۆگییەکان + بەکارھێنەرە نوێکان + دووبارە ڕێکخستنەوە + پێڕستی چاودێری بپاڵێوە یان پێیدا بگەڕێ + پاڵێوەری پێڕستی چاودێری + ھیچ ئامانجێک نەدۆزرایەوە، هەوڵبدە %s لاببەیت بۆ بینینی ئامانجی زیاتر. + + %d پاڵێوەر + %d پاڵێوەر + پێشبینینی دەستکاری پوختەی دەستکاری چۆن پەرەت بەم پەڕەیە دا؟ @@ -1162,10 +1258,25 @@ بەشدارییەکانی %s ھیچ پەڕەیەکئ ئەرشیفکراو نەدۆزرایەوە. پاڵاوتن بە بۆشاییی ناو - ھەموو دەستکارییەکان + ھەموو بۆشاییی ناوەکان + پاڵێوەری بۆشاییی ناو وتار ھەنووکە ھەڵە لە لێدانی میدیا. بەشدارییەکان بەشدارییەکان فلتەر بکە + پێڕستی خوێندنەوەی ھاوبەش ھاوردە بکە + حەز دەکەیت ناوی ئەو پێڕستە چی بێت کە لەگەڵتدا ھاوبەش کراوە؟ + *نوێ* + پێڕستێکی خوێندنەوە لەگەڵتدا ھاوبەش کراوە + تێبینیمان کرد کە پێڕستێکی خوێندنەوە لەگەڵتدا ھاوبەش کراوە. بۆ بینینی ئەم پێڕستە لە بەرنامەکەدا، بگەڕێوە بۆ پەیامە ڕەسەنەکە و دووبارە پەنجە بە بەستەرەکەدا بنێرەوە. + تێگەیشتم + پێڕستی خوێندنەوە ھاوردە کرا + ھاوبەشکردن… + ئەم پێڕستی خوێندنەوەیە لەگەڵ کەسانی تردا ھاوبەش بکە + سڵاو! حەز دەکەم پێڕستی خوێندنەوەی ویکیپیدیاکەمت لەگەڵدا ھاوبەش بکەم: + دەتوانیت یارمەتیمان بدەیت بۆ باشترکردنی «پێڕستی خوێندنەوە هاوبەشەکان»؟ + «پێڕستی خوێندنەوەی ھاوبەش» تایبەتمەندییەکی تاقیکارییە و ئێمە پێویستمان بە ڕاوبۆچوونی ئێوەیە بۆ باشترکردنی یان لابردنی. + پەسەندکردن + ڕەتکردنەوە diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index e1537a0406c..7bc5ad50e2f 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -2,6 +2,7 @@ Wikipedia @@ -144,9 +147,9 @@ Auf einer Karte ansehen In einer anderen Sprache lesen In %d weiteren Sprachen verfügbar - CC BY-SA 3.0 - Mit dem Veröffentlichen stimmst du den <a href=\"%1$s\">Nutzungsbedingungen</a> und unwiderruflich der Veröffentlichung deiner Beiträge unter der <a href=\"%2$s\">CC BY-SA 3.0</a> Lizenz zu. - Mit dem Veröffentlichen stimmst du den <a href=\"%1$s\">Nutzungsbedingungen</a> und unwiderruflich der Veröffentlichung deiner Beiträge unter der <a href=\"%2$s\">CC BY-SA 3.0-Lizenz</a> zu. Bearbeitungen werden der IP-Adresse deines Gerätes zugeordnet. Wenn du dich <a href=\"https://#login\">anmeldest</a>, verfügst du über mehr Datenschutz. + CC BY-SA 4.0 + Mit dem Veröffentlichen stimmst du den <a href=\"%1$s\">Nutzungsbedingungen</a> und unwiderruflich der Veröffentlichung deiner Beiträge unter der <a href=\"%2$s\">CC BY-SA 4.0</a> Lizenz zu. + Mit dem Veröffentlichen stimmst du den <a href=\"%1$s\">Nutzungsbedingungen</a> und unwiderruflich der Veröffentlichung deiner Beiträge unter der <a href=\"%2$s\">CC BY-SA 4.0-Lizenz</a> zu. Bearbeitungen werden der IP-Adresse deines Gerätes zugeordnet. Wenn du dich <a href=\"https://#login\">anmeldest</a>, verfügst du über mehr Datenschutz. Bearbeitungen werden der IP-Adresse deines Gerätes zugeordnet. Wenn du dich <a href=\"https://#login\">anmeldest</a>, wirst du über mehr Datenschutz verfügen. Wikipedia-Sprachen Suche @@ -272,7 +275,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/de https://foundation.wikimedia.org/wiki/Terms_of_Use/de https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.de + https://creativecommons.org/licenses/by-sa/4.0/deed.de https://creativecommons.org/publicdomain/zero/1.0/deed.de https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/de https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/de#Bild-Schlagworte @@ -282,7 +285,7 @@ Übersetzer Diese App wurde von freiwilligen Übersetzern auf <a href=\"https://translatewiki.net\">translatewiki.net</a> übersetzt. Lizenz - Der Quellcode ist bei <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> und <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> unter der <a href=\"href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache-2.0-Lizenz</a> abrufbar. Sofern nicht anders angegeben, ist der Inhalt unter einer <a href=\"https://de.wikipedia.org/wiki/Wikipedia:Lizenzbestimmungen_Creative_Commons_Attribution-ShareAlike_3.0_Unported\">Creative-Commons-Attribution-ShareAlike-Lizenz</a> verfügbar. + Der Quellcode ist bei <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> und <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> unter der <a href=\"href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache-2.0-Lizenz</a> abrufbar. Sofern nicht anders angegeben, ist der Inhalt unter einer <a href=\"https://creativecommons.org/licenses/by-sa/4.0/deed.de\">Creative-Commons-Attribution-ShareAlike-Lizenz</a> verfügbar. Ein Produkt der <a href=\"https://wikimediafoundation.org/\">Wikimedia Foundation</a> Über Die Seite wurde verändert. Bist du sicher, dass du sie ohne Speichern deiner Änderungen verlassen möchtest? @@ -492,10 +495,18 @@ Alles gut! %s enthält bereits alle Artikel. Liste ansehen Zu Liste hinzufügen + + %d Artikel + %d Artikel + 1 Artikel, %2$.2f MB %1$d Artikel, %2$.2f MB + + %1$d von 1 Artikeln offline verfügbar + %1$d von %2$d Artikeln offline verfügbar + %1$d von 1 Artikel offline verfügbar, %3$.2f MB %1$d von %2$d Artikel offline verfügbar, %3$.2f MB @@ -509,6 +520,10 @@ Nach Erstellungsdatum sortieren (neueste) Nach Erstellungsdatum sortieren (älteste) Liste löschen + Liste exportieren + Auswählen + Auswahl aufheben + Zum Exportieren der Leseliste ist eine Berechtigung zum Schreiben auf den Speicher deines Gerätes erforderlich. Namen/Beschreibung bearbeiten Von offline entfernen Für offline speichern @@ -529,6 +544,15 @@ %d Artikel entfernt von %s %d Artikel entfernt von %s + + %d Liste gelöscht + %d Listen gelöscht + + Die Standardliste (%s) kann nicht gelöscht werden. + %1$s gelöscht. Die Standardliste (%2$s) kann nicht gelöscht werden. + Listen gelöscht. Die Standardliste (%s) kann nicht gelöscht werden. + %s (Wikipedia-Leseliste).json + Wikipedia-Leselisten (%s und mehr).json %d Artikel aus der Liste entfernt %s von den Listen entfernt Rückgängig @@ -561,6 +585,11 @@ %1$d Artikel zu %2$s hinzugefügt %1$d Artikel nach %2$s verschoben Bist du sicher, dass du %s löschen möchtest? + Ausgewählte Liste(n) löschen? + + Bist du sicher, dass du %d Liste löschen möchtest? + Bist du sicher, dass du %d Listen löschen möchtest? + Melde dich an, um die Synchronisierung zu aktivieren. Melde dich an, um die Speicherung deiner Leselisten in deinem Benutzerkonto zu erlauben. Abbrechen @@ -584,6 +613,7 @@ Der Artikel konnte nicht zu dieser Liste hinzugefügt werden. Du hast für „%1$s“ die maximale Anzahl von %2$d Artikeln pro Liste erreicht. Es können keine weiteren Listen erstellt werden. Du hast die maximale Anzahl von 100 Leselisten pro Benutzerkonto erreicht. Neue Liste erstellen + Liste importieren Sortieren nach Erneut synchronisieren Anmelden / Benutzerkonto erstellen @@ -604,11 +634,33 @@ Abbrechen Abbrechen Okay + Löschen Leseliste: %s + Leseliste(n) exportiert + %d Leseliste(n) wurden als „reading_lists export.json“ in deinen Download-Ordner exportiert + Leselisten als „reading_lists export.json“ in deinen Download-Ordner exportiert + Exportieren + Datei zum Importieren wählen + Der Import der Leselisten ist fehlgeschlagen + Liste(n) zum Exportieren wählen + Leseliste(n) exportiert + + Exportieren der Leseliste fehlgeschlagen + Exportieren der Leselisten fehlgeschlagen + + + Leseliste importiert + Leselisten importiert + + Geteilte Liste + Speichern Liste speichern Liste benennen und Artikel zum Speichern auswählen + Titel Abbrechen Speichern + Leseliste gespeichert + Ansehen Einstellungen Zurückgesetzte Bearbeitung Artikel herunterladen @@ -704,7 +756,7 @@ Push-Benachrichtigungen Anpassen von Push-Benachrichtigungen Anzeigeeinstellungen - Lesebestätigungen ausblenden + Gelesene Benachrichtigungen ausblenden Wikipedia Benachrichtigungen von Wikipedia Andere @@ -936,6 +988,7 @@ Sie haben keine Tags für dieses Bild ausgewählt Nur die von Ihnen ausgewählten Tags werden zu Bildern hinzugefügt. Nicht ausgewählte Tags werden als abgelehnt markiert. Möchten Sie wirklich alle Tags als abgelehnt markieren? Tag hinzufügen + Die unveröffentlichten Tags werden nicht gespeichert Vergrössere das Bild mit der Pinch-to-Zoom Geste. %s, danke für deine Bearbeitungen. Unten findest du weitere Möglichkeiten, um zu Wikipedia beizutragen. <b>Hallo %s</b>, unten finden Sie einige schnelle und einfache Möglichkeiten, wie Sie zur Verbesserung von Wikipedia beitragen können. Sie werden den Unterschied sehen, den Sie machen, sobald Sie anfangen. Viel Spaß beim Editieren! @@ -1032,6 +1085,35 @@ Du hast %d Zeichen hinzugefügt Du hast %d Zeichen hinzugefügt + Artikelbilder + Füge Wikipedia-Artikeln vorgeschlagene Bilder hinzu, um das Verständnis zu verbessern. + Würdest du dieses Bild dem Artikel hinzufügen? + Anleitung + Ja + Nein + Nicht sicher + Warum nicht? + Deine Antworten können zukünftige Vorschläge verbessern. + Bild ist nicht zutreffend + Nicht genügend Informationen für eine Entscheidung + Bild ist anstößig + Bild ist von schlechter Qualität + Ich kenne mich mit diesem Thema nicht aus + Andere + Speichern + Füge fehlende Bilder zu Artikeln in „Vorgeschlagene Bearbeitungen“ hinzu + Bilder helfen den Menschen zu verstehen, aber viele Artikel haben keine Bilder. + Du entscheidest, ob ein vorgeschlagenes Bild in einem Wikipedia-Artikel platziert werden soll. + Vorschläge werden maschinell generiert und du entscheidest anhand deines Urteilsvermögens, ob du sie annimmst oder ablehnst. + Die Bilder stammen aus Wikimedia Commons, einer Sammlung frei lizenzierter Bilder, die von Wikipedia verwendet werden. + Lies diesen Artikel, um sein Thema zu verstehen + Überprüfe das Bild und die zugehörigen Informationen + Entscheide, ob das Bild den Lesern hilft, dieses Thema besser zu verstehen + Nächste + Bitte lies den Artikel, um sein Thema zu verstehen, und sieh dir das Bild an + Bild hinzugefügt + Bildunterschrift hinzugefügt + Ansehen Dateiseite Bildunterschrift hinzufügen Bilder-Tags hinzufügen @@ -1130,12 +1212,12 @@ Medien einfügen Wähle eine Datei aus Wikimedia Commons Medien suchen - Medieneinstellungen + Bilddetails hinzufügen Hochgeladenes Bild - Beschriftung - Label, das für alle Leser neben dem Element angezeigt wird + Bildunterschrift + Sichtbare Bildbeschriftung im Artikel Alternativer Text - Textbeschreibung für Leser, die das Bild nicht sehen können + Beschreibung für sehbehinderte Leser Erweiterte Einstellungen Text um das Bild fließen lassen Bildposition @@ -1280,6 +1362,7 @@ 3 Monate 6 Monate Du hast keine Artikel auf deiner Beobachtungsliste. + Beobachtungsliste durchsuchen Alle Diskussion Seiten @@ -1287,6 +1370,55 @@ Verschoben Geschützt Gelöscht + Beobachtungslistenfilter + Wiki + Alle + Beobachtungslistenaktivität + Ungesehene Änderungen + Gesehene Änderungen + Beitragsqualitätsprognosen + Sehr wahrscheinlich gut + Könnte Probleme haben + Hat wahrscheinlich Probleme + Hat sehr wahrscheinlich Probleme + Benutzerabsichtsprognosen + Sehr wahrscheinlich gute Absicht + Könnte schlechte Absicht sein + Wahrscheinlich schlechte Absicht + Sehr wahrscheinlich schlechte Absicht + Benutzeranmeldung und -erfahrung + Unangemeldet + Angemeldet + Neulinge + Anfänger + Erfahrene Benutzer + Beitrags-Autorenschaft + Änderungen von dir + Änderungen von anderen + Automatisierte Beiträge + Bot + Mensch (kein Bot) + Bedeutung + Kleine Änderungen + Nicht-kleine Änderungen + Aktuellste Versionen + Aktuellste Version + Nicht die aktuellste Version + Typ der Änderung + Seitenbearbeitungen + Seitenerstellungen + Kategorieänderungen + Wikidata-Bearbeitungen + Logbucheinträge + Neue Benutzer + Zurücksetzen + Beobachtungsliste durchsuchen oder filtern + Beobachtungslistenfilter + Keine Ergebnisse. Versuche, %s zu entfernen, um mehr zu sehen. + + %d Filter + %d Filter + Vorherige Bearbeitung Bearbeitung zusammenfassen Wie hast du die Seite verbessert? @@ -1323,4 +1455,8 @@ Hallo! Ich möchte meine Wikipedia-Leseliste mit Ihnen teilen: Kannst du uns helfen, \"Leselisten teilen\" zu verbessern? \"Leselisten teilen\" ist eine Testfunktion und wir brauchen dein Feedback, um sie zu verbessern oder zu entfernen. + Zulassen + Ablehnen + Seitenprobleme + Kleinere Fehlerbehebungen und Verbesserungen diff --git a/app/src/main/res/values-diq/strings.xml b/app/src/main/res/values-diq/strings.xml index 11f03553396..6d9058f63cf 100644 --- a/app/src/main/res/values-diq/strings.xml +++ b/app/src/main/res/values-diq/strings.xml @@ -77,9 +77,9 @@ Xerita sero bıvênên Yewna zıwan de bıwanê %d zıwanê bini de esto - CC BY-SA 3.0 - Ney çapnayışa <a href=\"%1$s\">Şertanê karkerdışi </a> u iştırakanê peyser nêgeriyaya be lisansê <a href=\"%2$s\">CC BY-SA 3.0</a> çapnayışi şıma qebul kenê . - Çapnayışiya <a href=\"%1$s\">Şertanê karkerdışi </a>\'u vurnayışa peyser megêriya weziyet de lisansê <a href=\"%2$s\">CC BY-SA 3.0</a> çapnayışi qebul kenê. Vurnayışê şıma adresê IP\'a cihaziya do qeyd bıbo. Ek <a href=\"https://#login\">ronıştış akerê </a> se dehana zeydê wahêrê dızdeyi benê . + CC BY-SA 3.0 + Ney çapnayışa <a href=\"%1$s\">Şertanê karkerdışi </a> u iştırakanê peyser nêgeriyaya be lisansê <a href=\"%2$s\">CC BY-SA 3.0</a> çapnayışi şıma qebul kenê . + Çapnayışiya <a href=\"%1$s\">Şertanê karkerdışi </a>\'u vurnayışa peyser megêriya weziyet de lisansê <a href=\"%2$s\">CC BY-SA 3.0</a> çapnayışi qebul kenê. Vurnayışê şıma adresê IP\'a cihaziya do qeyd bıbo. Ek <a href=\"https://#login\">ronıştış akerê </a> se dehana zeydê wahêrê dızdeyi benê . Zıwanê Wikipedia Cı geyre Na wesiqa zıwanan de binan de çıniya @@ -179,7 +179,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index a5cd788be11..97497525fbc 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -1,5 +1,7 @@ @@ -62,7 +65,12 @@ Κοινοποίηση μέσω Ανακατεύθυνση από %s Ιστορικό αναθεωρήσεων: %s + <b>m</b> %s Κενό σύνολο επεξεργασίας + Αναζήτηση ή φιλτράρισμα αλλαγών + Φιλτράρισμα κατά + Όλες οι τροποποιήσεις (%s) + Τροποποιήσεις χρηστών (%s) Εμφάνιση καρτελών Αλλαγή γλώσσας Βρείτε στο λήμμα @@ -100,9 +108,9 @@ Εμφάνιση σε χάρτη Διαβάστε σε άλλη γλώσσα Διαθέσιμο σε %d άλλες γλώσσες - CC BY-SA 3.0 - Με την δημοσίευση, συμφωνείτε με τους <a href=\"%1$s\">Όρους Χρήσης</a> και αμετάκλητα δημοσιεύετε τις συνεισφορές σας υπό την άδεια <a href=\"%2$s\">CC BY-SA 3.0</a>. - Με την δημοσίευση, συμφωνείτε με τους <a href=\"%1$s\">Όρους Χρήσης</a> και αμετάκλητα δημοσιεύετε τις συνεισφορές σας υπό την άδεια <a href=\"%2$s\">CC BY-SA 3.0</a>. Οι επεξεργασίες σας θα αναφέρονται στην διεύθυνση IP της συσκευής σας. Αν <a href=\"https://#login\">συνδεθείτε</a>, θα έχετε περισσότερη ιδιωτικότητα. + CC BY-SA 3.0 + Με την δημοσίευση, συμφωνείτε με τους <a href=\"%1$s\">Όρους Χρήσης</a> και αμετάκλητα δημοσιεύετε τις συνεισφορές σας υπό την άδεια <a href=\"%2$s\">CC BY-SA 3.0</a>. + Με την δημοσίευση, συμφωνείτε με τους <a href=\"%1$s\">Όρους Χρήσης</a> και αμετάκλητα δημοσιεύετε τις συνεισφορές σας υπό την άδεια <a href=\"%2$s\">CC BY-SA 3.0</a>. Οι επεξεργασίες σας θα αναφέρονται στην διεύθυνση IP της συσκευής σας. Αν <a href=\"https://#login\">συνδεθείτε</a>, θα έχετε περισσότερη ιδιωτικότητα. Γλώσσες Βικιπαίδειας Αναζήτηση Αυτή η σελίδα δεν είναι διαθέσιμη σε άλλες γλώσσες. @@ -226,7 +234,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.m.wikimedia.org/wiki/Terms_of_Use https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.el + https://creativecommons.org/licenses/by-sa/4.0/deed.el https://creativecommons.org/publicdomain/zero/3.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/el https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -236,7 +244,7 @@ Μεταφραστές Η εφαρμογή αυτή έχει μεταφραστεί από τους εθελοντές μεταφραστές στο <a href=\"https://translatewiki.net\">translatewiki.net</a>. Άδεια - Ο πηγαίος κώδικας είναι διαθέσιμος στα <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> και <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> υπό την <a <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">άδεια Apache 2.0</a>. Εκτός αν ορίζεται διαφορετικά, το περιεχόμενο είναι διαθέσιμο στο <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike License</a>. + Ο πηγαίος κώδικας είναι διαθέσιμος στα <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> και <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> υπό την <a <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">άδεια Apache 2.0</a>. Εκτός αν ορίζεται διαφορετικά, το περιεχόμενο είναι διαθέσιμο στο <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike License</a>. Ένα προϊόν του <a href=\"https://wikimediafoundation.org/\">Ιδρύματος Wikimedia</a> Σχετικά Η σελίδα έχει τροποποιηθεί. Είστε βέβαιοι ότι θέλετε να πραγματοποιήσετε έξοδο χωρίς να αποθηκεύσετε τις αλλαγές σας; @@ -809,6 +817,7 @@ Δεν έχετε επιλέξει ετικέτες για την εικόνα Μόνο ετικέτες που επιλέγετε θα προστεθούν στις εικόνες. Αυτές που δεν έχουν επιλεγεί θα επισημανθούν ως απορριφθείσες. Είστε βέβαιοι ότι θέλετε να επισημάνετε όλες τις ετικέτες ως απορριφθείσες; Προσθήκη ετικέτας + Οι μη δημοσιευμένες ετικέτες δε θα αποθηκευτούν %s, σας ευχαριστούμε για τις τροποποιήσεις σας. Παρακάτω μπορείτε να βρείτε περισσότερους τρόπους για να συνεισφέρετε στη Βικιπαίδεια. <b>Γειά σας %s</b>, παρακάτω μπορείτε να βρείτε μερικούς γρήγορους και εύκολους τρόπους για να βοηθήσετε στην βελτίωση της Βικιπαίδεια. Θα δείτε τη διαφορά που κάνετε αμέσως μόλις ξεκινήσετε. Καλή επεξεργασία! Περιγράψτε μια εικόνα για να βοηθήσετε τους αναγνώστες να κατανοήσουν τη σημασία και το περιεχόμενό της. @@ -997,4 +1006,5 @@ Δε βρέθηκαν υποκατηγορίες σε αυτή την κατηγορία. Αποδοχή Απόρριψη + Μικρές διορθώσεις σφαλμάτων και βελτιώσεις diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index ed81a7e327c..d40f9031732 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -1,5 +1,6 @@ Vikipeedia Vikipeedia Beeta + Tagasi + Tagasi + Edasi Otsi Vikipeediast Internetti ühendamine ei õnnestu. Proovi uuesti Tühjenda ajalugu + Ajalugu Sirvimisajaloo kustutamine Jah + Ei Vali jagamisviis: Vaheta keelt Otsi lehelt + Salvesta + Salvesta Jaga linki + Ava Viimati uuendatud %s Vikipeedia keel Otsi @@ -41,12 +50,19 @@ Logi Vikipeediasse sisse Kasutajanimi Parool + Logi sisse + Logi sisse + Logi sisse + Logi sisse Logi sisse - Logi Vikipeediasse sisse + Logi sisse Sisselogimine… Sisselogimine õnnestus Logi välja Välja logitud + Loobu + Logi sisse + Loobu Ülevaade sellest, mida oled siin lugenud. Kasutajanimi Loo konto @@ -78,13 +94,16 @@ Teave Lehekülg on muudetud. Kas oled kindel, et soovid väljuda muudatusi salvestamata? Jah + Ei Tõkestatud Sinu kasutajakontolt on selles vikis muudatuste tegemine tõkestatud. Sinu IP-aadressilt on muudatuste tegemine tõkestatud. Mida leheküljel muutsid? Edasi - Salvesta + Avalda Eelvaade + Võta tagasi + Tee uuesti Parandatud kirjaviga Parandatud grammatika Lisatud lingid @@ -93,9 +112,20 @@ Otsi järgmine Otsi eelmine Jah + Ei Sulge Jah + Ei + Salvesta + Keel Lugemisnimekirjad puuduvad Salvesta artiklid lugemisnimekirja, et vaadata neid hiljem, ka internetiühenduseta. Jah + Ei + Loobu + Logi sisse + Loobu + Loobu + Loobu + Loobu diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index a88ecfed645..2d74b3c0c79 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -1,6 +1,7 @@ + + Википедий + Википедий (бета) + Википедий (альфа) + Викимедий + Шеҥгек + Шеҥгек + Ончыко + Википедий мучко кычалаш + Йӱк дене кычалаш + Йылмым кычалаш + Мыйын списке-влакым фильтроватлаш + Тӧрлымаш + Эше + Кычалаш + Интервот деке ушалтын керташ огеш лий. + Уэштараш + Уэштараш + Уэштараш + Уэштараш + Уэштараш + Шеҥгек + Шеҥгек + Умбакыже + Историйым эрыкташ + %s статьям ончымаш историй гыч кораҥдыме + %d статьям ончымаш историй гыч кораҥдыме + Пӧртылташ + Чараш + Приложений келыштарымаш + Кычалме йодмашым пурташ тӱҥалаш манын, изисӱретым уэш темдал. + Историй + Сӱрет: %s + Велыж: %s + Викиклат + Викиданный + Ончымаш историйым эрыкташ + Туге + Уке + Пайлалташ... + Пайлалташ + %s гыч вес вере колтымо + Вашталтыш историй: %s + <b>и</b> %s + Вашталтышын яра возен ончыктымашыже + Тӧрлымашым кычалаш але фильтроватлаш + Фильтроватлаш (мо дене): + Чыла тӧрлымаш (%s) + Ушнышо-влакын тӧрлымашышт (%s) + Лӱмдымӧ-влакын тӧрлымашышт (%s) + Бот-влакын тӧрлымашышт (%s) + %1$s гыч %2$s марте метрике-влак + + %1$d тӧрлымаш + %2$s дене %1$d тӧрлымаш + + + %1$d тӧрлымаш + %2$s (%3$s) дене %1$d тӧрлымаш + + Шукырак тӧрлымашым ужаш манын, <a href=\"#\">фильтрым</a> вашталтен ончо + Ушештартыш-влакым ончыкташ + Йылмым вашталташ + Статьяште муаш + Эскерыме спискыш ешараш + Эскераш + Эскерыман огыл + Каҥашымаш велыжым ончаш + Каҥашымаш велыж + Вашталтыш историйым ончаш + Вашталтыш историй + Эскерыме списке гыч кораҥдаш + Эскералтеш + Велыжыште муаш + Шрифт да теме + Лудашлан спискыш ешараш + Аралаш + Лудашлан спискыш ешараш + Аралаш + Кылвер дене пайлалташ + Статья дене пайлалташ + Пайлалташ + У ушештартышым почаш + У ушештартыш + Лудашлан списке-влак + Шукерте огыл ончен лекме + Архив + Почаш + У ушештартышеш почаш + Кылвер адресым копироватлаш + Пален налмаш + Пайлалташ + Пайлалташ + Тыште тӧрлаш + Статьям тӧрлаташ + Пытартыш уэмдымаш: %s + Каҥашымаш велыжым ончаш + Вашталтыш историйым ончалаш + Картыште ончалаш + Вес йылме дене лудаш + %d вес йылме дене кучылташ лиеш + CC BY-SA 4.0 + Шке вашталтымашет колтет гын, тый <a href=\"%1$s\" >кучылтмо шотышто келшык дене</a>, тыгак <a href=\"%2$s\">CC BY-SA 4.0</a> лицензий почеш пӧртылташ лийдыме савыктымаш дене келшет. + Шке вашталтымашет колтет гын, тый <a href=\"%1$s\" >кучылтмо шотышто келшык дене</a>, тыгак <a href=\"%2$s\">CC BY-SA 4.0</a> лицензий почеш пӧртылташ лийдыме савыктымаш дене келшет. Тӧрлымаш-влак арверетын IP-адресше дене кылдыме лийыт. Тый <a href=\"https://#login\">системылан шкем палдарет</a> гын, шолыплык шотышто кугурак кӱкшытым налын кертат. + Тӧрлымаш-влак арверетын IP-адресше возен шындалтыт. Тый <a href=\"https://#login\">системыш пурет</a> гын, тыйын шукырак шолыплык лиеш. + Википедийысе йылме-влак + Кычал + Тиде велыжым вес йылме дене кучылташ огеш лий. + Йылмым мумо огыл + Вес йылме-влак + Тыйын Википедийысе йылме-влак + Вашталтышым савыкташ + Вашталтышым аралыме! + Тӧрлатыме годым йоҥылыш! + Уэштараш + Чараш + Пуртымо вашталтышым савыктыме огыл. Тый чынак тиде велыж гыч лектын кайынет? + Каяш + Кодаш + Контентын вуйлымашыже + Нимом мумо огыл + \"%s\" спискыште лектышым мумо огыл + Лудашлан спискылаште лектышым мумо огыл + Историйыште лектышым мумо огыл + Кӱшнӧ ончыктымо мут-влакым уэштаре + CAPTCHA-м пурто + CAPTCHA-м уэмдаш манын, тудым логал + Википедийыш пураш + Ушнышын лӱмжӧ + Шолыпмут + Шолыпмут + Кок йыжыҥан аутентификацийын кодшо + Пураш + Пураш + Пураш + Пураш + Пураш + Пураш + Системыш пурымаш… + Системыш пурымо! + Шолыпмутым шынде + У шолыпмут + Аралаш да пураш + Лекташ + Аккаунт гыч лектынат + Чараш + Аккаунт гыч лектынат + Пураш + Чараш + Шукерте огыл ончен лекме статья уке + Тыште тыйын лудмо статья-влакым эскере. + Шке йылмет дене эрыкан энциклопедийым кычал да луд + Википедийыште вес йылме дене кычалаш + Ойырымо иктык-влакым кораҥдаш + <big>В</big>ИКИПЕДИ<big>Й</big> + Ушнышын лӱмжӧ + Аккаунтет уке? + Википедий дек ушнаш + Шолыпмутым монденат? + Аккаунтет уже уло? + Аккаунтым ышташ + Тергымаш + Электрон почто адрес (кӱлешанжак огыл) + Шолыпмутым уэштаре + Шолыпмут дене ушнышо лӱм икгай лийын огыт керт + Шолыпмут-влак икгай огытыл + Чын огыл электрон почто адрес + Ушнышын лӱмыштыжӧ лийын кертдыме символ-влак + Шолыпмут 8 символ деч шагал огыл шогышаш. + Аккаунтым ыштен кертме огыл + Умбакыже + Аккаунтым электрон почто деч посна ышташ? + Электрон почто аккаунтым пӧртылташ кучылталтеш, сандене темлалтеш. + Электрон почто деч посна шуяш + Электрон почто адресым ешараш + Аккаунтым ышташ + «%s» ушнышо лӱм лийын кертдыме. Порылий, вес лӱмым ончыкто. + Вуеш ит нал, у ушнышо лӱмым ышташлан тыйын IP-адресетым петырыме. + Кумданрак + Чумыр + Аккаунт + Wikipedia App ЧПЙ + Приложений нерген шоныммутым колташ + Аккаунт ышталтын! + Синхронизаций + Трафикым кучылтмаш + Лудашлан спсике гыч статья-влакым тулен налаш + Шолыплык + Кучылтмо нерген отчётым колтедылаш + Фильтрын историйже + Тиде кылверым ончыктен кертме огыл + Чаманыман, кызытсе жаплан тиде велыжым тӧрлаташлан тыйын аккаунтын ситыше праваже уке. + Чаманыман, кызытсе жаплан тиде велыжым лӱмдымын тӧрлатылаш огеш лий. + Эскерыме спискыш ешараш + Келыштарымаш + Келыштарымаш + «Википедий» приложений нерген + Шолыплык политике + Кучылтмо келшык + https://mhr.wikipedia.org/wiki/Википедий:Палемдымаш + https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/mhr#Офлайныште_лудмаш_да_данный + https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/mhr + https://en.wikipedia.org/wiki/Wikipedia:Request_an_account + https://creativecommons.org/licenses/by-sa/4.0/deed.mhr + https://creativecommons.org/publicdomain/zero/1.0/deed.mhr + https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/mhr + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags + Кучылтмо библиотеке-влак + Автор-влак + <a href=\"https://www.mediawiki.org/wiki/Wikimedia_Apps/Team/Android\">Командын велыжше</a> + Кусарыше-влак + Тиде приложенийым <a href=\"https://translatewiki.net\">translatewiki.net</a> платформышто вӱмазе-влак кусареныт. + Лицензий + <a href=\"https://wikimediafoundation.org/\">Викимедий фондын</a> продуктшо + Приложений нерген + Велыжым вашталтыме ыле. Тый чынак, вашталтышым аралыде, лекнет? + Туге + Уке + Петырыме + Тиде вики-проектыште тӧрлатымаш деч тыйын аккаунтет петырыме ыле. + Тыйын IP-адресет гыч тӧрлатымашым петырыме ыле. + Кузе тый велыжым саемденат? + Умбакыже + Савыкташ + Ончылгоч ончымаш + Чараш + Уэштараш + Мӧҥгеш пӧртылташ + + %s байт + %s байт + + Лишемдаш + Тораҥдаш + Опечаткым тӧрлатыме + Чын возымым тӧрлатыме + Кылвер-влакым ешарыме + Моло + Тыйын велыжым саемдыме вес йӧн-влак + Тӧрлатымаште ваштӱкныш + Шижтарымашым тӧрлаташ + Порылий, тӧрлатымаш деч ончыч лудын лек + Тӧрлымаш нерген шижтарымашым вигак ончыктылаш + Умбакыже муаш + Ондыкше муаш + Тиде икымше икгайлык + Тиде пытартыш икгайлык + Икгайрак велыж-влак + Пытартыш кычалмаш: + Лектыш уке + Пытартыш кычалме йодмаш спискым эрыкташ + Туге + Уке + Веб-велыжым почын кертме огыл (браузерын приложенийжым мумо огыл). + Кӱчык факт-влак + Ешартыш информаций + Петыраш + Википедийын ойырен налме велыжше + Кечылан ойырен налме велыж: + Википедий мучко кычалаш + Нимогай рашлыкым мумо огыл. + Альфа-версийлан у уэмдалтмаш уло + Тулен налаш манын, темдал + Петыраш + Сӱретым ончыкташ + Wi-Fi дене гына тулен наледылаш + Кылдалтше статья-влак + Тиде статья нерген + Файл велыж деке куснаш + Сӱретым луктын кертме оыгл. + %s библиотекылан лицензий + Пайлалташ + Сӱрет дене пайлалтын кертме огыл: %s + Файлым вераҥдымаш… + Файл аралалтын. + Видеом колтыктен кертме огыл. + Сӱрет деке возышым тӧрлаш + Сӱрет возен ончыктымашым ешараш + Сӱрет возен ончыктымашым ешараш (%s) + Файлым арален керташ огеш лий + Шаралташ манын, темдал + Creative Commons лицензий + Captcha сӱрет + Поро кумылын кучылтмаш + Вераҥдыше пале огыл + Петыраш + У ушештартыш + Чыла ушештартышым петыраш + Тый чынак чыла ушештартышым петырынет? + Туге + Уке + Ушештартышым петыраш + Ушештартыш петыралтын. + Петырыме: %s + Чыла ушештартышым петырыме. + Лудашлан спискыш ешараш + Велыжым браузерыште ончымаш + Палыдыме йоҥылыш лийын. + Серыш: «%s» + Адресым алмаш буферыш копироватлыме. + Текстым алмаш буферыш копироватлыме. + Статьям лудам + Каҥашымаш велыжым почаш + Икгайрак велыж-влакым ончымаш + Тыгай вуймут икмыняр велыж дене кылдалтын: + Лудашлан спискыш ешараш + Статьям интернет деке ушалтме деч посна вераҥдаш огеш лий. + Тасмам шымлаш + Тасмам келыштараш + Таблице-влакым вӱдылаш + Надырлаш + Чӱкташ + Чӱкташ + Йоҥылыш лийын + Петыраш + Тыгай велыж уке + %s палемдымаш + Палемдымаш + У ушештартыш + Чыла ушештартышым аралаш + Петырыме тӱҥалтыш: %s + Петырыме мучаш: %s + Петырымаш ID: %s + Приложенийыште йоҥылыш + Угыч колтыкташ + Лекташ + Аралаш + Йылме + Кычалаш + Сылнештарыме теме + Контент + Тӧрлаш… + Статьян возен ончыктымашыжым тӧрлаташ + Сылнештарыме теме + Шеме + Текст пример + Шрифт кугытым кугемдаш + Шрифт кугытым иземдаш + %s (ойлыде) + Шрифт + Лудмаш + Тöрлатымаш + Лудмо радам + Корно номерым ончыкташ + Икгай лопкытан шрифтым кучылташ + Аралыме + Лудашлан спискыш ешараш + Лудашлан спискыш кусараш + Уым ышташ + %1$s статьям %2$s спискыш ешарыме. + %s аралалтын. Спискыш ешарынет? + %1$s статьям %2$s спискыш кусарыме. + Чыла сай! %1$s спискыште уже %2$s уло. + Чыла сай! %s спискыште уже чыла статья уло. + Спискым ончалаш + Спискыш ешараш + + 1 статья + %d статья + + + 1 статья, %2$.2f МБ + %1$d статья, %2$.2f МБ + + Ойыркалаш + Вуйлӱм дене ойыркалаш + Спискым кораҥдаш + Ойыраш + Ойырымым чараш + Возен ончыктымаш (кӱлешанжак огыл) + Чараш + %s кораҥдалтын + Ойыраш + Кызыт огыл + Туге + Уке + Чараш + Пураш + Йӧра + Уке, тау + Аралыме + У спискым ышташ + Пураш / регистрацийым эрташ + Йӧра + Йӧра + Чараш + Чараш + Чараш + Чараш + Йӧра + Кораҥдаш + Аралаш + Спискым аралаш + Вуймут + Чараш + Аралаш + Ончалаш + Келыштарымаш + Чарыме тӧрлымаш + Статья-влакым тулен налмаш + Паузо + Шуяш + Чараш + Википедий шижтарымаш + Шижтарымаш + Шижтарымаш архив + Шижтарымашым кычалаш + Луддымым ончалаш + Архивлымым ончалаш + Шижтарымаш келыштарымаш + Чӱкташ + Кызыт огыл + Луддымо семын палемдаш + Лудмо семын палемдаш + Вашешташ + %s ушнышылан вашмутым колтымаш… + Вашмут савыкталтын. + Вашмутым вигак савыктен кертме огыл. + %d лудмо семын палемдыме + %d луддымо семын палемдыме + Эскерыме списке + Системысе серыш-влак + Йыжыҥ + Тауштымаш + Ала-кӧ тыйым тӧрлымашлан тауштен + Мӧҥгеш пӧртылтымаш + Тыйын тӧрлымаш кокла гыч иктыжым мӧҥгеш пӧртылтымӧ + Системыш пурымаш + Тыйым ушештарымаш + Ала-кӧ тыйым велыжыште ушештарен + Каҥашымаш велыжлаште + Каҥашымаш велыжла гыч серыш да вашмут-влак + Серыш-влакым наледылмаш + Ушнышын праважым вашталтымаш + Ончыктымым келыштарымаш + Лудмо нерген шижтарымашым шылташ + Википедий + Википедий гыч шижтарымаш + Моло + Приложений деч моло шижтарымаш + Шижтарымашым фильтроватлаш + Шижтарымашым фильтроватлаш + Приложенийысе йылме-влакым уэмдаш + Чыла фильтрым ойыраш + Чыла + Ушештарымаш + Шижтарымашым кычалаш але фильтроватлаш + Шижтарымаш фильтр + Лудмо семын палемдаш + Луддымо семын палемдаш + Лудмо + Лудмо огыл + Чыла объектым палемдаш + Чыла объект гыч палемдымым кораҥдаш + Вики фильтр + Фильтр тӱрлылык + Чыла \"вики\" + Чыла \"тӱрлылык\" + %s каҥашымаш велыж + Лудмо негызеш + Рандомизатор + Чокым статья + Эше чокым статья-влак + Эн шуко лудмо + %d тӱж. + %d млн + Вес чокым сатьям тулен налаш + Википедийыште таче + Тӱҥ велыжым ончалаш + Кечылан сӱрет + Тулен налаш + Пайлалташ + Тиде картычкым шылташ + Картычкым шылтыме. + Картычке йылмым тӧрлаташ + Шукырак келыштарымаш + Викиклат гыч эн сай сӱрет-влак + Тасма + Тӱҥ + Картычкын изисӱретше + Уверыште + + теҥгече + %d кече ончыч + + таче + %s лудмо + Уке, тау + Ойырен налме статья + Аралаш + Тасмам келыштараш + Чыла ончыкташ + Чыла шылташ + Келыштараш + Йӧра + Чараш + Йӧра + Чараш + Тый тасма мучашыш шунат. + Эше вераҥдаш + Статьян возен ончыктымашыже + Статья + Статьян возен ончыктымашыже (%s) + Статьян возен ончыктымашыже (%s) + Сӱретын возен ончыктымашыже + Сӱрет деке возыш + Сӱрет деке возыш (%s) + Сӱрет деке возыш (%s) + Савыкташ + Лудаш + Статьян возен ончыктымашыжым ешараш + Статьян возен ончыктымашыжым кусараш + Статьян возен ончыктымашыжым тӧрлаташ + Сӱрет деке возышым ешараш + Сӱрет деке возышым тӧрлаш + Сӱрет деке возышым кусараш + Чараш + Справке: статьян возен ончыктымашыже + Викиданный нерген + Йӱкан пуртымаш + Статьян возен ончыктымашыже нерген кумданрак + Сӱрет деке возыш нерген кумданрак + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/mhr#Статьян_возен_ончыктымашыже + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/mhr#Сӱрет_деке_возыш + Тиде текст утыжден кӱчык. + Текст препинаний пале-влак дене пытышаш огыл. + Икымше мут шкенле вуйлӱм огыл гын, изи буква дене тӱҥал. + Изи буква дене тӱҥалаш ит тырше. + Текст вучыдымо йылме дене. Йылме %s лийшаш. + Темлыме возен ончыктымашым ончыкташ + Компьютерын темлыме статьян возен ончыктымашыжым кучылтын ончо + Статьян возен ончыктымашыжым савыктыме! + Статьян возен ончыктымашыжым савыктыме! + Статьян возен ончыктымашыжым савыктыме! (%s) + Сӱрет деке возышым савыктыме! + Сӱрет деке возышым савыктыме! (%s) + Сӱрет тег(-влак)ым савыктыме! + Келшыш? Мыланна шукырак ешараш полшо. + Тый кызыт гына Википедийым чылалан сайракым ыштышыч + Ямде + Тый паленат? + Статьян возен ончыктымашыже + Порылий, кӱчыкын + Тӧрлытымашым тӱҥалаш + Вигак ойлончо-влак + Меню + Статья-влакым возен ончыкташ + Сӱрет деке возыш + Статьян возен ончыктымашыжым ончылгоч ончаш + Возен ончыктымашым ешараш + Возен ончыктымашым тӧрлаш + Кусарымашым ешараш + Кусарымашым тӧрлаташ + Возышым ешараш + Возышым тӧрлаташ + Сӱрет деке возышым ончылгоч ончаш + Мыйын надырем + Тиде файлын возен ончыктымашыже уке + Информаций + Статьян возен ончыктымашыжым ешараш + Сӱрет деке возышым ешараш + Сӱрет деке кӱчык возышым ешаркалымаш + Сӱрет деке возышым кусараш + Сӱрет деке возышым вес йылмыш кусараш + Икмыняр йылмым палыше редактор-влаклан шукырак паша + Мылам огыл + Йылме-влакым ешараш + Сӱрет + Сӱретче + Автор + Важ + Лицензий + Кече + Темлыме тӧрлымаш-влак + Статьян возен ончыктымашыжым ешарымаш + Статьян возен ончыктымашыжым ешарымаш (%s) + Тӱҥалаш + Сӱрет деке возыш (%s) + Сӱрет + Викиклат гыч файл + Сӱретче + Пале-влак + Кече + Важ/Фотограф + Лицензирований + Кумданрак + Викиклат гыч файлын велыжше + Википедийыште файл велыж + Сӱрет деке тег-влакым ешараш + Сӱрет деке возышым ешараш + Сӱрет деке возышым ешараш (%s) + Ончалаш + Сӱрет деке возышым ешараш + Сӱрет деке возышым ешараш (%s) + Сӱрет деке тег-влакым ешараш + Йодыштмашым эрташ + Ешараш + Кусараш + Сӱрет деке возыш-влак + Сӱрет тег-влак + Савыктымаш + Савыктыме + Савыктыме тег-влак + Тег-влакым кычалаш + Тегым ешараш + Тӧрлымаш шотышто каҥаш да темлымаш + Темлыме вашталтыш шотышто справке + Ончымаш-влак + Тӧрлымаш сайлык + Пеш сай + Сай + Уда + Темлыме тӧрлымаш-влак + Шукырак пален налаш + Йӧртымӧ + IP петыралтын + Пытартыш тӧрлатымаш + Нигунам + у + Йылме + Кече / Жап + Надыр тӱрлылык + Сӱрет + Статья + %s ончымаш + %1$d %2$s + Теҥгече + Сӱрет тег + Статьян сӱретше + Туге + Уке + Молан уке? + Сӱрет шӱктарыше улеш + Уда сайлыкан сӱрет + Моло + Колташ + Умбакыже + Сӱретым ешарыме + Возышым ешарыме + Ончалаш + Файл велыж + Сӱретын возен ончыктымашым ешараш + Сӱрет тег-влакым ешараш + Википедийым тӧрлатыметлан тау! + Чараш + %.2f ГБ + %.2f МБ + Кодаш + Шуяш + Тӱҥалаш + Ала варарак + Шымлашлан у йӧн + Раш! + Йылмым ешараш але кораҥдаш + Эрыкан энциклопедий\n…300 деч шукырак йылме дене + Чокым + Кычалаш + Уке, тау + Чараш + Пелекӱжгӧ + Кылвер + пкс + Пурташ + Полыш + Чараш + Чараш + Каҥашымаш + Каҥашымаш: %s + У теме + Теме савыкталтын. + Тиде каҥашымаш велыж яра. + Каҥашымаш тыште тӱҥалеш + Вашешташ + (Теме деч посна) + Теме + Вашмутым возаш + Серышым возаш + Чараш + Серыш-влакым кычалаш + Возалташ + Возалтынат + Лудмо семын палемдаш + Луддымо семын палемдаш + Пайлалташ + Чыла вашмут + Ушнышын изисӱретше + Лудмо + Лудмо огыл + Тауштымаш + Чараш + Таҥастараш + Вашталташ + Вики + Бот + Кудалташ + Статья-влак + Статья + Раш! + Пайлалташ… + Ӧрдыжтараш + diff --git a/app/src/main/res/values-min/strings.xml b/app/src/main/res/values-min/strings.xml index a2e27bbdaa9..61a17a9e614 100644 --- a/app/src/main/res/values-min/strings.xml +++ b/app/src/main/res/values-min/strings.xml @@ -59,8 +59,8 @@ Caliak di peta Baco dalam bahaso lain Ado dalam %d bahaso lain - Jo manabikkan, Sanak satuju pado <a href=\"%1$s\">Katantuan Panggunoan</a>, dan malapeh jariah Sanak di bawah lisensi <a href=\"%2$s\">CC BY-SA 3.0</a>. - Jo manabikan, Sanak sapakaik jo <a href=\"%1$s\">Katantuan Panggunoan</a>, sarato malapeh jariah Sanak di bawah lisensi <a href=\"%2$s\">CC BY-SA 3.0</a>. Suntiangan ka diubuangkan ka alamaik IP parangkek. Kok Sanak <a href=\"https://#login\">masuak log</a>, Sanak ka punyo privasi labiah. + Jo manabikkan, Sanak satuju pado <a href=\"%1$s\">Katantuan Panggunoan</a>, dan malapeh jariah Sanak di bawah lisensi <a href=\"%2$s\">CC BY-SA 3.0</a>. + Jo manabikan, Sanak sapakaik jo <a href=\"%1$s\">Katantuan Panggunoan</a>, sarato malapeh jariah Sanak di bawah lisensi <a href=\"%2$s\">CC BY-SA 3.0</a>. Suntiangan ka diubuangkan ka alamaik IP parangkek. Kok Sanak <a href=\"https://#login\">masuak log</a>, Sanak ka punyo privasi labiah. Bahaso Wikipedia Cari Laman ko indak ado dalam bahaso lain. @@ -173,7 +173,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/min#Baco_sacaro_luriang_jo_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/min https://min.wikipedia.org/wiki/Wikipedia:Mohon_buekkan_akun - https://creativecommons.org/licenses/by-sa/3.0/deed.id https://creativecommons.org/publicdomain/zero/1.0/deed.id Kontributor Panajamah diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index 699941f0e32..7096fa2c48d 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -74,7 +74,7 @@ Најди во статијата Додај во набљудувани Набљудувај - Престани со набљудување + Прекини набљудување Разговорна страница Разговорна страница Историја на уредувања @@ -109,9 +109,9 @@ Погл. на карта Прочитај на друг јазик Достапно на %d други јазици - CC BY-SA 3.0 - Објавувајќи, се согласувате со <a href=\"%1$s\">Условите на употреба</a> и дека неотповикливо ги објавувате вашите придонеси под лиценцата <a href=\"%2$s\">CC BY-SA 3.0</a> - Објавувајќи, се согласувате со <a href=\"%1$s\">Условите на употреба</a>, и дека неотповикливо ги објавувате вашите придонеси под лиценцата <a href=\"%2$s\">CC BY-SA 3.0</a>. Уредувањата ќе ѝ бидат припишани на IP-адресата на вашиот уред. Ако се <a href=\"https://#login\">најавите</a> ќе имате поголема приватност. + CC BY-SA 4.0 + Објавувајќи, се согласувате со <a href=\"%1$s\">Условите на употреба</a> и дека неотповикливо ги објавувате вашите придонеси под лиценцата <a href=\"%2$s\">CC BY-SA 4.0</a> + Објавувајќи, се согласувате со <a href=\"%1$s\">Условите на употреба</a>, и дека неотповикливо ги објавувате вашите придонеси под лиценцата <a href=\"%2$s\">CC BY-SA 4.0</a>. Уредувањата ќе ѝ бидат припишани на IP-адресата на вашиот уред. Ако се <a href=\"https://#login\">најавите</a> ќе имате поголема приватност. Уредувањата ќе ѝ бидат припишани на IP-адресата на вашиот уред. Ако <a href=\"https://#login\">се најавите</a>, тогаш ќе имате повеќе приватност. Јазици на Википедија Пребарај @@ -237,7 +237,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.wikimedia.org/wiki/Terms_of_Use/mk?uselang=mk https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.mk + https://creativecommons.org/licenses/by-sa/4.0/deed.mk https://creativecommons.org/publicdomain/zero/1.0/deed.mk https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -247,7 +247,7 @@ Преведувачи Прилогов го преведоа доброволни преведувачи на <a href=\"https://translatewiki.net\">translatewiki.net</a>. Лиценца - Изворниот код ќе го најдете на <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> и <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> под лиценцата <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0</a>. Ако не е поинаку наведено, сета содржина се нуди под лиценцата <a href=\"https://mk.wikipedia.org/wiki/Википедија:Текст_на_лиценцата_Криејтив_комонс_Наведи извор-Сподели_под_исти_услови_3.0_Нелокализирана\">Криејтив комонс Наведи извор-Сподели под исти услови Нелокализирана</a>. + Изворниот код ќе го најдете на <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> и <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> под лиценцата <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0</a>. Ако не е поинаку наведено, сета содржина се нуди под лиценцата <a href=\"https://creativecommons.org/licenses/by-sa/4.0/deed.mk\">Криејтив комонс Наведи извор-Сподели под исти услови</a>. Производ на <a href=\"https://wikimediafoundation.org/\">Фондацијата Викимедија</a> За прилогот Страницава е изменета. Дали сигурно сакате да излезете без да ги зачувате направените промени? @@ -274,7 +274,7 @@ Додадени врски Друго Други начини на кои ја подобривте страницата - Спротиставеност во уредувањето + Спротивставеност во уредувањето Оваа страница е веќе изменета од друг корисник, и се коси со вашето уредување. Прекопирајте ги вашите уредувања, превчитајте ја страницата и обидете се повторно. Белешки за уредување Прочитајте пред да уредувате @@ -842,7 +842,7 @@ Почнете со мала буква освен ако зборот е лична именка. Избегнувајте да почнувате со мала буква. Се чини дека текстот е напишан на неочекуван јазик. Јазикот треба да биде %s. - Потврдете дека вашиот опис е на %1$s. Слободно занемарете ја напоменава ако напишаниот опис ви е на %2$s. + Потврдете дека вашиот опис е на %1$s. Слободно занемарете го ова предупредување ако напишаниот опис ви е на %2$s. Прикажи предложен опис Пробајте ги машински предложените описи на статии Описот на статијата е објавен! @@ -950,6 +950,7 @@ Немате избрано ниедна ознака за сликава Во сликите ќе се додаваат само ознаки кои сте ги избрале вие. Неизбраните ознаки ќе се сметаат за одбиени. Дали сигурно сакате да ги означите сите како одбиени? Додај ознака + Необјавените ознаки нема да се зачуваат Штипнете за да ја приближите сликата. %s, ви благодариме за уредувањата. Подолу ќе најдете други начини да учествувате на Википедија. <b>Здраво, %s</b>. Подолу погледајте како брзо и лесно начини да помогнете на Википедија. Штом започнете, ќе забележите каква разлика правите. Среќно уредување! @@ -1025,7 +1026,7 @@ Предложени описи Што би сакале да пријавите? Нема доволно информации - Не можам да ги видам предложените описи + Не можам да ги видам предложените описи Неприкладен предлог Не ја разбирам задачата Пријави @@ -1046,6 +1047,35 @@ Додадовте %d знак Додадовте %d знаци + Слики за статии + Додавајте предложени слики во википедиски статии за да ја подобрите претставата за содржината. + Дали би ја додале оваа слика во статијата? + Упатства + Да + Не + Не знам + Зошто не? + Вашите одговори ги подобруваат идните предлози. + Сликата е нерелевантна + Немам доволно сознанија за да одлучам + Сликата е неумесна + Сликата е неквалитетна + Не се разбирам од темава + Друго + Поднеси + Додајте потребни слики во статии во „Предложени уредувања“ + Сликите им помагаат на читателите да ја разберат содржината, но многу статии немаат слики. + Вие ќе одлучите дали предложената слика треба да се стави во википедиска статија. + Предлозите се машински направени и на вас е да просудите дали да ги прифатите или одбиете. + Сликите се од Ризницата, збирка на слободно лиценцирани слики што се користат на Википедија. + Прочитајте ја статијава за да ја разберете темата. + Разгледајте ја сликата и нејзините информации + Решете дали сликата им помага на читателите подобро да ја разберат оваа тема + Следно + Прочитајте ја статијата за да ја разберете темата и разгледајте ја сликата + Додадена слика + Додаден опис + Погледај Податотечна страница Додај опис на сликата Додај ознаки на сликата @@ -1144,12 +1174,12 @@ Вметнување на слика или снимка Изберете податотека од Ризницата Пребарување на слики и снимки - Поставки за слики и снимки + Додајте поединости за сликата Подигната слика - Опис - Натпис кој се прикажува до ставката на сите читатели + Опис на сликата + Видлив натпис на сликата во статијата Алтернативен текст - Писмен опис за читателите кои не можат да ја видат сликата + Оопис за читателите со попречен вид Напредни нагодувања Сложи го текстот околу сликата Положба на сликата @@ -1389,4 +1419,6 @@ „Споделување на списоци за читање“ е пробна функција и ни требаат ваши мислења за да ја подобриме или отстраниме. Прифати Одбиј + Проблеми со страницата + Ситни поправки на грешки и подобрувања diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 708967d41f7..b793941e4a8 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -91,9 +91,9 @@ ഭൂപടത്തിൽ കാണുക മറ്റൊരു ഭാഷയിൽ വായിക്കുക %d മറ്റ് ഭാഷകളിൽ ലഭ്യമാണ് - സി.സി. ബൈ-എസ്.എ. 3.0 - പ്രസിദ്ധീകരിക്കുമ്പോൾ, \n<a href=\"%1$s\">ഉപയോഗ നിബന്ധനകൾ</a> പാലിക്കുമെന്നും, താങ്കൾ താങ്കളുടെ സംഭാവനകൾ <a href=\"%2$s\">CC BY-SA 3.0</a> പ്രകാരമാണ് പ്രസിദ്ധീകരിക്കുന്നതെന്നും സമ്മതിക്കുന്നുണ്ട്. - പ്രസിദ്ധീകരിക്കുമ്പോൾ, <a href=\"%1$s\">ഉപയോഗനിബന്ധനകളും</a>, താങ്കളുടെ സംഭാവനകൾ പിന്നീട് മാറ്റം വരുത്താൻ പറ്റാത്ത വിധം <a href=\"%2$s/\">CC BY-SA 3.0</a> അനുമതിയിലാണ് ഉള്ളതെന്നും താങ്കൾ അംഗീകരിക്കുന്നുണ്ട്. തിരുത്തുകൾ താങ്കളുടെ ഉപകരണത്തിന്റെ ഐ.പി. വിലാസത്തിലേക്ക് ചേർക്കുന്നതാണ്. താങ്കൾ <a href=\"https://#login\">പ്രവേശിക്കുകയാണെങ്കിൽ</a>, താങ്കൾക്ക് കൂടുതൽ സ്വകാര്യത ലഭിക്കുന്നതാണ്. + സി.സി. ബൈ-എസ്.എ. 3.0 + പ്രസിദ്ധീകരിക്കുമ്പോൾ, \n<a href=\"%1$s\">ഉപയോഗ നിബന്ധനകൾ</a> പാലിക്കുമെന്നും, താങ്കൾ താങ്കളുടെ സംഭാവനകൾ <a href=\"%2$s\">CC BY-SA 3.0</a> പ്രകാരമാണ് പ്രസിദ്ധീകരിക്കുന്നതെന്നും സമ്മതിക്കുന്നുണ്ട്. + പ്രസിദ്ധീകരിക്കുമ്പോൾ, <a href=\"%1$s\">ഉപയോഗനിബന്ധനകളും</a>, താങ്കളുടെ സംഭാവനകൾ പിന്നീട് മാറ്റം വരുത്താൻ പറ്റാത്ത വിധം <a href=\"%2$s/\">CC BY-SA 3.0</a> അനുമതിയിലാണ് ഉള്ളതെന്നും താങ്കൾ അംഗീകരിക്കുന്നുണ്ട്. തിരുത്തുകൾ താങ്കളുടെ ഉപകരണത്തിന്റെ ഐ.പി. വിലാസത്തിലേക്ക് ചേർക്കുന്നതാണ്. താങ്കൾ <a href=\"https://#login\">പ്രവേശിക്കുകയാണെങ്കിൽ</a>, താങ്കൾക്ക് കൂടുതൽ സ്വകാര്യത ലഭിക്കുന്നതാണ്. വിക്കിപീഡിയ ഭാഷകൾ തിരയുക ഈ താൾ മറ്റ് ഭാഷകളിൽ ലഭ്യമല്ല diff --git a/app/src/main/res/values-mn/strings.xml b/app/src/main/res/values-mn/strings.xml index ec00a3581b2..8188df04b2a 100644 --- a/app/src/main/res/values-mn/strings.xml +++ b/app/src/main/res/values-mn/strings.xml @@ -71,7 +71,7 @@ Хувилбарын түүхийг үзэх Газрын зураг дээр үзэх Өөр хэл дээр унших - CC BY-SA 3.0 + CC BY-SA 3.0 Википедиагийн хэлнүүд Хайлт Энэ хуудсыг бусад хэл дээр үзэх боломжгүй. diff --git a/app/src/main/res/values-mni/strings.xml b/app/src/main/res/values-mni/strings.xml index ec6f6710d29..0a5f05233f4 100644 --- a/app/src/main/res/values-mni/strings.xml +++ b/app/src/main/res/values-mni/strings.xml @@ -144,7 +144,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#ꯅꯦꯠ ꯌꯥꯎꯗꯅ ꯄꯥꯕꯥ ꯑꯃꯁꯨꯡ ꯗꯥꯇꯥ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ(ꯇꯣꯏꯅ ꯍꯪꯕ ꯋꯥꯍꯪ) https://en.wikipedia.org/wiki/Wikipedia:ꯑꯦꯀꯥꯎꯟ ꯑꯃꯥ ꯍꯥꯤꯖꯕ ꯄꯤꯕꯤꯅꯕ - https://creativecommons.org/ꯑꯌꯥꯕ/by-sa/3.0/ https://creativecommons.org/ꯃꯤꯌꯥꯃꯒꯤ ꯃꯄꯎꯡꯐꯥꯕ/ꯐꯨꯟ/1.0/ ꯁꯔꯨꯛꯌꯥꯔꯤꯕꯁꯤꯡ ꯍꯟꯗꯣꯛꯂꯤꯕꯥꯁꯤꯡ diff --git a/app/src/main/res/values-mnw/strings.xml b/app/src/main/res/values-mnw/strings.xml index 8807a5512a0..0683eb3803b 100644 --- a/app/src/main/res/values-mnw/strings.xml +++ b/app/src/main/res/values-mnw/strings.xml @@ -81,9 +81,9 @@ ဗဵု ပ္ဍဲ ဗီုတိ ဗှ် နကဵု အရေဝ်ဘာသာတၞဟ် ဟွံမွဲဏီ ပ္ဍဲ %d ဘာသာတၞဟ် - CC BY-SA 3.0 - နကဵု တြးပတိတ်ဒၟံၚ် မၞးတုပ်စိုတ် ကု <a href=\"%1$s\"> Terms of Use </a>, တုဲပၠန် ဗလးပတိုန် လိက်မၞး နကဵု အခေါင်လာင်ဇြေန်<a href=\"%2$s\">CC BY-SA 3.0</a> လာၚ်ဇြေန်. - နကဵုမဂိုင်သိပ်ဂှ် မၞးတုပ်စိုတ် ကု <a href=\"%1$s\">Terms of Use</a>, တုဲပၠန် ဗလးပတိုန် လိက်မၞး နကဵု အခေါင်လာင်ဇြေန်<a href=\"%2$s/\">CC BY-SA 3.0</a> ၊၊ အရာမပလေဝ်ဒါန်လဝ်ဂှ် စုတ်ပ္ဍဲ မုက်လိက် IP address မၞးရောင်၊၊ ယဝ်ရ မၞး <a href=\"https://#login\">လုပ်လံက်အေန်</a>, မၞးကလိဂွံ အခေါင်ပိုင်ပြဳပူဂဵုဂၠိုင်ရ၊၊ + CC BY-SA 3.0 + နကဵု တြးပတိတ်ဒၟံၚ် မၞးတုပ်စိုတ် ကု <a href=\"%1$s\"> Terms of Use </a>, တုဲပၠန် ဗလးပတိုန် လိက်မၞး နကဵု အခေါင်လာင်ဇြေန်<a href=\"%2$s\">CC BY-SA 3.0</a> လာၚ်ဇြေန်. + နကဵုမဂိုင်သိပ်ဂှ် မၞးတုပ်စိုတ် ကု <a href=\"%1$s\">Terms of Use</a>, တုဲပၠန် ဗလးပတိုန် လိက်မၞး နကဵု အခေါင်လာင်ဇြေန်<a href=\"%2$s/\">CC BY-SA 3.0</a> ၊၊ အရာမပလေဝ်ဒါန်လဝ်ဂှ် စုတ်ပ္ဍဲ မုက်လိက် IP address မၞးရောင်၊၊ ယဝ်ရ မၞး <a href=\"https://#login\">လုပ်လံက်အေန်</a>, မၞးကလိဂွံ အခေါင်ပိုင်ပြဳပူဂဵုဂၠိုင်ရ၊၊ အရေဝ်ဘာသာ ပ္ဍဲ ဝဳကဳပဳဒဳယာ ဂမၠိုင် ဂၠာဲ မုက်လိက်ဏအ်ဂှ် ပ္ဍဲအရေဝ်ဘာသာတၞဟ် ဟွံမွဲ၊၊ @@ -204,7 +204,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -214,7 +213,7 @@ ညးတြာဲဘာသာဂမၠိုင် app ဏအ်ဂှ် ကၠာဲစၠောအ်လဝ် နကဵုမၞိဟ်မကၠာဲဘာသာ နကဵုစေတနာ ပ္ဍဲ<a href=\"https://translatewiki.net\">translatewiki.net</a>. လာင်ဇြေန် - ကုဒ်တင်ဂၞင် မကလိဂွံမာန်နူပ္ဍဲ <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> and <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> under the <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">Apache 2.0 License</a>. Unless otherwise specified, content is available under a <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\"> Creative Commons Attribution-ShareAlike License</a>. + ကုဒ်တင်ဂၞင် မကလိဂွံမာန်နူပ္ဍဲ <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> and <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> under the <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">Apache 2.0 License</a>. Unless otherwise specified, content is available under a <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\"> Creative Commons Attribution-ShareAlike License</a>. မဒှ်အရာ မကၠောန်ပတိတ် နူ <a href=\"https://wikimediafoundation.org/\">Wikimedia Foundation</a> ပရူ မုက်လိက်ဏအ် ပလေဝ်ပလေတ်လဝ်၊၊ မၞး မိက်ဂွံတိတ် နူမုက်လိက် သီုဟွံဂိုင်သိပ် ကွေဟ်ဟ်ရဟာ? diff --git a/app/src/main/res/values-mr/strings.xml b/app/src/main/res/values-mr/strings.xml index abac8191aac..36a29c47bd0 100644 --- a/app/src/main/res/values-mr/strings.xml +++ b/app/src/main/res/values-mr/strings.xml @@ -135,7 +135,6 @@ https://en.m.wikipedia.org/wiki/Wikipedia:About https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ वापरलेले ग्रंथभंडार योगदानकर्ते diff --git a/app/src/main/res/values-ms/strings.xml b/app/src/main/res/values-ms/strings.xml index 6560ceab1e5..811539a3d2d 100644 --- a/app/src/main/res/values-ms/strings.xml +++ b/app/src/main/res/values-ms/strings.xml @@ -69,6 +69,14 @@ Suntingan pengguna (%s) Suntingan awanama (%s) Suntingan bot (%s) + Metrik daripada %1$s hingga %2$s + + %1$d suntingan sejak %2$s + + + %1$d suntingan sejak %2$s (%3$s) + + Cuba ubah <a href=\"#\">penapis</a> untuk melihat lebih banyak suntingan Paparkan tab Tukar bahasa Cari dalam rencana @@ -109,9 +117,9 @@ Paparkan di peta Baca dalam bahasa lain Tersedia dalam %d bahasa lain - CC BY-SA 3.0 - Dengan menerbitkan, anda menyetujui <a href=\"%1$s\">Syarat-Syarat Penggunaan</a> serta melepaskan kesemua sumbangan anda tanpa tertarik balik dengan lesen <a href=\"%2$s\">CC BY-SA 3.0</a>. - Dengan menerbitkan, anda menyetujui <a href=\"%1$s\">Syarat-Syarat Penggunaan</a> serta melepaskan kesemua sumbangan anda tanpa tertarik balik dengan lesen <a href=\"%2$s\">CC BY-SA 3.0</a>. Suntingan akan diatribusikan kepada alamat IP peranti anda. Jika anda <a href=\"https://#login\">log masuk</a>, maka privasi anda bertambah baik. + CC BY-SA 4.0 + Dengan menerbitkan, anda menyetujui <a href=\"%1$s\">Syarat-Syarat Penggunaan</a> serta melepaskan kesemua sumbangan anda tanpa tertarik balik dengan lesen <a href=\"%2$s\">CC BY-SA 4.0</a>. + Dengan menerbitkan, anda menyetujui <a href=\"%1$s\">Syarat-Syarat Penggunaan</a> serta melepaskan kesemua sumbangan anda tanpa tertarik balik dengan lesen <a href=\"%2$s\">CC BY-SA 4.0</a>. Suntingan akan diatribusikan kepada alamat IP peranti anda. Jika anda <a href=\"https://#login\">log masuk</a>, maka privasi anda bertambah baik. Bahasa Wikipedia Cari Laman ini tidak terdapat dalam bahasa lain @@ -235,14 +243,13 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.m.wikimedia.org/wiki/Terms_of_Use https://ms.wikipedia.org/wiki/Wikipedia:Permohonan_akaun - https://creativecommons.org/licenses/by-sa/3.0/deed.ms https://creativecommons.org/publicdomain/zero/1.0/deed.ms Perpustakaan yang digunakan Penyumbang Penterjemah Aplikasi ini diterjemah oleh para penterjemah sukarela di <a href=\"https://translatewiki.net\">translatewiki.net</a>. Lesen - Kod sumber tersedia di <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> dan <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> di bawah <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Lesen Apache 2.0</a>. Kecuali dinyatakan lain, kandungan tersedia di bawah <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Lesen Atribusi-BerbagiSerupa Creative Commons</a>. + Kod sumber tersedia di <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> dan <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> di bawah <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Lesen Apache 2.0</a>. Kecuali dinyatakan lain, kandungan tersedia di bawah <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Lesen Atribusi-BerbagiSerupa Creative Commons</a>. Keluaran <a href=\"https://wikimediafoundation.org/\">Yayasan Wikimedia</a> Perihal Laman ini telah disunting. Adakah anda pasti ingin keluar tanpa menyimpan suntingan? @@ -396,6 +403,7 @@ Sekatan tamat: %s ID Sekat: %s Anda boleh menghubungi <a href=\"%2$s\">%1$s</a> atau mana-mana <a href=\"https://ms.wikipedia.org/wiki/Wikipedia:Penyelia\n\">penyelia</a> lain untuk membincangkan sekatan anda. + Sesuaikan bar alat anda Anda boleh menghubungi <a href=\"https://ms.wikipedia.org/wiki/Wikipedia:Penyelia\">penyelia</a> untuk membincangkan sekatan anda. Ralat aplikasi Maaf, aplikasi Wikipedia telah mengalami ralat dan terpaksa ditutup @@ -646,6 +654,8 @@ Rencana sembarang Rencana rawak Lebih rencana rawak + Bacaan Tersohor + Lagi bacaan tersohor %d rb %d jt Muatkan satu lagi artikel rawak @@ -676,8 +686,8 @@ Ubahsuai suapan Pulihkan pandangan lalai Paparkan semua - Sembunyikan semua - Perhatikan bahawa tidak semua jenis kad tersedia dalam semua bahasa Wikipedia. Sunting bahasa anda yang dipilih dalam Tetapan. + Sorokkan semuanya + Perhatikan bahawa tidak semua jenis kad tersedia dalam semua bahasa Wikipedia. Sunting bahasa pilihan anda dalam Tetapan. Rencana mengenai peristiwa semasa Peristiwa dalam sejarah pada hari ini Cadangan berdasarkan rencana yang baru dibaca dari sejarah anda @@ -695,6 +705,7 @@ OK Batal Muatkan lagi + Bacaan tersohor pada %s Huraian rencana Rencana Penerangan rencana (%s) @@ -713,12 +724,14 @@ Terjemah kapsyen imej Batalkan Info: Penerangan rencana - Mengenai Wikidata + Perihal Wikidata Bimbingan Wikidata untuk menulis penerangan https://www.wikidata.org/wiki/Help:Description#Guidelines_for_descriptions_in_English Terima kasih kerana minat anda yang berterusan dalam menyunting huraian rencana! Untuk membuat suntingan tambahan, sila log masuk ke akaun Wikipedia anda. Dengan menukar huraian tajuk, saya menyetujui <a href=\"%1$s\">Syarat-Syarat Penggunaan</a> serta melepaskan kesemua sumbangan saya tanpa tertarik balik dengan lesen <a href=\"%2$s\">Creative Commons CC0</a>. Input suara + Ketahui lebih lanjut tentang huraian artikel + Ketahui lebih lanjut tentang kapsyen imej Teks terlalu pendek. Teks mesti tidak diakhiri dengan tanda baca. Elak mula dengan huruf kecil. @@ -739,6 +752,8 @@ Dengan bermula, saya berjanji tidak akan menyalahgunakan ciri ini. Cadangan dari mesin Cadangan yang dihasilkan oleh mesin, bukan dari sukarelawan mahupun Yayasan Wikimedia + Sesuaikan bar alat + Bar alat Menu Huraikan rencana Kaji penerangan tajuk @@ -904,13 +919,19 @@ Templat Rujukan Pralihat pautan + Tetapan media + Kapsyen + Teks alternatif Kanan Kiri Tengah Tiada + Jenis imej Bingkai Asas Saiz imej + Lebar + Tinggi Bantuan Log masuk / gabung Wikipedia %s, tahukah anda bahawa semua orang boleh menyunting Wikipedia? @@ -932,9 +953,13 @@ Tulis pesanan Pesanan jangan dibiarkan kosong. Subjek jangan dibiarkan kosong. + Cari mesej + Cari topik + Nama topik Langgan Dilanggan Baca + Log masuk untuk berlanggan ke topik Kongsi suntingan Sumbangan %s Sunting sumber diff --git a/app/src/main/res/values-my/strings.xml b/app/src/main/res/values-my/strings.xml index 5fa01a1a081..89c87c7cfb7 100644 --- a/app/src/main/res/values-my/strings.xml +++ b/app/src/main/res/values-my/strings.xml @@ -102,9 +102,9 @@ မြေပုံပေါ်တွင် ကြည့်ရန် အခြား ဘာသာစကားဖြင့်ဖတ်ပါ။ အခြားဘာသာစကား %d ခုဖြင့် ရရှိနိုင်သည် - CC BY-SA 3.0 - သိမ်းဆည်းလိုက် ခြင်းအားဖြင့် သင်သည် <a href=\"%1$s\">သုံးစွဲမှု သဘောတူညီချက်</a>အား သဘောတူပြီးဖြစ်ပြီး သင်၏ မျှဝေမှုအား <a href=\"%2$s\">CC BY-SA 3.0</a> လိုင်စင်ဖြင့် ဖြန့်ချိမည်ဖြစ်ကြောင်း သိရှိပြီးဖြစ်ရမည်။ - သိမ်းဆည်းလိုက် ခြင်းအားဖြင့် သင်သည် <a href=\"%1$s\">သုံးစွဲမှု သဘောတူညီချက်</a>အား သဘောတူပြီးဖြစ်ပြီး သင်၏ မျှဝေမှုအား <a href=\"%2$s\">CC BY-SA 3.0</a> လိုင်စင်ဖြင့် ဖြန့်ချီမည်ဖြစ်ကြောင်း သိရှိပြီးဖြစ်ရမည်။ တည်းဖြတ်မှုများအား သင်၏ အိုင်ပီလိပ်စာဖြင့်သိမ်းထားမည်ဖြစ်သည်။ သင် ဆိုဒ်သို့<a href=\"https://#login\">ဝင်ရောက်ထားပါက</a> လုံခြုံမှုပိုရှိမည်ဖြစ်သည်။ + CC BY-SA 3.0 + သိမ်းဆည်းလိုက် ခြင်းအားဖြင့် သင်သည် <a href=\"%1$s\">သုံးစွဲမှု သဘောတူညီချက်</a>အား သဘောတူပြီးဖြစ်ပြီး သင်၏ မျှဝေမှုအား <a href=\"%2$s\">CC BY-SA 3.0</a> လိုင်စင်ဖြင့် ဖြန့်ချိမည်ဖြစ်ကြောင်း သိရှိပြီးဖြစ်ရမည်။ + သိမ်းဆည်းလိုက် ခြင်းအားဖြင့် သင်သည် <a href=\"%1$s\">သုံးစွဲမှု သဘောတူညီချက်</a>အား သဘောတူပြီးဖြစ်ပြီး သင်၏ မျှဝေမှုအား <a href=\"%2$s\">CC BY-SA 3.0</a> လိုင်စင်ဖြင့် ဖြန့်ချီမည်ဖြစ်ကြောင်း သိရှိပြီးဖြစ်ရမည်။ တည်းဖြတ်မှုများအား သင်၏ အိုင်ပီလိပ်စာဖြင့်သိမ်းထားမည်ဖြစ်သည်။ သင် ဆိုဒ်သို့<a href=\"https://#login\">ဝင်ရောက်ထားပါက</a> လုံခြုံမှုပိုရှိမည်ဖြစ်သည်။ ဝီကီပီးဒီးယား ဘာသာစကားများ ရှာဖွေရန် စာမျက်နှာသည် အခြားဘာသာဖြင့် မရှိသေးပါ။ @@ -228,7 +228,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.m.wikimedia.org/wiki/Terms_of_Use/my https://my.wikipedia.org/wiki/ဝီကီပီးဒီးယား:အကောင့်တစ်ခု_တောင်းဆိုရန် - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/my https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -918,9 +917,9 @@ မီဒီယာ ထည့်သွင်းရန် ဝီကီမီဒီယာကွန်မွန်းစ်မှ ဖိုင်တစ်ခုကိုရွေးချယ်ပါ မီဒီယာ ရှာဖွေရန် - မီဒီယာ အပြင်အဆင်များ + မီဒီယာ အပြင်အဆင်များ အက်ပလုတ်တင်ထားသော ရုပ်ပုံ - ပုံစာ + ပုံစာ ညာ ဘယ် အလယ် diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 1804d70a3a8..431026aa95f 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -1,5 +1,6 @@ - ߥߞߌߔߘߋߞߎ - ߥߞߌ-ߔߘߋߞߎ ߓߋߕߊ߫ - ߥߞߌ-ߔߘߋߞߎ ߊߟߑߝߊ߫ + ߥߞߌߔߔߋߘߌߦߊ + ߥߞߌߔߋߘߌߦߊ߫ ߓߋߕߊ߫ + ߧߞߌߔߋߘߌߦߊ߫ ߊߟߌߝߊ ߥߞߌߡߋߘߌߦߊ߫ ߟߊߞߐߛߊ߬ߦߌ ߟߊߞߐߛߊ߬ߦߌ߬ ߟߊߕߊ߯ߢߍ߫ - ߢߌߣߌ߲ߠߌ߲ ߞߍ߫ ߥߞߌߔߘߋߞߎ ߘߐ߫ + ߢߌߣߌ߲ߠߌ߲ ߞߍ߫ ߥߞߌߔߋߘߌߦߊ ߞߣߐ߫ ߡߍ߲ߞߊ߲ߠߊ߫ ߢߌߣߌ߲ߠߌ߲ ߞߊ߲ ߘߏ߫ ߢߌߣߌ߲߫ ߒ ߠߊ߫ ߛߙߍߘߍ ߟߎ߬ ߛߍ߲ߛߍ߲߫ - ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ + ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߎ߬ ߡߊߞߊ߬ߝߏ߬ ߜߘߍ ߟߎ߬ ߢߌߣߌ߲ߣߌ߲ ߊ߬ ߕߴߛߋ߫ ߜߊ߲߬ߞߎ߲߬ ߠߊ߫ ߓߟߐߟߐ ߟߊ߫ - ߌ ߡߊߝߍߣߍ߲߫ ߞߎߘߊߞߍ߫ + ߌ ߡߊߝߍߣߍ߲߫ ߞߎߘߊ߫ ߘߌ߫ ߊ߬ ߡߊߝߍߣߍ߲߫ ߕߎ߲߯ ߊ߬ ߡߊߝߍߣߍ߲߫ ߕߎ߲߯ ߊ߬ ߡߊߝߍߣߍ߲߫ ߕߎ߲߯ @@ -34,10 +34,10 @@ ߢߍߕߊ ߘߐ߬ߝߐ ߖߏ߬ߛߌ߬ %s ߛߋ߲߬ߓߐ߫ ߘߐ߬ߝߐ ߘߐ߫ - %d ߦߌߟߡߊ ߛߋ߲߬ߓߐ߫ ߘߐ߬ߝߐ ߘߐ߫ + ߞߎߡߘߊ %d ߟߎ߬ ߛߋ߲߬ߓߐ߫ ߘߐ߬ߝߐ ߊ߬ ߘߐߛߊ߬ ߊ߬ ߘߐߛߊ߬ - ߛߎ߲ߝߘߍ ߟߊ߬ߓߍ߲߬ߢߐ߲߰ߡߊ + ߟߥߊ߬ߟߌ߬ߟߊ߲ ߟߊ߬ߓߍ߲߬ߢߐ߲߰ߡߊ ߛߌ߲ߞߐ߲ ߛߐ߲߬ߞߌ߲߬ ߕߎ߲߯ ߞߵߌ ߟߊߞߎ߲߬ߛߌ߲߫ ߢߌߣߌ߲ߠߌ߲ ߘߊߡߌ߬ߣߊ ߛߙߊߕߌ ߡߊ߬ ߘߐ߬ߝߐ ߖߌ߬ߦߊ߬ߓߍ: %s @@ -101,9 +101,9 @@ ߊ߬ ߦߋ߫ ߔߊ߬ߔߘߊ ߞߊ߲߬ ߊ߬ ߞߊ߬ߙߊ߲߬ ߞߊ߲߫ ߜߘߍ߫ ߘߐ߫ ߊ߬ ߦߋ߫ %d ߞߊ߲߫ ߜߘߍ ߟߎ߬ ߘߐ߫ - CC BY-SA 3.0 - ߣߴߌ ߘߴߊ߬ ߟߊߥߊ߲߬ߞߊ߫߸ ߌ ߘߌ߬ߢߍ߬ߣߍ߲߬ ߦߋ߫ <a href=\"%1$s\">Terms of Use</a>, and to irrevocably release your contributions under the <a href=\"%2$s\">CC BY-SA 3.0</a> license ߡߊ߬. - ߣߴߌ ߘߴߊ߬ ߟߊߥߊ߲߬ߞߊ߫߸ ߌ ߘߌ߬ߢߍ߬ߣߍ߲߬ ߦߋ߫ <a href=\"%1$s\">ߟߊ߬ߓߊ߰ߙߊ߬ߟߌ ߛߙߊߕߌ ߡߊ߬</a>߸ ߊ߬ ߣߴߌ ߓߘߴߌ ߟߊ߫ ߓߟߏߡߊߜߍ߲ ߟߊߓߌ߬ߟߊ߬ ߣߡߌߛߊ߫ ߓߊߟߌߦߊ߫ ߓߟߏ ߡߊ߬<a href=\"%2$s/\">CC BY-SA 3.0</a> ߟߊ߫ ߓߌ߬ߟߊ ߣߴߊ߬ ߕߌ߰ߦߊ ߟߊ߫. ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߘߌߣߊ߬ ߟߊߘߏ߲߬ ߌ ߟߊ߫ ߞߍߟߊ߲ IP ߛߊ߲߬ߓߊ߬ߕߐ߮ ߟߊ߫. ߣߴߌ ߞߊ߬ <a href=\"https://#login\">ߜߊ߲߬ߞߎ߲߬ߠߌ߲</a> ߞߍ߫߸ ߌ ߘߌ߫ ߜߎ߲߬ߘߎ߬ ߛߌߦߊߡߊ߲߫ ߛߐ߬ߘߐ߲߬. + CC BY-SA 3.0 + ߣߴߌ ߘߴߊ߬ ߟߊߥߊ߲߬ߞߊ߫߸ ߌ ߘߌ߬ߢߍ߬ߣߍ߲߬ ߦߋ߫ <a href=\"%1$s\">Terms of Use</a>, and to irrevocably release your contributions under the <a href=\"%2$s\">CC BY-SA 3.0</a> license ߡߊ߬. + ߣߴߌ ߘߴߊ߬ ߟߊߥߊ߲߬ߞߊ߫߸ ߌ ߘߌ߬ߢߍ߬ߣߍ߲߬ ߦߋ߫ <a href=\"%1$s\">ߟߊ߬ߓߊ߰ߙߊ߬ߟߌ ߛߙߊߕߌ ߡߊ߬</a>߸ ߊ߬ ߣߴߌ ߓߘߴߌ ߟߊ߫ ߓߟߏߡߊߜߍ߲ ߟߊߓߌ߬ߟߊ߬ ߣߡߌߛߊ߫ ߓߊߟߌߦߊ߫ ߓߟߏ ߡߊ߬<a href=\"%2$s/\">CC BY-SA 3.0</a> ߟߊ߫ ߓߌ߬ߟߊ ߣߴߊ߬ ߕߌ߰ߦߊ ߟߊ߫. ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߘߌߣߊ߬ ߟߊߘߏ߲߬ ߌ ߟߊ߫ ߞߍߟߊ߲ IP ߛߊ߲߬ߓߊ߬ߕߐ߮ ߟߊ߫. ߣߴߌ ߞߊ߬ <a href=\"https://#login\">ߜߊ߲߬ߞߎ߲߬ߠߌ߲</a> ߞߍ߫߸ ߌ ߘߌ߫ ߜߎ߲߬ߘߎ߬ ߛߌߦߊߡߊ߲߫ ߛߐ߬ߘߐ߲߬. ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߎ߬ ߘߌߣߊ߬ ߟߊߘߏ߲߬ ߌ.ߔ ߛߊ߲߬ߓߊ߬ߕߐ߮ ߟߊ߫ ߥߟߊ߫ ߌ ߟߊ߫ ߞߍߟߊ߲. ߣߴߌ ߞߵߌ <a href=\"https://#login\">ߜߊ߲߬ߞߎ߲߫</a>߸ ߌ ߘߌ߫ ߜߎ߲߬ߘߎ߬ߘߐ߬ߞߏ߫ ߜߘߍ߫ ߟߎ߫ ߛߐ߬ߘߐ߲߫. ߥߞߌ-ߔߘߋߞߎ ߞߊ߲ ߠߎ߬ ߢߌߣߌ߲ߠߌ߲ @@ -222,7 +222,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/ߥߞߌߡߋߘߌߦߊ߫_ߟߥߊ߬ߟߌ߬ߟߊ߲/ߊ߲ߘߙߏߦߌߘ_ߢߡߢ https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/ߝߘߏ߬ߓߊ߬ߡߊߘߎ/ߘߐ߬ߞߏߟߏ߲/߁.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -232,7 +231,7 @@ ߘߟߊߡߌߘߊߟߊ߲ ߟߥߊ߬ߟߌ߬ߟߊ߲ ߣߌ߲߬ ߘߟߊߡߌ߬ߘߊ߬ߣߍ߲߫ ߦߋ߫ ߓߐߒߖߘߍߘߐ߫ ߘߟߊߡߌߘߟߊ ߟߎ߬ ߟߋ߬ ߓߟߏ߫ ߦߊ߲߬ <a href=\"https://translatewiki.net\">translatewiki.net</a>. ߕߌ߰ߦߊ - ߘߏߝߙߍߕߍ ߛߎ߲ ߦߋ߫ ߦߊ߲߬ ߠߋ߬ <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> ߊ߬ ߣߌ߫ <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> ߊ߬ ߣߌ߫ <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">Apache 2.0 License</a> ߟߋ߬ ߟߊ߫ ߖߊ߬ߡߊߙߌ ߞߣߐ߫. ߝߏ߫ ߊ߬ ߛߌ߬ߣߦߊ߬ ߛߌߝߊߟߌ߫ ߘߋ߬߸ ߞߣߐߘߐ ߦߋ߫ <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike License</a> ߟߊ߫ ߖߊ߬ߡߊߙߌ ߟߋ߬ ߞߣߐ߫. + ߘߏߝߙߍߕߍ ߛߎ߲ ߦߋ߫ ߦߊ߲߬ ߠߋ߬ <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> ߊ߬ ߣߌ߫ <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> ߊ߬ ߣߌ߫ <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">Apache 2.0 License</a> ߟߋ߬ ߟߊ߫ ߖߊ߬ߡߊߙߌ ߞߣߐ߫. ߝߏ߫ ߊ߬ ߛߌ߬ߣߦߊ߬ ߛߌߝߊߟߌ߫ ߘߋ߬߸ ߞߣߐߘߐ ߦߋ߫ <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike License</a> ߟߊ߫ ߖߊ߬ߡߊߙߌ ߟߋ߬ ߞߣߐ߫. ߥߟߏߒߘߐ ߣߌ߲߬ ߦߋ߫ <a href=\"https://wikimediafoundation.org/\">Wikimedia Foundation</a> ߕߊ ߟߋ߬ ߘߌ߫ ߡߊ߬ߘߎ߮ ߞߐߜߍ ߓߘߊ߫ ߓߊ߲߫ ߡߊߦߟߍ߬ߡߊ߲߬ ߠߊ߫. ߌ ߟߊ߫ ߣߴߊ߬ ߟߊ߫ ߞߴߌ ߦߴߊ߬ ߝߍ߬ ߞߊ߬ ߓߐ߫ ߞߵߊ߬ ߕߘߍ߬ ߌ ߡߴߌ ߟߊ߫ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߊߞߎ߲߬ߘߎ߫؟ @@ -895,6 +894,30 @@ ߘߐ߬ߘߎ߬ߟߌ߫ ߓߍ߲߬ߒ߬ߡߊ߬ߓߊߟߌ ߌ ߡߊ߫ ߘߊߞߎ߲ ߣߌ߲߬ ߢߊߦߋ߫؟ ߢߊߦߌߘߊߟߌ + ߞߎߡߘߊ ߖߌ߬ߦߊ߬ߓߍ ߟߎ߬ + ߊ߬ ߘߐߞߕߌ߫ ߓߊ߫ ߣߌ߫ ߖߌ߬ߦߊ߬ߓߍ߫ ߢߊߦߌ߬ߘߊ߬ߣߍ߲ ߘߌ߫ ߞߎߡߘߊ ߟߊߢߊ߬. + ߡߞߊ߬ߙߊ߲߬ߠߌ߲ + ߐ߲߬ߐ߲߬ߐ߲߫ + ߊ߬ߦߌ߫ + ߒ ߡߊ߫ ߟߴߊ߬ ߟߊ߫ + ߡߎ߲߬ߠߊ߫ ߍ߲߬ߍ߲߫؟ + ߌ ߟߊ߫ ߖߋ߬ߓߌ߬ߟߌ ߦߋ߫ ߞߎ߲߬ߦߌ߬ߘߊ߬ߟߌ ߣߊ߬ߕߐ ߟߊߢߊ߬ ߟߊ߫ ߟߋ߬. + ߖߌ߬ߦߊ߬ߓߍ ߕߍ߫ ߢߊ߬ߕߣߐ߬ߡߊ߬ ߘߌ߫ + ߞߌ߬ߓߊ߬ߙߏ߬ߦߊ߫ ߞߟߊ߬ߟߊ߬ߡߊ߫ ߕߴߦߋ߲߬ ߡߍ߲ ߘߌ߫ ߡߐ߰ ߟߊߝߊ߲ߞߊ߲߫ + ߖߌ߬ߦߊ߬ߓߍ ߦߋ߫ ߡߛߊ߬ߡߊ߲߬ߠߌ߲ ߠߋ߬ ߘߌ߫ + ߖߌ߬ߦߊ߬ߓߍ ߛߎ߯ߦߊ ߡߊߖߌ߰ߣߍ߲߫ ߠߋ߬ + ߒߠߋ ߡߊ߫ ߢߌߣߌ߲ߝߋ߲ ߣߌ߲߬ ߟߐ߲߫ + ߘߏ߫ ߜߘߍ߫ + ߊ߬ ߞߙߊߓߊ߫ + ߖߌ߬ߦߊ߬ߓߍ߬ ߞߐߢߌ߬ߣߊ߬ߣߍ߲ ߠߎ߬ ߝߙߊ߬ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߘߐ߬ߛߎ߬ߟߌ ߟߎ߬ ߟߊ߫. + ߖߌ߬ߦߊ߬ߓߍ ߦߋ߫ ߡߐ߱ ߟߎ߬ ߘߍ߬ߡߍ߲߬ ߠߊ߫ ߘߐ߬ߞߣߍ߬ߟߌ ߟߋ߬ ߟߊ߫، ߞߏ߬ߣߌ߲߬ ߝߋ߲߫ ߕߍ߫ ߞߎߡߘߊ ߝߊ߲߬ߓߊ ߟߎ߬ ߟߊ߫. + ߌ ߘߌ߫ ߛߴߊ߬ ߘߐߞߕߌ߫ ߟߊ߫ ߣߌ߫ ߖߌ߬ߦߊ߬ߓߍ߬ ߘߐߛߎߣߍ߲ ߘߌ߫ ߝߙߊ߬ ߥߞߌߔߋߘߌߦߊ߫ ߞߎߡߘߊ ߟߊ߫. + ߖߌ߬ߦߊ߬ߓߍ ߦߋ߫ ߣߊ߬ ߟߊ߫ ߞߊ߬ ߝߘߊ߫ ߥߞߌߡߋߘߌߦߊ߫ ߞߐߡߐ߲ߛ ߟߋ߬ ߟߊ߫، ߖߌ߬ߦߊ߬ߓߍ߫ ߛߙߊ߬ߓߊߟߌ ߘߌ߬ߢߍ߬ߒ߬ߡߊ߬ߟߌ ߟߎ߬ ߦߋ߫ ߡߊߕߐ߬ߡߐ߲߬ ߠߊ߫ ߞߵߊ߬ߟߎ߫ ߟߊߓߊ߯ߙߊ߫ ߥߞߌߔߋߘߌߦߊ ߓߟߏ߫. + ߞߎߡߘߊ ߣߌ߲߬ ߡߊߛߊ߬ߦߌ߫ ߞߵߊ߬ ߞߣߐߘߐ ߢߌߣߌ߲ߞߏ ߟߎ߬ ߢߊߦߋ߫ + ߢߍߕߊ + ߖߌ߬ߦߊ߬ߓߍ ߓߘߊ߫ ߝߊ߬ߙߊ߫ + ߝߍ߬ߛߓߍߟߌ ߓߘߊ߫ ߝߊ߬ߙߊ߫ + ߦߌ߬ߘߊ߬ߟߌ ߞߐߕߐ߯ ߞߐߜߍ ߖߌ߬ߦߊ߬ߓߍ ߝߍ߬ߛߓߍߟߌ ߝߊ߬ߙߊ߫ ߖߌ߬ߦߊ߬ߓߍ ߘߎ߲ߛߓߍ ߟߎ߬ ߝߙߊ߬ @@ -984,10 +1007,10 @@ ߞߟߋߞߟߋ ߟߊߘߏ߲߬ ߞߐߕߐ߮ ߘߏ߫ ߓߊߕߐ߬ߡߐ߲߬ ߞߊ߬ ߝߘߊ߫ ߥߞߌߡߋߘߌߦߊ߫ ߞߐߡߐ߲ߛ ߟߊ߫ ߞߟߋߞߟߋ ߢߌߣߌ߲߫ - ߞߟߋߞߟߋ ߟߊ߬ߓߍ߲߬ߢߐ߲߰ߡߦߊ߬ߘߊ ߟߎ߬ + ߖߌ߬ߦߊ߬ߓߍ ߝߊߙߊ߲ߝߊ߯ߛߌ ߟߎ߬ ߝߊ߬ߙߊ߯ ߖߌ߬ߦߊ߬ߓߍ߫ ߟߊߦߟߍ߬ߣߍ߲ - ߝߍ߬ߛߓߍߟߌ - ߛߓߍߘߋ߲߫ ߠߊ߫ ߞߊ߲߬ߛߓߍߟߌ ߘߐ߬ߞߊ߬ߙߊ߲߬ߠߌ߲߬ߠߊ߫ ߟߎ߫ ߦߋ߫ ߡߍ߲ ߠߎ߬ ߕߍߣߊ߬ ߖߌ߬ߦߊ߬ߓߍ ߦߋ߫ ߟߊ߫ + ߖߌ߬ߦߊ߬ߓߍ ߝߍ߬ߛߓߍߟߌ + ߛߓߍߘߋ߲߫ ߠߊ߫ ߞߊ߲߬ߛߓߍߟߌ ߘߐ߬ߞߊ߬ߙߊ߲߬ߠߌ߲߬ߠߊ߫ ߟߎ߫ ߦߋ߫ ߡߍ߲ ߠߎ߬ ߕߍߣߊ߬ ߖߌ߬ߦߊ߬ߓߍ ߦߋ߫ ߟߊ߫ ߟߊ߬ߓߍ߲߬ߢߐ߲߰ߡߦߊ߬ߘߊ ߖߊ߲߬ߝߊ߬ߣߍ߲ ߠߎ߬ ߛߓߍߟߌ ߟߎ߫ ߓߌ߬ߟߊ߬ ߖߌ߬ߦߊ߬ߓߍ ߟߊߡߌߣߌ߲ ߘߐ߫ ߖߌ߬ߦߊ߬ߓߍ ߘߌ߲߬ߞߌߙߊ @@ -1167,6 +1190,7 @@ ߞߐߜߍ ߛߌ߲ߘߟߌ ߦߌߟߡߊ߫ ߡߊߦߟߍߡߊ߲ ߥߞߌߘߕߊ ߡߊ߬ߦߟߍ߬ߡߊ߲߬ߠߌ߲ ߠߎ߬ + ߜߊ߲߬ߞߎ߲߬ߠߌ߲ ߞߍߟߌ ߟߊ߬ߓߊ߰ߙߊ߬ߟߊ߫ ߞߎߘߊ ߟߎ߬ ߊ߬ ߡߊߛߊ߬ߦߌ߬ ߢߌߣߌ߲ߠߌ߲ ߥߟߊ߫ ߜߋ߬ߟߎ߲߬ߠߌ߲߫ ߛߙߍߘߍ ߛߍ߲ߛߍ߲߫ @@ -1210,4 +1234,6 @@ \"ߘߐ߬ߞߊ߬ߙߊ߲߬ߠߌ߲߫ ߛߙߍߘߍ߫ ߟߊ߬ߖߍ߲ߛߍ߲\" ߦߋ߫ ߗߋߘߊ߫ ߡߊߝߍߣߍ߲ߕߊ ߟߋ߬ ߘߌ߫߸ ߊ߲ ߡߊߞߏ ߦߴߌ ߟߊ߫ ߞߊ߲߬ߞߎߡߊ ߟߴߏ߬ ߟߋ ߘߐ߫ ߜߘߋߜߘߋ߫߸ ߊ߬ ߟߊߢߊ߬ߟߌ ߘߐ߫ ߥߟߴߊ߬ ߘߐߛߊ߬ߟߌ ߘߐ߫. ߊ߬ ߟߊߡߌ߬ߣߊ߫ ߊ߬ ߟߊߕߊ߲߬ߞߌ߫ + ߞߐߜߍ ߝߙߋߞߋ ߟߎ߬ + ߝߎ߬ߕߎ߲߬ߕߌ߬ ߓߘߎߓߘߎ ߟߎ߬ ߘߐߓߍ߲߭ ߣߌ߫ ߡߞߊ߬ߝߏ߬ߟߌ ߟߎ߫ diff --git a/app/src/main/res/values-oc/strings.xml b/app/src/main/res/values-oc/strings.xml index 1da7e657e46..fd22eb044d7 100644 --- a/app/src/main/res/values-oc/strings.xml +++ b/app/src/main/res/values-oc/strings.xml @@ -79,9 +79,9 @@ Afichar sus una carta Legir dins una autra lenga Disponible dins %d autrei lengas - CC BY-SA 3.0 - En enregistrant, acceptatz las <a href=\"%1$s\">Condicions d’utilizacion</a>, e plaçatz de faiçon irrevocabla vòstras contribucions jos la licéncia <a href=\"%2$s\">CC BY-SA 3.0</a>. - En enregistrant, acceptatz las <a href=\"%1$s\">Condicions d’utilizacion</a>, e plaçatz de faiçon irrevocabla vòstras contribucions jos la licéncia <a href=\"%2$s/\">CC BY-SA 3.0</a>. Las modificacions seràn atribuidas a l’adreça IP de vòstre equipament. Se <a href=\"https://#login\">vos connectatz</a>, auretz mai de confidencialitat. + CC BY-SA 3.0 + En enregistrant, acceptatz las <a href=\"%1$s\">Condicions d’utilizacion</a>, e plaçatz de faiçon irrevocabla vòstras contribucions jos la licéncia <a href=\"%2$s\">CC BY-SA 3.0</a>. + En enregistrant, acceptatz las <a href=\"%1$s\">Condicions d’utilizacion</a>, e plaçatz de faiçon irrevocabla vòstras contribucions jos la licéncia <a href=\"%2$s/\">CC BY-SA 3.0</a>. Las modificacions seràn atribuidas a l’adreça IP de vòstre equipament. Se <a href=\"https://#login\">vos connectatz</a>, auretz mai de confidencialitat. Lengas de Wikipèdia Recercar Aquesta pagina es pas disponibla dins d’autras lengas @@ -165,7 +165,6 @@ A prepaus de l’aplicacion Wikipèdia Politica de confidencialitat Condicions d\'utilizacion - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ Bibliotècas utilizadas Contributors diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index 21c616b3d5b..c644c1575a5 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -3,6 +3,7 @@ * Babanwalia * Bgo eiu * Jimidar +* Kuldeepburjbhalaike * MuratTheTurkish * Satdeep gill * Satnam S Virdi @@ -68,7 +69,7 @@ ਨਕਸ਼ੇ ਤੇ ਵੇਖੋ ਹੋਰ ਭਾਸ਼ਾ ਵਿੱਚ ਪੜ੍ਹੋ %d ਹੋਰਾਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਉਪਲਬਧ ਹੈ - CC BY-SA 3.0 + CC BY-SA 3.0 ਇਹਨੂੰ ਸਾਂਭ ਕੇ ਤੁਸੀਂ <a href=\"%1$s\">ਵਰਤੋਂ ਦੀਆਂ ਸ਼ਰਤਾਂ</a> ਨੂੰ ਅਤੇ <a href=\"%2$s\">CC BY-SA 3.0</a> ਲਸੰਸ ਹੇਠ ਆਪਣੇ ਯੋਗਦਾਨਾਂ ਨੂੰ ਸਦਾ ਵਾਸਤੇ ਦੇਣ ਨੂੰ ਮੰਨਦੇ ਹੋ। ਇਹਨੂੰ ਸਾਂਭ ਕੇ ਤੁਸੀਂ <a href=\"%1$s\">ਵਰਤੋਂ ਦੀਆਂ ਸ਼ਰਤਾਂ</a> ਨੂੰ ਅਤੇ <a href=\"%2$s\">CC BY-SA 3.0</a> ਲਸੰਸ ਹੇਠ ਆਪਣੇ ਯੋਗਦਾਨਾਂ ਨੂੰ ਸਦਾ ਵਾਸਤੇ ਦੇਣ ਨੂੰ ਮੰਨਦੇ ਹੋ। ਸੋਧਾਂ ਦਾ ਨਾਂ ਤੁਹਾਡੇ ਜੰਤਰ ਦੇ ਆਈ.ਪੀ ਪਤੇ \'ਤੇ ਲਾਇਆ ਜਾ ਜਾਵੇਗਾ। ਜੇਕਰ ਤੁਸੀਂ <a href=\"https://#login\">ਦਾਖ਼ਲ ਹੁੰਦੇ</a> ਹੋ ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ਼ ਵਧੇਰੇ ਪਰਦੇਦਾਰੀ ਹੋਵੇਗੀ। ਵਿਕੀਪੀਡੀਆ ਭਾਸ਼ਾ @@ -166,7 +167,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.m.wikimedia.org/wiki/Terms_of_Use https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -318,6 +318,16 @@ ਵਿਕੀਡਾਟਾ ਬਾਰੇ ਮੁਕੰਮਲ ਕੀ ਤੁਸੀੰ ਜਾਣਦੇ ਹੋ? + ਲੇਖ ਚਿੱਤਰ + ਸਮਝ ਨੂੰ ਵਧਾਉਣ ਲਈ ਵਿਕੀਪੀਡੀਆ ਲੇਖਾਂ ਵਿੱਚ ਸੁਝਾਏ ਚਿੱਤਰ ਸ਼ਾਮਲ ਕਰੋ। + ਹਾਂ + ਕਿਉਂ ਨਹੀਂ? + ਤੁਹਾਡੇ ਜਵਾਬ ਭਵਿੱਖ ਦੇ ਸੁਝਾਵਾਂ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦੇ ਹਨ। + ਚਿੱਤਰ ਘੱਟ ਗੁਣਵੱਤਾ ਵਾਲਾ ਹੈ + ਮੈ ਇਹ ਵਿਸ਼ਾ ਨਹੀਂ ਜਾਣਦਾ + ਤੁਸੀਂ ਫੈਸਲਾ ਕਰੋਗੇ ਕਿ ਸੁਝਾਏ ਚਿੱਤਰ ਨੂੰ ਵਿਕੀਪੀਡੀਆ ਲੇਖ ਵਿੱਚ ਰੱਖਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। + ਸੁਝਾਅ ਮਸ਼ੀਨ ਦੁਆਰਾ ਤਿਆਰ ਕੀਤੇ ਗਏ ਹਨ ਅਤੇ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨ ਜਾਂ ਅਸਵੀਕਾਰ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕਰਨ ਲਈ ਆਪਣੇ ਨਿਰਣੇ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ। + ਇਸ ਦੇ ਵਿਸ਼ੇ ਨੂੰ ਸਮਝਣ ਲਈ ਇਸ ਲੇਖ ਦੀ ਸਮੀਖਿਆ ਕਰੋ ਛੱਡੋ ਜਾਰੀ ਰੱਖੋ ਸ਼ੁਰੂ ਕਰੋ @@ -326,5 +336,8 @@ ਖੋਜ ਅੱਜ ਦੇ ਦਿਨ ਇਸ ਸਾਲ + ਚਿੱਤਰ ਵੇਰਵੇ ਸ਼ਾਮਲ ਕਰੋ + ਨੇਤਰਹੀਣ ਪਾਠਕਾਂ ਲਈ ਵਰਣਨ ਸ਼੍ਰੇਣੀਆਂ + ਸਫ਼ੇ ਸੰਬੰਧੀ ਮੁੱਦੇ diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 0469f9ea985..2e2285913fa 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -3,8 +3,10 @@ * AOla333 * Alan ffm * Alchemik +* Amire80 * Chrumps * CiaPan +* Czupirek * Darellur * Dbrant * DeRudySoulStorm @@ -31,6 +33,7 @@ * Stojex * Strebski * Szymonel +* Tacsipacsi * Tar Lócesilion * The Polish * Thoji @@ -57,7 +60,7 @@ Edycje Więcej Szukaj - Nie można połączyć z internetem. + Nie można połączyć z Internetem. Ponów próbę Ponów próbę Ponów próbę @@ -72,9 +75,9 @@ Cofnij Cofnij Ustawienia aplikacji - Stuknij ikonę ponownie, aby bezpośrednio rozpocząć wyszukiwanie frazy. + Stuknij ikonę ponownie, aby bezpośrednio wpisać wyszukiwany tekst. Historia - Grafika %s + Grafika: %s Strona: %s Wikimedia Commons Wikidane @@ -89,7 +92,7 @@ <b>m</b> %s Puste podsumowanie edycji Wyszukaj lub filtruj zmiany - Filtruj według + Filtruj po Wszystkie zmiany (%s) Edycje użytkownika (%s) Edycje anonimowe (%s) @@ -97,7 +100,7 @@ Dane od %1$s do %2$s Spróbuj zmienić <a href=\"#\">filtry</a>, aby zobaczyć więcej zmian Pokaż karty - Czytaj w innych językach + Zmień język Znajdź w artykule Dodaj do listy obserwowanych Obserwuj @@ -114,17 +117,17 @@ Zapisz Dodaj do listy czytanych Zapisz - Udostępnij łącze + Udostępnij link Udostępnij artykuł Udostępnij Otwórz nową kartę Nowa karta - Listy do przeczytania - Niedawno odwiedzone + Listy czytelnicze + Ostatnio oglądane Archiwum Otwórz Otwórz w nowej karcie - Kopiuj adres łącza + Kopiuj adres linka Definicja Udostępnij Udostępnij @@ -136,13 +139,13 @@ Zobacz na mapie Przeczytaj w innym języku Dostępne w %d innych językach - CC BY-SA 3.0 - Publikując, akceptujesz <a href=\"%1$s\">Warunki korzystania</a> i wyrażasz zgodę na udostępnianie Twojego wkładu na licencjach <a href=\"%2$s\">CC BY-SA 3.0</a>. - Publikując, akceptujesz <a href=\"%1$s\">Warunki korzystania</a> i wyrażasz nieodwołalną zgodę na udostępnianie Twojego wkładu na licencjach <a href=\"%2$s/\">CC BY-SA 3.0</a>. Zmiany zostaną przypisane do adresu IP Twojego urządzenia. Po <a href=\"https://#login\">zalogowaniu</a>, będziesz mógł skorzystać z wyższego poziomu prywatności. + CC BY-SA 4.0 + Publikując, akceptujesz <a href=\"%1$s\">Warunki korzystania</a> i wyrażasz nieodwołalną zgodę na udostępnianie Twojego wkładu na licencji <a href=\"%2$s\">CC BY-SA 4.0</a>. + Publikując, akceptujesz <a href=\"%1$s\">Warunki korzystania</a> i wyrażasz nieodwołalną zgodę na udostępnianie Twojego wkładu na licencji <a href=\"%2$s/\">CC BY-SA 4.0</a>. Zmiany zostaną przypisane do adresu IP Twojego urządzenia. Dzięki <a href=\"https://#login\">zalogowaniu się</a> uzyskasz większą prywatność. Zmiany zostaną przypisane do adresu IP Twojego urządzenia. Jeśli <a href=\"https://#login\">zalogujesz się</a>, będziesz mieć większą prywatność. Języki Wikipedii Szukaj - Ten artykuł nie jest dostępny w innych językach + Ten artykuł nie jest dostępny w innych językach. Nie znaleziono języków Inne języki Twoje języki Wikipedii @@ -178,7 +181,7 @@ Zaloguj się Logowanie… Zalogowano! - Wpisz swoje hasło + Ustaw swoje hasło Zalogowano się z użyciem hasła tymczasowego. Aby dokończyć logowanie, ustaw nowe hasło. Nowe hasło Zapisz i zaloguj się @@ -192,7 +195,7 @@ Anuluj Brak ostatnio oglądanych artykułów Śledź tutaj, co było czytane. - Bez dostępu do sieci (offline) niektóre artykuły w historii mogą być niewidoczne. + W trybie offline (bez dostępu do sieci) niektóre artykuły w historii mogą być niewidoczne. Przeszukuj i czytaj darmową encyklopedię w swoim języku Przeszukuj Wikipedię w większej ilości języków Usuń wybrane elementy @@ -214,13 +217,13 @@ Nie można utworzyć konta Dalej Założyć konto bez adresu e-mail? - Chociaż adres e-mail jest opcjonalny, jest <b>wysoce zalecany</b>, ponieważ jest on niezbędny do odzyskania konta, w przypadku utraty hasła. + Chociaż adres e-mail jest opcjonalny, jest <b>wysoce zalecany</b>, ponieważ jest on niezbędny do odzyskania konta w przypadku utraty hasła. Zalecane, ponieważ e-mail jest potrzebny do odzyskiwania konta. - Kontynuuj bez adresu email + Kontynuuj bez adresu e-mail Dodaj adres e‐mail Utwórz konto Nazwa użytkownika \"%s\" nie jest dostępna. Proszę wybrać inną nazwę. - Niestety, Twój adres IP jest obecnie zablokowany dla tworzenia nowych kont. + Niestety tworzenie kont z Twojego adresu IP jest w tej chwili zablokowane. https://en.wikipedia.org/wiki/Help:I_have_been_blocked Szczegóły Ogólne @@ -232,7 +235,7 @@ Użycie danych Eksperymentalne Synchronizacja listy czytanych - Pobierz artykuły listy czytanych + Pobierz artykuły z listy czytanych Synchronizuj listy czytanych na różnych urządzeniach, zapisując je na swoim koncie w Wikipedii Synchronizuj listy czytanych na różnych urządzeniach, zapisując je na swoim koncie \"%s\" w Wikipedii Usunąć zsynchronizowane listy czytanych z \"%s\"? @@ -248,7 +251,7 @@ Ta strona jest częściowo zabezpieczona. Ta strona jest całkowicie zabezpieczona. Ta strona została zabezpieczona do następujących poziomów: %s - Twoje konto nie ma w tej chwili wystarczających uprawnień do edycji tej strony. + Przepraszamy, twoje konto nie ma w tej chwili wystarczających uprawnień do edycji tej strony. Niestety, tej strony nie można obecnie edytować anonimowo. Ta strona jest zabezpieczona Dodaj do listy obserwowanych @@ -261,10 +264,10 @@ https://pl.wikipedia.org/wiki/Wikipedia:O_Wikipedii https://meta.wikimedia.org/wiki/Privacy_policy/pl https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data - https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/pl + https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.m.wikimedia.org/wiki/Terms_of_Use/pl https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.pl + https://creativecommons.org/licenses/by-sa/4.0/deed.pl https://creativecommons.org/publicdomain/zero/1.0/deed.pl https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/pl https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -274,7 +277,7 @@ Tłumacze Ta aplikacja została przetłumaczona przez tłumaczy wolontariuszy korzystających z <a href=\"https://translatewiki.net\">translatewiki.net</a>. Licencja - Kod źródłowy jest dostępny na <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> oraz <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> na licencji <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0</a>. Dopóki inaczej nie określono, zawartość jest dostępna na licencji <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike</a>. + Kod źródłowy jest dostępny na <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> oraz <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHubie</a> na licencji <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0</a>. O ile nie określono inaczej, zawartość jest dostępna na licencji <a href=\"https://creativecommons.org/licenses/by-sa/4.0\">Creative Commons Attribution-ShareAlike</a>. Produkt <a href=\"https://wikimediafoundation.org/\">Wikimedia Foundation</a> O aplikacji Strona została zmodyfikowana. Czy na pewno chcesz zakończyć pracę bez zapisywania zmian? @@ -282,7 +285,7 @@ Nie Zablokowany/-a Edytowanie wiki z tego konta użytkownika zostało zablokowane. - Edycja z tego adresu IP została zablokowana + Edycja z tego adresu IP została zablokowana. Jak poprawiłeś/aś stronę? Następne Opublikuj @@ -298,9 +301,9 @@ Inne Co poprawiłaś/eś na tej stronie Konflikt edycji - Strona już została zmodyfikowana przez innego użytkownika i koliduje to z twoją edycją. Skopiuj swoje edycje, wróć i odśwież stronę, następnie spróbuj zaedytować ją ponownie. + Strona została już zmodyfikowana przez innego użytkownika i koliduje to z twoją edycją. Skopiuj swoje edycje, wróć i odśwież stronę, następnie spróbuj przeedytować ją ponownie. Powiadomienia o edycji - Proszę przeczytać przed edycją + Przeczytaj proszę przed edycją Automatycznie pokazuj powiadomienia o edycji Dotknij tego przycisku, aby wyświetlić powiadomienia o edycji tego artykułu. Znajdź następny @@ -310,7 +313,7 @@ Artykuł został otwarty w tle w karcie. To chyba nie jest konstruktywna edycja. Czy na pewno chcesz ją opublikować? Nie możesz opublikować tej edycji. Wróć do niej i popraw ją. - Automatyczny filtr uważa tę edycję za potencjalnie niekonstruktywną. Może zawierać jeden lub więcej z następujących błedów:<br /><br />· Tekst wyłącznie dużymi literami<br />· Kasowanie zawartości artykułu lub spam<br />· Niezwiązane z artykułem linki zewnetrzne lub zdjęcia<br />· Powtarzające się znaki + Automatyczny filtr uważa tę edycję za potencjalnie niekonstruktywną. Może ona zawierać jeden lub więcej z następujących błędów:<br /><br />· Tekst wyłącznie dużymi literami<br />· Kasowanie zawartości artykułu lub spam<br />· Niezwiązane z artykułem linki zewnętrzne lub zdjęcia<br />· Powtarzające się znaki Automatyczny filtr uważa tę edycję za potencjalnie niekonstruktywną lub wandalizm.<br /><br />Wikipedia to encyklopedia i mogą w niej się znaleźć wyłącznie neutralne encyklopedyczne treści. Podobne strony Czy chodziło Ci o \"%s\"? @@ -329,28 +332,28 @@ Wyszukaj w Wikipedii Nie znaleziono definicji. Dostępna jest nowa aktualizacja alfa - Kliknij, aby pobrać. + Kliknij, aby pobrać Zamknij Pokaż obrazki - Włącz lub wyłącz pobieranie obrazków na stronach. Odznacz to pole wyboru, jeśli masz wolne połączenie internetowe lub ograniczony limit transferu danych. + Włącz lub wyłącz pobieranie obrazków na stronach. Odznacz to pole wyboru, jeśli masz wolne połączenie internetowe lub ograniczony limit transferu danych. Pobieraj tylko przez Wi-Fi - Potwierdź pobieranie za pomocą komórkowej transmisji danych? - Masz włączoną opcję „Pobieraj tylko przez Wi-Fi” w Ustawieniach. Czy chcesz zezwolić na użycie komórkowej transmisji danych tylko do tego pobierania? + Czy potwierdzasz pobieranie za pomocą komórkowej transmisji danych? + W Ustawieniach masz włączoną opcję „Pobieraj tylko przez Wi-Fi”. Czy chcesz zezwolić na użycie komórkowej transmisji danych tylko do tego pobierania? Zezwól Czytaj więcej O tym artykule - Przejdź do strony pliku + Przejdź do strony grafiki Nie udało się wyświetlić obrazu. Licencja dla %s Udostępnij Nie można udostępnić obrazu: %s Pobieranie pliku… Plik zapisany. - Nie można odtworzyć filmu wideo. - Do zapisu obrazów w pamięci twojego urządzenia wymagane są uprawnień do zapisu obrazów. - Edytuj podpis obrazu - Dodaj podpis obrazu - Dodaj podpis obrazu (%s) + Nie można odtworzyć filmu. + Do zapisu obrazów w pamięci twojego urządzenia wymagane są uprawnienia do zapisu obrazów. + Edytuj podpis grafiki + Dodaj podpis grafiki + Dodaj podpis grafiki (%s) Nie można zapisać pliku Kliknij, aby rozwinąć Licencja Creative Commons @@ -401,14 +404,14 @@ Włącz Włącz uprawnienia do lokalizacji, aby zobaczyć miejsca w pobliżu. Włącz - Usługa Android System WebView jest obecnie aktualizowana. Spórbuj ponownie za chwilę. + Usługa Android System WebView jest obecnie aktualizowana. Spróbuj ponownie za chwilę. Wybrano %d Wystąpił błąd - Odrzuć + Zamknij Ta strona nie istnieje Wikipedia nie ma <a href=\"%1$s\">strony użytkownika</a> o dokładnie takiej nazwie. Ogólnie rzecz biorąc, tę stronę powinien utworzyć i edytować <b>%2$s</b>. W razie wątpliwości sprawdź, czy istnieje „%3$s”. - Nie można nawiązać połączenia z Internetem - Nie można połączyć się z Wikipedią. Sprawdź swoje połączenie lub spróbuj ponownie później + Nie można nawiązać połączenia z internetem + Nie można połączyć się z Wikipedią. Sprawdź swoje połączenie sieciowe lub spróbuj ponownie później Przypis %s Przypisy Przyciemnianie obrazu (w ciemnym motywie) @@ -422,7 +425,7 @@ Blokada została dokonana przez <a href=\"%2$s\">%1$s</a> Podany powód to: %s Początek blokady: %s - Wygasająca blokada: %s + Wygaśnięcie blokady: %s Identyfikator blokady: %s Możesz skontaktować się z <a href=\"%2$s\">%1$s</a> lub innym <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Administrators\">administratorem</a>, aby omówić blokadę. Dostosuj swój pasek narzędzi @@ -430,13 +433,13 @@ Błąd aplikacji Niestety, w aplikacji Wikipedii wystąpił błąd, w wyniku czego została ona zamknięta.\n\nChcesz ponownie ją uruchomić czy zamknąć? Zacznij od początku - Wyjście + Wyjdź Zapisz Język Szukaj - Motyw + Skórka Spis treści - Edytuj... + Edytuj… Edytuj opis artykułu Edytuj wprowadzenie Skórka @@ -446,7 +449,7 @@ Sepia Przykładowy tekst Przeciągnij suwak, aby zmienić rozmiar tekstu używanego do czytania artykułów. Aby ustawić rozmiar tekstu w pozostałej części aplikacji, zmień rozmiar tekstu systemowego. - Motyw aplikacji + Skórka aplikacji Przejdź do korzystania z motywu ciemnego aplikacji Zwiększ rozmiar tekstu Zmniejsz rozmiar tekstu @@ -556,12 +559,16 @@ Sortuj według Odśwież synchronizację Zaloguj się / zarejestruj - + Ten artykuł będzie teraz dostępny w trybie offline. + Te artykuły będą teraz dostępne w trybie offline. + Te artykuły będą teraz dostępne w trybie offline. Te artykuły będą teraz dostępne w trybie offline. - + Ten artykuł nie będzie już dostępny w trybie offline. + Te artykuły nie będą już dostępne w trybie offline. + Te artykuły nie będą już dostępne w trybie offline. Te artykuły nie będą już dostępne w trybie offline. Listy czytanych zsynchronizowane @@ -587,28 +594,40 @@ Synchronizacja list do przeczytania Synchronizowanie List Masz %d nieprzeczytanych powiadomień - + Pobieranie artykułu + Pobieranie artykułów + Pobieranie artykułów Pobieranie artykułów - + Pobieranie %1$d artykułu... + Pobieranie %1$d artykułów... + Pobieranie %1$d artykułów... Pobieranie %1$d artykułów... - + pozostał %1$d artykuł + pozostały %1$d artykuły + pozostało %1$d artykułów pozostało %1$d artykułów - + Synchronizowanie listy + Synchronizowanie list + Synchronizowanie list Synchronizowanie list - + Synchronizuję %1$d listę… - Synchronizuję listy (%1$d)… + Synchronizuję %1$d listy + Synchronizuję %1$d list + Synchronizuję %1$d list - + pozostała %1$d lista + pozostały %1$d listy + pozostało %1$d list pozostało %1$d list Powiadomienia z Wikipedii @@ -619,9 +638,11 @@ Zobacz zarchiwizowane Preferencje powiadomień Oznacz jako przeczytane i zarchiwizuj - + Powiadomienie zarchiwizowane - Powiadomienia zarchiwizowane (%d) + %d powiadomienia zarchiwizowane + %d powiadomień zarchiwizowanych + %d powiadomień zarchiwizowanych Włącz powiadomienia Włącz @@ -719,8 +740,10 @@ Strona główna Ikona karty W aktualnościach - + wczoraj + %d dni temu + %d dni temu %d dni temu dzisiaj @@ -779,7 +802,7 @@ Zmieniając opis artykułu, wyrażam zgodę na <a href=\"%1$s\"> Warunki korzystania </a> i nieodwołalnie udostępniam moje artykuły na podstawie licencji <a href=\"%2$s\"> Creative Commons CC0 </a>. zwykle zaczynają się od małej litery Wprowadzanie głosowe - https\n://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Article_descriptions + https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/pl#Article_descriptions https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_captions Tekst jest zbyt krótki. Tekst nie może kończyć się znakiem interpunkcyjnym. @@ -787,7 +810,7 @@ Zaczynaj tekst używając małej litery, chyba że pierwszy wyraz to nazwa własna. Unikaj zaczynania od małej litery. Tekst wydaje się być w nieoczekiwanym języku. Językiem powinien być %s. - Sprawdź, czy Twój opis jest w języku %1$s. Możesz odrzucić to powiadomienie, jeśli napisany przez Ciebie opis jest po %2$s. + Sprawdź, czy Twój opis jest w języku %1$s. Możesz zignorować to ostrzeżenie, jeśli napisany przez Ciebie opis jest po %2$s. Opis artykułu opublikowany! Opis artykułu opublikowany! Opis artykułu opublikowany! (%s) @@ -950,7 +973,12 @@ Twoja zmiana jest obecnie opublikowana w Wikipedii Więcej sugerowanych zmian Raport - Dodałeś/aś %d znaków + + Dodałeś/aś %d znak + Dodałeś/aś %d znaki + Dodałeś/aś %d znaków + Dodałeś/aś %d znaków + Strona pliku Dodaj podpis obrazu Dodaj tagi obrazu @@ -990,8 +1018,10 @@ Następny miesiąc Poprzedni miesiąc Wybierz datę - + w zeszłym roku + %d lata temu + %d lat temu %d lat temu Udało ci się dostać do innej epoki 🚀 @@ -1004,8 +1034,10 @@ Dodaj język Usuń język Usuń język - + Usunąć wybrany język? + Usunąć wybrane języki? + Usunąć wybrane języki? Usunąć wybrane języki? Zobaczysz tylko zawartość w kanale Eksploruj i filtry szybkiego wyszukiwania dla pozostałych języków Wikipedii. @@ -1046,7 +1078,7 @@ Przypis Zobacz link Wstaw media - Ustawienia multimediów + Dodaj szczegóły obrazu Przesłany obraz Tekst alternatywny Ustawienia zaawansowane diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 6044bafef8e..21b8b824be1 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -3,6 +3,7 @@ * !Silent * AVrana * Alvarenga +* Amire80 * Anaclaudiaml * BarbaraAckles * Cainamarques @@ -28,6 +29,7 @@ * Lowvy * Luk3 * Macofe +* McDutchie * Mello25 * Mordecool * MuratTheTurkish @@ -35,6 +37,7 @@ * Ppena * Re demz * Rodrigo codignoli +* Saturnow * Teles * TheEduGobi * Trooper57 @@ -147,7 +150,7 @@ Disponível em %d outros idiomas CC BY-SA 3.0 Ao publicar, você estará concordando com os <a href=\"%1$s\">termos de uso</a> e em publicar irrevogavelmente sua contribuição sob a licença <a href=\"%2$s\">CC BY-SA 3.0</a>. - Ao publicar, você estará concordando com os <a href=\"%1$s\">termos de uso</a> e em publicar irrevogavelmente sua contribuição sob a licença <a href=\"%2$s\">CC BY-SA 3.0</a>. As edições serão atribuídas ao endereço de IP do seu dispositivo. Para ter mais privacidade, <a href=\"https://#login\">autentique-se</a>. + Ao publicar, você estará concordando com os <a href=\"%1$s\">termos de uso</a> e em publicar irrevogavelmente sua contribuição sob a licença <a href=\"%2$s\">CC BY-SA 3.0</a>. As edições serão atribuídas ao endereço de IP do seu dispositivo. Para ter mais privacidade, <a href=\"https://#login\">autentique-se</a>. As edições serão atribuídas ao endereço IP do seu dispositivo. Se você <a href=\"https://#login\">se conectar</a>, terá mais privacidade. Idiomas da Wikipédia Pesquisar @@ -273,7 +276,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/pt-br https://foundation.wikimedia.org/wiki/Terms_of_Use/pt-br https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.pt + https://creativecommons.org/licenses/by-sa/4.0/deed.pt_BR https://creativecommons.org/publicdomain/zero/1.0/deed.pt https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/pt-br https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/pt-br @@ -283,7 +286,7 @@ Tradutores Este aplicativo foi traduzido pelos tradutores voluntários na <a href=\"https://translatewiki.net\">translatewiki.net</a>. Licença - Código-fonte disponível em <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> e <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> sob a <a href=\"ttps://www.apache.org/licenses/LICENSE-2.0\">Licença Apache 2.0</a>. A menos que especificado, o conteúdo é disponibilizado sob a <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Licença Creative Commons Attribution-ShareAlike</a>. + Código-fonte disponível em <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> e <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> sob a <a href=\"ttps://www.apache.org/licenses/LICENSE-2.0\">Licença Apache 2.0</a>. A menos que especificado, o conteúdo é disponibilizado sob a <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Licença Creative Commons Attribution-ShareAlike</a>. Um produto da <a href=\"https://wikimediafoundation.org/\">Wikimedia Foundation</a> Sobre A página foi modificada. Tem certeza que pretende sair sem salvar as suas alterações? @@ -984,6 +987,7 @@ Você não selecionou nenhuma marcação para esta imagem Somente as marcações que você escolher serão adicionadas às imagens. Tags que não estão selecionadas serão marcadas como rejeitadas. Tem certeza de que deseja marcar todas as tags como rejeitadas? Adicionar marcação + \nAs tags não publicadas não serão salvas Aperte para ampliar esta imagem. %s, obrigado por suas edições. Abaixo, você encontra mais maneiras de contribuir com a Wikipédia. </b>Olá %s</b>, abaixo, você pode encontrar maneiras rápidas e fáceis de ajudar a melhorar a Wikipédia. Você verá a diferença que está fazendo assim que começa. Edição feliz! @@ -999,7 +1003,7 @@ Desculpe, %s, você deve fazer pelo menos três edições diretamente em um artigo para usar este recurso. Dicas e truques de edição Página de ajuda das edições sugeridas - Editar sequência + Edições consecutivas Visualizações Qualidade das edições Perfeito @@ -1080,6 +1084,21 @@ Você adicionou %d caractere Você adicionou %d caracteres + Imagem do artigo: + Decida se uma imagem sugerida irá melhorar um artigo. + Tutorial + Sim + Não + Não tenho certeza + Por que não? + A imagem não é relevante + Não há informações suficientes para decidir + A imagem é ofensiva + A imagem é de baixa qualidade + Eu não sei esse assunto + Outro + Enviar + As imagens vêm do Wikimedia Commons, uma coleção de imagens licenciadas livremente usadas pela Wikiédia. Página do arquivo Adicionar legenda à imagem Adicionar marcações de imagem @@ -1178,12 +1197,12 @@ Inserir mídia Selecionar um arquivo do Wikimedia Commons Pesquisar mídia - Configurações de mídia + Configurações de mídia Imagem carregada - Legenda - Rótulo exibido ao lado do item para todos os leitores + Legenda + Rótulo exibido ao lado do item para todos os leitores Texto alternativo - Descrição em texto para leitores que não podem ver a imagem + Descrição em texto para leitores que não podem ver a imagem Configurações avançadas Dispor o texto em torno da imagem Posição da imagem diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 30727815953..7ffbd5911ad 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -1,5 +1,6 @@ Википедия @@ -176,9 +177,9 @@ Посмотреть на карте Читать на другом языке Доступно на %d других языках - CC BY-SA 3.0 - Отправляя свои изменения, вы соглашаетесь с <a href=\"%1$s\" >условиями использования</a>, а также соглашаетесь на безотзывную публикацию по лицензии <a href=\"%2$s\">CC BY-SA 3.0</a>. - Публикуя изменения, вы соглашаетесь с <a href=\"%1$s\">условиями использования</a>, а также соглашаетесь на безотзывную публикацию по лицензии <a href=\"%2$s\">CC BY-SA 3.0</a>. Правки будут привязаны к IP-адресу вашего устройства. Если вы <a href=\"https://#login\">авторизуйтесь</a>, то сможете получить более высокий уровень конфиденциальности. + CC BY-SA 4.0 + Отправляя свои изменения, вы соглашаетесь с <a href=\"%1$s\" >условиями использования</a>, а также соглашаетесь на безотзывную публикацию по лицензии <a href=\"%2$s\">CC BY-SA 4.0</a>. + Публикуя изменения, вы соглашаетесь с <a href=\"%1$s\">условиями использования</a>, а также соглашаетесь на безотзывную публикацию по лицензии <a href=\"%2$s\">CC BY-SA 4.0</a>. Правки будут привязаны к IP-адресу вашего устройства. Если вы <a href=\"https://#login\">авторизуйтесь</a>, то сможете получить более высокий уровень конфиденциальности. Правки будут подписаны IP-адресом вашего устройства. У вас будет больше приватности, если вы <a href=\"https://#login\">войдёте в систему</a>. Языки Википедии Поиск @@ -304,7 +305,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/ru https://meta.m.wikimedia.org/wiki/Terms_of_Use/ru https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.ru + https://creativecommons.org/licenses/by-sa/4.0/deed.ru https://creativecommons.org/publicdomain/zero/1.0/deed.ru https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/ru https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -314,7 +315,7 @@ Переводчики Это приложение было переведено добровольцами на <a href=\"https://translatewiki.net\">translatewiki.net</a>. Лицензия - Исходный код доступен на <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> и <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">Github</a> под лицензией <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">Apache 2.0</a>. Если не указано иное, содержимое доступно в соответствии с лицензией <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike</a>. + Исходный код доступен на <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> и <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">Github</a> под лицензией <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">Apache 2.0</a>. Если не указано иное, содержимое доступно в соответствии с лицензией <a href=\"https://creativecommons.org/licenses/by-sa/4.0/deed.ru\">Creative Commons Attribution-ShareAlike</a>. Продукт <a href=\"https://wikimediafoundation.org/\">Фонда Викимедиа</a> О приложении Страница была изменена. Вы уверены, что хотите выйти без сохранения изменений? @@ -327,7 +328,7 @@ Далее Сохранить Предпросмотр - Да, отменить + Отменить Повтор действия Откатить @@ -583,6 +584,7 @@ Статей удалено из %s: %d Статей удалено из %s: %d + Списки удалены. Список по умолчанию (%s) не может быть удалён. %d статей удалено из списка %s удалено из списков Отменить @@ -616,6 +618,12 @@ Перемещено статей в %2$s: %1$d Вы уверены, что хотите удалить %s? Удалить выбранные списки? + + Вы уверены, что хотите удалить %d список? + Вы уверены, что хотите удалить %d списка? + Вы уверены, что хотите удалить %d списков? + Вы уверены, что хотите удалить %d списков? + Войдите, чтобы включить синхронизацию Войдите в систему, чтобы ваши списки чтения были сохранены в вашей учётной записи. Отмена @@ -674,6 +682,7 @@ Заголовок Отмена Сохранить + Посмотреть Настройки Отменённая правка Скачивание статей @@ -913,7 +922,7 @@ Начинайте с маленькой буквы, если только первое слово не является собственным названием. Избегайте начинать с маленькой буквы. Текст на неожиданном языке. Язык должен быть %s. - Убедитесь, что язык вашего описания — %1$s. Вы можете отклонить это уведомление, если язык вашего описания — %2$s. + Убедитесь, что язык вашего описания — %1$s. Вы можете игнорировать это предупреждение, если язык вашего описания — %2$s. Показать предлагаемые описания Попробуйте описания статей, предложенные компьютером Описание статьи сохранено! @@ -983,7 +992,7 @@ %d правок %d правок - Предложения отредактировать + Предложенные правки Добавление описания статей Добавление описания статей (%s) Начать @@ -1135,6 +1144,27 @@ Вы добавили символов: %d Вы добавили символов: %d + Изображения статьи + Решите, улучшит ли предлагаемое изображение статью. + Не могли бы вы добавить это изображение в статью? + Руководство + Да + Нет + Затрудняюсь ответить + Почему нет? + Ваши ответы улучшают качество будущих подсказок. + Изображение не релевантно + Мало информации, чтобы решить + Изображение оскорбительно + Изображение низкого качества + Не знаю этой темы + Другое + Отправить + Добавьте отсутствующие изображения в статьи в разделе «Предложенные правки». + Далее + Добавлено изображение + Добавлена подпись + Посмотреть Страница файла Добавить описание изображения Добавить теги изображения @@ -1237,12 +1267,12 @@ Вставить медиа-файл Выберите файл на Викискладе Поиск медиафайлов - Параметры медиафайла + Добавить подробности об изображении Загруженное изображение - Подпись - Текст, который показывается всем читателям возле файла + Описание изображения + Видимая метка изображения в статье Альтернативный текст - Текстовое описание для читателей, которые не могут увидеть изображение. + Описание для слабовидящих читателей Расширенные настройки Расположить текст вокруг изображения Расположение изображения @@ -1389,6 +1419,7 @@ 3 месяца 6 месяцев В вашем списке наблюдения нет статей. + Поиск в списке наблюдения Все Обсуждение Страницы @@ -1438,6 +1469,8 @@ Протоколируемые действия Новые участники Сбросить + Поиск или фильтрация в списке наблюдения + Фильтр списка наблюдения Предпросмотр правки Резюмируйте изменение Как вы улучшили эту страницу? @@ -1469,6 +1502,7 @@ Мы заметили, что с вами поделились списком для чтения. Чтобы просмотреть этот список в приложении, вернитесь к исходному сообщению и снова нажмите на ссылку. Понятно! Поделиться… + Привет! Я хотел бы поделиться с тобой своим списком для чтения из Википедии: Могли бы вы помочь нам улучшить «Поделиться списком для чтения»? «Поделиться списком для чтения» — тестовый функционал, и нам была бы полезная ваша обратная связь, чтобы в дальнейшем улучшить или удалить этот функционал. Принять diff --git a/app/src/main/res/values-sah/strings.xml b/app/src/main/res/values-sah/strings.xml index 9fdd04d74fa..c4dff27c90c 100644 --- a/app/src/main/res/values-sah/strings.xml +++ b/app/src/main/res/values-sah/strings.xml @@ -67,9 +67,9 @@ Каартаҕа көр Атын тылынан ааҕыы Атын %d тылынан ааҕыахха сөп - CC BY-SA 3.0 - Маны бэчээттэтэххинэ <a href=\"%1$s\" >туһаныы усулуобуйатын</a> кытта сөбүлэһэҕин, ону тэҥэ бу лиссиэнсийэ <a href=\"%2$s\">CC BY-SA 3.0</a> кэлин төннөрүллүбэтин кытта эмиэ сөбүлэһэҕин. - Уларытыылары бигэргэтэн <a href=\"%1$s\">туһаныы усулуобуйатын</a> кытта сөбүлэһэҕин, ону тэҥэ <a href=\"%2$s\">CC BY-SA 3.0</a> лиссиэнсийэ иҥэриитэ төннөрүллүбэтин кытта сөбүлэһэҕин. Уларытыыҥ IP-аадырыскын кытта ситимнэниэ. <a href=\"https://#login\">Бэлиэтэннэххинэ</a>, ордук үчүгэй көмүскэллээх буолуоҥ. + CC BY-SA 3.0 + Маны бэчээттэтэххинэ <a href=\"%1$s\" >туһаныы усулуобуйатын</a> кытта сөбүлэһэҕин, ону тэҥэ бу лиссиэнсийэ <a href=\"%2$s\">CC BY-SA 3.0</a> кэлин төннөрүллүбэтин кытта эмиэ сөбүлэһэҕин. + Уларытыылары бигэргэтэн <a href=\"%1$s\">туһаныы усулуобуйатын</a> кытта сөбүлэһэҕин, ону тэҥэ <a href=\"%2$s\">CC BY-SA 3.0</a> лиссиэнсийэ иҥэриитэ төннөрүллүбэтин кытта сөбүлэһэҕин. Уларытыыҥ IP-аадырыскын кытта ситимнэниэ. <a href=\"https://#login\">Бэлиэтэннэххинэ</a>, ордук үчүгэй көмүскэллээх буолуоҥ. Бикипиэдьийэ тыллара Бул Бу сирэй атын тылынан суох эбит. @@ -187,7 +187,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/ru#Чтение_в_офлайне_и_данные https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/ru https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/deed.ru https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/ru Туһаныллар бибилэтиэкэлэр diff --git a/app/src/main/res/values-scn/strings.xml b/app/src/main/res/values-scn/strings.xml index 80f1af7b229..fee140e642b 100644 --- a/app/src/main/res/values-scn/strings.xml +++ b/app/src/main/res/values-scn/strings.xml @@ -44,7 +44,7 @@ Talìa la crunuluggìa dî canciamenti Leggi n n\'àutra lingua Dispunìbbili n àutri %d lingui - CC BY-SA 3.0 + CC BY-SA 3.0 Lingui di Wikipedia Risciduta Àutri lingui diff --git a/app/src/main/res/values-sd/strings.xml b/app/src/main/res/values-sd/strings.xml index c94ee93260f..904104ab34d 100644 --- a/app/src/main/res/values-sd/strings.xml +++ b/app/src/main/res/values-sd/strings.xml @@ -110,9 +110,9 @@ نقشي تي ڏسو ٻي ٻوليءَ ۾ پڙھو %d ٻولين ۾ موجود - ڪڪ بو-سا 3.0 - ڇاپڻ سان، توهان <a href=\"%1$s\">استعمال جي شرطن</a> سان، ۽ بغير رد ڪئي پنھنجون ڀاڱيداريون <a href=\"%2$s\">سيسي بي.واءِ-ايس.اي 3.0</a> اجازتنامي جاري ڪرڻ لاءِ راضي آھيو. - ڇاپڻ سان، توهان <a href=\"%1$s\">استعمال جي شرطن </a> ۽ بغير رد ڪئي پنھنجون ڀاڱيداريون <a href=\"%2$s\">سيسي بي.واءِ-ايس.اي 3.0</a> اجازتنامي ھيٺ جاري ڪرڻ لاءِ راضي آھيو. سنوارون توھان جي آئِپي پتي سان منتسب ڪيون وينديون. جيڪڏهن توهان <a href=\"https://#login\">داخل ٿيو</a> ٿا، تہ توھان کي وڌيڪ نويڪلائي هوندي. + ڪڪ بو-سا 3.0 + ڇاپڻ سان، توهان <a href=\"%1$s\">استعمال جي شرطن</a> سان، ۽ بغير رد ڪئي پنھنجون ڀاڱيداريون <a href=\"%2$s\">سيسي بي.واءِ-ايس.اي 3.0</a> اجازتنامي جاري ڪرڻ لاءِ راضي آھيو. + ڇاپڻ سان، توهان <a href=\"%1$s\">استعمال جي شرطن </a> ۽ بغير رد ڪئي پنھنجون ڀاڱيداريون <a href=\"%2$s\">سيسي بي.واءِ-ايس.اي 3.0</a> اجازتنامي ھيٺ جاري ڪرڻ لاءِ راضي آھيو. سنوارون توھان جي آئِپي پتي سان منتسب ڪيون وينديون. جيڪڏهن توهان <a href=\"https://#login\">داخل ٿيو</a> ٿا، تہ توھان کي وڌيڪ نويڪلائي هوندي. سنوارون توهان جي ڊوائيس جي آئپي پتي ڏانھن منسوب ڪيون وينديون. جيڪڏھن توھان <a href=\"https://#login\">داخل ٿيو</a> ٿا، تہ اوھان کي وڌيڪ نويڪلائي ملندي. وڪيپيڊيا ٻوليون ڳوليو @@ -232,7 +232,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/sd https://sd.wikipedia.org/wiki/وڪيپيڊيا:کاتي_جي_لاءِ_درخواست_ڏيو - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -242,7 +241,7 @@ ترجميڪارَ هيءَ ايپ <a href=\"https://translatewiki.net\">translatewiki.net</a> تي موجود رضاڪار ترجميڪارن ترجمو ڪري ڏني. اجازتنامو - ذريعي جو ڪوڊ <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">جَيرٽ</a> ۽ <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">جِٽ-ھب</a> <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">اپاچي 2.0 اجازتنامي ھيٺ موجود آھي</a>. جيسيتائين ٻي صورت واضع نہ ڪئي وڃي، مواد <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">ڪريئيٽو ڪامنز ھڪجھڙي-ونڊ-انتساب اجازتنامي ھيٺ موجود آھي</a>. + ذريعي جو ڪوڊ <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">جَيرٽ</a> ۽ <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">جِٽ-ھب</a> <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">اپاچي 2.0 اجازتنامي ھيٺ موجود آھي</a>. جيسيتائين ٻي صورت واضع نہ ڪئي وڃي، مواد <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">ڪريئيٽو ڪامنز ھڪجھڙي-ونڊ-انتساب اجازتنامي ھيٺ موجود آھي</a>. <a href=\"https://wikimediafoundation.org/\">وڪيميڊيا فائونڊيشن</a> جي مصنوع بابت هيءُ صفحو بدلائجي چڪو آهي. توهان کي پڪ آهي تہ توهان تبديليون سانڍڻ کان سواءِ ڇڏي وڃڻ چاهيو ٿا؟ @@ -1037,9 +1036,9 @@ ميڊيا وجهو وڪيميڊيا ڪامنز مان ڪو فائيل چونڊيو ميڊيا ڳوليو - ميڊيا ترتيبون + ميڊيا ترتيبون چڙھيل عڪس - عنوان + عنوان متبادل متن اعليٰ ترتيبون متن کي عڪس جي چوڌاري ويڙھيو diff --git a/app/src/main/res/values-sdc/strings.xml b/app/src/main/res/values-sdc/strings.xml index 04479fdcba6..edc74e03bb5 100644 --- a/app/src/main/res/values-sdc/strings.xml +++ b/app/src/main/res/values-sdc/strings.xml @@ -59,7 +59,7 @@ Saivva Attuarizaddu l\'ùlthima voltha %s Visuarizza la pàgina di cuntierra - CC BY-SA 3.0 + CC BY-SA 3.0 Li to\' linghi di Vichipedìa Zercha Althri linghi @@ -109,7 +109,6 @@ Infuimmazioni i\' la riseivvaddèzia Cundiziòni d\'usu https://en.wikipedia.org/wiki/Wikipedia:About - https://creativecommons.org/licenses/by-sa/3.0/deed.it https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags Autori diff --git a/app/src/main/res/values-sh/strings.xml b/app/src/main/res/values-sh/strings.xml index 1ed441d586f..e779eb22a8a 100644 --- a/app/src/main/res/values-sh/strings.xml +++ b/app/src/main/res/values-sh/strings.xml @@ -107,9 +107,9 @@ Pogl. na karti Pročitaj na drugom jeziku Dostupan na %d drugih jezika - CC BY-SA 3.0 - Objavljivanjem izmjena, prihvatate <a href=\"%1$s\">Uslove korišćenja</a> i neopozivo objavljivanje svojih doprinosa pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. - Objavljivanjem izmjena, prihvatate <a href=\"%1$s\">Uslove korišćenja</a>, i neopozivo objavljivanje svojih doprinosa pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. Izmjene će biti pripisane IP adresi vašeg uređaja. Ako se <a href=\"https://#login\">prijavite</a> imaćete veću privatnost. + CC BY-SA 3.0 + Objavljivanjem izmjena, prihvatate <a href=\"%1$s\">Uslove korišćenja</a> i neopozivo objavljivanje svojih doprinosa pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. + Objavljivanjem izmjena, prihvatate <a href=\"%1$s\">Uslove korišćenja</a>, i neopozivo objavljivanje svojih doprinosa pod licencom <a href=\"%2$s\">CC BY-SA 3.0</a>. Izmjene će biti pripisane IP adresi vašeg uređaja. Ako se <a href=\"https://#login\">prijavite</a> imaćete veću privatnost. Uređivanja će se pripisati IP adresi vašeg uređaja. Ako se <a href=\"https://#login\">prijavite</a>, onda imat ćete više privatnosti. Jezici Wikipedije Traži @@ -233,7 +233,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -243,7 +242,7 @@ Prevodioci Ovaj prilog preveli su prevoditelji volonteri na projektu <a href=\"https://translatewiki.net\">translatewiki.net</a>. Licenca - Izvorni kôd dostupan je na <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerritu</a> i <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHubu</a> pod <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">licencom Apache 2.0</a>. Osim gdje je drugačije navedeno, sadržaj je dostupan pod <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">slobodnom licencom Autorstvo-Dijeliti pod istim uvjetima</a>. + Izvorni kôd dostupan je na <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerritu</a> i <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHubu</a> pod <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">licencom Apache 2.0</a>. Osim gdje je drugačije navedeno, sadržaj je dostupan pod <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">slobodnom licencom Autorstvo-Dijeliti pod istim uvjetima</a>. Proizvod <a href=\"https://wikimediafoundation.org/\">Zadužbine Wikimedia</a> O prilogu Stranica je promijenjena. Jeste li sigurni da želite izaći bez čuvanja napravljenih promjena? diff --git a/app/src/main/res/values-shn/strings.xml b/app/src/main/res/values-shn/strings.xml index fefc9012b9a..f102984c717 100644 --- a/app/src/main/res/values-shn/strings.xml +++ b/app/src/main/res/values-shn/strings.xml @@ -60,8 +60,8 @@ တူၺ်းၼိူဝ် ႁၢင်ႈတမ်း လူႇၼင်ႇ ၽႃႇသႃႇၵႂၢမ်းတၢင်ႇၶိူဝ်း ၸႂ့်လႆႈ ၽႃႇသႃႇတၢင်ႇၸိူဝ်း တႃႇ %d မဵဝ်း - ပေႃးဝႃႈပိုၼ်ႇဢွၵ်ႇၼႆ ပွင်ႇဝႃႈၸဝ်ႈၵဝ်ႇၽွမ်ႉၸႂ်တင်း <a href=\"%1$s\">ၶေႃႈၽွမ်ႉၸႂ် လွင်ႈၸႂ်ႉတိုဝ်း</a>, တႃႇတေပိုၼ်ဢွၵ်ႇ လွင်ႈႁူမ်ႈသၢင်ႈၸဝ်ႈၵဝ်ႇ ဢမ်ႇလႅၵ်ႈဢမ်ႇလၢႆႈ ၸွမ်းၼင်ႇ ဝႂ်ၶႂၢင်း <a href=\"%2$s\">CC BY-SA 3.0</a> - ၸွမ်းၼင်ႇ လွင်ႈပိုၼ်ဢွၵ်ႇသေ၊ ၸဝ်ႈၵဝ်ႇလႆႈၽွမ်ႉၸႂ်ဝႆႉၸွမ်း <a href=\"%1$s\">ၶေႃႈၽွမ်ႉၸႂ် လွင်ႈၸႂ်ႉတိုဝ်း</a>, လႄႈ ၵမ်းလိုၼ်းမႃး တေပိုၼ်ၽႄ လွင်ႈၶဝ်ႈႁူမ်ႈသၢင်ႈ ၸဝ်ႈၵဝ်ႇ ၸွမ်းၼင်ႇ ဝႂ်လူတ်းပွႆႇ <a href=\"%2$s\">CC BY-SA 3.0</a> ၼႆႉယူႇ။ လွင်ႈမႄးထတ်းၸိူဝ်းၼႆႉ မၼ်းတေမၢႆတွင်းဝႆႉ ႁဵင်းလိၵ်ႈ ဢၢႆႇၽီႇ ၶွင်ၶိူင်ႈၸၢၵ်ႈၸဝ်ႈၵဝ်ႇဢေႃႈ။ သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ၶဝ်ႈ <a href=\"https://#login\">လွၵ်ႉဢိၼ်ႇ</a>ဝႆႉၼႆတႄႉ ၸဝ်ႈၵဝ်ႇ တေတိူဝ်းမီး လွင်ႈႁူမ်ႇလူမ်ႈလီဢေႃႈ။ + ပေႃးဝႃႈပိုၼ်ႇဢွၵ်ႇၼႆ ပွင်ႇဝႃႈၸဝ်ႈၵဝ်ႇၽွမ်ႉၸႂ်တင်း <a href=\"%1$s\">ၶေႃႈၽွမ်ႉၸႂ် လွင်ႈၸႂ်ႉတိုဝ်း</a>, တႃႇတေပိုၼ်ဢွၵ်ႇ လွင်ႈႁူမ်ႈသၢင်ႈၸဝ်ႈၵဝ်ႇ ဢမ်ႇလႅၵ်ႈဢမ်ႇလၢႆႈ ၸွမ်းၼင်ႇ ဝႂ်ၶႂၢင်း <a href=\"%2$s\">CC BY-SA 3.0</a> + ၸွမ်းၼင်ႇ လွင်ႈပိုၼ်ဢွၵ်ႇသေ၊ ၸဝ်ႈၵဝ်ႇလႆႈၽွမ်ႉၸႂ်ဝႆႉၸွမ်း <a href=\"%1$s\">ၶေႃႈၽွမ်ႉၸႂ် လွင်ႈၸႂ်ႉတိုဝ်း</a>, လႄႈ ၵမ်းလိုၼ်းမႃး တေပိုၼ်ၽႄ လွင်ႈၶဝ်ႈႁူမ်ႈသၢင်ႈ ၸဝ်ႈၵဝ်ႇ ၸွမ်းၼင်ႇ ဝႂ်လူတ်းပွႆႇ <a href=\"%2$s\">CC BY-SA 3.0</a> ၼႆႉယူႇ။ လွင်ႈမႄးထတ်းၸိူဝ်းၼႆႉ မၼ်းတေမၢႆတွင်းဝႆႉ ႁဵင်းလိၵ်ႈ ဢၢႆႇၽီႇ ၶွင်ၶိူင်ႈၸၢၵ်ႈၸဝ်ႈၵဝ်ႇဢေႃႈ။ သင်ၸိူဝ်ႉဝႃႈ ၸဝ်ႈၵဝ်ႇ ၶဝ်ႈ <a href=\"https://#login\">လွၵ်ႉဢိၼ်ႇ</a>ဝႆႉၼႆတႄႉ ၸဝ်ႈၵဝ်ႇ တေတိူဝ်းမီး လွင်ႈႁူမ်ႇလူမ်ႈလီဢေႃႈ။ ၽႃႇသႃႇၵႂၢမ်း ဝီႇၶီႇၽီးတီးယႃး ၶူၼ်ႉႁႃ ၼႃႈလိၵ်ႈဢၼ်ၼႆႉ မၼ်းဢမ်ႇၸၢင်ႈၸႂ်ႉၸွမ်း ၽႃႇသႃႇၶေႃႈၵႂၢမ်းတၢင်ႇဢၼ်။ @@ -72,7 +72,7 @@ လွင်ႈမႄးထတ်း ပိုၼ်ဢွၵ်ႇယဝ်ႉယဝ်ႈ! လွင်ႈမႄးထတ်း ဢမ်ႇၶႅမ်ႉလႅပ်ႈ! ၶိုၼ်းၶတ်းၸႂ်တူၺ်း - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ လွင်ႈလႅၵ်ႈလၢႆႈၸဝ်ႈၵဝ်ႇၼၼ်ႉ ဢမ်ႇပႆႇလႆႈပိုၼ်ႇဢွၵ်ႇၵွၼ်ႇ။ လွင်ႈဝႃႈၸဝ်ႈၵဝ်ႇတေ ဢွၵ်ႇၵႂႃႇတီႈ ၼႃႈလိၵ်ႈၼႆႉ လပ်ႉလွင်းယဝ်ႉႁႃႉ? ဢွၵ်ႇၵႂႃႇ ယူႇဝႆႉ @@ -107,11 +107,11 @@ လွၵ်ႉဢွၵ်ႉ လွၵ်ႉဢွၵ်ႉယဝ်ႉယဝ်ႈ တေဢဝ်ၸဝ်ႈၵဝ်ႇ လွၵ်ႉဢွၵ်ႉ ၵႃႈတီႈၼိူဝ်ၶိူင်ႈ ဢၼ်ၸဝ်ႈၵဝ်ႇ ၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆႉၼၼ်ႉ။ ၸဝ်ႈၵဝ်ႇတေၶႂ်ႈ သိုပ်ႇႁဵတ်းၵႂႃႇယဝ်ႉၼႄႇ? - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ လွၵ်ႉဢွၵ်ႉယဝ်ႉယဝ်ႈ ၸဝ်ႈၵဝ်ႇ လွၵ်ႉဢွၵ်ႉၵႃႈတီႈ ဝီႇၶီႇၽီးတီးယႃးယဝ်ႉ။ ၸွင်ႇၸဝ်ႈၵဝ်ႇ တေၶႂ်ႈ လွၵ်ႉဢိၼ်ႇထႅင်ႈႁိုဝ်? လွၵ်ႉဢိၼ်ႇ - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ ဢမ်ႇမီး ပွင်ႈလိၵ်ႈဢၼ်တိုၵ်ႉႁႃ တူၺ်းၵႂႃႇၼၼ်ႉ ၸွပ်ႇတူၺ်းဝႃႈ ၸဝ်ႈၵဝ်ႇလူသင်ၵႂႃႇ ၵႃႈတီႈၼႆႈ ပွင်ႈၵႂၢမ်းမၢင်ၸိူဝ်း ဢၼ်မီးယူႇတီႈၼႂ်းပိုၼ်းၼၼ်ႉ တေဢမ်ႇၸၢင်ႈတူၺ်းလႆႈ ၽွင်းပဵၼ် ဢွပ်ႉၾ်လၢႆးဝႆႉ။ @@ -179,7 +179,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://shn.wikipedia.org/wiki/ဝီႇၶီႇၽီးတီးယႃး:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits ၸႂ်ႉဝႆႉ ​ႁူင်းၶေႃႈမုၼ်း @@ -380,7 +379,7 @@ ၸဝ်ႈၵဝ်ႇ တေမွတ်ႇပႅတ်ႈ %s ဢၼ်ဝႃႈၼၼ်ႉ ၼႄႉၼွၼ်းယဝ်ႉႁႃႉ? လွၵ်ႉဢိၼ်ႇ တွၼ်ႈတႃႇ ၶူၼ်းၽဵင်ႇ လွၵ်ႉဢိၼ်ႇတွၼ်ႈတႃႇ ၶႂၢင်းပၼ်သဵၼ်ႈမၢႆလူၸဝ်ႈၵဝ်ႇ တႃႇသိမ်းပၼ်ဝႆႉ တီႈၼႂ်း ဢၶွင်ႉၸဝ်ႈၵဝ်ႇ။ - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ လွၵ်ႉဢိၼ်ႇ ၶူၼ်းၽဵင်ႇသဵၼ်ႈမၢႆလူ ဢိုတ်းဝႆႉ ၶူၼ်းၽဵင်ႇသဵၼ်ႈမၢႆလူၼႆႉ ဢိုတ်းဝႆႉ တွၼ်ႈတႃႇ ဢၶွင်ႉၸဝ်ႈၵဝ်ႇ၊ လႄႈ ပွင်ႈၵႂၢမ်းၸိူဝ်းသိမ်းဝႆႉ တီႈၼိူဝ် ၶိူင်ႈၸဝ်ႈၵဝ်ႇ ဢၼ်ၶဝ်ႈလွၵ်ႉဢိၼ်ႇဝႆႉၼၼ်ႉ တေဢမ်ႇႁဵတ်းၵဵမ်လင်ဝႆႉ။ ပိုတ်ႇပၼ် ၶူၼ်းၽဵၼ်ႇသဵၼ်ႈမၢႆလူ တီႈၼႂ်းၵၢၼ်တင်ႈ။ @@ -415,17 +414,17 @@ ၶူၼ်းၽဵင်ႇလိုၼ်းသုတ်း : %s ဢူဝ်ႇၶေႇ ဢူဝ်ႇၶေႇ - ဢမ်ႇႁဵတ်း - ဢမ်ႇႁဵတ်း - ဢမ်ႇႁဵတ်း - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ + ယုၵ်ႉလိူၵ်ႈ + ယုၵ်ႉလိူၵ်ႈ + ယုၵ်ႉလိူၵ်ႈ ဢူဝ်ႇၶေႇ ငဝ်ႈၵုမ်းပိူင် လွင်ႈမႄးထတ်း ဢၼ်ပိၼ်ႈဝႆႉ ယၢင်ႈၵၢၼ်လူတ်ႇလူင်း ယင်ႉ သိုပ်ႇၵႂႃႇ - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ ယၢင်ႈၵၢၼ် လွင်ႈၶူၼ်းၽဵင်ႇ သဵၼ်ႈမၢႆလူ လွင်ႈလူတ်ႇလူင်း ပွင်ႈၵႂၢမ်း @@ -520,10 +519,10 @@ တီႈပိုတ်ႇႁႃတႃႇလူၸဝ်ႈၵဝ်ႇၼၼ်ႉ ဢမ်ႇမီးသင်ဝႆႉ မႄးၵမ်ႉၸႂ် ဢူဝ်ႇၶေႇ - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ <strong>မႄးၵမ်ႉၸႂ် တီႈပိုတ်ႇလူၸဝ်ႈၵဝ်ႇ</strong><br /><br />ယၢမ်းလဵဝ် ၸဝ်ႈၵဝ်ႇၸၢင်ႈလိူၵ်ႈပၼ်ဝႃႈ တေလႆႈၼႄပၼ်သင် တွၼ်ႈတႃႇလူ၊ လႄႈ ၸၢင်ႈပၼ်ပႃႇၸႃး လမ်းၼႂ်း မဵဝ်းဢၼ်ၸဝ်ႈၵဝ်ႇတိူဝ်းလႆႈၸႂ်။ ဢူဝ်ႇၶေႇ - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ ၶေႃႈသပ်းလႅင်း ႁူဝ်ၶေႃႈ ႁူဝ်ၶေႃႈ ၶႅပ်းႁၢင်ႈ (%s) ပိုၼ်ဢွၵ်ႇ @@ -534,7 +533,7 @@ ထႅမ်သႂ်ႇ ႁူဝ်ၶေႃႈၶႅပ်းႁၢင်ႈ မႄးထတ်း ႁူဝ်ၶေႃႈၶႅပ်းႁၢင်ႈ ပိၼ်ႇၽႃႇသႃႇ ႁူဝ်ၶေႃႈၶႅပ်းႁၢင်ႈ - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ လွၼ်ႉၶၢဝ်ႇ: ၶေႃႈသပ်းလႅင်း ပွင်ႈၵႂၢမ်း လွင်ႈ ဝီႇၶီႇတေႇတႃႇ ဝီႇၶီႇတေႇတႃႇ ၼႄပၼ် တွၼ်ႈတႃႇ လွင်ႈတႅမ်ႈၶေႃႈသပ်းလႅင်း @@ -603,7 +602,7 @@ လွင်ႈၶဝ်ႈႁူမ်ႈၸဝ်ႈၵဝ်ႇ ဢမ်ႇၸွမ်းဝႆႉၼင်ႇ <a href=\"%1$s\">ၽိုၼ်ၸုင်</a>. လွင်ႈၶဝ်ႈႁူမ်ႈၸဝ်ႈၵဝ်ႇ လႅပ်ႈမိူၼ် ၵၢၼ်ၸၢမ်းမိုဝ်း ဢမ်ႇၼၼ် လွင်ႈယႃႉၵဝ်းလဵၼ်ႈ။ သင်ၸိူဝ်ႉဝႃႈၸဝ်ႈၵဝ်ႇ သူင်ၸႂ်၊ တူၺ်းတီႈ <a href=\"%1$s\">ပိုၼ်းမႄးထတ်း</a>. - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ တွၼ်ႈတႃႇပိုတ်ႇႁႃ ဢွပ်ႉၾ်လၢႆးၼၼ်ႉ တေလူဝ်ႇလွင်ႈပူတ်းပွႆႇ တႃႇၶဝ်ႈၸႂ်ႉၶိူင်ႈသိမ်း တီႈၼိူဝ် ၶိူင်ႈၸႂ်ႉၸဝ်ႈၵဝ်ႇ။ တွၼ်ႈတႃႇယွၼ်သိမ်း ဢွပ်ႉၾ်လၢႆးၼၼ်ႉ တေလူဝ်ႇလွင်ႈပူတ်းပွႆႇ တႃႇၶဝ်ႈၸႂ်ႉၶိူင်ႈသိမ်း တီႈၼိူဝ် ၶိူင်ႈၸႂ်ႉၸဝ်ႈၵဝ်ႇ။ %.2f GB @@ -655,14 +654,14 @@ ယၢမ်းလဵဝ် တီႈၽႃႇသႃႇၵႂၢမ်းဢႅပ်ႉၸဝ်ႈၵဝ်ႇၼၼ်ႉ မီးဝႆႉ ပိူင်ပႅၵ်ႇၽႃႇသႃႇၶႄႇၽိင်ႈ လႄႈ မိူင်ႈလူင် တင်းသွင်ဢၼ်။ တေဢၢပ်ႉတဵတ်ႉ ၵၢၼ်တင်ႈ ၽႃႇသႃႇၵႂၢမ်းဢႅပ်ႉ ၸဝ်ႈၵဝ်ႇၼႄႇ? မႄးထတ်း ၽႃႇသႃႇၵႂၢမ်း ပႆႇၵွၼ်ႇ - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ ဢူဝ်ႇၶေႇ ဢူဝ်ႇၶေႇ ဢူဝ်ႇၶေႇ ဢူဝ်ႇၶေႇ ဢူဝ်ႇၶေႇ ဢူဝ်ႇၶေႇ - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ ၼႃ ၵိူင်း ႁဵင်းၵွင်ႉ @@ -675,6 +674,6 @@ လွၵ်ႉဢိၼ်ႇ / သိုပ်ႇၵၢႆႇ ဝီႇၶီႇၽီးတီးယႃး ဢူဝ်ႇၶေႇ ဢူဝ်ႇၶေႇ - ဢမ်ႇႁဵတ်း - ဢမ်ႇႁဵတ်း + ယုၵ်ႉလိူၵ်ႈ + ယုၵ်ႉလိူၵ်ႈ diff --git a/app/src/main/res/values-si/strings.xml b/app/src/main/res/values-si/strings.xml index bc6467b1532..5f2bc417f7b 100644 --- a/app/src/main/res/values-si/strings.xml +++ b/app/src/main/res/values-si/strings.xml @@ -76,8 +76,8 @@ සංස්කරණ ඉතිහාසය බලන්න සිතියම බලන්න වෙනත් භාෂාවකින් කියවන්න - සුරැකීම මගින්, <a href=\"%1$s\">භාවිත කොන්දේසි</a> වලට ඔබ එකඟ වෙයි, තවද ඔබේ දායකත්වය වෙනස් නොකළ හැකි <a href=\"%2$s\">CC BY-SA 3.0</a> බලපත්‍රය යටතේ නිදහස් කිරීමට ඔබ එකඟ වේ. - සුරැකීම මගින්, <a href=\"%1$s\">භාවිත කොන්දේසි</a> වලට ඔබ එකඟ වෙයි, තවද ඔබේ දායකත්වය වෙනස් නොකළ හැකි <a href=\"%2$s/\">CC BY-SA 3.0</a> බලපත්‍රය යටතේ නිදහස් කිරීමට ඔබ එකඟ වේ. ඔබේ උපාංගයේ IP ලිපිනයට සංස්කරණ ආරෝපණය කෙරෙනු ඇත. ඔබ <a href=\"https://#login\">පිවිසියේ</a> නම්, ඔබේ පෞද්ගලිකත්වයට වැඩි ඉඩක් හිමිවනු ඇත. + සුරැකීම මගින්, <a href=\"%1$s\">භාවිත කොන්දේසි</a> වලට ඔබ එකඟ වෙයි, තවද ඔබේ දායකත්වය වෙනස් නොකළ හැකි <a href=\"%2$s\">CC BY-SA 3.0</a> බලපත්‍රය යටතේ නිදහස් කිරීමට ඔබ එකඟ වේ. + සුරැකීම මගින්, <a href=\"%1$s\">භාවිත කොන්දේසි</a> වලට ඔබ එකඟ වෙයි, තවද ඔබේ දායකත්වය වෙනස් නොකළ හැකි <a href=\"%2$s/\">CC BY-SA 3.0</a> බලපත්‍රය යටතේ නිදහස් කිරීමට ඔබ එකඟ වේ. ඔබේ උපාංගයේ IP ලිපිනයට සංස්කරණ ආරෝපණය කෙරෙනු ඇත. ඔබ <a href=\"https://#login\">පිවිසියේ</a> නම්, ඔබේ පෞද්ගලිකත්වයට වැඩි ඉඩක් හිමිවනු ඇත. විකිපීඩියා භාෂා සොයන්න මෙම පිටුව වෙනත් භාෂාවලින් ලබාගත නොහැක diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 9abe2b378c4..3f3cc65eed9 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -120,9 +120,9 @@ Zobraziť na mape Čítať v inom jazyku Dostupný v %d ďalších jazykoch - CC BY-SA 3.0 - Uverejnením vašej úpravy zároveň súhlasíte s <a href=\"%1$s\">podmienkami používania</a> a neodvolateľne takisto s uverejnením vašich príspevkov v rámci licenciou <a href=\"%2$s\">CC BY-SA 3.0</a>. - Uverejnením vašej úpravy zároveň súhlasíte s <a href=\"%1$s\">podmienkami používania</a> a neodvolateľne takisto s uverejnením vašich príspevkov pod licenciou <a href=\"%2$s\">CC BY-SA 3.0</a>. Úpravy budú spájané s IP adresou vášho zariadenia. Po <a href=\"https://#login\">prihlásení</a> budete disponovať vyššou ochranou súkromia. + CC BY-SA 3.0 + Uverejnením vašej úpravy zároveň súhlasíte s <a href=\"%1$s\">podmienkami používania</a> a neodvolateľne takisto s uverejnením vašich príspevkov v rámci licenciou <a href=\"%2$s\">CC BY-SA 3.0</a>. + Uverejnením vašej úpravy zároveň súhlasíte s <a href=\"%1$s\">podmienkami používania</a> a neodvolateľne takisto s uverejnením vašich príspevkov pod licenciou <a href=\"%2$s\">CC BY-SA 3.0</a>. Úpravy budú spájané s IP adresou vášho zariadenia. Po <a href=\"https://#login\">prihlásení</a> budete disponovať vyššou ochranou súkromia. Úpravy budú prirátané k IP adrese vášho zariadenia. Ak sa <a href=\"https://#login\">prihlásite</a> budete mať viac súkromia. Jazyk Wikipédie Hľadať @@ -248,7 +248,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.wikimedia.org/wiki/Terms_of_Use https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/sk https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -258,7 +257,7 @@ Prekladatelia Táto aplikácia bola preložená s pomocou dobrovoľných prekladateľov na <a href=\"https://translatewiki.net\">translatewiki.net</a>. Licencia - Zdrojový kód dostupný na <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrite</a> a <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHube</a> na základe <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">licencie Apache 2.0</a>. Pokiaľ nie je uvedené inak, je obsah dostupný pod <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\"> licenciou Creative Commons Attribution-ShareAlike</a>. + Zdrojový kód dostupný na <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrite</a> a <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHube</a> na základe <a href=\"https://phabricator.wikimedia.org/diffusion/APAW/browse/master/COPYING?view=raw\">licencie Apache 2.0</a>. Pokiaľ nie je uvedené inak, je obsah dostupný pod <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\"> licenciou Creative Commons Attribution-ShareAlike</a>. Produkt <a href=\"https://wikimediafoundation.org/\">Nadácie Wikimedia</a> O aplikácii Na stránke boli vykonané úpravy. Naozaj chcete opustiť stránku bez uloženia úprav? @@ -1040,6 +1039,8 @@ Pridali ste %d znakov Pridali ste %d znakov + Trénovať obrázkový algoritmus + Rozhodnúť či odporúčaný obrázok zlepší článok. Stránka súboru Pridať obrázkové titulky Pridať obrázkové štítky diff --git a/app/src/main/res/values-skr/strings.xml b/app/src/main/res/values-skr/strings.xml index 7a2bf75bd1e..38447bdca4a 100644 --- a/app/src/main/res/values-skr/strings.xml +++ b/app/src/main/res/values-skr/strings.xml @@ -33,7 +33,7 @@ واپس اے پی پی ترتیباں تاریخ - تصویر: %s + تصویر: %s ورقہ: %s وِکیمیڈیا کامنز وکی ڈیٹا @@ -43,6 +43,9 @@ شیئر سانڄھا کرو بذریعہ شیئر کرو بذریعہ %s کنوں ری ڈائرکٹ تھی ڳیا + <b>چھ</b> %s + ساریاں تبدیلیاں (%s) + بوٹ تبدیلیاں (%s) ٹیب ݙکھاؤ زبان وٹاؤ مضمون وچ ڳولو @@ -61,9 +64,12 @@ مطالعہ دی تندیر وچ شامل کرو بچاؤ لنک سانجھا کرو + مضمون شیئر کرو + شیئر نویں ٹیب کھولو نویں ٹیب مطالعہ دیاں تندیراں + حالیہ ݙٹھے ڳئے آرکائیو کھولو نویں ٹیب وچ کھولو @@ -72,11 +78,13 @@ شیئر شیئر اتھ تبدیلی کرو + مضمون وچ تبدیلی کرو چھیکڑی تجدید تھئی %s ڳالھ مہاڑ ورقہ ݙیکھو تبدیلی دا تاریخچہ ݙیکھو نقشے تے ݙیکھو ٻئی زبان وچ پڑھو + سی سی بی وائی۔ایس اے ٤.٠ وکی پیڈیا دی زباناں ڳولو ایہ ورقہ ٻیاں زباناں وچ کائنی @@ -108,6 +116,7 @@ لاگ ان تھیوو لاگ ان تھیندے پئے ہو۔۔۔ لاگ ان تھی ڳیا! + پاس ورڈ ٹھیک کرو نواں پاس ورڈ محفوظ کرو تے لا ان تھیوو لاگ آؤٹ @@ -133,6 +142,7 @@ پاس ورڈ ٹھیک کائنی کھاتہ نی کھُل سڳیا اڳوں تے ونڄو + ای میل بغیر جاری رکھو ہک ای میل پتہ شامل کرو کھاتہ کھولو تفصیلاں @@ -140,8 +150,12 @@ کھاتہ وکیپیڈیا ایپ عمومی سوالات کھاتہ کھل ڳیا! + ہم وقت کرݨ + تجرباتی پرائیویسی + چھاݨاں تاریخ ایہ ورقہ محفوظ ہے + پارھاتندیر وچ شامل کرو ترتیباں ترتیباں وکی پیڈیا ایپ دے بارے @@ -160,6 +174,7 @@ پیشگی ݙکھالا واپس ولدا کرو + پچھاں واپس کرو وݙا کرو چھوٹا کرو درستی املا @@ -172,8 +187,10 @@ ہکوجہے ورقے بھلا تہاݙا مطلب ہائی %s؟ حالیہ ڳول: + کوئی نتیجہ کائنی جیا کو + فوری حقائق ٻیاں معلومات بند کرو وکیپیڈیا دا چوݨواں ورقہ @@ -191,21 +208,26 @@ فائل ݙاؤن لوڈ کریندا پئے۔۔۔ فائل محفوظ تھی ڳئی۔ ویڈیو کوں کائنی چلایا ون٘ڄ سڳدا۔ + فائل محفوظ کائنی کر سڳدا کریئیٹیو کامنز اجازہ کیپچا تصویر مناسب استعمال اپلوڈ کرݨ آلا نامعلوم + مکاؤ نویں ٹیب سارے ٹیب بند کرو بھلا تساں سارے ٹیب بند کرݨ چاہندو؟ پکی ڳالھ ہے؟ جیا کو ٹیب بند کرو + ٹیب بند تھی ڳئی۔ %s بند تھی ڳیا۔ سنیہا:%s مضمون پڑھو + ڳالھ مہاڑ ورقہ کھولو رلدے ملدے ورقے ݙیکھو مطالعہ دی فہرست وچ شامل کرو + ٹیبل ولھیٹو عطیہ فعال کرو بند کرو @@ -215,9 +237,13 @@ ایہ ورقہ کائنی انٹرنیٹ نال جوڑ نی تھی سڳدا حوالے%s + حوالے مدھم تصویر (تاریک پوشاک وچ) آف لائن مواد کوں ترجیح ݙیوو نویں ٹیب + ساریاں ٹیباں محفوظ کرو + بلاک آئی ڈی: %s + بلاک بحث کرݨ کیتے تساں <a href=\"%2$s\">%1$s</a> or another <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Administrators\">ایڈمن</a> نال رابطہ کر سڳدے ہو۔ ول شروع کرو نکلو بچاؤ @@ -226,11 +252,20 @@ تھیم شامل حصے لکھو۔۔۔ + تعارف وچ تبدیلی کرو مرکزی خیال پھِکّا گہرا کالا + بھورا + نمونے دی عبارت + ایپ تھیم + عبارت سائز ودھاؤ + عبارت سائز گھٹاؤ فونٹ + پڑھݨ + ایڈیٹ کرݨ + محفوظ تھی ڳیا مطالعہ دی فہرست وچ شامل کرو نواں بݨاؤ فہرست ݙیکھو @@ -242,18 +277,28 @@ تندیر برآمد کرو چݨو ناں یا وضاحت وچ تبدیلی لکھو + آف لائن کنوں ہٹاؤ آف لائن کیتے محفوظ کرو + آف لائن کنوں سارے ہٹاؤ + آف لائن کیتے سارے محفوظ کرو + ہک ٻئی تندیر شامل کرو ایں فہرست دا ناں تفصیلاں(اختیاری) واپس %s مٹایا ہویا + آف لائن دستیاب + %s کنوں ہٹاؤ چݨو + آف لائن کنوں ہٹاؤ + ہم وقت کرݨ فعال کرو + ہُݨ نہ جیا کو منسوخ لاگ ان تھیوو ٹھیک ہے ترتیباں + ہم وقت کرݨ فعال کرو کو، شکریہ محفوظ تھی ڳیا نویں لسٹ بݨاؤ @@ -278,27 +323,58 @@ محفوظ کرو ݙیکھو ترجیحات + واپس تھئی تبدیلی اجھکو ولدا شروع کرو منسوخ اطلاع نامے فعال کرو ہُݨ نہ + نشان لاؤ جو کائنی پڑھا + نشان لاؤ جو سارا پڑھ گھدے جواب + جواب پوسٹ تھیا۔ + پارھا تندیر + اطلاعواں دی پول نظام سنگ میل شکریہ واپس لاگ ان + تہاݙیاں لاگ ان سرگرمیاں ذکر کرݨ + ڳالھ مہاڑ ورقہ + ای میل وصول تھئی + وکیپیڈیا ٻیا + سارے چھاݨے چݨو یکے + ذکر کرݨ + نشان لاؤ جو پڑھ گھدے + نشان لاؤ جو کائنی پڑھا + پڑھو + کائنی پڑھا + وکی چھاݨاں + ساریاں \"وکیاں\" + ساریاں \"قسماں\" + پوکھواں مضمون + %d کے + %d ایم + اڄ وکی پیڈیا تے + پہلا پرت ݙیکھو + اڄ دی تصویر ڈاؤن لوڈ + شیئر ایں کارڈ کوں لکاؤ + کارڈ زباناں وچ تبدیلی کرو ٻئے اختیار پھرولو + گھر + کارڈ آئیکان + خبراں وچ اڄ کو، شکریہ + خاص مضمون بچاؤ سب ݙکھاؤ سارے لُکاؤ @@ -307,36 +383,106 @@ منسوخ ٹھیک ہے منسوخ + ٻئے لوڈ کرو + ٹیباں + مضمون تفصیل + مضمون + مضمون تفصیل (%s) + تصویر تفصیل شائع کرو - عنوان دی تفصیل لکھو + پڑھو + مضمون دی تفصیل شامل کرو تفصیل لکھو + تصویر عنوان شامل کرو منسوخ وکیڈیٹا بارے مکمل بھلا تساں ڄاݨدے ہو؟ لکھݨ شروع کرو - ترجمہ شامل کرو + ٹول بار + مینیو + وضاحت شامل کرو + وضاحت وچ تبدیلی کرو + ترجمہ شامل کرو عنوان شامل کرو عنوان وچ تبدیلی کرو + میݙیاں ونگاراں معلومات + تصویر عنوان شامل کرو + تصویر کیپشن ترجمہ کرو + میݙے کیتے کائنی + زباناں شامل کرو تصویر + آرٹسٹ مصنف ماخذ لائیسنس تریخ + مجوزہ تبدیلیاں + مضمون دی تفصیل شامل کرو + شروع کرو تصویر + آرٹسٹ + ٹیگ تریخ + لائیسنس + ٻیاں معلومات ݙکھالا تصویر ٹیگ شامل کرو + شامل کرو + ترجمہ کرو + تصویر کیپشن + تصویر ٹیگ + شائع تھیندا پئے + شائع تھی ڳئے ٹیگ ڳولو ٹیگ شامل کرو + ایڈیٹ سٹریک + ݙکھالے + ایڈیٹ معیار + مکمل + شاندار + ٻہوں چنگا + چنگا + ٹھیک ہے + کافی + غریب + گندا + مجوزہ تبدیلیاں ٻیا سِکھو جمب ڳیا + غیر فعال تھی ڳیا + آئی پی بلاک تھیا + چھیکڑی تبدیلی تھئی + کݙاہیں وی کائناں + نواں + مجوزہ تبدیلیاں زبان تریخ/ویلا - فائل + تصویر مضمون + %1$d %2$s + کل رپورٹ + رپورٹ جمع تھئی + مضمون تصویراں + ٹیٹوریل + جیا + کو + پک کائنی + کیوں نہ؟ + تصویر غیرمتعلقہ ہے + فیصلہ کرݨ کیتے کافی معلومات کائنی + ٻیا + جمع کرواؤ + اڳلا + تصؤیر شامل تھی ڳئی + عنوان شامل کرو + ݙکھالا + فائل ورقہ + تصویر عنوان شامل کرو + تصویر ٹیگ شامل کرو + تبدیلی کرو %s منسوخ %.2f جی بی %.2f ایم بی @@ -349,7 +495,10 @@ ڳولو ایں ݙینہ کوں ایں سال + اڳلا مہینہ + پچھلا مہینہ زبان شامل کرو + صلاح ایہ ہے ساریاں زباناں وکی میڈیا دی زباناں تہاݙیاں زباناں @@ -367,6 +516,7 @@ ٹھیک ہے ٹھیک ہے منسوخ + ساریاں ونگاراں موٹا ترچھا ہیٹھاں لکیر @@ -378,24 +528,97 @@ کوڈ ربط سرخیاں + میڈیا پاؤ ڳولی لڳی تندیر عدد لڳی تندیر سانچہ حوالہ + میڈیا پاؤ + میڈیا کیتے ڳول + تصویر تفصیلاں شامل کرو + تصویر اپ لوڈ کرو + تصویر عنوان اعلیٰ ترتیباں + سڄے کھٻے + ادھ وچ کوئی وی کائنی + تصویر قسم + تھمب نیل + فریم بغیر + فریم + بنیادی فوٹو دا سائز + پہلے کنوں طے تھیا ہویا چوڑائی اُچائی + پکس + درج کرو مدد + شروع کرو + پارھا تندیر ٹھیک ہے ٹھیک ہے منسوخ منسوخ + ڳالھ مہاڑ + ڳالھ مہاڑ: %s + نواں عنوان ڳالھ مہاڑ ورقے تے تے بھُوم ڳوجھی تے مواد کوں ممکن حد تائیں بہتر بݨاوݨ کیتے لوک بحث کریندے ہن۔ وکی پیڈیا برادری نال رل تے کم کرݨ تے رابطے کیتے نواں بحث دا موضوع شامل کرݨ نال شروع کرو۔ + جواب + (عنوان کائنی) + موضوع + واپس + شروع کرو + سنیہے ڳولو + موضوعات چݨو + موضوع ناں + سبسکرائب کرو + سبسکرائب تھیا + نشان لاؤ جو پڑھ گھدے + نشان لاؤ جو کائنی پڑھا + شیئر + چھیکڑی تبصرہ: %s + کل جواب + پڑھا ہویا + کائنی پڑھا + اڳلی تبدیلی + پچھلی تبدیلی + شکریہ + ورتݨ آلے دا ورقہ ݙیکھو + شکریہ بھیڄو + منسوخ + ورتݨ آلے دا ورقہ ݙیکھو + ڳالھ مہاڑ ورقہ ݙیکھو + وتݨ آلے دیاں ونگاراں ݙیکھو + کنوں: + تائیں: + پیرا شامل تھیا + پیرا ہٹ ڳیا + تبدیلیاں واپس تھی ڳیاں۔ + موازنہ کرو + وٹاؤ + مستقل + ١ ہفتے کیتے + ١ مہینے کیتے + ٣ مہینیاں کیتے + ٦ مہینیاں کیتے + مستقل + ہک ہفتہ + ہک مہیناں + ترائے مہینے + ٦ مہینے + پارھاتندیر ڳول + یکے + ڳالھ مہاڑ + ورقے + ٻیا + ٹور ݙتے + محفوظ ہے + مٹا ݙتے وکی یکے + ان ݙٹھیاں تبدیلیاں ݙٹھیاں تبدیلیاں اݨ رجسٹرڈ رجسٹرڈ @@ -407,13 +630,32 @@ ٻوٹ اہمیت معمولی تبدیلیاں + وݙیاں تبدیلیاں + موجودہ حالت + موجودہ حالت + تازہ ترین نسخہ دے سوا تبدیلی دی قسم ورقہ تبدیلیاں + ورقہ سازی ونکی تبدیلیاں + وکی ڈیٹا تبدیلیاں + لاگ تھئے عمل نویں ورتݨ آلے + ولدا ٹھیک کرو + ایہ ہک نکی تبدیلی ہے + ایں ورقے تے پارھا ݙیوو + ونکیاں + مضمون + ذیلی ونکیاں + ناں جاہیں + ساریاں ناں جاہیں + مضمون + موجودہ + ونگاراں *نواں* سمجھ آڳئی شیئر۔۔۔ قبول کرو مسترد کرو + ورقہ معاملے diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index be34f619496..77da21c02a6 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -115,9 +115,9 @@ Prikaži na karti Preberite v drugem jeziku Na voljo v %d drugih jezikih - CC BY-SA 3.0 - Z objavo izražate strinjanje s <a href=\"%1$s\">Pogoji uporabe</a> in svoje prispevke nepreklicno objavljate pod licenco <a href=\"%2$s\">CC BY-SA 3.0</a>. - Z objavo se strinjate s <a href=\"%1$s\">Pogoji uporabe</a> in svoje prispevke nepreklicno objavljate pod licenco <a href=\"%2$s/\">CC BY-SA 3.0</a>. Urejanja bodo pripisana IP-naslovu vaše naprave. Če se boste <a href=\"https://#login\">prijavili</a>, boste imeli več zasebnosti. + CC BY-SA 4.0 + Z objavo izražate strinjanje s <a href=\"%1$s\">Pogoji uporabe</a> in svoje prispevke nepreklicno objavljate pod licenco <a href=\"%2$s\">CC BY-SA 4.0</a>. + Z objavo se strinjate s <a href=\"%1$s\">Pogoji uporabe</a> in svoje prispevke nepreklicno objavljate pod licenco <a href=\"%2$s/\">CC BY-SA 4.0</a>. Urejanja bodo pripisana IP-naslovu vaše naprave. Če se boste <a href=\"https://#login\">prijavili</a>, boste imeli več zasebnosti. Urejanja bodo pripisana IP-naslovu vaše naprave. Če se <a href=\"https://#login\">prijavite</a>, boste imeli več zasebnosti. Jeziki Wikipedije Iskanje @@ -238,12 +238,12 @@ Pravilnik o zasebnosti Pogoji uporabe https://sl.wikipedia.org/wiki/Wikipedija:O_Wikipediji - https://foundation.wikimedia.org/wiki/Privacy_policy + https://foundation.wikimedia.org/wiki/Policy:Privacy_policy/sl https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ - https://foundation.wikimedia.org/wiki/Terms_of_Use + https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/sl https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.sl + https://creativecommons.org/licenses/by-sa/4.0/deed.sl https://creativecommons.org/publicdomain/zero/1.0/deed.sl https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -253,7 +253,7 @@ Prevajalci Aplikacijo so prevedli prostovoljci projekta <a href=\"https://translatewiki.net\">translatewiki.net</a>. Licenca - Izvorna koda je na voljo v shrambah <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> in <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> pod licenco <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 License</a>. Če ni navedeno drugače, je vsebina na razpolago pod licenco <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Pripis avtorja-Deljenje pod enakimi pogoji</a>. + Izvorna koda je na voljo v shrambah <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> in <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> pod licenco <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0 License</a>. Če ni navedeno drugače, je vsebina na razpolago pod licenco <a href=\"https://creativecommons.org/licenses/by-sa/4.0/deed.sl\">Creative Commons Pripis avtorja-Deljenje pod enakimi pogoji</a>. Izdelek <a href=\"https://wikimediafoundation.org/\">Fundacije Wikimedia</a> O projektu Stran je bila spremenjena. Ali jo res želite zapustiti, ne da bi shranili svoje spremembe? @@ -1010,6 +1010,7 @@ Za to sliko niste izbrali nobene oznake K slikam bodo dodane samo oznake, ki jih boste izbrali. Oznake, ki jih ne boste izbrali, bodo označene kot zavrnjene. Ali resnično želite vse oznake označiti kot zavrnjene? Dodaj oznako + Neobjavljene oznake ne bodo shranjene Za povečanje sliko razprite s prsti. %s, hvala za vaša urejanja. Tu boste našli več načinov za prispevanje k Wikipediji. <b>Pozdravljeni, %s</b>, tu lahko najdete nekaj hitrih in preprostih načinov za izboljšanje Wikipedije. Svoj prispevek boste opazili takoj, ko boste začeli. Uspešno urejanje! @@ -1122,6 +1123,35 @@ Dodali ste %d znake Dodali ste %d znakov + Slike v člankih + Dodajte predlagane slike v članke Wikipedije, da izboljšate njihovo razumljivost. + Ali želite dodati to sliko v članek? + Vadnica + Da + Ne + Nisem prepričan_a + Zakaj ne? + Vaši odgovori izboljšujej prihodnje predloge. + Slika ni relevantna + Ni dovolj informacij za odločitev + Slika je žaljiva + Slika je slabe kakovosti + Ne poznam te teme + Dugo + Pošlji + Dodajte manjkajoče slike člankom v Predlaganih popravkih + Slike pomagajo ljudem vsebino bolje razumeti, vendar jih veliko člankov nima. + Vi se boste odločili, ali naj bo predlagana slika umeščena v članek v Wikipediji. + Predlogi so strojno ustvarjeni in po svoji presoji se boste odločili, ali jih boste sprejeli ali zavrnili. + Slike izvirajo iz Wikimedijine zbirke (Wikimedia Commons), zbirke prosto licenciranih slik, ki jih uporablja Wikipedija. + Preglejte ta članek, da boste razumeli njegovo temo + Preglejte sliko in z njo povezane informacije + Odločite se, ali slika bralcem pomaga bolje razumeti to temo + Naprej + Preglejte članek, da boste razumeli njegovo temo, in preglejte sliko. + dodana slika + dodan napis k sliki + Ogled Stran datoteke Dodaj sliki napis Dodaj sliki oznake @@ -1224,12 +1254,12 @@ Vstavi predstavnost Izberite datoteko iz Wikimedijine zbirke Poišči predstavnost - Nastavitve predstavnosti + Dodajte podrobnosti slike Naložena slika - Napis - Oznaka, ki je prikazana poleg predmeta za vse bralce + Napis k sliki + Vidna oznaka v članku Alternativno besedilo - Besedilni opis za bralce, ki ne morejo videti slike + Opis za bralce s prizadetim vidom Napredne nastavitve Ovij besedilo okoli slike Položaj slike @@ -1282,7 +1312,7 @@ Začnimo Wikipedija – razprava o temi pogovorne strani »%s« Wikipedija – pogovori na pogovorni strani - To je pogovorna stran. Prosimo, upoštevajte smernice za pogovorne strani in komentarje pri urejanju vikibesedila podpišite s štirimi tildami: ~~~~.<br><br><a href=\"https://sl.wikipedia.org/wiki/Wikipedija:Smernice za pogovorne strani\">Wikipedija:Smernice za pogovorne strani</a> + To je pogovorna stran. Prosimo, upoštevajte smernice za pogovorne strani in komentarje pri urejanju vikibesedila podpišite s štirimi tildami: ~~~~.<br><br><a href=\"https://sl.wikipedia.org/wiki/Wikipedija:Smernice_za_pogovorne_strani\">Wikipedija:Smernice za pogovorne strani</a> Preišči obvestila Preiščite teme Poišči v temi pogovorne strani @@ -1475,4 +1505,6 @@ »Deli bralne sezname« je preizkusna možnost in potrebujemo vaše povratne informacije, da jo izboljšamo ali odstranimo. Sprejmem Zavrnem + Težaev strani + Manjši popravki napak in izboljšave diff --git a/app/src/main/res/values-smn/strings.xml b/app/src/main/res/values-smn/strings.xml index 1027e2ae719..c0976f78080 100644 --- a/app/src/main/res/values-smn/strings.xml +++ b/app/src/main/res/values-smn/strings.xml @@ -74,7 +74,7 @@ Čääiti hammimhistorjá Čääiti káártást Luuvâ eres kielân - CC BY-SA 3.0 + CC BY-SA 3.0 Wikipedia kielah Uuccâm Eres kielah @@ -166,6 +166,7 @@ Siskáldâs Mute... Mute artikkâl kuvvim + Mute laiđiittâs Teema Kuovgâd Tevkkâd @@ -213,6 +214,7 @@ Wikipedia almottâsah Almottâsah Tarkkumlisto + Čáládât siisâ Savâstâllâmsijđo Wikipedia Puoh @@ -309,7 +311,7 @@ Myenster Käldee Valjii tiätuvuárhá Wikimedia Commonsist - Kovetekstâ + Kovetekstâ Laseasâttâsah Miniatyyrkove Iše diff --git a/app/src/main/res/values-sms/strings.xml b/app/src/main/res/values-sms/strings.xml index 29dcd96b73c..abb7aa09911 100644 --- a/app/src/main/res/values-sms/strings.xml +++ b/app/src/main/res/values-sms/strings.xml @@ -60,7 +60,7 @@ Čuäʹjet muʹttemhistoria. Čuäʹjet kaartâst Looǥǥ jeeʹres ǩiõʹlle - CC BY-SA 3.0 + CC BY-SA 3.0 Wikipedia ǩiõl Ooccmõš Jeeʹres ǩiõl @@ -314,7 +314,7 @@ Mall Teâttkäivv Vaʹlljed teâttõõzz Wikimedia Commonsist - Kartt- leʹbe snimldõkteʹkstt + Kartt- leʹbe snimldõkteʹkstt Lââʹssasetõõzz Snimldõõǥǥâž Tiõrv %s! Tiõʹđžiǩ-a ton, što puk vuäiʹtte Wikipedia muʹtted? diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 8a88b182b32..c93a4ec697d 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -2,6 +2,7 @@ Вікіпедія - Вікіпедія Бета - Вікіпедія Альфа - Вікімедіа + Wikipedia Beta + Wikipedia Alpha + Wikimedia Назад Назад Уперед @@ -38,7 +40,7 @@ Редагування Більше Пошук - Не вдається підключитися до інтернету. + Не вдається під\'єднатися до інтернету. Повторити Повторити Повторити @@ -129,9 +131,9 @@ Переглянути на мапі Читати іншою мовою Доступно %d іншими мовами - CC BY-SA 3.0 - Зберігаючи, ви погоджуєтеся з <a href=\"%1$s\">Умовами користування</a>, та остаточно публікуєте свій внесок під ліцензією <a href=\"%2$s\">CC BY-SA 3.0</a>. - Зберігаючи, ви погоджуєтеся з <a href=\"%1$s\">Умовами користування</a>, та невідклично публікуєте свій внесок під ліцензією <a href=\"%2$s\">CC BY-SA 3.0</a>. Редагування будуть пов\'язані з IP-адресою вашого пристрою. Якщо ви <a href=\"https://#login\">увійдете до системи</a>, то матимете більше приватності. + CC BY-SA 4.0 + Зберігаючи, ви погоджуєтеся з <a href=\"%1$s\">Умовами користування</a>, та остаточно публікуєте свій внесок під ліцензією <a href=\"%2$s\">CC BY-SA 4.0</a>. + Зберігаючи, ви погоджуєтеся з <a href=\"%1$s\">Умовами користування</a>, та невідклично публікуєте свій внесок під ліцензією <a href=\"%2$s\">CC BY-SA 4.0</a>. Редагування будуть пов\'язані з IP-адресою вашого пристрою. Якщо ви <a href=\"https://#login\">увійдете до системи</a>, то матимете більше приватності. Редагування будуть приписані ІР-адресі вашого пристрою. Якщо ви <a href=\"https://#login\">увійдете в систему</a>, ваші дії будуть більш конфіденційними. Мови Вікіпедії Пошук @@ -257,7 +259,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ/uk https://foundation.wikimedia.org/wiki/Terms_of_Use/uk https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/deed.uk + https://creativecommons.org/licenses/by-sa/4.0/deed.uk https://creativecommons.org/publicdomain/zero/1.0/deed.uk https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/uk https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits/uk#Теги_зображень @@ -267,7 +269,7 @@ Перекладачі Цей додаток був перекладений перекладачами-волонтерами на <a href=\"https://translatewiki.net\">translatewiki.net</a>. Ліцензія - Вихідний код доступний на <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> та <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> під ліцензією <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0</a>. Якщо не вказано інше, вміст доступний під ліцензією <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License\">Creative Commons Attribution-ShareAlike</a>. + Вихідний код доступний на <a href=\"https://gerrit.wikimedia.org/r/#/admin/projects/apps/android/wikipedia\">Gerrit</a> та <a href=\"https://github.com/wikimedia/apps-android-wikipedia\">GitHub</a> під ліцензією <a href=\"https://www.apache.org/licenses/LICENSE-2.0\">Apache 2.0</a>. Якщо не вказано інше, вміст доступний під ліцензією <a href=\"https://creativecommons.org/licenses/by-sa/4.0\">Creative Commons Attribution-ShareAlike</a>. Продукт <a href=\"https://wikimediafoundation.org/\">Фонду Вікімедіа</a> Про програму Сторінка була змінена. Ви впевнені, що хочете вийти без збереження змін? @@ -1024,6 +1026,7 @@ Ви не вибрали жодного тегу для цього зображення До зображень буде додано лише ті теги, які ви виберете. Теги, які ви не виберете, буде позначено як відхилені. Ви впевнені, що хочете позначити всі теги як відхилені? Додати тег + Неопубліковані теги не будуть збережені Розтягніть, щоб збільшити зображення. %s, дякуємо за ваші редагування! Нижче ви можете знайти більше шляхів зробити внесок на Вікіпедії. <b>Вітаємо, %s</b>, нижче ви можете знайти деякі швидкі і прості способи покращити Вікіпедію. Ви одразу побачите свій вплив, щойно почнете. Приємного редагування! @@ -1136,6 +1139,35 @@ Ви додали %d символів Ви додали %d символів + Зображення статті + Додати пропоновані зображення до статей Вікіпедії, щоб покращити розуміння. + Ви б додали це зображення до статті? + Керівництво + Так + Ні + Не впевнений + Чому ні? + Ваші відповіді допоможуть покращити наступні пропозиції. + Зображення не релевантне + Недостатньо інформації, щоб прийняти рішення + Зображення образливе + Зображення низької якості + Я не знаю цю тему + Інше + Надіслати + Додайте відсутні зображення до статей у запропонованих редагуваннях + Зображення допомагають людям зрозуміти, але в багатьох статтях їх немає. + Ви вирішуєте, чи слід розміщувати запропоноване зображення у статті Вікіпедії. + Пропозиції генеруються машиною, і ви на свій розсуд вирішуєте, прийняти їх чи відхилити. + Зображення взято з Wikimedia Commons, колекції вільно ліцензованих зображень, які використовуються Вікіпедією. + Перегляньте цю статтю, щоб зрозуміти її тему + Перегляньте зображення та пов’язану з ним інформацію + Вирішіть, чи допоможе зображення краще зрозуміти читачам цю тему + Далі + Перегляньте статтю, щоб зрозуміти її тему, і перегляньте зображення + Додати зображення + Додати підпис + Переглянути Сторінка файлу Додати підпис зображення Додайте теги зображень @@ -1238,12 +1270,12 @@ Вставити медіа Обрати файл з Вікісховища Пошук медіа - Параметри медіафайлу + Додати інформацію про зображення Завантажене зображення Підпис - Напис, який усі читачі бачитимуть поруч із файлом + Напис, який усі читачі бачитимуть поруч із зображенням Альтернативний текст - Текстовий опис для читачів, які не можуть побачити зображення + Опис для читачів, які не можуть побачити зображення Розширені налаштування Обтікання текстом зображення Розташування зображення @@ -1273,7 +1305,7 @@ Статті та сторінки, які ви раніше додали до свого списку спостереження, можна знайти в меню Більше, в пункті <b>Список спостереження</b>. Гаразд Гаразд - Скасувати + Назад Скасувати Обговорення Обговорення: %s @@ -1370,7 +1402,7 @@ Абзац додано Абзац вилучено Скасувати редагування - Це скасує зміни, внесені версією(-ями) статті, показаної(-ими) тут. + Це прибере зміни, внесені версією(-ями) статті, що показано тут. Щоб продовжити, вкажіть, будь ласка, причину скасування цього редагування: Версію скасовано. Ви впевнені, що хочете відкотити редагування? @@ -1489,4 +1521,6 @@ Спільні списки читання є тестовою функцією і нам потрібні ваші відгуки, щоб ми могли її покращити або прибрати. Прийняти Відхилити + Проблеми сторінки + Незначні виправлення помилок і вдосконалення diff --git a/app/src/main/res/values-ur/strings.xml b/app/src/main/res/values-ur/strings.xml index f8293e4ea22..acd8221a610 100644 --- a/app/src/main/res/values-ur/strings.xml +++ b/app/src/main/res/values-ur/strings.xml @@ -83,9 +83,9 @@ نقشے پر دیکھیں دوسری زبان میں پڑھیں %d دیگر زبانوں میں دستیاب ہے - CC BY-SA 3.0 - محفوظ کرنے پر آپ کو <a href=\"%1$s\">استعمال کی شرائط</a> سے متفق اور ترامیم کو<a href=\"%2$s\">CC BY-SA 3.0</a> اجازت نامے کے تحت آزاد سمجھا جائے گا۔ - شائع کرنے پر آپ کو <a href=\"%1$s\">استعمال کی شرائط</a> سے متفق اور ترامیم کو<a href=\"%2$s/\">CC BY-SA 3.0</a> اجازت نامے کے تحت آزاد سمجھا جائے گا۔ واضح رہے کہ ان ترامیم کو آپ کے آئی پی پتے سے منسلک کیا جائے گا، تاہم اگر آپ <a href=\"https://#login\">لاگ ان</a> ہوجائیں تو آپکا آئی پی پتا ظاہر نہیں ہوگا۔ + CC BY-SA 3.0 + محفوظ کرنے پر آپ کو <a href=\"%1$s\">استعمال کی شرائط</a> سے متفق اور ترامیم کو<a href=\"%2$s\">CC BY-SA 3.0</a> اجازت نامے کے تحت آزاد سمجھا جائے گا۔ + شائع کرنے پر آپ کو <a href=\"%1$s\">استعمال کی شرائط</a> سے متفق اور ترامیم کو<a href=\"%2$s/\">CC BY-SA 3.0</a> اجازت نامے کے تحت آزاد سمجھا جائے گا۔ واضح رہے کہ ان ترامیم کو آپ کے آئی پی پتے سے منسلک کیا جائے گا، تاہم اگر آپ <a href=\"https://#login\">لاگ ان</a> ہوجائیں تو آپکا آئی پی پتا ظاہر نہیں ہوگا۔ ویکیپیڈیا کی زبانیں تلاش یہ صفحہ دوسری زبانوں میں دستیاب نہیں ہے۔ @@ -205,7 +205,6 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ#Offline_reading_and_data https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://ur.wikipedia.org/wiki/وپ:اکاؤنٹ کے لیے درخواست دیں - https://creativecommons.org/licenses/by-sa/3.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags diff --git a/app/src/main/res/values-uz/strings.xml b/app/src/main/res/values-uz/strings.xml index 64369473059..03508129159 100644 --- a/app/src/main/res/values-uz/strings.xml +++ b/app/src/main/res/values-uz/strings.xml @@ -1,5 +1,6 @@ - diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 6c9a2d666ff..4a710e81e72 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -44,7 +44,7 @@ 320dp 360dp 280dp - 400dp + 112dp diff --git a/app/src/main/res/values/languages_list.xml b/app/src/main/res/values/languages_list.xml index c20b687fc4d..d00e849e0b7 100644 --- a/app/src/main/res/values/languages_list.xml +++ b/app/src/main/res/values/languages_list.xml @@ -5,10 +5,10 @@ es ru ja - de fr + de it - ar + pt zh-cn zh-hans zh-hant @@ -17,35 +17,35 @@ zh-my zh-sg zh-tw - pt + ar tr - id fa pl + id nl - hi vi + hi uk ko th sv cs - ro hu - simple + ro he - el + simple fi + el sr-ec sr-el sr - bn nb - ms + bn hr + ms da bg - ta + arz kk-arab kk-cn kk-cyrl @@ -53,308 +53,668 @@ kk-latn kk-tr kk + ta sk ca - mr + az uz-cyrl uz-latn uz - arz + mr sh-cyrl sh-latn sh - az tl lt - te bs ka sl + te + zh-yue sq + hy ml - zh-yue et - hy lv - kn ur - mk af - eu + mk + kn ky + eu sw - nn gl - ast + nn + mn km - gu - si + ast be - mn + gu my eo + si + is + bh + ceb ckb be-x-old - bh - nds-nl - zh-min-nan + cy + la as - is - sco - bcl - ceb - fiu-vro als - ilo - lmo an - war - la - cy - nso ne - vec + bcl + zh-min-nan + sco + azb + nds-nl tg-latn tg + war + pa + br + ary so + lmo + am + ha + ilo + fiu-vro tk + jv + wuu-hans + wuu-hant wuu + lb + vec oc + fy + bar + mzn + nso + tt + scn diq map-bms - ha - pa - scn - br - azb - jv - am - fy + ga + pnb + ig nds - ary - bar - lb - nah + io hif + ku-arab + ku-latn + ku xmf + mg + ba + mai eml - io - pnb + nah + cv + min + ce + bat-smg frr + ia lij su - min - bat-smg - mg - tt - avk - crh-cyrl - crh-latn - crh - ga - ig - ku-arab - ku-latn - ku - nap ban-bali ban-x-dharma ban-x-palmleaf ban-x-pku ban - hsb - qu - vls - ia - pam - cv sah + fo + crh-cyrl + crh-latn + crh + gn + avk + ht + qu + yi + bo + ve + nap + li + hsb sn - mzn + ang + vls rue - li - gor - szl - fo + pam gd - yi + ps + szl + or smn + gor + zh-classical + vo stq - nrm - fur - ht - ba - ang - mai - ce - tpi - zea - pag - gag - gn - kab kw - or - frp - vep - cdo - roa-tara - cbk-zam - vo - co - ps + kab + fur + lld sc + cdo + nrm yo - wa - ext - csb - olo - bjn - lfn - mhr pms - pap - roa-rup ace + frp gan-hans gan-hant gan + co + vep + gag + zea + ext + bjn hak - nov - zh-classical - ksh - gv bpy + rw + pag + roa-tara + tpi + lfn + wa + cbk-zam + hyw + csb + om kaa + pap + mhr + gv se - bo - lld + sd zu - shn - dsb - hyw - za - rw + olo + mt + roa-rup + new lo - arc - sd - tet - srn - jam sa - lad - om - gcr - pcd os - krc - ie - new - mt + dsb + ksh + nov + arc + pcd + ie + za + shn + lad + jam pdc + ay mi - mdf + tet kv - pih + gcr + krc + av + mni + ug + mdf + srn + ln jbo - ay + bxr + udm + pih fj + mwl xal - ln + rm + dty kbp + gom tcy - rm - av - mwl - tn - ug + glk + nv xh - gom - na - sm - pfl - udm - ts - bxr - tum - dty - ty lez - haw myv - wo - glk - dag - bi + tum dv - kg - rmy + pfl + haw + ts inh + bi + anp + tn sat + sm + awa + wo + dag lg - nv + chr + cu + kg + rmy + tw shi-latn shi-tfng shi - ami - chr - ff - trv - tw - ltg bug - bm + ami + ks + ty tyv - cu - awa ny - mni - ki - szy - ks - atj - ee - chy - to + bm mrj - ik - ss - mad - st + szy koi - kl + ltg + kbd + ady + to + ff + ee + atj ike-cans ike-latn iu - kbd - ve - ak + trv + mnw + mad + ki + ss + chy + kcg + ch + ik got + st + lbe + alt rn - ch - din - pnt dz - lbe - kcg - ady - pi - ti - mnw + kl + pnt + skr nia - sg - alt + ti + din blk - skr - cr + sg + pi nqo tay + cr + guc pwn guw + gur pcm + fat + test + ab + + + en + es + ru + ja + fr + de + it + pt + zh-Hans-CN + zh-Hans + zh-Hant + zh-Hant-HK + zh-Hant-MO + zh-Hans-MY + zh-Hans-SG + zh-Hant-TW + ar + tr + fa + pl + id + nl + vi + hi + uk + ko + th + sv + cs + hu + ro + he + en-simple + fi + el + sr-Cyrl + sr-Latn + sr + nb + bn + hr + ms + da + bg + arz + kk-Arab + kk-Arab-CN + kk-Cyrl + kk-KZ + kk-Latn + kk-Latn-TR + kk + ta + sk + ca + az + uz-Cyrl + uz-Latn + uz + mr + sh-Cyrl + sh-Latn + sh + tl + lt + bs + ka + sl + te + yue + sq + hy + ml + et + lv + ur + af + mk + kn + ky + eu + sw + gl + nn + mn + km + ast + be + gu + my + eo + si + is + bh + ceb + ckb + be-tarask + cy + la + as + gsw + an + ne + bcl + nan + sco + azb + nds-NL + tg-Latn + tg + war + pa + br + ary + so + lmo + am + ha + ilo + vro + tk + jv + wuu-Hans + wuu-Hant + wuu + lb + vec + oc + fy + bar + mzn + nso + tt + scn + diq + jv-x-bms + ga + pnb + ig + nds + io + hif + ku-Arab + ku-Latn + ku + xmf + mg + ba + mai + egl + nah + cv + min + ce + sgs + frr + ia + lij + su + ban-Bali + ban-x-dharma + ban-x-palmleaf + ban-x-pku + ban + sah + fo + crh-Cyrl + crh-Latn + crh + gn + avk + ht + qu + yi + bo + ve + nap + li + hsb + sn + ang + vls + rue + pam + gd + ps + szl + or + smn + gor + lzh + vo + stq + kw + kab + fur + lld + sc + cdo + nrf + yo + pms + ace + frp + gan-Hans + gan-Hant + gan + co + vep + gag + zea + ext + bjn + hak + bpy + rw + pag + nap-x-tara + tpi + lfn + wa + cbk + hyw + csb + om + kaa + pap + mhr + gv + se + sd + zu + olo + mt + rup + new + lo + sa + os + dsb + ksh + nov + arc + pcd + ie + za + shn + lad + jam + pdc + ay + mi + tet + kv + gcr + krc + av + mni + ug + mdf + srn + ln + jbo + bxr + udm + pih + fj + mwl + xal + rm + dty + kbp + gom + tcy + glk + nv + xh + lez + myv + tum + dv + pfl + haw + ts + inh + bi anp + tn + sat + sm + awa + wo + dag + lg + chr + cu + kg + rmy + tw + shi-Latn + shi-Tfng + shi + bug + ami + ks + ty + tyv + ny + bm + mrj + szy + koi + ltg + kbd + ady + to + ff + ee + atj + ike-Cans + ike-Latn + iu + trv + mnw + mad + ki + ss + chy + kcg + ch + ik + got + st + lbe + alt + rn + dz + kl + pnt + skr + nia + ti + din + blk + sg + pi + nqo + tay + cr guc + pwn + guw gur + pcm + fat test ab @@ -363,10 +723,10 @@ español русский 日本語 - Deutsch français + Deutsch italiano - العربية + português 中文(中国大陆) 中文(简体) 中文(繁體) @@ -375,35 +735,35 @@ 中文(马来西亚) 中文(新加坡) 中文(臺灣) - português + العربية Türkçe - Bahasa Indonesia فارسی polski + Bahasa Indonesia Nederlands - हिन्दी Tiếng Việt + हिन्दी українська 한국어 ไทย svenska čeština - română magyar - Simple English + română עברית - Ελληνικά + Simple English suomi + Ελληνικά српски (ћирилица) srpski (latinica) српски / srpski - বাংলা norsk bokmål - Bahasa Melayu + বাংলা hrvatski + Bahasa Melayu dansk български - தமிழ் + مصرى قازاقشا (تٴوتە) قازاقشا (جۇنگو) қазақша (кирил) @@ -411,308 +771,309 @@ qazaqşa (latın) qazaqşa (Türkïya) қазақша + தமிழ் slovenčina català - मराठी + azərbaycanca ўзбекча oʻzbekcha oʻzbekcha / ўзбекча - مصرى + मराठी српскохрватски (ћирилица) srpskohrvatski (latinica) srpskohrvatski / српскохрватски - azərbaycanca Tagalog lietuvių - తెలుగు bosanski ქართული slovenščina + తెలుగు + 粵語 shqip + հայերեն മലയാളം - 粵語 eesti - հայերեն latviešu - ಕನ್ನಡ اردو - македонски Afrikaans - euskara + македонски + ಕನ್ನಡ кыргызча + euskara Kiswahili - norsk nynorsk galego - asturianu + norsk nynorsk + монгол ភាសាខ្មែរ - ગુજરાતી - සිංහල + asturianu беларуская - монгол + ગુજરાતી မြန်မာဘာသာ Esperanto + සිංහල + íslenska + भोजपुरी + Cebuano کوردی беларуская (тарашкевіца) - भोजपुरी - Nedersaksies - Bân-lâm-gú + Cymraeg + Latina অসমীয়া - íslenska - Scots - Bikol Central - Cebuano - võro Alemannisch - Ilokano - lombard aragonés - Winaray - Latina - Cymraeg - Sesotho sa Leboa नेपाली - vèneto + Bikol Central + Bân-lâm-gú + Scots + تۆرکجه + Nedersaksies tojikī тоҷикӣ + Winaray + ਪੰਜਾਬੀ + brezhoneg + الدارجة Soomaaliga + lombard + አማርኛ + Hausa + Ilokano + võro Türkmençe + Jawa + 吴语(简体) + 吳語(正體) 吴语 + Lëtzebuergesch + vèneto occitan + Frysk + Boarisch + مازِرونی + Sesotho sa Leboa + татарча / tatarça + sicilianu Zazaki Basa Banyumasan - Hausa - ਪੰਜਾਬੀ - sicilianu - brezhoneg - تۆرکجه - Jawa - አማርኛ - Frysk + Gaeilge + پنجابی + Igbo Plattdüütsch - الدارجة - Boarisch - Lëtzebuergesch - Nāhuatl + Ido Fiji Hindi + كوردي (عەرەبی) + kurdî (latînî) + kurdî მარგალური + Malagasy + башҡортса + मैथिली emiliàn e rumagnòl - Ido - پنجابی + Nāhuatl + чӑвашла + Minangkabau + нохчийн + žemaitėška Nordfriisk + interlingua Ligure Sunda - Minangkabau - žemaitėška - Malagasy - татарча / tatarça - Kotava - къырымтатарджа (Кирилл) - qırımtatarca (Latin) - qırımtatarca - Gaeilge - Igbo - كوردي (عەرەبی) - kurdî (latînî) - kurdî - Napulitano ᬩᬲᬩᬮᬶ Basa Bali - hornjoserbsce - Runa Simi - West-Vlams - interlingua - Kapampangan - чӑвашла саха тыла + føroyskt + къырымтатарджа (Кирилл) + qırımtatarca (Latin) + qırımtatarca + Avañe\'ẽ + Kotava + Kreyòl ayisyen + Runa Simi + ייִדיש + བོད་ཡིག + Tshivenda + Napulitano + Limburgs + hornjoserbsce chiShona - مازِرونی + Ænglisc + West-Vlams русиньскый - Limburgs - Bahasa Hulontalo - ślůnski - føroyskt + Kapampangan Gàidhlig - ייִדיש + پښتو + ślůnski + ଓଡ଼ିଆ anarâškielâ + Bahasa Hulontalo + 文言 + Volapük Seeltersk - Nouormand - furlan - Kreyòl ayisyen - башҡортса - Ænglisc - मैथिली - нохчийн - Tok Pisin - Zeêuws - Pangasinan - Gagauz - Avañe\'ẽ - Taqbaylit kernowek - ଓଡ଼ିଆ - arpetan - vepsän kel’ - 閩東語 / Mìng-dĕ̤ng-ngṳ̄ - tarandíne - Chavacano de Zamboanga - Volapük - corsu - پښتو + Taqbaylit + furlan + Ladin sardu + 閩東語 / Mìng-dĕ̤ng-ngṳ̄ + Nouormand Yorùbá - walon - estremeñu - kaszëbsczi - livvinkarjala - Banjar - Lingua Franca Nova - олык марий Piemontèis - Papiamentu - armãneashti Acèh + arpetan 赣语(简体) 贛語(繁體) 贛語 + corsu + vepsän kel’ + Gagauz + Zeêuws + estremeñu + Banjar 客家語/Hak-kâ-ngî - Novial - 文言 - Ripoarisch - Gaelg বিষ্ণুপ্রিয়া মণিপুরী + Ikinyarwanda + Pangasinan + tarandíne + Tok Pisin + Lingua Franca Nova + walon + Chavacano de Zamboanga + Արեւմտահայերէն + kaszëbsczi + Oromoo Qaraqalpaqsha + Papiamentu + олык марий + Gaelg davvisámegiella - བོད་ཡིག - Ladin + سنڌي isiZulu - ၽႃႇသႃႇတႆး - dolnoserbski - Արեւմտահայերէն - Vahcuengh - Ikinyarwanda + livvinkarjala + Malti + armãneashti + नेपाल भाषा ລາວ - ܐܪܡܝܐ - سنڌي - tetun - Sranantongo - Patois संस्कृतम् - Ladino - Oromoo - kriyòl gwiyannen - Picard ирон - къарачай-малкъар + dolnoserbski + Ripoarisch + Novial + ܐܪܡܝܐ + Picard Interlingue - नेपाल भाषा - Malti + Vahcuengh + ၽႃႇသႃႇတႆး + Ladino + Patois Deitsch + Aymar aru Māori - мокшень + tetun коми - Norfuk / Pitkern - la .lojban. - Aymar aru - Na Vosa Vakaviti - хальмг - lingála - Kabɩyɛ - ತುಳು - rumantsch + kriyòl gwiyannen + къарачай-малкъар авар - Mirandés - Setswana + ꯃꯤꯇꯩ ꯂꯣꯟ ئۇيغۇرچە / Uyghurche - isiXhosa - गोंयची कोंकणी / Gõychi Konknni - Dorerin Naoero - Gagana Samoa - Pälzisch - удмурт - Xitsonga + мокшень + Sranantongo + lingála + la .lojban. буряад - chiTumbuka + удмурт + Norfuk / Pitkern + Na Vosa Vakaviti + Mirandés + хальмг + rumantsch डोटेली - reo tahiti + Kabɩyɛ + गोंयची कोंकणी / Gõychi Konknni + ತುಳು + گیلکی + Diné bizaad + isiXhosa лезги - Hawaiʻi эрзянь - Wolof - گیلکی - dagbanli - Bislama + chiTumbuka ދިވެހިބަސް - Kongo - romani čhib + Pälzisch + Hawaiʻi + Xitsonga гӀалгӀай + Bislama + अंगिका + Setswana ᱥᱟᱱᱛᱟᱲᱤ + Gagana Samoa + अवधी + Wolof + dagbanli Luganda - Diné bizaad + ᏣᎳᎩ + словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ + Kongo + romani čhib + Twi Taclḥit ⵜⴰⵛⵍⵃⵉⵜ Taclḥit - Pangcah - ᏣᎳᎩ - Fulfulde - Seediq - Twi - latgaļu ᨅᨔ ᨕᨘᨁᨗ - bamanankan + Pangcah + कॉशुर / کٲشُر + reo tahiti тыва дыл - словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ - अवधी Chi-Chewa - ꯃꯤꯇꯩ ꯂꯣꯟ - Gĩkũyũ - Sakizaya - कॉशुर / کٲشُر - Atikamekw - eʋegbe - Tsetsêhestâhese - lea faka-Tonga + bamanankan кырык мары - Iñupiatun - SiSwati - Madhurâ - Sesotho + Sakizaya перем коми - kalaallisut + latgaļu + адыгэбзэ + адыгабзэ + lea faka-Tonga + Fulfulde + eʋegbe + Atikamekw ᐃᓄᒃᑎᑐᑦ inuktitut ᐃᓄᒃᑎᑐᑦ / inuktitut - адыгэбзэ - Tshivenda - Akan + Seediq + ဘာသာ မန် + Madhurâ + Gĩkũyũ + SiSwati + Tsetsêhestâhese + Tyap + Chamoru + Iñupiatun 𐌲𐌿𐍄𐌹𐍃𐌺 + Sesotho + лакку + алтай тил ikirundi - Chamoru - Thuɔŋjäŋ - Ποντιακά ཇོང་ཁ - лакку - Tyap - адыгабзэ - पालि - ትግርኛ - ဘာသာ မန် + kalaallisut + Ποντιακά + سرائیکی Li Niha - Sängö - алтай тил + ትግርኛ + Thuɔŋjäŋ ပအိုဝ်ႏဘာႏသာႏ - سرائیکی - Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ + Sängö + पालि ߒߞߏ Tayal + Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ + wayuunaiki pinayuanan gungbe - Naijá - अंगिका - wayuunaiki farefare + Naijá + mfantse Test аԥсшәа @@ -721,10 +1082,10 @@ Spanish Russian Japanese - German French + German Italian - Arabic + Portuguese Chinese (China) Simplified Chinese Traditional Chinese @@ -733,35 +1094,35 @@ Chinese (Malaysia) Chinese (Singapore) Chinese (Taiwan) - Portuguese + Arabic Turkish - Indonesian Persian Polish + Indonesian Dutch - Hindi Vietnamese + Hindi Ukrainian Korean Thai Swedish Czech - Romanian Hungarian - Simple English + Romanian Hebrew - Greek + Simple English Finnish + Greek Serbian (Cyrillic script) Serbian (Latin script) Serbian - Bangla Norwegian - Malay + Bangla Croatian + Malay Danish Bulgarian - Tamil + Egyptian Arabic Kazakh (Arabic script) Kazakh (China) Kazakh (Cyrillic script) @@ -769,308 +1130,309 @@ Kazakh (Latin script) Kazakh (Turkey) Kazakh + Tamil Slovak Catalan - Marathi + Azerbaijani Uzbek (Cyrillic script) Uzbek (Latin script) Uzbek - Egyptian Arabic + Marathi српскохрватски (ћирилица) srpskohrvatski (latinica) Serbo-Croatian - Azerbaijani Tagalog Lithuanian - Telugu Bosnian Georgian Slovenian + Telugu + Cantonese Albanian + Armenian Malayalam - Cantonese Estonian - Armenian Latvian - Kannada Urdu - Macedonian Afrikaans - Basque + Macedonian + Kannada Kyrgyz + Basque Swahili - Norwegian Nynorsk Galician - Asturian + Norwegian Nynorsk + Mongolian Khmer - Gujarati - Sinhala + Asturian Belarusian - Mongolian + Gujarati Burmese Esperanto + Sinhala + Icelandic + Bhojpuri + Cebuano Central Kurdish Belarusian (Taraškievica orthography) - Bhojpuri - Low Saxon - Chinese (Min Nan) + Welsh + Latin Assamese - Icelandic - Scots - Central Bikol - Cebuano - võro Alemannisch - Iloko - Lombard Aragonese - Waray - Latin - Welsh - Northern Sotho Nepali - Venetian + Central Bikol + Chinese (Min Nan) + Scots + South Azerbaijani + Low Saxon Tajik (Latin script) Tajik + Waray + Punjabi + Breton + Moroccan Arabic Somali + Lombard + Amharic + Hausa + Iloko + võro Turkmen + Javanese + 吴语(简体) + 吳語(正體) Wu Chinese + Luxembourgish + Venetian Occitan + Western Frisian + Bavarian + Mazanderani + Northern Sotho + Tatar + Sicilian Zazaki Basa Banyumasan - Hausa - Punjabi - Sicilian - Breton - South Azerbaijani - Javanese - Amharic - Western Frisian + Irish + Western Punjabi + Igbo Low German - Moroccan Arabic - Bavarian - Luxembourgish - Nāhuatl + Ido Fiji Hindi + Kurdish (Arabic script) + Kurdish (Latin script) + Kurdish Mingrelian + Malagasy + Bashkir + Maithili Emiliano-Romagnolo - Ido - Western Punjabi + Nāhuatl + Chuvash + Minangkabau + Chechen + Samogitian Northern Frisian + Interlingua Ligurian Sundanese - Minangkabau - Samogitian - Malagasy - Tatar - Kotava + ᬩᬲᬩᬮᬶ + + + + Balinese + Yakut + Faroese Crimean Tatar (Cyrillic script) Crimean Tatar (Latin script) Crimean Tatar - Irish - Igbo - Kurdish (Arabic script) - Kurdish (Latin script) - Kurdish + Guarani + Kotava + Haitian Creole + Quechua + Yiddish + Tibetan + Venda Neapolitan - ᬩᬲᬩᬮᬶ - - - - Balinese + Limburgish Upper Sorbian - Quechua - West Flemish - Interlingua - Pampanga - Chuvash - Yakut Shona - Mazanderani + Old English + West Flemish Rusyn - Limburgish - Gorontalo - Silesian - Faroese + Pampanga Scottish Gaelic - Yiddish + Pashto + Silesian + Odia Inari Sami + Gorontalo + Classical Chinese + Volapük Saterland Frisian - Norman - Friulian - Haitian Creole - Bashkir - Old English - Maithili - Chechen - Tok Pisin - Zeelandic - Pangasinan - Gagauz - Guarani - Kabyle Cornish - Odia - Arpitan - Veps - Min Dong Chinese - Tarantino - Chavacano - Volapük - Corsican - Pashto + Kabyle + Friulian + Ladin Sardinian + Min Dong Chinese + Norman Yoruba - Walloon - Extremaduran - Kashubian - Livvi-Karelian - Banjar - Lingua Franca Nova - Eastern Mari Piedmontese - Papiamento - Aromanian Achinese + Arpitan Gan (Simplified) Gan (Traditional) Gan Chinese + Corsican + Veps + Gagauz + Zeelandic + Extremaduran + Banjar Hakka Chinese - Novial - Classical Chinese - Colognian - Manx Bishnupriya + Kinyarwanda + Pangasinan + Tarantino + Tok Pisin + Lingua Franca Nova + Walloon + Chavacano + Western Armenian + Kashubian + Oromo Kara-Kalpak + Papiamento + Eastern Mari + Manx Northern Sami - Tibetan - Ladin + Sindhi Zulu - Shan - Lower Sorbian - Western Armenian - Zhuang - Kinyarwanda + Livvi-Karelian + Maltese + Aromanian + Newari Lao - Aramaic - Sindhi - Tetum - Sranan Tongo - Jamaican Creole English Sanskrit - Ladino - Oromo - Guianan Creole - Picard Ossetic - Karachay-Balkar + Lower Sorbian + Colognian + Novial + Aramaic + Picard Interlingue - Newari - Maltese + Zhuang + Shan + Ladino + Jamaican Creole English Pennsylvania German + Aymara Māori - Moksha + Tetum Komi - Norfuk / Pitkern + Guianan Creole + Karachay-Balkar + Avaric + Manipuri + Uyghur + Moksha + Sranan Tongo + Lingala Lojban - Aymara + Russia Buriat + Udmurt + Norfuk / Pitkern Fijian + Mirandese Kalmyk - Lingala + Romansh + Doteli Kabiye + Goan Konkani Tulu - Romansh - Avaric - Mirandese - Tswana - Uyghur + Gilaki + Navajo Xhosa - Goan Konkani - Nauru - Samoan - Palatine German - Udmurt - Tsonga - Russia Buriat - Tumbuka - Doteli - Tahitian Lezghian - Hawaiian Erzya - Wolof - Gilaki - Dagbani - Bislama + Tumbuka Divehi - Kongo - Vlax Romani + Palatine German + Hawaiian + Tsonga Ingush + Bislama + Angika + Tswana Santali + Samoan + Awadhi + Wolof + Dagbani Ganda - Navajo + Cherokee + Church Slavic + Kongo + Vlax Romani + Twi Tachelhit (Latin script) Tachelhit (Tifinagh script) Tachelhit - Amis - Cherokee - Fula - Taroko - Twi - Latgalian Buginese - Bambara + Amis + Kashmiri + Tahitian Tuvinian - Church Slavic - Awadhi Nyanja - Manipuri - Kikuyu - Sakizaya - Kashmiri - Atikamekw - Ewe - Cheyenne - Tongan + Bambara Western Mari - Inupiaq - Swati - Madurese - Southern Sotho + Sakizaya Komi-Permyak - Kalaallisut + Latgalian + Kabardian + Adyghe + Tongan + Fula + Ewe + Atikamekw Eastern Canadian (Aboriginal syllabics) Eastern Canadian (Latin script) Inuktitut - Kabardian - Venda - Akan + Taroko + Mon + Madurese + Kikuyu + Swati + Cheyenne + Tyap + Chamorro + Inupiaq Gothic + Southern Sotho + Lak + Southern Altai Rundi - Chamorro - Dinka - Pontic Dzongkha - Lak - Tyap - Adyghe - Pali - Tigrinya - Mon + Kalaallisut + Pontic + Saraiki Nias - Sango - Southern Altai + Tigrinya + Dinka Pa\'O - Saraiki - Cree + Sango + Pali N’Ko Tayal + Cree + Wayuu Paiwan Gun - Nigerian Pidgin - Angika - Wayuu Frafra + Nigerian Pidgin + Fanti Test Abkhazian @@ -1086,6 +1448,7 @@ sr,sr-ec,sr-el tg,tg-latn uz,uz-cyrl,uz-latn + wuu,wuu-hans,wuu-hant zh,zh-cn,zh-hans,zh-hant,zh-hk,zh-mo,zh-my,zh-sg,zh-tw diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index 2889295b50f..a32bafee058 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -86,7 +86,6 @@ showRemoveChineseVariantPrompt downloadOnlyOverWiFi downloadReadingListArticles - locallyKnownNotifications remoteNotificationsSeenTime saveCountReadingLists historyOfflineArticlesToast diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 91780b986a7..debb4409ac0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -114,9 +114,9 @@ View on a map Read in another language Available in %d other languages - CC BY-SA 3.0 - Terms of Use, and to irrevocably release your contributions under the CC BY-SA 3.0 license.]]> - Terms of Use, and to irrevocably release your contributions under the CC BY-SA 3.0 license. Edits will be attributed to the IP address of your device. If you log in, you will have more privacy.]]> + CC BY-SA 4.0 + Terms of Use, and to irrevocably release your contributions under the CC BY-SA 4.0 license.]]> + Terms of Use, and to irrevocably release your contributions under the CC BY-SA 4.0 license. Edits will be attributed to the IP address of your device. If you log in, you will have more privacy.]]> log in, you will have more privacy.]]> Wikipedia languages Search @@ -242,7 +242,7 @@ https://www.mediawiki.org/wiki/Wikimedia_Apps/Android_FAQ https://foundation.wikimedia.org/wiki/Terms_of_Use https://en.wikipedia.org/wiki/Wikipedia:Request_an_account - https://creativecommons.org/licenses/by-sa/3.0/ + https://creativecommons.org/licenses/by-sa/4.0/ https://creativecommons.org/publicdomain/zero/1.0/ https://m.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits https://www.mediawiki.org/wiki/Wikimedia_Apps/Suggested_edits#Image_tags @@ -252,7 +252,7 @@ Translators translatewiki.net.]]> License - Gerrit and GitHub under the Apache 2.0 License. Unless otherwise specified, content is available under a Creative Commons Attribution-ShareAlike License.]]> + Gerrit and GitHub under the Apache 2.0 License. Unless otherwise specified, content is available under a Creative Commons Attribution-ShareAlike License.]]> Wikimedia Foundation]]> About The page has been modified. Are you sure you want to exit without saving your changes? @@ -374,6 +374,7 @@ Article cannot be loaded while offline. Hint: Add the article to a reading list and it will be downloaded once you\'re back online. You are reading an offline version of this article saved on %s. + Redirected from \"%s\" Get directions Could not find any apps that provide directions. Explore Feed @@ -996,6 +997,7 @@ You haven\'t selected any tags for this image Only tags that you choose will be added to images. Tags that are not selected will be marked as rejected. Are you sure you want to mark all tags as rejected? Add tag + The unpublished tags will not be saved Pinch to zoom this image. %s\, thanks for your edits. Below you can find more ways to contribute to Wikipedia. Hi %s\, below you can find some quick and easy ways to help improve Wikipedia. You\'ll see the difference you\'re making as soon as you get started. Happy editing!]]> @@ -1092,6 +1094,35 @@ You added %d character You added %d characters + Article images + Add suggested images to Wikipedia articles to enhance understanding. + Would you add this image to the article? + Tutorial + Yes + No + Not sure + Why not? + Your answers improve future suggestions. + Image is not relevant + Not enough information to decide + Image is offensive + Image is low quality + I don\'t know this subject + Other + Submit + Add missing images to articles in Suggested Edits + Pictures help people understand, but many articles don\'t have them. + You will decide if a suggested image should be placed in a Wikipedia article. + Suggestions are machine generated and you will use your judgment to decide whether to accept or reject them. + Images are from Wikimedia Commons, a collection of freely licensed images used by Wikipedia. + Review this article to understand its topic + Inspect the image and its associated information + Decide if the image helps readers understand this topic better + Next + Please review the article to understand its topic and inspect the image + Added image + Added caption + View @@ -1221,12 +1252,12 @@ Insert media Select a file from Wikimedia Commons Search media - Media settings + Add image details Uploaded image - Caption - Label that shows next to the item for all readers + Image caption + Visible image label in the article Alternative text - Text description for readers who cannot see the image + Description for visually impaired readers Advanced settings Wrap text around image Image position @@ -1480,5 +1511,7 @@ Accept Reject + Page issues + Minor bug fixes and enhancements diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5adf8405985..02c0ce52658 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -11,7 +11,9 @@ @style/App.Button + @style/App.Snackbar @style/SnackbarTextView + @style/SnackbarButton @style/ListView @style/RtlAwareTextView @@ -19,6 +21,8 @@ @style/PreferenceDialogTheme @style/AlertDialogTheme + @style/App.BottomSheetDialogTheme + @style/TextInputLayoutStyle @android:color/black @@ -75,7 +79,6 @@ @drawable/shadow_light @color/color_state_input_field_light - @color/color_state_nav_tab_light @drawable/ic_image_tags_onboarding_light @drawable/ic_sync_illustration_light @@ -208,13 +211,26 @@ ?attr/primary_color - + + + + + + @@ -491,4 +507,12 @@ false + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles_dark.xml b/app/src/main/res/values/styles_dark.xml index d57bb400b92..6bc8351ca6f 100644 --- a/app/src/main/res/values/styles_dark.xml +++ b/app/src/main/res/values/styles_dark.xml @@ -23,7 +23,6 @@ @drawable/divider_dark @drawable/shadow_dark - @color/color_state_nav_tab_dark @color/color_state_input_field_dark @drawable/ic_image_tags_onboarding_dark @drawable/ic_sync_illustration_dark diff --git a/app/src/main/res/xml/developer_preferences.xml b/app/src/main/res/xml/developer_preferences.xml index 4f9c71df678..dec00ddd17c 100644 --- a/app/src/main/res/xml/developer_preferences.xml +++ b/app/src/main/res/xml/developer_preferences.xml @@ -140,11 +140,6 @@ android:title="@string/preference_key_missing_description_test2" android:summary="Fetch a random article that has a description in the current app language, but does *not* have a description in the *second* app language." /> - - item): break lang_keys.insert(rank_pos, key) + lang_bcp47_keys.insert(rank_pos, bcp47key) lang_local_names.insert(rank_pos, local_name) lang_eng_names.insert(rank_pos, eng_name) lang_rank.insert(rank_pos, rank) @@ -80,9 +82,11 @@ def add_variant(lang_code_variants): language_code = 'nb' lang_name = value[u"name"] + lang_bcp47 = language_code for name in lang_list_response[u"query"][u"languages"]: if name[u"code"] == language_code: lang_name = name[u"name"] + lang_bcp47 = name[u"bcp47"] break # add language variants into the list @@ -97,10 +101,12 @@ def add_variant(lang_code_variants): variant_lang_name = "" en_lang_name = "" + variant_bcp47 = variant for name in lang_list_response[u"query"][u"languages"]: if name[u"code"] == variant: variant_lang_name = name[u"name"] + variant_bcp47 = name[u"bcp47"] break for name in lang_list_en_response[u"query"][u"languages"]: @@ -110,7 +116,7 @@ def add_variant(lang_code_variants): language_code_variants = language_code_variants + "," + variant - add_lang(variant, variant_lang_name.replace("'", "\\'"), en_lang_name.replace("'", "\\'"), rank) + add_lang(variant, variant_bcp47, variant_lang_name.replace("'", "\\'"), en_lang_name.replace("'", "\\'"), rank) add_variant(language_code_variants) @@ -118,10 +124,10 @@ def add_variant(lang_code_variants): if language_code == 'zh': continue - add_lang(language_code, lang_name.replace("'", "\\'"), value[u"localname"].replace("'", "\\'"), rank) + add_lang(language_code, lang_bcp47, lang_name.replace("'", "\\'"), value[u"localname"].replace("'", "\\'"), rank) -add_lang(key='test', local_name='Test', eng_name='Test', rank=0) +add_lang(key='test', bcp47key='test', local_name='Test', eng_name='Test', rank=0) # Generate the XML, for Android NAMESPACE = 'http://schemas.android.com/tools' @@ -132,9 +138,11 @@ def add_variant(lang_code_variants): local_names = [x.item(k) for k in lang_local_names] eng_names = [x.item(k) for k in lang_eng_names] language_variants = [x.item(k) for k in lang_variants] +bcp47_keys = [x.item(k) for k in lang_bcp47_keys] resources = x.resources( getattr(x, 'string-array')(*keys, name='preference_language_keys'), + getattr(x, 'string-array')(*bcp47_keys, name='preference_bcp47_keys'), getattr(x, 'string-array')(*local_names, name='preference_language_local_names'), getattr(x, 'string-array')(*eng_names, name='preference_language_canonical_names'), getattr(x, 'string-array')(*language_variants, name='preference_language_variants'))