mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
Merge branch 'main' into explore_migration_kotlin
This commit is contained in:
commit
2514b0899f
27 changed files with 237 additions and 192 deletions
96
.github/workflows/android-ci-comment.yml
vendored
96
.github/workflows/android-ci-comment.yml
vendored
|
|
@ -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}`);
|
||||
}
|
||||
25
.github/workflows/android.yml
vendored
25
.github/workflows/android.yml
vendored
|
|
@ -2,10 +2,6 @@ name: Android CI
|
|||
|
||||
on: [push, pull_request, workflow_dispatch]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
actions: read
|
||||
|
||||
concurrency:
|
||||
group: build-${{ github.event.pull_request.number || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
|
@ -16,17 +12,17 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up JDK
|
||||
uses: actions/setup-java@v3
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
|
||||
- name: Cache packages
|
||||
id: cache-packages
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
|
|
@ -41,7 +37,7 @@ jobs:
|
|||
|
||||
- name: AVD cache
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
id: avd-cache
|
||||
with:
|
||||
path: |
|
||||
|
|
@ -107,13 +103,12 @@ jobs:
|
|||
name: prodDebugAPK
|
||||
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: Create and PR number artifact
|
||||
run: |
|
||||
echo "{\"pr_number\": ${{ github.event.pull_request.number || 'null' }}}" > pr_number.json
|
||||
|
||||
- name: Upload Run ID as Artifact
|
||||
if: github.event_name == 'pull_request'
|
||||
- name: Upload PR number artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: run-id
|
||||
path: run_id.txt
|
||||
name: pr_number
|
||||
path: ./pr_number.json
|
||||
|
|
|
|||
4
.github/workflows/build-beta.yml
vendored
4
.github/workflows/build-beta.yml
vendored
|
|
@ -8,9 +8,9 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: set up JDK 17
|
||||
uses: actions/setup-java@v3
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'temurin'
|
||||
|
|
|
|||
96
.github/workflows/comment_artifacts_on_PR.yml
vendored
Normal file
96
.github/workflows/comment_artifacts_on_PR.yml
vendored
Normal 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
|
||||
});
|
||||
|
|
@ -212,8 +212,8 @@ android {
|
|||
defaultConfig {
|
||||
//applicationId 'fr.free.nrw.commons'
|
||||
|
||||
versionCode 1043
|
||||
versionName '5.1.2'
|
||||
versionCode 1046
|
||||
versionName '5.1.3'
|
||||
setProperty("archivesBaseName", "app-commons-v$versionName-" + getBranchName())
|
||||
|
||||
minSdkVersion 21
|
||||
|
|
|
|||
|
|
@ -125,6 +125,19 @@ class Media constructor(
|
|||
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
|
||||
* @return Media title
|
||||
|
|
|
|||
|
|
@ -98,14 +98,9 @@ class GridViewAdapter(
|
|||
*/
|
||||
@SuppressLint("StringFormatInvalid")
|
||||
private fun setUploaderView(item: Media, uploader: TextView) {
|
||||
if (!item.author.isNullOrEmpty()) {
|
||||
uploader.visibility = View.VISIBLE
|
||||
uploader.text = context.getString(
|
||||
R.string.image_uploaded_by,
|
||||
item.user
|
||||
item.getAuthorOrUser()
|
||||
)
|
||||
} else {
|
||||
uploader.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ an upload might take a dozen seconds. */
|
|||
this.contribution = contribution
|
||||
this.position = position
|
||||
binding.contributionTitle.text = contribution.media.mostRelevantCaption
|
||||
binding.authorView.text = contribution.media.author
|
||||
binding.authorView.text = contribution.media.getAuthorOrUser()
|
||||
|
||||
//Removes flicker of loading image.
|
||||
binding.contributionImage.hierarchy.fadeDuration = 0
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ interface ContributionsContract {
|
|||
|
||||
interface View {
|
||||
fun showMessage(localizedMessage: String)
|
||||
fun getContext(): Context
|
||||
fun getContext(): Context?
|
||||
}
|
||||
|
||||
interface UserActionListener : BasePresenter<View> {
|
||||
|
|
|
|||
|
|
@ -74,12 +74,9 @@ import java.util.Date
|
|||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
|
||||
class ContributionsFragment
|
||||
|
||||
: CommonsDaggerSupportFragment(), FragmentManager.OnBackStackChangedListener,
|
||||
class ContributionsFragment : CommonsDaggerSupportFragment(), FragmentManager.OnBackStackChangedListener,
|
||||
LocationUpdateListener, MediaDetailProvider, SensorEventListener, ICampaignsView,
|
||||
ContributionsContract.View,
|
||||
ContributionsListFragment.Callback {
|
||||
ContributionsContract.View, ContributionsListFragment.Callback {
|
||||
@JvmField
|
||||
@Inject
|
||||
@Named("default_preferences")
|
||||
|
|
@ -307,11 +304,13 @@ class ContributionsFragment
|
|||
}
|
||||
}
|
||||
notification.setOnClickListener { view: View? ->
|
||||
context?.let {
|
||||
startYourself(
|
||||
context, "unread"
|
||||
it, "unread"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
fun setNotificationCount() {
|
||||
|
|
@ -500,7 +499,7 @@ class ContributionsFragment
|
|||
|
||||
private fun setUploadCount() {
|
||||
okHttpJsonApiClient
|
||||
?.getUploadCount((activity as MainActivity).sessionManager?.currentAccount!!.name)
|
||||
?.getUploadCount(sessionManager?.currentAccount!!.name)
|
||||
?.subscribeOn(Schedulers.io())
|
||||
?.observeOn(AndroidSchedulers.mainThread())?.let {
|
||||
compositeDisposable.add(
|
||||
|
|
@ -889,7 +888,8 @@ class ContributionsFragment
|
|||
* this function updates the number of contributions
|
||||
*/
|
||||
fun upDateUploadCount() {
|
||||
WorkManager.getInstance(context)
|
||||
context?.let {
|
||||
WorkManager.getInstance(it)
|
||||
.getWorkInfosForUniqueWorkLiveData(UploadWorker::class.java.simpleName).observe(
|
||||
viewLifecycleOwner
|
||||
) { workInfos: List<WorkInfo?> ->
|
||||
|
|
@ -898,6 +898,7 @@ class ContributionsFragment
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -953,7 +954,7 @@ class ContributionsFragment
|
|||
Timber.d("Skipping re-upload for non-failed %s", contribution.toString())
|
||||
}
|
||||
} else {
|
||||
showLongToast(context, R.string.this_function_needs_network_connection)
|
||||
context?.let { showLongToast(it, R.string.this_function_needs_network_connection) }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -80,9 +80,11 @@ class ContributionsPresenter @Inject internal constructor(
|
|||
.save(contribution)
|
||||
.subscribeOn(ioThreadScheduler)
|
||||
.subscribe {
|
||||
view!!.getContext()?.applicationContext?.let {
|
||||
makeOneTimeWorkRequest(
|
||||
view!!.getContext().applicationContext, ExistingWorkPolicy.KEEP
|
||||
it, ExistingWorkPolicy.KEEP
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ class DeleteHelper @Inject constructor(
|
|||
|
||||
val userPageString = "\n{{subst:idw|${media.filename}}} ~~~~"
|
||||
|
||||
val creator = media.author
|
||||
val creator = media.getAuthorOrUser()
|
||||
?: throw RuntimeException("Failed to nominate for deletion")
|
||||
|
||||
return pageEditClient.prependEdit(
|
||||
|
|
|
|||
|
|
@ -63,9 +63,4 @@ abstract class CommonsDaggerSupportFragment : Fragment(), HasSupportFragmentInje
|
|||
|
||||
return getInstance(activity.applicationContext)
|
||||
}
|
||||
|
||||
// Ensure getContext() returns a non-null Context
|
||||
override fun getContext(): Context {
|
||||
return super.getContext() ?: throw IllegalStateException("Context is null")
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ class MediaConverter
|
|||
metadata.licenseShortName(),
|
||||
metadata.prefixedLicenseUrl,
|
||||
getAuthor(metadata),
|
||||
getAuthor(metadata),
|
||||
imageInfo.getUser(),
|
||||
MediaDataExtractorUtil.extractCategoriesFromList(metadata.categories()),
|
||||
metadata.latLng,
|
||||
entity.labels().mapValues { it.value.value() },
|
||||
|
|
|
|||
|
|
@ -52,12 +52,7 @@ class SearchImagesViewHolder(
|
|||
binding.categoryImageView.setOnClickListener { onImageClicked(item.second) }
|
||||
binding.categoryImageTitle.text = media.mostRelevantCaption
|
||||
binding.categoryImageView.setImageURI(media.thumbUrl)
|
||||
if (media.author?.isNotEmpty() == true) {
|
||||
binding.categoryImageAuthor.visibility = View.VISIBLE
|
||||
binding.categoryImageAuthor.text =
|
||||
containerView.context.getString(R.string.image_uploaded_by, media.user)
|
||||
} else {
|
||||
binding.categoryImageAuthor.visibility = View.GONE
|
||||
}
|
||||
containerView.context.getString(R.string.image_uploaded_by, media.getAuthorOrUser())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -328,7 +328,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
|
|||
.append("\n\n");
|
||||
|
||||
builder.append("User that you want to report: ")
|
||||
.append(media.getAuthor())
|
||||
.append(media.getUser())
|
||||
.append("\n\n");
|
||||
|
||||
if (sessionManager.getUserName() != null) {
|
||||
|
|
@ -423,7 +423,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
|
|||
// Initialize bookmark object
|
||||
bookmark = new Bookmark(
|
||||
m.getFilename(),
|
||||
m.getAuthor(),
|
||||
m.getAuthorOrUser(),
|
||||
BookmarkPicturesContentProvider.uriForName(m.getFilename())
|
||||
);
|
||||
updateBookmarkState(menu.findItem(R.id.menu_bookmark_current_image));
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
|
|||
private var view: View? = null
|
||||
private var scope: LifecycleCoroutineScope? = null
|
||||
private var presenter: NearbyParentFragmentPresenter? = null
|
||||
private var isDarkTheme = false
|
||||
private var _isDarkTheme = false
|
||||
private var isFABsExpanded = false
|
||||
private var selectedPlace: Place? = 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())) {
|
||||
binding?.rlContainerWlmMonthMessage?.visibility = View.VISIBLE
|
||||
} else {
|
||||
|
|
@ -631,7 +631,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
|
|||
* another refactor
|
||||
*/
|
||||
private fun initThemePreferences() {
|
||||
if (isDarkTheme) {
|
||||
if (_isDarkTheme) {
|
||||
binding!!.bottomSheetNearby.rvNearbyList.setBackgroundColor(
|
||||
requireContext().resources.getColor(fr.free.nrw.commons.R.color.contributionListDarkBackground)
|
||||
)
|
||||
|
|
@ -915,7 +915,7 @@ class NearbyParentFragment : CommonsDaggerSupportFragment(),
|
|||
}
|
||||
|
||||
override fun isDarkTheme(): Boolean {
|
||||
return isDarkTheme
|
||||
return _isDarkTheme
|
||||
}
|
||||
})
|
||||
binding!!.nearbyFilterList.root
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.widget.AdapterView
|
||||
import android.widget.AdapterView.OnItemClickListener
|
||||
import android.widget.Button
|
||||
import android.widget.EditText
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
|
|
@ -330,6 +331,9 @@ class UploadMediaDetailAdapter : RecyclerView.Adapter<UploadMediaDetailAdapter.V
|
|||
|
||||
listView.adapter = languagesAdapter
|
||||
|
||||
dialog.findViewById<Button>(R.id.cancel_button)
|
||||
.setOnClickListener { v: View? -> dialog.dismiss() }
|
||||
|
||||
editText.addTextChangedListener(object : TextWatcher {
|
||||
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) =
|
||||
hideRecentLanguagesSection()
|
||||
|
|
|
|||
|
|
@ -136,8 +136,8 @@
|
|||
<string name="menu_about">परिचय</string>
|
||||
<string name="about_license">विकिमीडिया कॉमन्स एप्प एक मुक्त स्रोत एप्प है जो कि विकिमीडिया समुदाय के अनुदानप्राप्तकर्ताओं व स्वयंसेवकों द्वारा निर्मित एवं प्रबंधित है। विकिमीडिया फॉऊण्डेशन इस एप्प के निर्माण, विकास व प्रबंधन में किसी प्रकार से भी संलग्न नहीं है।</string>
|
||||
<string name="about_improve">त्रुटि की सूचना और सुझावों के लिए <a href=\"%1$s\"> GitHub समस्या </a> बनाएं</string>
|
||||
<string name="about_privacy_policy" fuzzy="true"><u>गोपनीयता नीति</u></string>
|
||||
<string name="about_credits" fuzzy="true"><u>श्रेय</u></string>
|
||||
<string name="about_privacy_policy">गोपनीयता नीति</string>
|
||||
<string name="about_credits">श्रेय</string>
|
||||
<string name="title_activity_about">परिचय</string>
|
||||
<string name="menu_feedback">प्रतिक्रिया दें (ईमेल द्वारा)</string>
|
||||
<string name="no_email_client">कोई ईमेल साधन स्थापित नहीं</string>
|
||||
|
|
@ -150,7 +150,7 @@
|
|||
<string name="menu_download">डाउनलोड</string>
|
||||
<string name="preference_license">डिफॉल्ट लाइसेन्स</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_four">एट्रिब्यूशन 4.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_commons">कॉमन्स</string>
|
||||
<string name="about_rate_us" fuzzy="true"><u>हमें रेट करें</u></string>
|
||||
<string name="about_faq" fuzzy="true"><u>अक्सर पूछे जाने वाले प्रश्न</u></string>
|
||||
<string name="about_faq">अक्सर पूछे जाने वाले प्रश्न</string>
|
||||
<string name="welcome_skip_button">प्रशिक्षण छोड़ें</string>
|
||||
<string name="no_internet">इंटरनेट उपलब्ध नहीं</string>
|
||||
<string name="error_notifications">सूचनाएं लाने में त्रुटि</string>
|
||||
<string name="no_notifications">कोई सूचनाएँ नहीं मिलीं</string>
|
||||
<string name="about_translate" fuzzy="true"><u>अनुवाद</u></string>
|
||||
<string name="about_translate">अनुवाद</string>
|
||||
<string name="about_translate_title">भाषाएँ</string>
|
||||
<string name="about_translate_proceed">आगे बढ़ें</string>
|
||||
<string name="about_translate_cancel">रद्द करें</string>
|
||||
|
|
@ -284,7 +284,7 @@
|
|||
<string name="search_recent_header">हाल की खोजें</string>
|
||||
<string name="provider_searches">हाल में खोजे गये प्रश्न</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="explore_tab_title_featured">निर्वाचित</string>
|
||||
<string name="explore_tab_title_map">नक्शा</string>
|
||||
|
|
@ -315,7 +315,7 @@
|
|||
<string name="statistics">सांख्यिकी</string>
|
||||
<string name="statistics_thanks">धन्यवाद प्राप्त किया</string>
|
||||
<string name="statistics_featured">निर्वाचित चित्र</string>
|
||||
<string name="level" fuzzy="true">स्तर</string>
|
||||
<string name="level">स्तर %d</string>
|
||||
<string name="images_uploaded">चित्र अपलोड हुआ</string>
|
||||
<string name="image_reverts">चित्रों को वापस नहीं किया गया</string>
|
||||
<string name="images_used_by_wiki">उपयोग हुए चित्र</string>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
* Akmaie Ajam
|
||||
* Arifin.wijaya
|
||||
* Birusian
|
||||
* Boesenbergia
|
||||
* DARMAS BUDI SANTOSO
|
||||
* Daud I.F. Argana
|
||||
* Fafau06
|
||||
|
|
@ -295,7 +296,7 @@
|
|||
<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="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_message">Pilih bahasa untuk terjemahan yang ingin Anda kirimkan</string>
|
||||
<string name="about_translate_proceed">Lanjutkan</string>
|
||||
|
|
|
|||
|
|
@ -181,6 +181,7 @@
|
|||
<string name="no">Neen</string>
|
||||
<string name="media_detail_caption">Beschrëftung</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_discussion">Diskussioun</string>
|
||||
<string name="media_detail_author">Auteur</string>
|
||||
|
|
|
|||
|
|
@ -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">Aangepaste auteursnaam</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="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="list_sheet">Lijst</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="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="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="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>
|
||||
|
|
@ -657,7 +657,7 @@
|
|||
<string name="leaderboard_weekly">Wekelijks</string>
|
||||
<string name="leaderboard_all_time">Alle tijden</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_my_rank_button_text">Mijn ranking</string>
|
||||
<string name="limited_connection_enabled">Beperkte verbindingsmodus ingeschakeld!</string>
|
||||
|
|
@ -724,7 +724,7 @@
|
|||
<string name="edit_depictions">Wijzig items</string>
|
||||
<string name="edit_categories">Categorieën bewerken</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="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>
|
||||
|
|
@ -835,4 +835,10 @@
|
|||
<string name="account">Account</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">Verdwijnen is een <b>laatste redmiddel</b> en moet <b>alleen worden gebruikt als u voor altijd wilt stoppen met bewerken</b> en om zoveel mogelijk van uw voorgaande relaties te verbergen.<br/><br/>Accountverwijdering op Wikipedia gebeurt door uw accountnaam te wijzigen opdat anderen uw bijdragen niet meer kunnen herkennen. De procedure wordt accountverdwijning genoemd. <b>Door verdwijnen wordt geen volledige anonimiteit gegarandeerd en worden geen bijdragen aan de projecten verwijderd.</b></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 foto’s 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>
|
||||
|
|
|
|||
|
|
@ -10,8 +10,14 @@
|
|||
-->
|
||||
<resources>
|
||||
<string name="commons_logo">ਕਾਮਨਜ਼ ਮਾਰਕਾ</string>
|
||||
<string name="submit">ਹਵਾਲੇ ਕਰੋ</string>
|
||||
<string name="add_another_description">ਇੱਕ ਹੋਰ ਵੇਰਵਾ ਸ਼ਾਮਲ ਕਰੋ</string>
|
||||
<string name="add_new_contribution">ਨਵਾਂ ਯੋਗਦਾਨ ਸ਼ਾਮਲ ਕਰੋ</string>
|
||||
<string name="add_contribution_from_camera">ਕੈਮਰੇ ਰਾਹੀਂ ਯੋਗਦਾਨ ਸ਼ਾਮਲ ਕਰੋ</string>
|
||||
<string name="add_contribution_from_photos">ਤਸਵੀਰਾਂ ਰਾਹੀਂ ਯੋਗਦਾਨ ਸ਼ਾਮਲ ਕਰੋ</string>
|
||||
<string name="show_captions">ਸੁਰਖੀ</string>
|
||||
<string name="row_item_language_description">ਭਾਸ਼ਾ ਦਾ ਵੇਰਵਾ</string>
|
||||
<string name="row_item_caption">ਸੁਰਖੀ</string>
|
||||
<string name="show_captions_description">ਵੇਰਵਾ</string>
|
||||
<string name="nearby_row_image">ਤਸਵੀਰ</string>
|
||||
<string name="nearby_all">ਸਾਰੇ</string>
|
||||
|
|
@ -37,14 +43,19 @@
|
|||
<string name="navigation_item_explore">ਪੜਚੋਲ ਕਰੋ</string>
|
||||
<string name="preference_category_appearance">ਦਿੱਖ</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="menu_settings">ਪਸੰਦਾਂ</string>
|
||||
<string name="upload_in_progress">ਚੜ੍ਹਾਉਣਾ ਜਾਰੀ ਐ</string>
|
||||
<string name="username">ਵਰਤੋਂਕਾਰ ਨਾਂ</string>
|
||||
<string name="password">ਲੰਘ-ਸ਼ਬਦ</string>
|
||||
<string name="login">ਦਾਖ਼ਲ ਹੋਵੋ</string>
|
||||
<string name="forgot_password">ਪਾਰਸ਼ਬਦ ਭੁੱਲ ਗਏ?</string>
|
||||
<string name="signup">ਖਾਤਾ ਬਣਾਓ</string>
|
||||
<string name="logging_in_title">ਦਾਖ਼ਲਾ ਹੋ ਰਿਹਾ ਹੈ</string>
|
||||
<string name="logging_in_message">ਉਡੀਕੋ ਜੀ…</string>
|
||||
<string name="updating_caption_title">ਸੁਰਖੀਆਂ ਅਤੇ ਵੇਰਵੇ ਨਵਿਆਏ ਜਾ ਰਹੇ ਹਨ</string>
|
||||
<string name="updating_caption_message">ਕਿਰਪਾ ਕਰਕੇ ਉਡੀਕੋ...</string>
|
||||
<string name="login_success">ਦਾਖ਼ਲ ਹੋਣਾ ਸਫ਼ਲ!</string>
|
||||
<string name="login_failed">ਦਾਖ਼ਲ ਹੋਣਾ ਅਸਫ਼ਲ!</string>
|
||||
|
|
@ -53,11 +64,13 @@
|
|||
<string name="uploading_started">ਅੱਪਲੋਡ ਸ਼ੁਰੂ ਹੋਇਆ!</string>
|
||||
<string name="upload_completed_notification_title">%1$s ਅੱਪਲੋਡ ਹੋ ਗਏ!</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_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_paused_notification_subtitle">ਵੇਖਣ ਲਈ ਥਪੇੜੋ</string>
|
||||
<string name="title_activity_contributions" fuzzy="true">ਮੇਰੇ ਅੱਪਲੋਡ</string>
|
||||
<string name="contribution_state_queued">ਕਤਾਰ ਵਿਚ</string>
|
||||
<string name="contribution_state_failed">ਫੇਲ੍ਹ ਹੋਇਆ</string>
|
||||
|
|
@ -68,12 +81,17 @@
|
|||
<string name="menu_nearby">ਨੇੜੇ-ਤੇੜੇ</string>
|
||||
<string name="provider_contributions">ਮੇਰੇ ਅੱਪਲੋਡ</string>
|
||||
<string name="menu_copy_link">ਕੜੀ ਦੀ ਨਕਲ ਕਰੋ</string>
|
||||
<string name="menu_link_copied">ਕੜੀ ਨੂੰ ਚੂੰਢੀ-ਤਖਤੀ ਉੱਤੇ ਨਕਲ ਕੀਤਾ ਗਿਆ ਐ</string>
|
||||
<string name="menu_share">ਸਾਂਝਾ ਕਰੋ</string>
|
||||
<string name="menu_view_file_page">ਫਾਇਲ ਸਫ਼ਾ ਵੇਖੋ</string>
|
||||
<string name="share_title_hint">ਸੁਰਖੀ (ਲੋੜੀਂਦੀ)</string>
|
||||
<string name="add_caption_toast">ਕਿਰਪਾ ਕਰਕੇ ਇਸ ਫਾਈਲ ਲਈ ਇੱਕ ਸੁਰਖੀ ਦਿਓ</string>
|
||||
<string name="share_description_hint">ਵੇਰਵਾ</string>
|
||||
<string name="share_caption_hint">ਸੁਰਖੀ</string>
|
||||
<string name="login_failed_network">ਦਾਖ਼ਲ ਹੋਣ ਵਿੱਚ ਅਸਮਰੱਥ - ਨੈੱਟਵਰਕ ਫੇਲ੍ਹ ਹੋਇਆ ਹੈ</string>
|
||||
<string name="login_failed_throttled">ਬਹੁਤ ਸਾਰੀਆਂ ਅਸਫ਼ਲ ਕੋਸ਼ਿਸ਼ਾਂ। ਥੋੜ੍ਹੀ ਦੇਰ ਬਾਅਦ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।</string>
|
||||
<string name="login_failed_blocked">ਅਫ਼ਸੋਸ, ਇਹ ਵਰਤੋਂਕਾਰ ਨੂੰ ਕਾਮਨਜ਼ ਤੇ ਰੋਕ ਲਾਈ ਗਈ ਹੈ।</string>
|
||||
<string name="login_failed_2fa_needed">ਤੁਹਾਨੂੰ ਆਪਣਾ ਦੋ-ਕਾਰਕ ਪ੍ਰਮਾਣੀਕਰਨ ਕੋਡ ਦੇਣਾ ਪਵੇਗਾ।</string>
|
||||
<string name="login_failed_generic">ਦਾਖ਼ਲ ਹੋਣਾ ਅਸਫ਼ਲ!</string>
|
||||
<string name="share_upload_button">ਚੜ੍ਹਾਉ</string>
|
||||
<string name="multiple_share_base_title">ਇਸ ਸੈੱਟ ਨੂੰ ਨਾਂ ਦਿਓ</string>
|
||||
|
|
@ -85,10 +103,12 @@
|
|||
<string name="display_list_button">ਸੂਚੀ</string>
|
||||
<string name="contributions_subtitle_zero" fuzzy="true">ਫ਼ਿਲਹਾਲ ਕੋਈ ਅੱਪਲੋਡ ਨਹੀਂ</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_activity_title">ਸ਼੍ਰੇਣੀਆਂ</string>
|
||||
<string name="title_activity_settings">ਪਸੰਦਾਂ</string>
|
||||
<string name="title_activity_signup">ਖਾਤਾ ਬਣਾਓ</string>
|
||||
<string name="title_activity_featured_images">ਵਿਸ਼ੇਸ਼ ਤਸਵੀਰ</string>
|
||||
<string name="title_activity_category_details">ਸ਼੍ਰੇਣੀ</string>
|
||||
<string name="menu_about">ਇਸ ਬਾਰੇ</string>
|
||||
<string name="about_license" fuzzy="true">ਅਜ਼ਾਦ ਸਰੋਤ ਸਾਫ਼ਟਵੇਅਰ ਨੂੰ <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Apache License v2</a> ਅਧੀਨ ਜਾਰੀ ਕੀਤਾ ਗਿਆ ਹੈ</string>
|
||||
|
|
@ -105,9 +125,9 @@
|
|||
<string name="menu_cancel_upload">ਰੱਦ ਕਰੋ</string>
|
||||
<string name="media_upload_policy">ਇਹ ਤਸਵੀਰ ਅੱਪਲੋਡ ਕਰਨ ਨਾਲ ਹੀ ਮੈਂ ਦਾਅਵਾ ਕਰਦਾ ਹਾਂ/ਕਰਦੀ ਹਾਂ ਕਿ ਇਹ ਮੇਰਾ ਆਪਣਾ ਕਾਰਜ ਹੈ, ਕਿ ਇਸ ਤਹਿਤ ਕੋਈ ਕਾਪੀਰਾਈਟ ਉਲੰਘਣਾ ਨਹੀਂ ਕੀਤੀ ਗਈ ਅਤੇ <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਨੀਤੀਆਂ</a> ਮੁਤਾਬਿਕ ਇਹ ਠੀਕ ਹੈ।</string>
|
||||
<string name="menu_download">ਡਾਊਨਲੋਡ</string>
|
||||
<string name="preference_license" fuzzy="true">ਲਸੰਸ</string>
|
||||
<string name="use_previous" fuzzy="true">ਪਹਿਲਾਂ ਵਾਲਾ ਸਿਰਲੇਖ/ਜਾਣਕਾਰੀ ਵਰਤੋ</string>
|
||||
<string name="preference_theme" fuzzy="true">ਰਾਤ ਦਾ ਅੰਦਾਜ਼</string>
|
||||
<string name="preference_license">ਮੂਲ ਲਸੰਸ</string>
|
||||
<string name="use_previous">ਪਿਛਲੇ ਸਿਰਲੇਖ ਅਤੇ ਵੇਰਵੇ ਦੀ ਵਰਤੋਂ ਕਰੋ</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_four"> Attribution 4.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_subtext">ਤੁਹਾਡੀਆਂ ਤਸਵੀਰਾਂ ਵਿਸ਼ਵ ਦੇ ਬਾਕੀ ਲੋਕਾਂ ਨੂੰ ਸਿੱਖਿਅਤ ਕਰਨ ਲਈ ਸਹਾਈ ਹਨ!</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_subtext_1">ਤੁਹਾਡੇ ਦੋਸਤਾਂ ਦੀਆਂ ਸੈਲਫ਼ੀਆਂ ਜਾਂ ਤਸਵੀਰਾਂ</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_subtext">ਵਿਕੀਪੀਡੀਆ ਉਤਲੀਆਂ ਤਸਵੀਰਾਂ ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਤੋਂ ਆਉਂਦੀਆਂ ਹਨ</string>
|
||||
<string name="welcome_copyright_text">ਤੁਹਾਡੀਆਂ ਤਸਵੀਰਾਂ ਦੁਨੀਆਂ ਭਰ ਦੇ ਲੋਕਾਂ ਨੂੰ ਪੜ੍ਹਨ ਵਿਚ ਮਦਦ ਕਰਦੀਆਂ ਹਨ।</string>
|
||||
|
|
@ -132,6 +158,7 @@
|
|||
<string name="detail_panel_cats_label">ਸ਼੍ਰੇਣੀਆਂ</string>
|
||||
<string name="detail_panel_cats_loading">ਲੱਦ ਰਿਹਾ ਹੈ...</string>
|
||||
<string name="detail_panel_cats_none">ਕੋਈ ਵੀ ਨਹੀਂ ਚੁਣਿਆ</string>
|
||||
<string name="detail_caption_empty">ਕੋਈ ਸੁਰਖੀ ਨਹੀਂ</string>
|
||||
<string name="detail_description_empty">ਕੋਈ ਵੇਰਵਾ ਨਹੀਂ</string>
|
||||
<string name="detail_discussion_empty">ਕੋਈ ਗੱਲਬਾਤ ਨਹੀਂ</string>
|
||||
<string name="detail_license_empty">ਅਣਜਾਣ ਲਸੰਸ</string>
|
||||
|
|
@ -139,8 +166,10 @@
|
|||
<string name="read_storage_permission_rationale" fuzzy="true">ਆਗਿਆ ਚਾਹੀਦੀ ਹੈ: ਬਾਹਰੀ ਸਟੋਰੇਜ ਬਾਰੇ। ਇਸ ਤੋਂ ਬਿਨਾਂ ਐਪ ਕਾਰਜ ਨਹੀਂ ਕਰ ਸਕੇਗੀ।</string>
|
||||
<string name="ok">ਠੀਕ ਹੈ</string>
|
||||
<string name="warning">ਖ਼ਬਰਦਾਰ</string>
|
||||
<string name="upload">ਚੜ੍ਹਾਉ</string>
|
||||
<string name="yes">ਹਾਂ</string>
|
||||
<string name="no">ਨਹੀਂ</string>
|
||||
<string name="media_detail_caption">ਸੁਰਖੀ</string>
|
||||
<string name="media_detail_title">ਸਿਰਲੇਖ</string>
|
||||
<string name="media_detail_description">ਵੇਰਵਾ</string>
|
||||
<string name="media_detail_discussion">ਗੱਲਬਾਤ</string>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
* A100Star
|
||||
* Ajeje Brazorf
|
||||
* Amire80
|
||||
* Annick green
|
||||
* Cabal
|
||||
* Googology
|
||||
* LeGuyanaisPure
|
||||
|
|
@ -27,6 +28,7 @@
|
|||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="all">
|
||||
<string name="submit">{{Identical|Submit}}</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="contributions_subtitle">See the current issue [https://phabricator.wikimedia.org/T267142 T267142] tracked in Phabricator about the <code><nowiki>|zero=</nowiki></code> option currently not supported on Translatewiki.net with the custom <code><nowiki>{{PLURAL}}</nowiki></code> rules used by this project for Android, using a non-MediaWiki syntax.</string>
|
||||
<string name="multiple_uploads_title">{{Identical|Upload}}</string>
|
||||
|
|
@ -190,6 +192,7 @@
|
|||
<string name="depictions_edit_helper_edit_message_else">{{Doc-commons-app-depicts}}</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="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="map_attribution">{{Optional}}\n<code>&amp;#169;</code> is the copyright symbol (©).</string>
|
||||
<string name="categories_tooltip">{{Doc-commons-app-depicts}}</string>
|
||||
|
|
@ -202,9 +205,12 @@
|
|||
<string name="done">{{identical|Done}}</string>
|
||||
<string name="edit_depictions">{{Doc-commons-app-depicts}}</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="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="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="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>
|
||||
|
|
|
|||
|
|
@ -821,4 +821,6 @@
|
|||
<string name="caption">Bildtext</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="show_in_explore">Visa i \"Utforska\"</string>
|
||||
<string name="show_in_nearby">Visa i \"I närheten\"</string>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@
|
|||
<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_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="title_activity_contributions">ಎನ್ನ ದಿಂಜಯೀನಾ ವಿಚಾರೊಳು</string>
|
||||
<string name="contribution_state_queued">ದಿಂಜೊಂತುಂಡು</string>
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ class DeleteHelperTest {
|
|||
).thenReturn("Media successfully deleted: Test Media Title")
|
||||
|
||||
val creatorName = "Creator"
|
||||
whenever(media.author).thenReturn("$creatorName")
|
||||
whenever(media.getAuthorOrUser()).thenReturn("$creatorName")
|
||||
whenever(media.filename).thenReturn("Test file.jpg")
|
||||
val makeDeletion = deleteHelper.makeDeletion(
|
||||
context,
|
||||
|
|
@ -133,7 +133,7 @@ class DeleteHelperTest {
|
|||
|
||||
whenever(media.displayTitle).thenReturn("Test file")
|
||||
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()
|
||||
}
|
||||
|
|
@ -148,7 +148,7 @@ class DeleteHelperTest {
|
|||
.thenReturn(Observable.just(false))
|
||||
whenever(media.displayTitle).thenReturn("Test file")
|
||||
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()
|
||||
}
|
||||
|
|
@ -163,7 +163,7 @@ class DeleteHelperTest {
|
|||
.thenReturn(Observable.just(true))
|
||||
whenever(media.displayTitle).thenReturn("Test file")
|
||||
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()
|
||||
}
|
||||
|
|
@ -221,7 +221,7 @@ class DeleteHelperTest {
|
|||
whenever(media.displayTitle).thenReturn("Test file")
|
||||
whenever(media.filename).thenReturn("Test file.jpg")
|
||||
|
||||
whenever(media.author).thenReturn(null)
|
||||
whenever(media.getAuthorOrUser()).thenReturn(null)
|
||||
|
||||
deleteHelper.makeDeletion(context, media, "Test reason")?.blockingGet()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue