Merge branch 'main' into explore_migration_kotlin

This commit is contained in:
Nicolas Raoul 2025-03-08 22:28:07 +09:00 committed by GitHub
commit 2514b0899f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 237 additions and 192 deletions

View file

@ -1,96 +0,0 @@
name: Android CI Comment
on:
workflow_run:
workflows: ["Android CI"]
types: [completed]
branches: [main]
permissions:
issues: write
jobs:
comment:
name: Comment on PR with APK links
runs-on: ubuntu-latest
if: github.event.workflow_run.conclusion == 'success'
steps:
- name: Checkout base branch
uses: actions/checkout@v3
with:
ref: ${{ github.event.workflow_run.head_branch }}
- name: Download Run ID Artifact
uses: actions/download-artifact@v4
with:
name: run-id
run-id: ${{ github.event.workflow_run.id }}
- name: Read Run ID
id: read-run-id
run: echo "RUN_ID=$(cat run_id.txt)" >> $GITHUB_ENV
- name: Comment on PR with APK download links
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: actions/github-script@v6
with:
script: |
try {
const token = process.env.GH_TOKEN;
if (!token) {
throw new Error('GITHUB_TOKEN is not set.');
}
const runId = "${{ env.RUN_ID }}";
if (!runId) {
throw new Error('Run ID not found.');
}
// Get the PR number from the workflow_run event
const prNumber = ${{ github.event.workflow_run.pull_requests[0].number }};
if (!prNumber) {
console.log('No PR number found in workflow_run event.');
return;
}
const { data: { artifacts } } = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: runId
});
if (!artifacts || artifacts.length === 0) {
console.log('No artifacts found for this workflow run.');
return;
}
const betaArtifact = artifacts.find(artifact => artifact.name === "betaDebugAPK");
const prodArtifact = artifacts.find(artifact => artifact.name === "prodDebugAPK");
if (!betaArtifact || !prodArtifact) {
console.log('Could not find both Beta and Prod APK artifacts.');
console.log('Available artifacts:', artifacts.map(a => a.name).join(', '));
return;
}
const betaDownloadUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/suites/${runId}/artifacts/${betaArtifact.id}`;
const prodDownloadUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/suites/${runId}/artifacts/${prodArtifact.id}`;
const commentBody = `
📱 **APK for pull request is ready to see the changes** 📱
- [Download Beta APK](${betaDownloadUrl})
- [Download Prod APK](${prodDownloadUrl})
`;
await github.rest.issues.createComment({
issue_number: prNumber,
owner: context.repo.owner,
repo: context.repo.repo,
body: commentBody
});
console.log('Successfully posted comment with APK download links');
} catch (error) {
console.error('Error in PR comment creation:', error);
core.setFailed(`Workflow failed: ${error.message}`);
}

View file

@ -1,10 +1,6 @@
name: Android CI name: Android CI
on: [push, pull_request, workflow_dispatch] on: [push, pull_request, workflow_dispatch]
permissions:
contents: read
actions: read
concurrency: concurrency:
group: build-${{ github.event.pull_request.number || github.ref }} group: build-${{ github.event.pull_request.number || github.ref }}
@ -16,17 +12,17 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Set up JDK - name: Set up JDK
uses: actions/setup-java@v3 uses: actions/setup-java@v4
with: with:
distribution: 'temurin' distribution: 'temurin'
java-version: '17' java-version: '17'
- name: Cache packages - name: Cache packages
id: cache-packages id: cache-packages
uses: actions/cache@v3 uses: actions/cache@v4
with: with:
path: | path: |
~/.gradle/caches ~/.gradle/caches
@ -41,7 +37,7 @@ jobs:
- name: AVD cache - name: AVD cache
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'
uses: actions/cache@v3 uses: actions/cache@v4
id: avd-cache id: avd-cache
with: with:
path: | path: |
@ -106,14 +102,13 @@ jobs:
with: with:
name: prodDebugAPK name: prodDebugAPK
path: app/build/outputs/apk/prod/debug/app-*.apk path: app/build/outputs/apk/prod/debug/app-*.apk
- name: Store Workflow Run ID
if: github.event_name == 'pull_request'
run: echo "${{ github.run_id }}" > run_id.txt
- name: Upload Run ID as Artifact - name: Create and PR number artifact
if: github.event_name == 'pull_request' run: |
echo "{\"pr_number\": ${{ github.event.pull_request.number || 'null' }}}" > pr_number.json
- name: Upload PR number artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: run-id name: pr_number
path: run_id.txt path: ./pr_number.json

View file

@ -8,9 +8,9 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- name: set up JDK 17 - name: set up JDK 17
uses: actions/setup-java@v3 uses: actions/setup-java@v4
with: with:
java-version: '17' java-version: '17'
distribution: 'temurin' distribution: 'temurin'

View file

@ -0,0 +1,96 @@
name: Comment Artifacts on PR
on:
workflow_run:
workflows: [ "Android CI" ]
types: [ completed ]
permissions:
pull-requests: write
contents: read
concurrency:
group: comment-${{ github.event.workflow_run.id }}
cancel-in-progress: true
jobs:
comment:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'pull_request' }}
steps:
- name: Download and process artifacts
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const fs = require('fs');
const runId = context.payload.workflow_run.id;
const allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: runId,
});
const prNumberArtifact = allArtifacts.data.artifacts.find(artifact => artifact.name === "pr_number");
if (!prNumberArtifact) {
console.log("pr_number artifact not found.");
return;
}
const download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: prNumberArtifact.id,
archive_format: 'zip',
});
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/pr_number.zip`, Buffer.from(download.data));
const { execSync } = require('child_process');
execSync('unzip -q pr_number.zip -d ./pr_number/');
fs.unlinkSync('pr_number.zip');
const prData = JSON.parse(fs.readFileSync('./pr_number/pr_number.json', 'utf8'));
const prNumber = prData.pr_number;
if (!prNumber || prNumber === 'null') {
console.log("No valid PR number found in pr_number.json. Skipping.");
return;
}
const artifactsToLink = allArtifacts.data.artifacts.filter(artifact => artifact.name !== "pr_number");
if (artifactsToLink.length === 0) {
console.log("No artifacts to link found.");
return;
}
const comments = await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: Number(prNumber),
});
const oldComments = comments.data.filter(comment =>
comment.body.startsWith("✅ Generated APK variants!")
);
for (const comment of oldComments) {
await github.rest.issues.deleteComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: comment.id,
});
console.log(`Deleted old comment ID: ${comment.id}`);
};
const commentBody = `✅ Generated APK variants!\n` +
artifactsToLink.map(artifact => {
const artifactUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${runId}/artifacts/${artifact.id}`;
return `- 🤖 [Download ${artifact.name}](${artifactUrl})`;
}).join('\n');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: Number(prNumber),
body: commentBody
});

View file

@ -212,8 +212,8 @@ android {
defaultConfig { defaultConfig {
//applicationId 'fr.free.nrw.commons' //applicationId 'fr.free.nrw.commons'
versionCode 1043 versionCode 1046
versionName '5.1.2' versionName '5.1.3'
setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName()) setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
minSdkVersion 21 minSdkVersion 21

View file

@ -125,6 +125,19 @@ class Media constructor(
categoriesHiddenStatus = categoriesHiddenStatus categoriesHiddenStatus = categoriesHiddenStatus
) )
/**
* Returns Author if it's not null or empty, otherwise
* returns user
* @return Author or User
*/
fun getAuthorOrUser(): String? {
return if (!author.isNullOrEmpty()) {
author
} else{
user
}
}
/** /**
* Gets media display title * Gets media display title
* @return Media title * @return Media title

View file

@ -98,14 +98,9 @@ class GridViewAdapter(
*/ */
@SuppressLint("StringFormatInvalid") @SuppressLint("StringFormatInvalid")
private fun setUploaderView(item: Media, uploader: TextView) { private fun setUploaderView(item: Media, uploader: TextView) {
if (!item.author.isNullOrEmpty()) { uploader.text = context.getString(
uploader.visibility = View.VISIBLE R.string.image_uploaded_by,
uploader.text = context.getString( item.getAuthorOrUser()
R.string.image_uploaded_by, )
item.user
)
} else {
uploader.visibility = View.GONE
}
} }
} }

View file

@ -54,7 +54,7 @@ an upload might take a dozen seconds. */
this.contribution = contribution this.contribution = contribution
this.position = position this.position = position
binding.contributionTitle.text = contribution.media.mostRelevantCaption binding.contributionTitle.text = contribution.media.mostRelevantCaption
binding.authorView.text = contribution.media.author binding.authorView.text = contribution.media.getAuthorOrUser()
//Removes flicker of loading image. //Removes flicker of loading image.
binding.contributionImage.hierarchy.fadeDuration = 0 binding.contributionImage.hierarchy.fadeDuration = 0

View file

@ -10,7 +10,7 @@ interface ContributionsContract {
interface View { interface View {
fun showMessage(localizedMessage: String) fun showMessage(localizedMessage: String)
fun getContext(): Context fun getContext(): Context?
} }
interface UserActionListener : BasePresenter<View> { interface UserActionListener : BasePresenter<View> {

View file

@ -74,12 +74,9 @@ import java.util.Date
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Named import javax.inject.Named
class ContributionsFragment class ContributionsFragment : CommonsDaggerSupportFragment(), FragmentManager.OnBackStackChangedListener,
: CommonsDaggerSupportFragment(), FragmentManager.OnBackStackChangedListener,
LocationUpdateListener, MediaDetailProvider, SensorEventListener, ICampaignsView, LocationUpdateListener, MediaDetailProvider, SensorEventListener, ICampaignsView,
ContributionsContract.View, ContributionsContract.View, ContributionsListFragment.Callback {
ContributionsListFragment.Callback {
@JvmField @JvmField
@Inject @Inject
@Named("default_preferences") @Named("default_preferences")
@ -307,9 +304,11 @@ class ContributionsFragment
} }
} }
notification.setOnClickListener { view: View? -> notification.setOnClickListener { view: View? ->
startYourself( context?.let {
context, "unread" startYourself(
) it, "unread"
)
}
} }
} }
@ -500,7 +499,7 @@ class ContributionsFragment
private fun setUploadCount() { private fun setUploadCount() {
okHttpJsonApiClient okHttpJsonApiClient
?.getUploadCount((activity as MainActivity).sessionManager?.currentAccount!!.name) ?.getUploadCount(sessionManager?.currentAccount!!.name)
?.subscribeOn(Schedulers.io()) ?.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread())?.let { ?.observeOn(AndroidSchedulers.mainThread())?.let {
compositeDisposable.add( compositeDisposable.add(
@ -889,14 +888,16 @@ class ContributionsFragment
* this function updates the number of contributions * this function updates the number of contributions
*/ */
fun upDateUploadCount() { fun upDateUploadCount() {
WorkManager.getInstance(context) context?.let {
.getWorkInfosForUniqueWorkLiveData(UploadWorker::class.java.simpleName).observe( WorkManager.getInstance(it)
viewLifecycleOwner .getWorkInfosForUniqueWorkLiveData(UploadWorker::class.java.simpleName).observe(
) { workInfos: List<WorkInfo?> -> viewLifecycleOwner
if (workInfos.size > 0) { ) { workInfos: List<WorkInfo?> ->
setUploadCount() if (workInfos.size > 0) {
setUploadCount()
}
} }
} }
} }
@ -953,7 +954,7 @@ class ContributionsFragment
Timber.d("Skipping re-upload for non-failed %s", contribution.toString()) Timber.d("Skipping re-upload for non-failed %s", contribution.toString())
} }
} else { } else {
showLongToast(context, R.string.this_function_needs_network_connection) context?.let { showLongToast(it, R.string.this_function_needs_network_connection) }
} }
} }

View file

@ -80,9 +80,11 @@ class ContributionsPresenter @Inject internal constructor(
.save(contribution) .save(contribution)
.subscribeOn(ioThreadScheduler) .subscribeOn(ioThreadScheduler)
.subscribe { .subscribe {
makeOneTimeWorkRequest( view!!.getContext()?.applicationContext?.let {
view!!.getContext().applicationContext, ExistingWorkPolicy.KEEP makeOneTimeWorkRequest(
) it, ExistingWorkPolicy.KEEP
)
}
}) })
} }
} }

View file

@ -111,7 +111,7 @@ class DeleteHelper @Inject constructor(
val userPageString = "\n{{subst:idw|${media.filename}}} ~~~~" val userPageString = "\n{{subst:idw|${media.filename}}} ~~~~"
val creator = media.author val creator = media.getAuthorOrUser()
?: throw RuntimeException("Failed to nominate for deletion") ?: throw RuntimeException("Failed to nominate for deletion")
return pageEditClient.prependEdit( return pageEditClient.prependEdit(

View file

@ -63,9 +63,4 @@ abstract class CommonsDaggerSupportFragment : Fragment(), HasSupportFragmentInje
return getInstance(activity.applicationContext) return getInstance(activity.applicationContext)
} }
// Ensure getContext() returns a non-null Context
override fun getContext(): Context {
return super.getContext() ?: throw IllegalStateException("Context is null")
}
} }

View file

@ -39,7 +39,7 @@ class MediaConverter
metadata.licenseShortName(), metadata.licenseShortName(),
metadata.prefixedLicenseUrl, metadata.prefixedLicenseUrl,
getAuthor(metadata), getAuthor(metadata),
getAuthor(metadata), imageInfo.getUser(),
MediaDataExtractorUtil.extractCategoriesFromList(metadata.categories()), MediaDataExtractorUtil.extractCategoriesFromList(metadata.categories()),
metadata.latLng, metadata.latLng,
entity.labels().mapValues { it.value.value() }, entity.labels().mapValues { it.value.value() },

View file

@ -52,12 +52,7 @@ class SearchImagesViewHolder(
binding.categoryImageView.setOnClickListener { onImageClicked(item.second) } binding.categoryImageView.setOnClickListener { onImageClicked(item.second) }
binding.categoryImageTitle.text = media.mostRelevantCaption binding.categoryImageTitle.text = media.mostRelevantCaption
binding.categoryImageView.setImageURI(media.thumbUrl) binding.categoryImageView.setImageURI(media.thumbUrl)
if (media.author?.isNotEmpty() == true) { binding.categoryImageAuthor.text =
binding.categoryImageAuthor.visibility = View.VISIBLE containerView.context.getString(R.string.image_uploaded_by, media.getAuthorOrUser())
binding.categoryImageAuthor.text =
containerView.context.getString(R.string.image_uploaded_by, media.user)
} else {
binding.categoryImageAuthor.visibility = View.GONE
}
} }
} }

View file

@ -328,7 +328,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
.append("\n\n"); .append("\n\n");
builder.append("User that you want to report: ") builder.append("User that you want to report: ")
.append(media.getAuthor()) .append(media.getUser())
.append("\n\n"); .append("\n\n");
if (sessionManager.getUserName() != null) { if (sessionManager.getUserName() != null) {
@ -423,7 +423,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
// Initialize bookmark object // Initialize bookmark object
bookmark = new Bookmark( bookmark = new Bookmark(
m.getFilename(), m.getFilename(),
m.getAuthor(), m.getAuthorOrUser(),
BookmarkPicturesContentProvider.uriForName(m.getFilename()) BookmarkPicturesContentProvider.uriForName(m.getFilename())
); );
updateBookmarkState(menu.findItem(R.id.menu_bookmark_current_image)); updateBookmarkState(menu.findItem(R.id.menu_bookmark_current_image));

View file

@ -223,7 +223,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
private var view: View? = null private var view: View? = null
private var scope: LifecycleCoroutineScope? = null private var scope: LifecycleCoroutineScope? = null
private var presenter: NearbyParentFragmentPresenter? = null private var presenter: NearbyParentFragmentPresenter? = null
private var isDarkTheme = false private var _isDarkTheme = false
private var isFABsExpanded = false private var isFABsExpanded = false
private var selectedPlace: Place? = null private var selectedPlace: Place? = null
private var clickedMarker: Marker? = null private var clickedMarker: Marker? = null
@ -461,7 +461,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
} }
} }
} }
isDarkTheme = systemThemeUtils?.isDeviceInNightMode() == true _isDarkTheme = systemThemeUtils?.isDeviceInNightMode() == true
if (Utils.isMonumentsEnabled(Date())) { if (Utils.isMonumentsEnabled(Date())) {
binding?.rlContainerWlmMonthMessage?.visibility = View.VISIBLE binding?.rlContainerWlmMonthMessage?.visibility = View.VISIBLE
} else { } else {
@ -631,7 +631,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
* another refactor * another refactor
*/ */
private fun initThemePreferences() { private fun initThemePreferences() {
if (isDarkTheme) { if (_isDarkTheme) {
binding!!.bottomSheetNearby.rvNearbyList.setBackgroundColor( binding!!.bottomSheetNearby.rvNearbyList.setBackgroundColor(
requireContext().resources.getColor(fr.free.nrw.commons.R.color.contributionListDarkBackground) requireContext().resources.getColor(fr.free.nrw.commons.R.color.contributionListDarkBackground)
) )
@ -915,7 +915,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
} }
override fun isDarkTheme(): Boolean { override fun isDarkTheme(): Boolean {
return isDarkTheme return _isDarkTheme
} }
}) })
binding!!.nearbyFilterList.root binding!!.nearbyFilterList.root

View file

@ -16,6 +16,7 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.AdapterView import android.widget.AdapterView
import android.widget.AdapterView.OnItemClickListener import android.widget.AdapterView.OnItemClickListener
import android.widget.Button
import android.widget.EditText import android.widget.EditText
import android.widget.FrameLayout import android.widget.FrameLayout
import android.widget.ImageView import android.widget.ImageView
@ -330,6 +331,9 @@ class UploadMediaDetailAdapter : RecyclerView.Adapter<UploadMediaDetailAdapter.V
listView.adapter = languagesAdapter listView.adapter = languagesAdapter
dialog.findViewById<Button>(R.id.cancel_button)
.setOnClickListener { v: View? -> dialog.dismiss() }
editText.addTextChangedListener(object : TextWatcher { editText.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) = override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) =
hideRecentLanguagesSection() hideRecentLanguagesSection()

View file

@ -136,8 +136,8 @@
<string name="menu_about">परिचय</string> <string name="menu_about">परिचय</string>
<string name="about_license">विकिमीडिया कॉमन्स एप्प एक मुक्त स्रोत एप्प है जो कि विकिमीडिया समुदाय के अनुदानप्राप्तकर्ताओं व स्वयंसेवकों द्वारा निर्मित एवं प्रबंधित है। विकिमीडिया फॉऊण्डेशन इस एप्प के निर्माण, विकास व प्रबंधन में किसी प्रकार से भी संलग्न नहीं है।</string> <string name="about_license">विकिमीडिया कॉमन्स एप्प एक मुक्त स्रोत एप्प है जो कि विकिमीडिया समुदाय के अनुदानप्राप्तकर्ताओं व स्वयंसेवकों द्वारा निर्मित एवं प्रबंधित है। विकिमीडिया फॉऊण्डेशन इस एप्प के निर्माण, विकास व प्रबंधन में किसी प्रकार से भी संलग्न नहीं है।</string>
<string name="about_improve">त्रुटि की सूचना और सुझावों के लिए &lt;a href=\"%1$s\"&gt; GitHub समस्या &lt;/a&gt; बनाएं</string> <string name="about_improve">त्रुटि की सूचना और सुझावों के लिए &lt;a href=\"%1$s\"&gt; GitHub समस्या &lt;/a&gt; बनाएं</string>
<string name="about_privacy_policy" fuzzy="true">&lt;u&gt;गोपनीयता नीति&lt;/u&gt;</string> <string name="about_privacy_policy">गोपनीयता नीति</string>
<string name="about_credits" fuzzy="true">&lt;u&gt;श्रेय&lt;/u&gt;</string> <string name="about_credits">श्रेय</string>
<string name="title_activity_about">परिचय</string> <string name="title_activity_about">परिचय</string>
<string name="menu_feedback">प्रतिक्रिया दें (ईमेल द्वारा)</string> <string name="menu_feedback">प्रतिक्रिया दें (ईमेल द्वारा)</string>
<string name="no_email_client">कोई ईमेल साधन स्थापित नहीं</string> <string name="no_email_client">कोई ईमेल साधन स्थापित नहीं</string>
@ -150,7 +150,7 @@
<string name="menu_download">डाउनलोड</string> <string name="menu_download">डाउनलोड</string>
<string name="preference_license">डिफॉल्ट लाइसेन्स</string> <string name="preference_license">डिफॉल्ट लाइसेन्स</string>
<string name="use_previous" fuzzy="true">पिछले शीर्षक/विवरण का उपयोग करें</string> <string name="use_previous" fuzzy="true">पिछले शीर्षक/विवरण का उपयोग करें</string>
<string name="preference_theme" fuzzy="true">रात्रि मोड</string> <string name="preference_theme">थीम</string>
<string name="license_name_cc_by_sa_four">एट्रीब्यूशन-शेयरअलाइक 4.0</string> <string name="license_name_cc_by_sa_four">एट्रीब्यूशन-शेयरअलाइक 4.0</string>
<string name="license_name_cc_by_four">एट्रिब्यूशन 4.0</string> <string name="license_name_cc_by_four">एट्रिब्यूशन 4.0</string>
<string name="license_name_cc_by_sa">एट्रीब्यूशन-शेयरअलाइक 3.0</string> <string name="license_name_cc_by_sa">एट्रीब्यूशन-शेयरअलाइक 3.0</string>
@ -263,12 +263,12 @@
<string name="nearby_wikipedia" fuzzy="true">विकीपीडिया</string> <string name="nearby_wikipedia" fuzzy="true">विकीपीडिया</string>
<string name="nearby_commons">कॉमन्स</string> <string name="nearby_commons">कॉमन्स</string>
<string name="about_rate_us" fuzzy="true">&lt;u&gt;हमें रेट करें&lt;/u&gt;</string> <string name="about_rate_us" fuzzy="true">&lt;u&gt;हमें रेट करें&lt;/u&gt;</string>
<string name="about_faq" fuzzy="true">&lt;u&gt;अक्सर पूछे जाने वाले प्रश्न&lt;/u&gt;</string> <string name="about_faq">अक्सर पूछे जाने वाले प्रश्न</string>
<string name="welcome_skip_button">प्रशिक्षण छोड़ें</string> <string name="welcome_skip_button">प्रशिक्षण छोड़ें</string>
<string name="no_internet">इंटरनेट उपलब्ध नहीं</string> <string name="no_internet">इंटरनेट उपलब्ध नहीं</string>
<string name="error_notifications">सूचनाएं लाने में त्रुटि</string> <string name="error_notifications">सूचनाएं लाने में त्रुटि</string>
<string name="no_notifications">कोई सूचनाएँ नहीं मिलीं</string> <string name="no_notifications">कोई सूचनाएँ नहीं मिलीं</string>
<string name="about_translate" fuzzy="true">&lt;u&gt;अनुवाद&lt;/u&gt;</string> <string name="about_translate">अनुवाद</string>
<string name="about_translate_title">भाषाएँ</string> <string name="about_translate_title">भाषाएँ</string>
<string name="about_translate_proceed">आगे बढ़ें</string> <string name="about_translate_proceed">आगे बढ़ें</string>
<string name="about_translate_cancel">रद्द करें</string> <string name="about_translate_cancel">रद्द करें</string>
@ -284,7 +284,7 @@
<string name="search_recent_header">हाल की खोजें</string> <string name="search_recent_header">हाल की खोजें</string>
<string name="provider_searches">हाल में खोजे गये प्रश्न</string> <string name="provider_searches">हाल में खोजे गये प्रश्न</string>
<string name="error_loading_categories">श्रेणी लोड करते समय त्रुटि उत्पन्न हुई।</string> <string name="error_loading_categories">श्रेणी लोड करते समय त्रुटि उत्पन्न हुई।</string>
<string name="search_tab_title_media" fuzzy="true">मीडिया</string> <string name="search_tab_title_media">मीडिया</string>
<string name="search_tab_title_categories">श्रेणियाँ</string> <string name="search_tab_title_categories">श्रेणियाँ</string>
<string name="explore_tab_title_featured">निर्वाचित</string> <string name="explore_tab_title_featured">निर्वाचित</string>
<string name="explore_tab_title_map">नक्शा</string> <string name="explore_tab_title_map">नक्शा</string>
@ -315,7 +315,7 @@
<string name="statistics">सांख्यिकी</string> <string name="statistics">सांख्यिकी</string>
<string name="statistics_thanks">धन्यवाद प्राप्त किया</string> <string name="statistics_thanks">धन्यवाद प्राप्त किया</string>
<string name="statistics_featured">निर्वाचित चित्र</string> <string name="statistics_featured">निर्वाचित चित्र</string>
<string name="level" fuzzy="true">स्तर</string> <string name="level">स्तर %d</string>
<string name="images_uploaded">चित्र अपलोड हुआ</string> <string name="images_uploaded">चित्र अपलोड हुआ</string>
<string name="image_reverts">चित्रों को वापस नहीं किया गया</string> <string name="image_reverts">चित्रों को वापस नहीं किया गया</string>
<string name="images_used_by_wiki">उपयोग हुए चित्र</string> <string name="images_used_by_wiki">उपयोग हुए चित्र</string>

View file

@ -4,6 +4,7 @@
* Akmaie Ajam * Akmaie Ajam
* Arifin.wijaya * Arifin.wijaya
* Birusian * Birusian
* Boesenbergia
* DARMAS BUDI SANTOSO * DARMAS BUDI SANTOSO
* Daud I.F. Argana * Daud I.F. Argana
* Fafau06 * Fafau06
@ -295,7 +296,7 @@
<string name="error_notifications">Galat penyampaian pemberitahuan</string> <string name="error_notifications">Galat penyampaian pemberitahuan</string>
<string name="error_review">Galat mengambil gambar untuk ditinjau. Tekan segarkan untuk coba lagi.</string> <string name="error_review">Galat mengambil gambar untuk ditinjau. Tekan segarkan untuk coba lagi.</string>
<string name="no_notifications">Pemberitahuan tidak ditemukan</string> <string name="no_notifications">Pemberitahuan tidak ditemukan</string>
<string name="about_translate">Terjemahkan</string> <string name="about_translate">Pertalaghi</string>
<string name="about_translate_title">Bahasa</string> <string name="about_translate_title">Bahasa</string>
<string name="about_translate_message">Pilih bahasa untuk terjemahan yang ingin Anda kirimkan</string> <string name="about_translate_message">Pilih bahasa untuk terjemahan yang ingin Anda kirimkan</string>
<string name="about_translate_proceed">Lanjutkan</string> <string name="about_translate_proceed">Lanjutkan</string>

View file

@ -181,6 +181,7 @@
<string name="no">Neen</string> <string name="no">Neen</string>
<string name="media_detail_caption">Beschrëftung</string> <string name="media_detail_caption">Beschrëftung</string>
<string name="media_detail_title">Titel</string> <string name="media_detail_title">Titel</string>
<string name="media_detail_depiction">Motiven</string>
<string name="media_detail_description">Beschreiwung</string> <string name="media_detail_description">Beschreiwung</string>
<string name="media_detail_discussion">Diskussioun</string> <string name="media_detail_discussion">Diskussioun</string>
<string name="media_detail_author">Auteur</string> <string name="media_detail_author">Auteur</string>

View file

@ -406,10 +406,10 @@
<string name="preference_author_name_toggle_summary">Gebruik een aangepaste auteursnaam in plaats van uw gebruikersnaam tijdens het uploaden van foto\'s</string> <string name="preference_author_name_toggle_summary">Gebruik een aangepaste auteursnaam in plaats van uw gebruikersnaam tijdens het uploaden van foto\'s</string>
<string name="preference_author_name">Aangepaste auteursnaam</string> <string name="preference_author_name">Aangepaste auteursnaam</string>
<string name="contributions_fragment">Bijdragen</string> <string name="contributions_fragment">Bijdragen</string>
<string name="nearby_fragment">Dichtbij</string> <string name="nearby_fragment">In de buurt</string>
<string name="notifications">Meldingen</string> <string name="notifications">Meldingen</string>
<string name="read_notifications">Meldingen (gelezen)</string> <string name="read_notifications">Meldingen (gelezen)</string>
<string name="display_nearby_notification">Meldingen dichtbij weergeven</string> <string name="display_nearby_notification">Melding in de buurt weergeven</string>
<string name="display_nearby_notification_summary">Toon in-app-melding voor de dichtstbijzijnde plaats die foto\'s nodig heeft</string> <string name="display_nearby_notification_summary">Toon in-app-melding voor de dichtstbijzijnde plaats die foto\'s nodig heeft</string>
<string name="list_sheet">Lijst</string> <string name="list_sheet">Lijst</string>
<string name="storage_permission">Toestemming om op te slaan</string> <string name="storage_permission">Toestemming om op te slaan</string>
@ -615,7 +615,7 @@
<string name="recommend_high_accuracy_mode">Kies voor de beste resultaten de modus van hoge nauwkeurigheid.</string> <string name="recommend_high_accuracy_mode">Kies voor de beste resultaten de modus van hoge nauwkeurigheid.</string>
<string name="ask_to_turn_location_on">Locatie inschakelen?</string> <string name="ask_to_turn_location_on">Locatie inschakelen?</string>
<string name="ask_to_turn_location_on_text">Schakel locatiediensten in zodat de app uw huidige locatie toont</string> <string name="ask_to_turn_location_on_text">Schakel locatiediensten in zodat de app uw huidige locatie toont</string>
<string name="nearby_needs_location">In de Buurt heeft locatie nodig om correct te werken</string> <string name="nearby_needs_location">In de buurt heeft locatietoegang nodig om correct te werken</string>
<string name="explore_map_needs_location">Voor de verkenningskaart is locatietoestemming nodig om afbeeldingen in de buurt weer te geven</string> <string name="explore_map_needs_location">Voor de verkenningskaart is locatietoestemming nodig om afbeeldingen in de buurt weer te geven</string>
<string name="upload_map_location_access">U moet locatietoestemming geven om de locatie automatisch in te stellen.</string> <string name="upload_map_location_access">U moet locatietoestemming geven om de locatie automatisch in te stellen.</string>
<string name="use_location_from_similar_image">Heeft u deze twee foto\'s op dezelfde plek gemaakt? Wilt u de breedtegraad/lengtegraad van de afbeelding rechts gebruiken?</string> <string name="use_location_from_similar_image">Heeft u deze twee foto\'s op dezelfde plek gemaakt? Wilt u de breedtegraad/lengtegraad van de afbeelding rechts gebruiken?</string>
@ -657,7 +657,7 @@
<string name="leaderboard_weekly">Wekelijks</string> <string name="leaderboard_weekly">Wekelijks</string>
<string name="leaderboard_all_time">Alle tijden</string> <string name="leaderboard_all_time">Alle tijden</string>
<string name="leaderboard_upload">Uploaden</string> <string name="leaderboard_upload">Uploaden</string>
<string name="leaderboard_nearby">In de Buurt</string> <string name="leaderboard_nearby">In de buurt</string>
<string name="leaderboard_used">Gebruikt</string> <string name="leaderboard_used">Gebruikt</string>
<string name="leaderboard_my_rank_button_text">Mijn ranking</string> <string name="leaderboard_my_rank_button_text">Mijn ranking</string>
<string name="limited_connection_enabled">Beperkte verbindingsmodus ingeschakeld!</string> <string name="limited_connection_enabled">Beperkte verbindingsmodus ingeschakeld!</string>
@ -724,7 +724,7 @@
<string name="edit_depictions">Wijzig items</string> <string name="edit_depictions">Wijzig items</string>
<string name="edit_categories">Categorieën bewerken</string> <string name="edit_categories">Categorieën bewerken</string>
<string name="advanced_options">Geavanceerde opties</string> <string name="advanced_options">Geavanceerde opties</string>
<string name="advanced_query_info_text">U kunt de zoekopdracht Dichtbij aanpassen. Als u fouten krijgt, kunt u opnieuw instellen en toepassen.</string> <string name="advanced_query_info_text">U kunt de zoekopdracht In de buurt aanpassen. Als u fouten krijgt, kunt u opnieuw instellen en toepassen.</string>
<string name="apply">Toepassen</string> <string name="apply">Toepassen</string>
<string name="reset">Opnieuw instellen</string> <string name="reset">Opnieuw instellen</string>
<string name="location_message">Locatiegegevens helpen wiki-bewerkers om uw foto te vinden, waardoor deze veel nuttiger wordt.\nUw recente uploads hebben geen locatie.\nWe raden u aan om de locatie in de instellingen van uw camera-app in te schakelen.\nBedankt voor het uploaden!</string> <string name="location_message">Locatiegegevens helpen wiki-bewerkers om uw foto te vinden, waardoor deze veel nuttiger wordt.\nUw recente uploads hebben geen locatie.\nWe raden u aan om de locatie in de instellingen van uw camera-app in te schakelen.\nBedankt voor het uploaden!</string>
@ -835,4 +835,10 @@
<string name="account">Account</string> <string name="account">Account</string>
<string name="vanish_account">Account laten verdwijnen</string> <string name="vanish_account">Account laten verdwijnen</string>
<string name="account_vanish_request_confirm_title">Waarschuwing verwijdering account</string> <string name="account_vanish_request_confirm_title">Waarschuwing verwijdering account</string>
<string name="account_vanish_request_confirm">Verdwijnen is een &lt;b&gt;laatste redmiddel&lt;/b&gt; en moet &lt;b&gt;alleen worden gebruikt als u voor altijd wilt stoppen met bewerken&lt;/b&gt; en om zoveel mogelijk van uw voorgaande relaties te verbergen.&lt;br/&gt;&lt;br/&gt;Accountverwijdering op Wikipedia gebeurt door uw accountnaam te wijzigen opdat anderen uw bijdragen niet meer kunnen herkennen. De procedure wordt accountverdwijning genoemd. &lt;b&gt;Door verdwijnen wordt geen volledige anonimiteit gegarandeerd en worden geen bijdragen aan de projecten verwijderd.&lt;/b&gt;</string>
<string name="caption">Bijschrift</string>
<string name="caption_copied_to_clipboard">Bijschrift gekopieerd naar klembord</string>
<string name="congratulations_all_pictures_in_this_album_have_been_either_uploaded_or_marked_as_not_for_upload">Gefeliciteerd, alle fotos in dit album zijn ofwel geüpload ofwel gemarkeerd als niet om te uploaden.</string>
<string name="show_in_explore">Weergeven in Verkennen</string>
<string name="show_in_nearby">Weergeven in In de buurt</string>
</resources> </resources>

View file

@ -10,8 +10,14 @@
--> -->
<resources> <resources>
<string name="commons_logo">ਕਾਮਨਜ਼ ਮਾਰਕਾ</string> <string name="commons_logo">ਕਾਮਨਜ਼ ਮਾਰਕਾ</string>
<string name="submit">ਹਵਾਲੇ ਕਰੋ</string>
<string name="add_another_description">ਇੱਕ ਹੋਰ ਵੇਰਵਾ ਸ਼ਾਮਲ ਕਰੋ</string> <string name="add_another_description">ਇੱਕ ਹੋਰ ਵੇਰਵਾ ਸ਼ਾਮਲ ਕਰੋ</string>
<string name="add_new_contribution">ਨਵਾਂ ਯੋਗਦਾਨ ਸ਼ਾਮਲ ਕਰੋ</string> <string name="add_new_contribution">ਨਵਾਂ ਯੋਗਦਾਨ ਸ਼ਾਮਲ ਕਰੋ</string>
<string name="add_contribution_from_camera">ਕੈਮਰੇ ਰਾਹੀਂ ਯੋਗਦਾਨ ਸ਼ਾਮਲ ਕਰੋ</string>
<string name="add_contribution_from_photos">ਤਸਵੀਰਾਂ ਰਾਹੀਂ ਯੋਗਦਾਨ ਸ਼ਾਮਲ ਕਰੋ</string>
<string name="show_captions">ਸੁਰਖੀ</string>
<string name="row_item_language_description">ਭਾਸ਼ਾ ਦਾ ਵੇਰਵਾ</string>
<string name="row_item_caption">ਸੁਰਖੀ</string>
<string name="show_captions_description">ਵੇਰਵਾ</string> <string name="show_captions_description">ਵੇਰਵਾ</string>
<string name="nearby_row_image">ਤਸਵੀਰ</string> <string name="nearby_row_image">ਤਸਵੀਰ</string>
<string name="nearby_all">ਸਾਰੇ</string> <string name="nearby_all">ਸਾਰੇ</string>
@ -37,14 +43,19 @@
<string name="navigation_item_explore">ਪੜਚੋਲ ਕਰੋ</string> <string name="navigation_item_explore">ਪੜਚੋਲ ਕਰੋ</string>
<string name="preference_category_appearance">ਦਿੱਖ</string> <string name="preference_category_appearance">ਦਿੱਖ</string>
<string name="preference_category_general">ਆਮ</string> <string name="preference_category_general">ਆਮ</string>
<string name="preference_category_feedback">ਸੁਝਾਅ</string>
<string name="preference_category_privacy">ਪਰਦੇਦਾਰੀ</string>
<string name="app_name" fuzzy="true">ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼</string> <string name="app_name" fuzzy="true">ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼</string>
<string name="menu_settings">ਪਸੰਦਾਂ</string> <string name="menu_settings">ਪਸੰਦਾਂ</string>
<string name="upload_in_progress">ਚੜ੍ਹਾਉਣਾ ਜਾਰੀ ਐ</string>
<string name="username">ਵਰਤੋਂਕਾਰ ਨਾਂ</string> <string name="username">ਵਰਤੋਂਕਾਰ ਨਾਂ</string>
<string name="password">ਲੰਘ-ਸ਼ਬਦ</string> <string name="password">ਲੰਘ-ਸ਼ਬਦ</string>
<string name="login">ਦਾਖ਼ਲ ਹੋਵੋ</string> <string name="login">ਦਾਖ਼ਲ ਹੋਵੋ</string>
<string name="forgot_password">ਪਾਰਸ਼ਬਦ ਭੁੱਲ ਗਏ?</string> <string name="forgot_password">ਪਾਰਸ਼ਬਦ ਭੁੱਲ ਗਏ?</string>
<string name="signup">ਖਾਤਾ ਬਣਾਓ</string>
<string name="logging_in_title">ਦਾਖ਼ਲਾ ਹੋ ਰਿਹਾ ਹੈ</string> <string name="logging_in_title">ਦਾਖ਼ਲਾ ਹੋ ਰਿਹਾ ਹੈ</string>
<string name="logging_in_message">ਉਡੀਕੋ ਜੀ…</string> <string name="logging_in_message">ਉਡੀਕੋ ਜੀ…</string>
<string name="updating_caption_title">ਸੁਰਖੀਆਂ ਅਤੇ ਵੇਰਵੇ ਨਵਿਆਏ ਜਾ ਰਹੇ ਹਨ</string>
<string name="updating_caption_message">ਕਿਰਪਾ ਕਰਕੇ ਉਡੀਕੋ...</string> <string name="updating_caption_message">ਕਿਰਪਾ ਕਰਕੇ ਉਡੀਕੋ...</string>
<string name="login_success">ਦਾਖ਼ਲ ਹੋਣਾ ਸਫ਼ਲ!</string> <string name="login_success">ਦਾਖ਼ਲ ਹੋਣਾ ਸਫ਼ਲ!</string>
<string name="login_failed">ਦਾਖ਼ਲ ਹੋਣਾ ਅਸਫ਼ਲ!</string> <string name="login_failed">ਦਾਖ਼ਲ ਹੋਣਾ ਅਸਫ਼ਲ!</string>
@ -53,11 +64,13 @@
<string name="uploading_started">ਅੱਪਲੋਡ ਸ਼ੁਰੂ ਹੋਇਆ!</string> <string name="uploading_started">ਅੱਪਲੋਡ ਸ਼ੁਰੂ ਹੋਇਆ!</string>
<string name="upload_completed_notification_title">%1$s ਅੱਪਲੋਡ ਹੋ ਗਏ!</string> <string name="upload_completed_notification_title">%1$s ਅੱਪਲੋਡ ਹੋ ਗਏ!</string>
<string name="upload_completed_notification_text">ਆਪਣਾ ਅੱਪਲੋਡ ਵੇਖਣ ਲਈ ਥਪੇੜੋ</string> <string name="upload_completed_notification_text">ਆਪਣਾ ਅੱਪਲੋਡ ਵੇਖਣ ਲਈ ਥਪੇੜੋ</string>
<string name="upload_progress_notification_title_start" fuzzy="true">%1$s ਅੱਪਲੋਡ ਸ਼ੁਰੂ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ</string> <string name="upload_progress_notification_title_start">ਫਾਈਲ ਚੜ੍ਹਾਈ ਜਾ ਰਹੀ ਐ: %s</string>
<string name="upload_progress_notification_title_in_progress">%1$s ਅੱਪਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ</string> <string name="upload_progress_notification_title_in_progress">%1$s ਅੱਪਲੋਡ ਕੀਤੇ ਜਾ ਰਹੇ ਹਨ</string>
<string name="upload_progress_notification_title_finishing">%1$s ਦਾ ਅੱਪਲੋਡ ਖ਼ਤਮ ਹੋ ਰਿਹਾ ਹੈ</string> <string name="upload_progress_notification_title_finishing">%1$s ਦਾ ਅੱਪਲੋਡ ਖ਼ਤਮ ਹੋ ਰਿਹਾ ਹੈ</string>
<string name="upload_failed_notification_title" fuzzy="true">%1$s ਦਾ ਅੱਪਲੋਡ ਫੇਲ੍ਹ ਹੋਇਆ</string> <string name="upload_failed_notification_title">%1$s ਨੂੰ ਚੜ੍ਹਾਉਣ ਵਿੱਚ ਨਾਕਾਮ</string>
<string name="upload_paused_notification_title">%1$s ਚੜ੍ਹਾਉਣਾ ਰੋਕਿਆ ਗਿਆ</string>
<string name="upload_failed_notification_subtitle">ਵੇਖਣ ਲਈ ਥਪੇੜੋ</string> <string name="upload_failed_notification_subtitle">ਵੇਖਣ ਲਈ ਥਪੇੜੋ</string>
<string name="upload_paused_notification_subtitle">ਵੇਖਣ ਲਈ ਥਪੇੜੋ</string>
<string name="title_activity_contributions" fuzzy="true">ਮੇਰੇ ਅੱਪਲੋਡ</string> <string name="title_activity_contributions" fuzzy="true">ਮੇਰੇ ਅੱਪਲੋਡ</string>
<string name="contribution_state_queued">ਕਤਾਰ ਵਿਚ</string> <string name="contribution_state_queued">ਕਤਾਰ ਵਿਚ</string>
<string name="contribution_state_failed">ਫੇਲ੍ਹ ਹੋਇਆ</string> <string name="contribution_state_failed">ਫੇਲ੍ਹ ਹੋਇਆ</string>
@ -68,12 +81,17 @@
<string name="menu_nearby">ਨੇੜੇ-ਤੇੜੇ</string> <string name="menu_nearby">ਨੇੜੇ-ਤੇੜੇ</string>
<string name="provider_contributions">ਮੇਰੇ ਅੱਪਲੋਡ</string> <string name="provider_contributions">ਮੇਰੇ ਅੱਪਲੋਡ</string>
<string name="menu_copy_link">ਕੜੀ ਦੀ ਨਕਲ ਕਰੋ</string> <string name="menu_copy_link">ਕੜੀ ਦੀ ਨਕਲ ਕਰੋ</string>
<string name="menu_link_copied">ਕੜੀ ਨੂੰ ਚੂੰਢੀ-ਤਖਤੀ ਉੱਤੇ ਨਕਲ ਕੀਤਾ ਗਿਆ ਐ</string>
<string name="menu_share">ਸਾਂਝਾ ਕਰੋ</string> <string name="menu_share">ਸਾਂਝਾ ਕਰੋ</string>
<string name="menu_view_file_page">ਫਾਇਲ ਸਫ਼ਾ ਵੇਖੋ</string>
<string name="share_title_hint">ਸੁਰਖੀ (ਲੋੜੀਂਦੀ)</string> <string name="share_title_hint">ਸੁਰਖੀ (ਲੋੜੀਂਦੀ)</string>
<string name="add_caption_toast">ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਫਾਈਲ ਲਈ ਇੱਕ ਸੁਰਖੀ ਦਿਓ</string>
<string name="share_description_hint">ਵੇਰਵਾ</string> <string name="share_description_hint">ਵੇਰਵਾ</string>
<string name="share_caption_hint">ਸੁਰਖੀ</string>
<string name="login_failed_network">ਦਾਖ਼ਲ ਹੋਣ ਵਿੱਚ ਅਸਮਰੱਥ - ਨੈੱਟਵਰਕ ਫੇਲ੍ਹ ਹੋਇਆ ਹੈ</string> <string name="login_failed_network">ਦਾਖ਼ਲ ਹੋਣ ਵਿੱਚ ਅਸਮਰੱਥ - ਨੈੱਟਵਰਕ ਫੇਲ੍ਹ ਹੋਇਆ ਹੈ</string>
<string name="login_failed_throttled">ਬਹੁਤ ਸਾਰੀਆਂ ਅਸਫ਼ਲ ਕੋਸ਼ਿਸ਼ਾਂ। ਥੋੜ੍ਹੀ ਦੇਰ ਬਾਅਦ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।</string> <string name="login_failed_throttled">ਬਹੁਤ ਸਾਰੀਆਂ ਅਸਫ਼ਲ ਕੋਸ਼ਿਸ਼ਾਂ। ਥੋੜ੍ਹੀ ਦੇਰ ਬਾਅਦ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।</string>
<string name="login_failed_blocked">ਅਫ਼ਸੋਸ, ਇਹ ਵਰਤੋਂਕਾਰ ਨੂੰ ਕਾਮਨਜ਼ ਤੇ ਰੋਕ ਲਾਈ ਗਈ ਹੈ।</string> <string name="login_failed_blocked">ਅਫ਼ਸੋਸ, ਇਹ ਵਰਤੋਂਕਾਰ ਨੂੰ ਕਾਮਨਜ਼ ਤੇ ਰੋਕ ਲਾਈ ਗਈ ਹੈ।</string>
<string name="login_failed_2fa_needed">ਤੁਹਾਨੂੰ ਆਪਣਾ ਦੋ-ਕਾਰਕ ਪ੍ਰਮਾਣੀਕਰਨ ਕੋਡ ਦੇਣਾ ਪਵੇਗਾ।</string>
<string name="login_failed_generic">ਦਾਖ਼ਲ ਹੋਣਾ ਅਸਫ਼ਲ!</string> <string name="login_failed_generic">ਦਾਖ਼ਲ ਹੋਣਾ ਅਸਫ਼ਲ!</string>
<string name="share_upload_button">ਚੜ੍ਹਾਉ</string> <string name="share_upload_button">ਚੜ੍ਹਾਉ</string>
<string name="multiple_share_base_title">ਇਸ ਸੈੱਟ ਨੂੰ ਨਾਂ ਦਿਓ</string> <string name="multiple_share_base_title">ਇਸ ਸੈੱਟ ਨੂੰ ਨਾਂ ਦਿਓ</string>
@ -85,10 +103,12 @@
<string name="display_list_button">ਸੂਚੀ</string> <string name="display_list_button">ਸੂਚੀ</string>
<string name="contributions_subtitle_zero" fuzzy="true">ਫ਼ਿਲਹਾਲ ਕੋਈ ਅੱਪਲੋਡ ਨਹੀਂ</string> <string name="contributions_subtitle_zero" fuzzy="true">ਫ਼ਿਲਹਾਲ ਕੋਈ ਅੱਪਲੋਡ ਨਹੀਂ</string>
<string name="categories_not_found">%1$s ਨਾਲ਼ ਮੇਲ ਖਾਂਦੀ ਕੋਈ ਸ਼੍ਰੇਣੀ ਨਹੀਂ ਲੱਭੀ</string> <string name="categories_not_found">%1$s ਨਾਲ਼ ਮੇਲ ਖਾਂਦੀ ਕੋਈ ਸ਼੍ਰੇਣੀ ਨਹੀਂ ਲੱਭੀ</string>
<string name="depictions_not_found">%1$s ਨਾਲ ਮੇਲ ਖਾਂਦੀਆਂ ਕੋਈ ਵਿਕੀਡਾਟਾ ਚੀਜ਼ਾਂ ਨਹੀਂ ਲੱਭਿਆਂ।</string>
<string name="categories_skip_explanation" fuzzy="true">ਆਪਣੀਆਂ ਤਸਵੀਰਾਂ ਨੂੰ ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਵਿਚ ਜ਼ਿਆਦਾ ਲੱਭਣਯੋਗ ਬਣਾਉਣ ਲਈ ਸ਼੍ਰੇਣੀਆਂ ਜੋੜੋ।\n\nਸ਼੍ਰੇਣੀਆਂ ਜੋੜਨ ਲਈ ਟਾਈਪ ਕਰਨ ਅਰੰਭ ਕਰੋ।\nਇਸ ਕਾਰਜ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਨ ਲਈ ਇਹ ਸੁਨੇਹਾ ਥਪੇੜੋ (ਜਾਂ ਵਾਪਸੀ ਬਟਨ ਦਬਾਓ)।</string> <string name="categories_skip_explanation" fuzzy="true">ਆਪਣੀਆਂ ਤਸਵੀਰਾਂ ਨੂੰ ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਵਿਚ ਜ਼ਿਆਦਾ ਲੱਭਣਯੋਗ ਬਣਾਉਣ ਲਈ ਸ਼੍ਰੇਣੀਆਂ ਜੋੜੋ।\n\nਸ਼੍ਰੇਣੀਆਂ ਜੋੜਨ ਲਈ ਟਾਈਪ ਕਰਨ ਅਰੰਭ ਕਰੋ।\nਇਸ ਕਾਰਜ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰਨ ਲਈ ਇਹ ਸੁਨੇਹਾ ਥਪੇੜੋ (ਜਾਂ ਵਾਪਸੀ ਬਟਨ ਦਬਾਓ)।</string>
<string name="categories_activity_title">ਸ਼੍ਰੇਣੀਆਂ</string> <string name="categories_activity_title">ਸ਼੍ਰੇਣੀਆਂ</string>
<string name="title_activity_settings">ਪਸੰਦਾਂ</string> <string name="title_activity_settings">ਪਸੰਦਾਂ</string>
<string name="title_activity_signup">ਖਾਤਾ ਬਣਾਓ</string> <string name="title_activity_signup">ਖਾਤਾ ਬਣਾਓ</string>
<string name="title_activity_featured_images">ਵਿਸ਼ੇਸ਼ ਤਸਵੀਰ</string>
<string name="title_activity_category_details">ਸ਼੍ਰੇਣੀ</string> <string name="title_activity_category_details">ਸ਼੍ਰੇਣੀ</string>
<string name="menu_about">ਇਸ ਬਾਰੇ</string> <string name="menu_about">ਇਸ ਬਾਰੇ</string>
<string name="about_license" fuzzy="true">ਅਜ਼ਾਦ ਸਰੋਤ ਸਾਫ਼ਟਵੇਅਰ ਨੂੰ &lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\"&gt;Apache License v2&lt;/a&gt; ਅਧੀਨ ਜਾਰੀ ਕੀਤਾ ਗਿਆ ਹੈ</string> <string name="about_license" fuzzy="true">ਅਜ਼ਾਦ ਸਰੋਤ ਸਾਫ਼ਟਵੇਅਰ ਨੂੰ &lt;a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\"&gt;Apache License v2&lt;/a&gt; ਅਧੀਨ ਜਾਰੀ ਕੀਤਾ ਗਿਆ ਹੈ</string>
@ -105,9 +125,9 @@
<string name="menu_cancel_upload">ਰੱਦ ਕਰੋ</string> <string name="menu_cancel_upload">ਰੱਦ ਕਰੋ</string>
<string name="media_upload_policy">ਇਹ ਤਸਵੀਰ ਅੱਪਲੋਡ ਕਰਨ ਨਾਲ ਹੀ ਮੈਂ ਦਾਅਵਾ ਕਰਦਾ ਹਾਂ/ਕਰਦੀ ਹਾਂ ਕਿ ਇਹ ਮੇਰਾ ਆਪਣਾ ਕਾਰਜ ਹੈ, ਕਿ ਇਸ ਤਹਿਤ ਕੋਈ ਕਾਪੀਰਾਈਟ ਉਲੰਘਣਾ ਨਹੀਂ ਕੀਤੀ ਗਈ ਅਤੇ &lt;a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\"&gt;ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਨੀਤੀਆਂ&lt;/a&gt; ਮੁਤਾਬਿਕ ਇਹ ਠੀਕ ਹੈ।</string> <string name="media_upload_policy">ਇਹ ਤਸਵੀਰ ਅੱਪਲੋਡ ਕਰਨ ਨਾਲ ਹੀ ਮੈਂ ਦਾਅਵਾ ਕਰਦਾ ਹਾਂ/ਕਰਦੀ ਹਾਂ ਕਿ ਇਹ ਮੇਰਾ ਆਪਣਾ ਕਾਰਜ ਹੈ, ਕਿ ਇਸ ਤਹਿਤ ਕੋਈ ਕਾਪੀਰਾਈਟ ਉਲੰਘਣਾ ਨਹੀਂ ਕੀਤੀ ਗਈ ਅਤੇ &lt;a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\"&gt;ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਨੀਤੀਆਂ&lt;/a&gt; ਮੁਤਾਬਿਕ ਇਹ ਠੀਕ ਹੈ।</string>
<string name="menu_download">ਡਾਊਨਲੋਡ</string> <string name="menu_download">ਡਾਊਨਲੋਡ</string>
<string name="preference_license" fuzzy="true">ਲਸੰਸ</string> <string name="preference_license">ਮੂਲ ਲਸੰਸ</string>
<string name="use_previous" fuzzy="true">ਪਹਿਲਾਂ ਵਾਲਾ ਸਿਰਲੇਖ/ਜਾਣਕਾਰੀ ਵਰਤ</string> <string name="use_previous">ਪਿਛਲੇ ਸਿਰਲੇਖ ਅਤੇ ਵੇਰਵੇ ਦੀ ਵਰਤੋਂ ਕਰ</string>
<string name="preference_theme" fuzzy="true">ਰਾਤ ਦਾ ਅੰਦਾਜ਼</string> <string name="preference_theme">ਵਿਸ਼ਾ-ਵਸਤੂ</string>
<string name="license_name_cc_by_sa_four"> Attribution-ShareAlike 4.0</string> <string name="license_name_cc_by_sa_four"> Attribution-ShareAlike 4.0</string>
<string name="license_name_cc_by_four"> Attribution 4.0</string> <string name="license_name_cc_by_four"> Attribution 4.0</string>
<string name="license_name_cc_by_sa">CC Attribution-ShareAlike 3.0</string> <string name="license_name_cc_by_sa">CC Attribution-ShareAlike 3.0</string>
@ -120,8 +140,14 @@
<string name="tutorial_1_text">ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਜ਼ਿਆਦਾਤਰ ਉਹ ਤਸਵੀਰਾਂ ਦਾ ਭੰਡਾਰ ਹੈ ਜੋ ਵਿਕੀਪੀਡੀਆ \'ਤੇ ਵਰਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।</string> <string name="tutorial_1_text">ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਜ਼ਿਆਦਾਤਰ ਉਹ ਤਸਵੀਰਾਂ ਦਾ ਭੰਡਾਰ ਹੈ ਜੋ ਵਿਕੀਪੀਡੀਆ \'ਤੇ ਵਰਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ।</string>
<string name="tutorial_1_subtext">ਤੁਹਾਡੀਆਂ ਤਸਵੀਰਾਂ ਵਿਸ਼ਵ ਦੇ ਬਾਕੀ ਲੋਕਾਂ ਨੂੰ ਸਿੱਖਿਅਤ ਕਰਨ ਲਈ ਸਹਾਈ ਹਨ!</string> <string name="tutorial_1_subtext">ਤੁਹਾਡੀਆਂ ਤਸਵੀਰਾਂ ਵਿਸ਼ਵ ਦੇ ਬਾਕੀ ਲੋਕਾਂ ਨੂੰ ਸਿੱਖਿਅਤ ਕਰਨ ਲਈ ਸਹਾਈ ਹਨ!</string>
<string name="tutorial_2_text">ਕਿਰਪਾ ਕਰਕੇ ਉਹ ਤਸਵੀਰਾਂ ਨੂੰ ਚੜ੍ਹਾਉ ਜੋ ਤੁਹਾਡੇ ਵੱਲੋਂ ਲਈਆਂ ਗਈਆਂ ਹਨ ਜਾਂ ਬਣਾਈਆਂ ਗਈਆਂ ਹਨ:</string> <string name="tutorial_2_text">ਕਿਰਪਾ ਕਰਕੇ ਉਹ ਤਸਵੀਰਾਂ ਨੂੰ ਚੜ੍ਹਾਉ ਜੋ ਤੁਹਾਡੇ ਵੱਲੋਂ ਲਈਆਂ ਗਈਆਂ ਹਨ ਜਾਂ ਬਣਾਈਆਂ ਗਈਆਂ ਹਨ:</string>
<string name="tutorial_2_subtext_1">ਕੁਦਰਤੀ ਵਸਤੂਆਂ (ਫੁੱਲ, ਜਾਨਵਰ, ਪਹਾੜ)</string>
<string name="tutorial_2_subtext_2">ਲਾਹੇਵੰਦ ਵਸਤੂਆਂ (ਸੈਕਲ, ਰੇਲ ਅੱਡਾ)</string>
<string name="tutorial_2_subtext_3">ਮਸ਼ਹੂਰ ਲੋਕ (ਤੁਹਾਡੇ mayor, ਓਲੰਪਿਕ ਖਿਡਾਰੀ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਮਿਲੇ ਸੀ)</string>
<string name="tutorial_3_text">ਕਿਰਪਾ ਕਰਕੇ ਅਪਲੋਡ ਨਾ ਕਰੋ:</string> <string name="tutorial_3_text">ਕਿਰਪਾ ਕਰਕੇ ਅਪਲੋਡ ਨਾ ਕਰੋ:</string>
<string name="tutorial_3_subtext_1">ਤੁਹਾਡੇ ਦੋਸਤਾਂ ਦੀਆਂ ਸੈਲਫ਼ੀਆਂ ਜਾਂ ਤਸਵੀਰਾਂ</string>
<string name="tutorial_4_text">ਉਦਾਹਰਣ ਵਜੋਂ ਇਹ ਅਪਲੋਡ:</string> <string name="tutorial_4_text">ਉਦਾਹਰਣ ਵਜੋਂ ਇਹ ਅਪਲੋਡ:</string>
<string name="tutorial_4_subtext_1">ਸਿਰਲੇਖ: ਸਿਡਨੀ ਓਪੇਰਾ ਹਾਊਸ</string>
<string name="tutorial_4_subtext_2">ਵੇਰਵਾ: ਸਿਡਨੀ ਓਪੇਰਾ ਹਾਊਸ ਜਿਵੇਂ ਖਾੜੀ ਦੇ ਪਾਰ ਤੋਂ ਦਿਖਦਾ ਐ</string>
<string name="welcome_wikipedia_text">ਆਪਣੀਆਂ ਤਸਵੀਰਾਂ ਦਾ ਯੋਗਦਾਨ ਪਾਓ। ਵਿਕੀਪੀਡੀਆ ਲੇਖਾਂ ਨੂੰ ਸੁਰਜੀਤ ਕਰ ਦਿਓ!</string> <string name="welcome_wikipedia_text">ਆਪਣੀਆਂ ਤਸਵੀਰਾਂ ਦਾ ਯੋਗਦਾਨ ਪਾਓ। ਵਿਕੀਪੀਡੀਆ ਲੇਖਾਂ ਨੂੰ ਸੁਰਜੀਤ ਕਰ ਦਿਓ!</string>
<string name="welcome_wikipedia_subtext">ਵਿਕੀਪੀਡੀਆ ਉਤਲੀਆਂ ਤਸਵੀਰਾਂ ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਤੋਂ ਆਉਂਦੀਆਂ ਹਨ</string> <string name="welcome_wikipedia_subtext">ਵਿਕੀਪੀਡੀਆ ਉਤਲੀਆਂ ਤਸਵੀਰਾਂ ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਤੋਂ ਆਉਂਦੀਆਂ ਹਨ</string>
<string name="welcome_copyright_text">ਤੁਹਾਡੀਆਂ ਤਸਵੀਰਾਂ ਦੁਨੀਆਂ ਭਰ ਦੇ ਲੋਕਾਂ ਨੂੰ ਪੜ੍ਹਨ ਵਿਚ ਮਦਦ ਕਰਦੀਆਂ ਹਨ।</string> <string name="welcome_copyright_text">ਤੁਹਾਡੀਆਂ ਤਸਵੀਰਾਂ ਦੁਨੀਆਂ ਭਰ ਦੇ ਲੋਕਾਂ ਨੂੰ ਪੜ੍ਹਨ ਵਿਚ ਮਦਦ ਕਰਦੀਆਂ ਹਨ।</string>
@ -132,6 +158,7 @@
<string name="detail_panel_cats_label">ਸ਼੍ਰੇਣੀਆਂ</string> <string name="detail_panel_cats_label">ਸ਼੍ਰੇਣੀਆਂ</string>
<string name="detail_panel_cats_loading">ਲੱਦ ਰਿਹਾ ਹੈ...</string> <string name="detail_panel_cats_loading">ਲੱਦ ਰਿਹਾ ਹੈ...</string>
<string name="detail_panel_cats_none">ਕੋਈ ਵੀ ਨਹੀਂ ਚੁਣਿਆ</string> <string name="detail_panel_cats_none">ਕੋਈ ਵੀ ਨਹੀਂ ਚੁਣਿਆ</string>
<string name="detail_caption_empty">ਕੋਈ ਸੁਰਖੀ ਨਹੀਂ</string>
<string name="detail_description_empty">ਕੋਈ ਵੇਰਵਾ ਨਹੀਂ</string> <string name="detail_description_empty">ਕੋਈ ਵੇਰਵਾ ਨਹੀਂ</string>
<string name="detail_discussion_empty">ਕੋਈ ਗੱਲਬਾਤ ਨਹੀਂ</string> <string name="detail_discussion_empty">ਕੋਈ ਗੱਲਬਾਤ ਨਹੀਂ</string>
<string name="detail_license_empty">ਅਣਜਾਣ ਲਸੰਸ</string> <string name="detail_license_empty">ਅਣਜਾਣ ਲਸੰਸ</string>
@ -139,8 +166,10 @@
<string name="read_storage_permission_rationale" fuzzy="true">ਆਗਿਆ ਚਾਹੀਦੀ ਹੈ: ਬਾਹਰੀ ਸਟੋਰੇਜ ਬਾਰੇ। ਇਸ ਤੋਂ ਬਿਨਾਂ ਐਪ ਕਾਰਜ ਨਹੀਂ ਕਰ ਸਕੇਗੀ।</string> <string name="read_storage_permission_rationale" fuzzy="true">ਆਗਿਆ ਚਾਹੀਦੀ ਹੈ: ਬਾਹਰੀ ਸਟੋਰੇਜ ਬਾਰੇ। ਇਸ ਤੋਂ ਬਿਨਾਂ ਐਪ ਕਾਰਜ ਨਹੀਂ ਕਰ ਸਕੇਗੀ।</string>
<string name="ok">ਠੀਕ ਹੈ</string> <string name="ok">ਠੀਕ ਹੈ</string>
<string name="warning">ਖ਼ਬਰਦਾਰ</string> <string name="warning">ਖ਼ਬਰਦਾਰ</string>
<string name="upload">ਚੜ੍ਹਾਉ</string>
<string name="yes">ਹਾਂ</string> <string name="yes">ਹਾਂ</string>
<string name="no">ਨਹੀਂ</string> <string name="no">ਨਹੀਂ</string>
<string name="media_detail_caption">ਸੁਰਖੀ</string>
<string name="media_detail_title">ਸਿਰਲੇਖ</string> <string name="media_detail_title">ਸਿਰਲੇਖ</string>
<string name="media_detail_description">ਵੇਰਵਾ</string> <string name="media_detail_description">ਵੇਰਵਾ</string>
<string name="media_detail_discussion">ਗੱਲਬਾਤ</string> <string name="media_detail_discussion">ਗੱਲਬਾਤ</string>

View file

@ -3,6 +3,7 @@
* A100Star * A100Star
* Ajeje Brazorf * Ajeje Brazorf
* Amire80 * Amire80
* Annick green
* Cabal * Cabal
* Googology * Googology
* LeGuyanaisPure * LeGuyanaisPure
@ -27,6 +28,7 @@
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="all"> <resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="all">
<string name="submit">{{Identical|Submit}}</string> <string name="submit">{{Identical|Submit}}</string>
<string name="nearby_all">{{identical|All}}</string> <string name="nearby_all">{{identical|All}}</string>
<string name="nearby_filter_search">Reba ishakiro</string>
<string name="uploads_pending_notification_indicator">Status text about number of uploads left.\n* %1$d represents number of uploads left, including current one</string> <string name="uploads_pending_notification_indicator">Status text about number of uploads left.\n* %1$d represents number of uploads left, including current one</string>
<string name="contributions_subtitle">See the current issue [https://phabricator.wikimedia.org/T267142 T267142] tracked in Phabricator about the &lt;code&gt;&lt;nowiki&gt;|zero=&lt;/nowiki&gt;&lt;/code&gt; option currently not supported on Translatewiki.net with the custom &lt;code&gt;&lt;nowiki&gt;{{PLURAL}}&lt;/nowiki&gt;&lt;/code&gt; rules used by this project for Android, using a non-MediaWiki syntax.</string> <string name="contributions_subtitle">See the current issue [https://phabricator.wikimedia.org/T267142 T267142] tracked in Phabricator about the &lt;code&gt;&lt;nowiki&gt;|zero=&lt;/nowiki&gt;&lt;/code&gt; option currently not supported on Translatewiki.net with the custom &lt;code&gt;&lt;nowiki&gt;{{PLURAL}}&lt;/nowiki&gt;&lt;/code&gt; rules used by this project for Android, using a non-MediaWiki syntax.</string>
<string name="multiple_uploads_title">{{Identical|Upload}}</string> <string name="multiple_uploads_title">{{Identical|Upload}}</string>
@ -190,6 +192,7 @@
<string name="depictions_edit_helper_edit_message_else">{{Doc-commons-app-depicts}}</string> <string name="depictions_edit_helper_edit_message_else">{{Doc-commons-app-depicts}}</string>
<string name="title_app_shortcut_bookmark">{{identical|Bookmark}}</string> <string name="title_app_shortcut_bookmark">{{identical|Bookmark}}</string>
<string name="theme_default_name">Option to make the app\'s theme follow the global system setting.</string> <string name="theme_default_name">Option to make the app\'s theme follow the global system setting.</string>
<string name="nearby_needs_location">Nearby should be translated as in {{msg-wm|Commons-android-strings-navigation item nearby}}</string>
<string name="more">{{Identical|More}}</string> <string name="more">{{Identical|More}}</string>
<string name="map_attribution">{{Optional}}\n&lt;code&gt;&amp;amp;#169;&lt;/code&gt; is the copyright symbol (©).</string> <string name="map_attribution">{{Optional}}\n&lt;code&gt;&amp;amp;#169;&lt;/code&gt; is the copyright symbol (©).</string>
<string name="categories_tooltip">{{Doc-commons-app-depicts}}</string> <string name="categories_tooltip">{{Doc-commons-app-depicts}}</string>
@ -202,9 +205,12 @@
<string name="done">{{identical|Done}}</string> <string name="done">{{identical|Done}}</string>
<string name="edit_depictions">{{Doc-commons-app-depicts}}</string> <string name="edit_depictions">{{Doc-commons-app-depicts}}</string>
<string name="advanced_options">{{Identical|Advanced options}}</string> <string name="advanced_options">{{Identical|Advanced options}}</string>
<string name="advanced_query_info_text">Nearby should be translated as in {{msg-wm|Commons-android-strings-navigation item nearby}}</string>
<string name="explore_map_details">{{Identical|Detail}}</string> <string name="explore_map_details">{{Identical|Detail}}</string>
<string name="set_up_avatar_toast_string">\"Set as avatar\" should be translated the same as {{msg-wm|Commons-android-strings-menu set avatar}}.</string> <string name="set_up_avatar_toast_string">\"Set as avatar\" should be translated the same as {{msg-wm|Commons-android-strings-menu set avatar}}.</string>
<string name="multiple_files_depiction">{{Doc-commons-app-depicts}}</string> <string name="multiple_files_depiction">{{Doc-commons-app-depicts}}</string>
<string name="custom_selector_delete">An answer to the question in {{msg-wm|Commons-android-strings-custom selector confirm deletion message}}.</string> <string name="custom_selector_delete">An answer to the question in {{msg-wm|Commons-android-strings-custom selector confirm deletion message}}.</string>
<string name="bullet_point">{{optional}}</string> <string name="bullet_point">{{optional}}</string>
<string name="show_in_explore">“Explore” should be translated as in {{msg-wm|Commons-android-strings-navigation item explore}}</string>
<string name="show_in_nearby">Nearby should be translated as in {{msg-wm|Commons-android-strings-navigation item nearby}}</string>
</resources> </resources>

View file

@ -821,4 +821,6 @@
<string name="caption">Bildtext</string> <string name="caption">Bildtext</string>
<string name="caption_copied_to_clipboard">Bildtext kopierades till urklipp</string> <string name="caption_copied_to_clipboard">Bildtext kopierades till urklipp</string>
<string name="congratulations_all_pictures_in_this_album_have_been_either_uploaded_or_marked_as_not_for_upload">Grattis! Alla bilder i detta album har antingen laddats upp eller markerats för att inte laddas upp.</string> <string name="congratulations_all_pictures_in_this_album_have_been_either_uploaded_or_marked_as_not_for_upload">Grattis! Alla bilder i detta album har antingen laddats upp eller markerats för att inte laddas upp.</string>
<string name="show_in_explore">Visa i \"Utforska\"</string>
<string name="show_in_nearby">Visa i \"I närheten\"</string>
</resources> </resources>

View file

@ -66,7 +66,7 @@
<string name="upload_progress_notification_title_start">%s ಅಪ್ಲೋಡ್ ಸುರು ಆವೊಂದುಂಡು</string> <string name="upload_progress_notification_title_start">%s ಅಪ್ಲೋಡ್ ಸುರು ಆವೊಂದುಂಡು</string>
<string name="upload_progress_notification_title_in_progress">%1$s ಅಪ್ಲೋಡ್ ಆವೊಂದುಂಡು</string> <string name="upload_progress_notification_title_in_progress">%1$s ಅಪ್ಲೋಡ್ ಆವೊಂದುಂಡು</string>
<string name="upload_progress_notification_title_finishing">%1$s ಅಪ್ಲೋಡ್ ಕೈದ್ ಆವೊಂದುಂಡು.</string> <string name="upload_progress_notification_title_finishing">%1$s ಅಪ್ಲೋಡ್ ಕೈದ್ ಆವೊಂದುಂಡು.</string>
<string name="upload_failed_notification_title" fuzzy="true">%1$s ಅಪ್ಲೋಡ್ ಸರಿ ಆತಿಜಿ</string> <string name="upload_failed_notification_title">%1$s ಅಪ್ಲೋಡ್ ಆತಿಜಿ</string>
<string name="upload_failed_notification_subtitle">ತುಯಾರ ಮೆಲ್ಲ ಒತ್ತುಲೆ</string> <string name="upload_failed_notification_subtitle">ತುಯಾರ ಮೆಲ್ಲ ಒತ್ತುಲೆ</string>
<string name="title_activity_contributions">ಎನ್ನ ದಿಂಜಯೀನಾ ವಿಚಾರೊಳು</string> <string name="title_activity_contributions">ಎನ್ನ ದಿಂಜಯೀನಾ ವಿಚಾರೊಳು</string>
<string name="contribution_state_queued">ದಿಂಜೊಂತುಂಡು</string> <string name="contribution_state_queued">ದಿಂಜೊಂತುಂಡು</string>

View file

@ -96,7 +96,7 @@ class DeleteHelperTest {
).thenReturn("Media successfully deleted: Test Media Title") ).thenReturn("Media successfully deleted: Test Media Title")
val creatorName = "Creator" val creatorName = "Creator"
whenever(media.author).thenReturn("$creatorName") whenever(media.getAuthorOrUser()).thenReturn("$creatorName")
whenever(media.filename).thenReturn("Test file.jpg") whenever(media.filename).thenReturn("Test file.jpg")
val makeDeletion = deleteHelper.makeDeletion( val makeDeletion = deleteHelper.makeDeletion(
context, context,
@ -133,7 +133,7 @@ class DeleteHelperTest {
whenever(media.displayTitle).thenReturn("Test file") whenever(media.displayTitle).thenReturn("Test file")
whenever(media.filename).thenReturn("Test file.jpg") whenever(media.filename).thenReturn("Test file.jpg")
whenever(media.author).thenReturn("Creator (page does not exist)") whenever(media.getAuthorOrUser()).thenReturn("Creator (page does not exist)")
deleteHelper.makeDeletion(context, media, "Test reason")?.blockingGet() deleteHelper.makeDeletion(context, media, "Test reason")?.blockingGet()
} }
@ -148,7 +148,7 @@ class DeleteHelperTest {
.thenReturn(Observable.just(false)) .thenReturn(Observable.just(false))
whenever(media.displayTitle).thenReturn("Test file") whenever(media.displayTitle).thenReturn("Test file")
whenever(media.filename).thenReturn("Test file.jpg") whenever(media.filename).thenReturn("Test file.jpg")
whenever(media.author).thenReturn("Creator (page does not exist)") whenever(media.getAuthorOrUser()).thenReturn("Creator (page does not exist)")
deleteHelper.makeDeletion(context, media, "Test reason")?.blockingGet() deleteHelper.makeDeletion(context, media, "Test reason")?.blockingGet()
} }
@ -163,7 +163,7 @@ class DeleteHelperTest {
.thenReturn(Observable.just(true)) .thenReturn(Observable.just(true))
whenever(media.displayTitle).thenReturn("Test file") whenever(media.displayTitle).thenReturn("Test file")
whenever(media.filename).thenReturn("Test file.jpg") whenever(media.filename).thenReturn("Test file.jpg")
whenever(media.author).thenReturn("Creator (page does not exist)") whenever(media.getAuthorOrUser()).thenReturn("Creator (page does not exist)")
deleteHelper.makeDeletion(context, media, "Test reason")?.blockingGet() deleteHelper.makeDeletion(context, media, "Test reason")?.blockingGet()
} }
@ -221,7 +221,7 @@ class DeleteHelperTest {
whenever(media.displayTitle).thenReturn("Test file") whenever(media.displayTitle).thenReturn("Test file")
whenever(media.filename).thenReturn("Test file.jpg") whenever(media.filename).thenReturn("Test file.jpg")
whenever(media.author).thenReturn(null) whenever(media.getAuthorOrUser()).thenReturn(null)
deleteHelper.makeDeletion(context, media, "Test reason")?.blockingGet() deleteHelper.makeDeletion(context, media, "Test reason")?.blockingGet()
} }