mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +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]
|
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 }}
|
||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
@ -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: |
|
||||||
|
|
@ -107,13 +103,12 @@ jobs:
|
||||||
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
|
- name: Create and PR number artifact
|
||||||
if: github.event_name == 'pull_request'
|
run: |
|
||||||
run: echo "${{ github.run_id }}" > run_id.txt
|
echo "{\"pr_number\": ${{ github.event.pull_request.number || 'null' }}}" > pr_number.json
|
||||||
|
|
||||||
- name: Upload Run ID as Artifact
|
- name: Upload PR number artifact
|
||||||
if: github.event_name == 'pull_request'
|
|
||||||
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
|
||||||
|
|
|
||||||
4
.github/workflows/build-beta.yml
vendored
4
.github/workflows/build-beta.yml
vendored
|
|
@ -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'
|
||||||
|
|
|
||||||
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 {
|
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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.visibility = View.VISIBLE
|
|
||||||
uploader.text = context.getString(
|
uploader.text = context.getString(
|
||||||
R.string.image_uploaded_by,
|
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.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
|
||||||
|
|
|
||||||
|
|
@ -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> {
|
||||||
|
|
|
||||||
|
|
@ -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,11 +304,13 @@ class ContributionsFragment
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
notification.setOnClickListener { view: View? ->
|
notification.setOnClickListener { view: View? ->
|
||||||
|
context?.let {
|
||||||
startYourself(
|
startYourself(
|
||||||
context, "unread"
|
it, "unread"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressLint("CheckResult")
|
@SuppressLint("CheckResult")
|
||||||
fun setNotificationCount() {
|
fun setNotificationCount() {
|
||||||
|
|
@ -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,7 +888,8 @@ 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 {
|
||||||
|
WorkManager.getInstance(it)
|
||||||
.getWorkInfosForUniqueWorkLiveData(UploadWorker::class.java.simpleName).observe(
|
.getWorkInfosForUniqueWorkLiveData(UploadWorker::class.java.simpleName).observe(
|
||||||
viewLifecycleOwner
|
viewLifecycleOwner
|
||||||
) { workInfos: List<WorkInfo?> ->
|
) { 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())
|
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) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,9 +80,11 @@ class ContributionsPresenter @Inject internal constructor(
|
||||||
.save(contribution)
|
.save(contribution)
|
||||||
.subscribeOn(ioThreadScheduler)
|
.subscribeOn(ioThreadScheduler)
|
||||||
.subscribe {
|
.subscribe {
|
||||||
|
view!!.getContext()?.applicationContext?.let {
|
||||||
makeOneTimeWorkRequest(
|
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 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(
|
||||||
|
|
|
||||||
|
|
@ -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")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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() },
|
||||||
|
|
|
||||||
|
|
@ -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.visibility = View.VISIBLE
|
|
||||||
binding.categoryImageAuthor.text =
|
binding.categoryImageAuthor.text =
|
||||||
containerView.context.getString(R.string.image_uploaded_by, media.user)
|
containerView.context.getString(R.string.image_uploaded_by, media.getAuthorOrUser())
|
||||||
} else {
|
|
||||||
binding.categoryImageAuthor.visibility = View.GONE
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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));
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
|
|
@ -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">त्रुटि की सूचना और सुझावों के लिए <a href=\"%1$s\"> GitHub समस्या </a> बनाएं</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_privacy_policy">गोपनीयता नीति</string>
|
||||||
<string name="about_credits" fuzzy="true"><u>श्रेय</u></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"><u>हमें रेट करें</u></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="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"><u>अनुवाद</u></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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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 <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>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -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">ਅਜ਼ਾਦ ਸਰੋਤ ਸਾਫ਼ਟਵੇਅਰ ਨੂੰ <a href=\"https://github.com/commons-app/apps-android-commons/blob/master/COPYING\">Apache License v2</a> ਅਧੀਨ ਜਾਰੀ ਕੀਤਾ ਗਿਆ ਹੈ</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="menu_cancel_upload">ਰੱਦ ਕਰੋ</string>
|
||||||
<string name="media_upload_policy">ਇਹ ਤਸਵੀਰ ਅੱਪਲੋਡ ਕਰਨ ਨਾਲ ਹੀ ਮੈਂ ਦਾਅਵਾ ਕਰਦਾ ਹਾਂ/ਕਰਦੀ ਹਾਂ ਕਿ ਇਹ ਮੇਰਾ ਆਪਣਾ ਕਾਰਜ ਹੈ, ਕਿ ਇਸ ਤਹਿਤ ਕੋਈ ਕਾਪੀਰਾਈਟ ਉਲੰਘਣਾ ਨਹੀਂ ਕੀਤੀ ਗਈ ਅਤੇ <a href=\"https://commons.wikimedia.org/wiki/Commons:Policies_and_guidelines\">ਵਿਕੀਮੀਡੀਆ ਕਾਮਨਜ਼ ਨੀਤੀਆਂ</a> ਮੁਤਾਬਿਕ ਇਹ ਠੀਕ ਹੈ।</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="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>
|
||||||
|
|
|
||||||
|
|
@ -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 <code><nowiki>|zero=</nowiki></code> option currently not supported on Translatewiki.net with the custom <code><nowiki>{{PLURAL}}</nowiki></code> rules used by this project for Android, using a non-MediaWiki syntax.</string>
|
<string name="contributions_subtitle">See the current issue [https://phabricator.wikimedia.org/T267142 T267142] tracked in Phabricator about the <code><nowiki>|zero=</nowiki></code> option currently not supported on Translatewiki.net with the custom <code><nowiki>{{PLURAL}}</nowiki></code> rules used by this project for Android, using a non-MediaWiki syntax.</string>
|
||||||
<string name="multiple_uploads_title">{{Identical|Upload}}</string>
|
<string name="multiple_uploads_title">{{Identical|Upload}}</string>
|
||||||
|
|
@ -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<code>&amp;#169;</code> is the copyright symbol (©).</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>
|
<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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue