Merge branch 'master' into click_to_scroll_to_top

This commit is contained in:
Matthieu 2021-05-22 10:35:59 +02:00
commit 8fa3072de0
19 changed files with 498 additions and 85 deletions

1
.gitignore vendored
View File

@ -14,5 +14,6 @@
.cxx
.idea
app/release
app/debug
app/lint
lint

View File

@ -36,6 +36,7 @@ android {
sourceSets {
main.java.srcDirs += 'src/main/java'
test.java.srcDirs += 'src/test/java'
staging.res.srcDirs += 'src/debug/res'
androidTest.java.srcDirs += 'src/androidTest/java'
}
testBuildType "staging"
@ -44,7 +45,8 @@ android {
buildTypes {
debug {
applicationIdSuffix '.debug'
versionNameSuffix "-debug"
}
staging {
initWith debug
@ -74,6 +76,7 @@ android {
proguardFiles 'proguard-rules.pro'
}
}
testOptions {
animationsDisabled true
@ -86,14 +89,23 @@ android {
apply plugin: 'kotlin-kapt'
}
afterEvaluate {
/**
* Make a string with the application_id (available in xml etc)
*/
android.applicationVariants.all { variant ->
variant.resValue 'string', 'application_id', variant.applicationId
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
/**
* AndroidX dependencies:
*/
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'androidx.core:core-ktx:1.5.0'
implementation 'androidx.preference:preference-ktx:1.1.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.navigation:navigation-fragment-ktx:2.3.5'
@ -111,7 +123,7 @@ dependencies {
implementation "androidx.annotation:annotation:1.2.0"
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation "androidx.activity:activity-ktx:1.2.3"
implementation 'androidx.fragment:fragment-ktx:1.3.3'
implementation 'androidx.fragment:fragment-ktx:1.3.4'
// Use the most recent version of CameraX
def cameraX_version = '1.0.0'
@ -191,7 +203,7 @@ dependencies {
// debugImplementation required vs testImplementation: https://issuetracker.google.com/issues/128612536
//noinspection FragmentGradleConfiguration
stagingImplementation("androidx.fragment:fragment-testing:1.3.3") {
stagingImplementation("androidx.fragment:fragment-testing:1.3.4") {
exclude group:'androidx.test', module:'monitor'
}

View File

@ -12,6 +12,7 @@ import androidx.test.espresso.matcher.ViewMatchers.*
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
import androidx.test.uiautomator.UiDevice
import org.hamcrest.Matchers.allOf
import org.pixeldroid.app.testUtility.*
import org.pixeldroid.app.utils.db.AppDatabase
import org.junit.After
@ -107,8 +108,10 @@ class DrawerMenuTest {
// Start the screen of your activity.
onView(withText(R.string.menu_account)).perform(click())
// Check that profile activity was opened.
waitForView(R.id.editButton)
onView(withId(R.id.editButton)).check(matches(isDisplayed()))
val followersText = context.resources.getQuantityString(R.plurals.nb_followers, 2, 2)
waitForView(R.id.nbFollowingTextView, allOf(withId(R.id.nbFollowersTextView), withText(followersText)))
onView(withText(followersText)).perform(click())
waitForView(R.id.account_entry_avatar)
@ -120,8 +123,10 @@ class DrawerMenuTest {
// Start the screen of your activity.
onView(withText(R.string.menu_account)).perform(click())
// Check that profile activity was opened.
waitForView(R.id.editButton)
onView(withId(R.id.editButton)).check(matches(isDisplayed()))
val followingText = context.resources.getQuantityString(R.plurals.nb_following, 3, 3)
waitForView(R.id.nbFollowingTextView, allOf(withId(R.id.nbFollowingTextView), withText(followingText)))
onView(withText(followingText)).perform(click())
waitForView(R.id.account_entry_avatar)

View File

@ -24,6 +24,7 @@ import org.junit.Rule
import org.junit.Test
import org.junit.rules.Timeout
import org.junit.runner.RunWith
import org.pixeldroid.app.testUtility.PACKAGE_ID
@RunWith(AndroidJUnit4::class)
class LoginActivityOnlineTest {
@ -39,7 +40,7 @@ class LoginActivityOnlineTest {
fun setup() {
context = ApplicationProvider.getApplicationContext()
context = ApplicationProvider.getApplicationContext()
pref = context.getSharedPreferences("org.pixeldroid.app.pref", Context.MODE_PRIVATE)
pref = context.getSharedPreferences("${PACKAGE_ID}.pref", Context.MODE_PRIVATE)
pref.edit().clear().apply()
db = initDB(context)
db.clearAllTables()
@ -76,7 +77,7 @@ class LoginActivityOnlineTest {
.putString("clientID", "iwndoiuqwnd")
.putString("clientSecret", "wlifowed")
.apply()
val uri = Uri.parse("oauth2redirect://org.pixeldroid.app?code=sdfdqsf")
val uri = Uri.parse("oauth2redirect://${PACKAGE_ID}?code=sdfdqsf")
val intent = Intent(ACTION_VIEW, uri, context, LoginActivity::class.java)
ActivityScenario.launch<LoginActivity>(intent)
onView(withId(R.id.editText)).check(matches(
@ -86,7 +87,7 @@ class LoginActivityOnlineTest {
@Test
fun incompleteIntentReturnInfoFailsTest() {
val uri = Uri.parse("oauth2redirect://org.pixeldroid.app?code=")
val uri = Uri.parse("oauth2redirect://${PACKAGE_ID}?code=")
val intent = Intent(ACTION_VIEW, uri, context, LoginActivity::class.java)
ActivityScenario.launch<LoginActivity>(intent)
onView(withId(R.id.editText)).check(matches(

View File

@ -66,15 +66,15 @@ fun ViewInteraction.isDisplayed(): Boolean {
* Doesn't work if the root changes (since it operates on the root!)
* @param viewId The id of the view to wait for.
*/
fun waitForView(viewId: Int) {
Espresso.onView(isRoot()).perform(waitForViewViewAction(viewId))
fun waitForView(viewId: Int, viewMatcher: Matcher<View> = withId(viewId)) {
Espresso.onView(isRoot()).perform(waitForViewViewAction(viewId, viewMatcher))
}
/**
* This ViewAction tells espresso to wait till a certain view is found in the view hierarchy.
* @param viewId The id of the view to wait for.
*/
private fun waitForViewViewAction(viewId: Int): ViewAction {
private fun waitForViewViewAction(viewId: Int, viewMatcher: Matcher<View>): ViewAction {
// The maximum time which espresso will wait for the view to show up (in milliseconds)
val timeOut = 5000
return object : ViewAction {
@ -90,7 +90,6 @@ private fun waitForViewViewAction(viewId: Int): ViewAction {
uiController.loopMainThreadUntilIdle()
val startTime = System.currentTimeMillis()
val endTime = startTime + timeOut
val viewMatcher = withId(viewId)
do {
// Iterate through all views on the screen and see if the view we are looking for is there already
@ -103,7 +102,7 @@ private fun waitForViewViewAction(viewId: Int): ViewAction {
// Loops the main thread for a specified period of time.
// Control may not return immediately, instead it'll return after the provided delay has passed and the queue is in an idle state again.
uiController.loopMainThreadForAtLeast(100)
} while (System.currentTimeMillis() < endTime) // in case of a timeout we throw an exception -&gt; test fails
} while (System.currentTimeMillis() < endTime) // in case of a timeout we throw an exception - test fails
throw PerformException.Builder()
.withCause(TimeoutException())
.withActionDescription(this.description)

View File

@ -4,6 +4,10 @@ import org.pixeldroid.app.BuildConfig.*
import org.pixeldroid.app.utils.db.entities.InstanceDatabaseEntity
import org.pixeldroid.app.utils.db.entities.UserDatabaseEntity
const val PACKAGE_ID = APPLICATION_ID
val testiTestoInstance = InstanceDatabaseEntity(
uri = INSTANCE_URI,
title = "PixelDroid CI instance",

View File

@ -0,0 +1,38 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:startY="49.59793"
android:startX="42.9492"
android:endY="92.4963"
android:endX="85.84757"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<group
android:name="foo"
android:scaleX="2"
android:scaleY="2"
android:translateY="0"
android:translateX="0">
<path
android:pathData="M23.0332,30.2725L27.5781,30.2725C31.8595,30.2725 35.3302,26.9088 35.3302,22.7596C35.3302,18.6103 31.8595,15.2467 27.5781,15.2467L21.0185,15.2467C18.5485,15.2467 16.5461,17.1872 16.5461,19.581L16.5461,36.451L23.0332,30.2725Z"
android:strokeWidth="1"
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:strokeColor="#00000000"/>
</group>
</vector>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<vector
android:height="108dp"
android:width="108dp"
android:viewportHeight="108"
android:viewportWidth="108"
xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z"/>
<path android:fillColor="#00000000" android:pathData="M9,0L9,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,0L19,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M29,0L29,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M39,0L39,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M49,0L49,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M59,0L59,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M69,0L69,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M79,0L79,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M89,0L89,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M99,0L99,108"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,9L108,9"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,19L108,19"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,29L108,29"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,39L108,39"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,49L108,49"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,59L108,59"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,69L108,69"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,79L108,79"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,89L108,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M0,99L108,99"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,29L89,29"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,39L89,39"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,49L89,49"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,59L89,59"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,69L89,69"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M19,79L89,79"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M29,19L29,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M39,19L39,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M49,19L49,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M59,19L59,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M69,19L69,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
<path android:fillColor="#00000000" android:pathData="M79,19L79,89"
android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/>
</vector>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

View File

@ -15,7 +15,7 @@
<uses-feature android:name="android.hardware.location.gps" />
<application
android:name="org.pixeldroid.app.utils.PixelDroidApplication"
android:name=".utils.PixelDroidApplication"
android:allowBackup="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
@ -23,14 +23,14 @@
android:supportsRtl="true"
android:theme="@style/AppTheme"
tools:replace="android:allowBackup">
<activity android:name="org.pixeldroid.app.postCreation.camera.CameraActivity" />
<activity android:name=".postCreation.camera.CameraActivity" />
<activity
android:name="org.pixeldroid.app.posts.ReportActivity"
android:name=".posts.ReportActivity"
android:screenOrientation="sensorPortrait"
tools:ignore="LockedOrientationActivity" />
<activity android:name="org.pixeldroid.app.postCreation.photoEdit.PhotoEditActivity" />
<activity android:name=".postCreation.photoEdit.PhotoEditActivity" />
<activity
android:name="org.pixeldroid.app.postCreation.PostCreationActivity"
android:name=".postCreation.PostCreationActivity"
android:screenOrientation="sensorPortrait"
android:theme="@style/AppTheme.NoActionBar"
tools:ignore="LockedOrientationActivity" >
@ -46,25 +46,25 @@
</intent-filter>
</activity>
<activity
android:name="org.pixeldroid.app.profile.FollowsActivity"
android:name=".profile.FollowsActivity"
android:screenOrientation="sensorPortrait"
tools:ignore="LockedOrientationActivity" />
<activity
android:name="org.pixeldroid.app.posts.PostActivity"
android:name=".posts.PostActivity"
android:screenOrientation="sensorPortrait"
tools:ignore="LockedOrientationActivity" />
<activity
android:name="org.pixeldroid.app.profile.ProfileActivity"
android:name=".profile.ProfileActivity"
android:screenOrientation="sensorPortrait"
tools:ignore="LockedOrientationActivity" />
<activity
android:name="org.pixeldroid.app.settings.SettingsActivity"
android:name=".settings.SettingsActivity"
android:label="@string/title_activity_settings2"
android:parentActivityName="org.pixeldroid.app.MainActivity"
android:parentActivityName=".MainActivity"
android:screenOrientation="sensorPortrait"
tools:ignore="LockedOrientationActivity" />
<activity
android:name="org.pixeldroid.app.MainActivity"
android:name=".MainActivity"
android:screenOrientation="sensorPortrait"
android:theme="@style/AppTheme.Launcher"
android:windowSoftInputMode="adjustPan"
@ -77,10 +77,10 @@
<meta-data
android:name="android.app.default_searchable"
android:value=".searchDiscover.SearchActivity" />
android:value="org.pixeldroid.app.searchDiscover.SearchActivity" />
</activity>
<activity
android:name="org.pixeldroid.app.LoginActivity"
android:name=".LoginActivity"
android:screenOrientation="sensorPortrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="adjustResize"
@ -102,7 +102,7 @@
android:theme="@style/AppTheme.NoActionBar"
tools:ignore="LockedOrientationActivity" />
<activity
android:name="org.pixeldroid.app.searchDiscover.SearchActivity"
android:name=".searchDiscover.SearchActivity"
android:launchMode="singleTop"
android:screenOrientation="sensorPortrait"
tools:ignore="LockedOrientationActivity">
@ -115,19 +115,19 @@
android:resource="@xml/searchable" />
</activity>
<activity
android:name="org.pixeldroid.app.settings.AboutActivity"
android:parentActivityName="org.pixeldroid.app.settings.SettingsActivity"
android:name=".settings.AboutActivity"
android:parentActivityName=".settings.SettingsActivity"
android:screenOrientation="sensorPortrait"
tools:ignore="LockedOrientationActivity" />
<activity
android:name="org.pixeldroid.app.settings.LicenseActivity"
android:parentActivityName="org.pixeldroid.app.settings.AboutActivity"
android:name=".settings.LicenseActivity"
android:parentActivityName=".settings.AboutActivity"
android:screenOrientation="sensorPortrait"
tools:ignore="LockedOrientationActivity" />
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="org.pixeldroid.app.fileprovider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data

View File

@ -39,6 +39,7 @@ import io.reactivex.schedulers.Schedulers
import okhttp3.MultipartBody
import retrofit2.HttpException
import java.io.File
import java.io.FileNotFoundException
import java.io.IOException
import java.io.OutputStream
import java.text.SimpleDateFormat
@ -313,7 +314,16 @@ class PostCreationActivity : BaseActivity() {
for (data: PhotoData in photoData) {
val imageUri = data.imageUri
val imageInputStream = contentResolver.openInputStream(imageUri)!!
val imageInputStream = try {
contentResolver.openInputStream(imageUri)!!
} catch (e: FileNotFoundException){
AlertDialog.Builder(this).apply {
setMessage(getString(R.string.file_not_found).format(imageUri))
setNegativeButton(android.R.string.ok) { _, _ -> }
}.show()
return
}
val imagePart = ProgressRequestBody(imageInputStream, data.size)
val requestBody = MultipartBody.Builder()

View File

@ -141,7 +141,7 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/switch_to_grid"
android:src="@drawable/grid_on_black_24dp"
android:tint="@color/white"
app:tint="@color/white"
app:layout_constraintBottom_toBottomOf="@+id/indicator"
app:layout_constraintEnd_toStartOf="@+id/indicator"
app:layout_constraintTop_toTopOf="@+id/indicator" />
@ -154,7 +154,7 @@
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/switch_to_carousel"
android:src="@drawable/view_carousel_black_24dp"
android:tint="@color/white"
app:tint="@color/white"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/indicator"
app:layout_constraintEnd_toEndOf="parent"

View File

@ -39,7 +39,7 @@
<string name="switch_camera_button_alt">Kamera wechseln</string>
<string name="registration_failed">Konnte die App nicht mit diesem Server verbinden</string>
<string name="instance_error">Konnte die Informationen der Instanz nicht abrufen</string>
<string name="upload_picture_failed">Fehler beim Hochladen der Bilder!</string>
<string name="upload_picture_failed">Fehler beim Hochladen!</string>
<string name="default_system">Standard (Systemeinstellung)</string>
<string name="permission_denied">Berechtigung verweigert</string>
<string name="save_image_failed">Bild kann nicht gespeichert werden</string>
@ -48,7 +48,7 @@
<string name="picture_format_error">Upload-Fehler: falsches Bildformat.</string>
<string name="upload_post_failed">Hochladen des Beitrags fehlgeschlagen</string>
<string name="add_account_name">Konto hinzufügen</string>
<string name="add_account_description">Ein weiteres Pixelfed-Konto hinzufügen</string>
<string name="add_account_description">Einen weiteren Pixelfed-Account hinzufügen</string>
<string name="light_theme">Hell</string>
<string name="dark_theme">Dunkel</string>
<string name="comment">Kommentieren</string>
@ -79,10 +79,10 @@
<string name="accounts">KONTEN</string>
<string name="posts">BEITRÄGE</string>
<string name="posting_image_accessibility_hint">Hochzuladendes Bild</string>
<string name="media_upload_failed">{gmd_cloud_off} Hochladen der Medien fehlgeschlagen, versuche es nochmal oder überprüfe deine Netzwerkverbindung</string>
<string name="media_upload_completed">{gmd_cloud_done} Hochladen der Medien abgeschlossen</string>
<string name="media_upload_failed">Hochladen fehlgeschlagen, versuche es noch einmal oder überprüfe deine Verbindung</string>
<string name="media_upload_completed">Hochladen abgeschlossen</string>
<string name="request_format_error">Fehler beim Hochladen: Falsches Request Format</string>
<string name="feed_failed">Konnte den Feed nicht laden</string>
<string name="feed_failed">Feed konnte nicht geladen werden</string>
<string name="posted_on">Erstellt am %1$s</string>
<string name="write_permission_download_pic">Für das Herunterladen von Bildern müssen Sie eine Schreibgenehmigung erteilen!</string>
<string name="write_permission_share_pic">Für die Teilen von Bildern müssen Sie eine Schreibgenehmigung erteilen!</string>
@ -127,7 +127,7 @@
<string name="open_drawer_menu">Öffne Menü</string>
<string name="profile_picture">Profilbild</string>
<string name="toolbar_title_edit">Bearbeiten</string>
<string name="report_error">Meldung konnte nicht gesendet werden</string>
<string name="report_error">Konnte nicht gemeldet werden</string>
<string name="reported">Gemeldet {gmd_check_circle}</string>
<string name="report_target">Melde @%1$ss Beitrag</string>
<string name="post_is_album">Dieser Beitrag ist ein Album</string>
@ -139,12 +139,14 @@
<string name="post_image">Eines der Bilder im Beitrag</string>
<string name="verify_credentials">Benutzerdaten konnten nicht geladen werden</string>
<plurals name="nb_posts">
<item quantity="one">%d Beitrag</item>
<item quantity="other">%d Beiträge</item>
<item quantity="one">%d
\nBeitrag</item>
<item quantity="other">%d
\nBeiträge</item>
</plurals>
<plurals name="number_comments">
<item quantity="one">%d Kommentar</item>
<item quantity="other">%d Kommentar</item>
<item quantity="other">%d Kommentare</item>
</plurals>
<string name="no_media_description">Ergänze hier eine Medienbeschreibung hier…</string>
<string name="save_image_description">Bildbeschreibung speichern</string>
@ -161,4 +163,34 @@
\nWenn du keine kennst kannst u hier nachsehen: https://pixelfed.org/join
\n
\nMehr Informationen zu Pixelfed findest du hier: https://pixelfed.org</string>
<string name="delete_post_failed_error">Löschen fehlgeschlagen, Fehlermeldung %1$d</string>
<string name="dialog_message_cancel_follow_request">Followeranfrage zurückziehen\?</string>
<string name="empty_feed">Hier gibt es nichts zu sehen :(</string>
<plurals name="nb_following">
<item quantity="one">%d
\nFolgt</item>
<item quantity="other">%d
\nFolgt</item>
</plurals>
<plurals name="nb_followers">
<item quantity="one">%d
\nFollower</item>
<item quantity="other">%d
\nFollower</item>
</plurals>
<plurals name="shares">
<item quantity="one">Einmal geteilt</item>
<item quantity="other">%d mal geteilt</item>
</plurals>
<plurals name="likes">
<item quantity="one">%d Like</item>
<item quantity="other">%d Likes</item>
</plurals>
<string name="upload_error">Serverfehler %1$d.</string>
<string name="size_exceeds_instance_limit">Die Größe von Bild %1$d im Album übersteigt mit %2$d kB die von deiner Instanz festgelegte Obergrenze von zulässige Obergrenze von %3$d kB je Bild.</string>
<string name="total_exceeds_album_limit">Du hast mehr Bilder ausgewählt, als auf deinem Server zulässig sind (%1$s). Bilder jenseits des Limits wurden nicht berücksichtigt.</string>
<string name="api_not_enabled_dialog">Die API ist auf deiner Instanz nicht aktiv. Bitte kontaktiere den Betreiber deiner Instanz, damit sie aktiviert werden kann.</string>
<string name="follow_requested">Followeranfrage</string>
<string name="delete_post_failed_io_except">Beitrag konnte nicht gelöscht werden. Internetverbindung unterbrochen\?</string>
<string name="edit_link_failed">Bearbeitung nicht verfügbar.</string>
</resources>

View File

@ -92,4 +92,104 @@
<string name="busy_dialog_ok_button">Bien, espera.</string>
<string name="busy_dialog_text">Procesando imagen, ¡Espera a que termine!</string>
<string name="nothing_to_see_here">¡Nada que ver aquí!</string>
<plurals name="nb_following">
<item quantity="one">%d
\nSiguiendo</item>
<item quantity="other">%d
\nSiguiendo</item>
</plurals>
<plurals name="description_max_characters">
<item quantity="one">La descripción debe contener por lo menos %d caracter.</item>
<item quantity="other">La descripción debe contener por lo menos %d caracteres.</item>
</plurals>
<string name="delete_post_failed_io_except">No se pudo borrar la publicación, quizás sea tu conexión\?</string>
<string name="delete_post_failed_error">No se pudo borrar la publicación, error %1$d</string>
<string name="mascot_description">Imagen mostrando un panda rojo, la mascota de Pixelfed, usando un móvil</string>
<string name="issues_contribute">Reporta problemas o contribuye a la aplicación:</string>
<string name="help_translate">Ayuda a traducir PixelDroid a tu lenguaje:</string>
<string name="language">Lenguaje</string>
<string name="delete_dialog">¿Borrar esta publicación\?</string>
<string name="delete">Borrar</string>
<string name="panda_pull_to_refresh_to_try_again">Este panda está triste. Desliza hacia abajo para intentarlo de nuevo.</string>
<string name="something_went_wrong">Algo fue mal…</string>
<string name="discover_no_infinite_load">\'Descubre\' no carga infinitamente. Desliza hacia abajo para cargar más imágenes.</string>
<string name="discover">DESCUBRE</string>
<string name="open_drawer_menu">Abrir el menú lateral</string>
<string name="profile_picture">Imagen de perfil</string>
<string name="toolbar_title_edit">Editar</string>
<string name="report_error">No se pudo enviar el reporte</string>
<string name="reported">Reportado {gmd_check_circle}</string>
<string name="report_target">Reportar la publicación de @%1$s</string>
<string name="optional_report_comment">Mensaje opcional para moderadores/administradores</string>
<string name="share_link">Compartir enlace</string>
<string name="report">Reportar</string>
<string name="status_more_options">Más opciones</string>
<string name="search_empty_error">La búsqueda no puede estar vacía</string>
<string name="follows_title">seguidos por %1$s</string>
<string name="followers_title">Seguidores de %1$s</string>
<string name="post_title">Publicación de %1$s</string>
<string name="about">Sobre</string>
<string name="license_info">PixelDroid es software libre y código abierto, licenciado bajo la GNU General Public License (versión 3 o posterior)</string>
<string name="project_website">Web del proyecto: https://pixeldroid.org</string>
<string name="dependencies_licenses">Dependencias y licencias</string>
<string name="about_pixeldroid">Sobre PixelDroid</string>
<string name="dialog_message_cancel_follow_request">¿Cancelar la petición de seguimiento\?</string>
<string name="follow_requested">Seguimiento pedido</string>
<string name="unfollow">Dejar de seguir</string>
<string name="empty_feed">Nada que ver aquí :(</string>
<string name="edit_link_failed">Falló al abrir la página de edición</string>
<plurals name="nb_followers">
<item quantity="one">%d
\nSeguidor</item>
<item quantity="other">%d
\nSeguidores</item>
</plurals>
<plurals name="nb_posts">
<item quantity="one">%d
\nPublicación</item>
<item quantity="other">%d
\nPublicaciones</item>
</plurals>
<string name="post_is_album">Esta publicación es un album</string>
<string name="submit_comment">Enviar comentario</string>
<string name="add_comment">Añadir un comentario</string>
<plurals name="number_comments">
<item quantity="one">%d comentario</item>
<item quantity="other">%d comentarios</item>
</plurals>
<plurals name="shares">
<item quantity="one">%d Compartido</item>
<item quantity="other">%d Compartidos</item>
</plurals>
<plurals name="likes">
<item quantity="one">%d Me gusta</item>
<item quantity="other">%d Me gustas</item>
</plurals>
<string name="no_cancel_edit">No, cancelar edición</string>
<string name="save_before_returning">¿Guardar tus ediciones\?</string>
<string name="crop_button">Botón para recortar o rotar la imagen</string>
<string name="image_preview">Previsualización de la imagen siendo editada</string>
<string name="filter_thumbnail">Previsualización del filtro</string>
<string name="upload_error">Código de error devuelto por el servidor: %1$d</string>
<string name="size_exceeds_instance_limit">El tamaño de la imagen número %1$d del álbum, supera el máximo permitido por esta instancia (%2$d kB, siendo el límite: %3$d kB). Podrías no subirla.</string>
<string name="total_exceeds_album_limit">Has escogido más imágenes que el máximo que tu servidor permite (%1$s). Las imágenes por encima de ese límite serán ignoradas.</string>
<string name="no_media_description">Añadir una descripción del medio aquí…</string>
<string name="save_image_description">Guardar descripción de la imagen</string>
<string name="switch_to_carousel">Cambiar a carrusel</string>
<string name="switch_to_grid">Cambiar a visión cuadrícula</string>
<string name="post_image">Una de las imágenes de la publicación</string>
<string name="add_photo">Añadir una foto</string>
<string name="api_not_enabled_dialog">La API no está activada en esta instancia. Contacta con tu administrador para pedirle que lo active.</string>
<string name="whats_an_instance_explanation">Quizás estés confundido/a por el campo de texto pidiendo el dominio de tu \'instancia\'.
\n
\nPixelfed es una plataforma descentralizada y forma parte del \'fediverso\', lo que significa que ambas plataformas tienen algo en común que las permite interconectarse, como por ejemplo con Mastodon (ver https://joinmastodon.org).
\n
\nEsto quiere decir que debes elegir que servidor o \'instancia\' de Pixelfed utilizar. Si no conoces ninguna de antemano, te recomendamos descubrir una aquí: https://pixelfed.org/join
\n
\nPara más información sobre Pixelfed, puedes ir a: https://pixelfed.org</string>
<string name="poll_notification">La votación de %1$s ha terminado</string>
<string name="instance_not_pixelfed_cancel">Cancelar iniciar sesión</string>
<string name="instance_not_pixelfed_continue">Vale, continuar de todas formas</string>
<string name="instance_not_pixelfed_warning">Eso no parece ser una instancia de Pixelfed, por lo que la App podría no funcionar adecuadamente.</string>
<string name="verify_credentials">No se pudo obtener la información del usuario</string>
</resources>

View File

@ -5,10 +5,10 @@
<string name="title_activity_settings2">Настройки</string>
<string name="theme_title">Тема Приложения</string>
<string name="theme_header">Тема</string>
<string name="followed_notification">%1$s подписался(-лась) на вас</string>
<string name="mention_notification">%1$s упомянул(а) вас</string>
<string name="shared_notification">%1$s поделился(-лась) вашим постом</string>
<string name="post">отправить</string>
<string name="followed_notification">%1$s подписан(о) на вас</string>
<string name="mention_notification">%1$s упомянул(о) вас</string>
<string name="shared_notification">%1$s поделился(ось) вашим постом</string>
<string name="post">пост</string>
<string name="logout">Выйти</string>
<string name="lbl_brightness">ЯРКОСТЬ</string>
<string name="whats_an_instance">Что такое инстанс\?</string>
@ -25,28 +25,28 @@
<string name="domain_of_your_instance">Домен вашего инстанса</string>
<string name="connect_to_pixelfed">Подключение к Pixelfed</string>
<string name="app_name">PixelDroid</string>
<string name="menu_account">Мой профиль</string>
<string name="menu_account">Мой Профиль</string>
<string name="menu_settings">Настройки</string>
<string name="invalid_domain">Некорректный домен</string>
<string name="invalid_domain">Несуществующий домен</string>
<string name="browser_launch_failed">Не удалось запустить браузер, есть ли он у вас\?</string>
<string name="liked_notification">%1$s оценил(а) ваш пост</string>
<string name="liked_notification">%1$s оценил(и) ваш пост</string>
<string name="description">Описание…</string>
<string name="image_download_failed">Сохранение не удалось, попробуйте ещё раз</string>
<string name="image_download_failed">Загрузка не удалась, попробуйте ещё раз</string>
<string name="share_picture">Поделиться изображением…</string>
<string name="login_connection_required_once">Вам необходимо быть в сети что бы добавить аккаунт и использовать PixelDroid :(</string>
<string name="cw_nsfw_hidden_media_n_click_to_show">CW / NSFW / Скрытое медиа
\n(кликните что бы показать 18+)</string>
<string name="cw_nsfw_hidden_media_n_click_to_show">CW / NSFW / Медиа для 18+
\n(кликните что бы показать)</string>
<string name="registration_failed">Не удалось зарегистрировать приложение на этом инстансе</string>
<string name="capture_button_alt">Сделать снимок</string>
<string name="add_account_description">Добавить другой аккаунт Pixelfed</string>
<string name="add_account_name">Добавить аккаунт</string>
<string name="add_account_description">Добавить другой Аккаунт Pixelfed</string>
<string name="add_account_name">Добавить Аккаунт</string>
<string name="instance_error">Не удалось получить информацию об инстансе</string>
<string name="comment">Комментарий</string>
<string name="comment_posted">Комментарий: %1$s опубликован!</string>
<string name="comment_error">Ошибка комментария!</string>
<string name="share_image">Поделиться Изображением</string>
<string name="write_permission_download_pic">Вы должны дать разрешение на запись для загрузки изображений!</string>
<string name="write_permission_share_pic">Вы должны дать разрешение на запись чтобы делиться изображениями!</string>
<string name="write_permission_share_pic">Вы должны дать разрешение на запись чтобы делиться фотографиями!</string>
<string name="empty_comment">Комментарий не может быть пустым!</string>
<string name="posted_on">Опубликовано в %1$s</string>
<string name="no_description">Нет описания</string>
@ -85,12 +85,12 @@
<string name="hashtags">ХЭШТЕГИ</string>
<string name="follow_button_failed">Не удалось отобразить кнопку подписки</string>
<string name="posting_image_accessibility_hint">Изображение, которое будет опубликовано</string>
<string name="media_upload_completed">{gmd_cloud_done} Загрузка медиа завершена</string>
<string name="retry">Ещё раз</string>
<string name="media_upload_failed">{gmd_cloud_off} Загрузка медиа не удалась, попробуйте снова или проверьте сеть</string>
<string name="media_upload_completed">Загрузка медиа завершена</string>
<string name="retry">Повторить</string>
<string name="media_upload_failed">Ошибка загрузки медиа, попробуйте ещё раз или проверьте состояние сети</string>
<string name="nothing_to_see_here">Здесь нечего смотреть!</string>
<string name="crop_result_error">Не удалось получить изображение после обрезки</string>
<string name="busy_dialog_ok_button">Ок, подожду.</string>
<string name="busy_dialog_ok_button">Ок, ожидайте.</string>
<string name="busy_dialog_text">Изображение обрабатывается, пожалуйста, ожидайте!</string>
<string name="open_drawer_menu">Открыть меню навигации</string>
<string name="panda_pull_to_refresh_to_try_again">Эта панда несчастлива. Потяни, чтобы обновить.</string>
@ -102,7 +102,7 @@
<string name="reported">Отправлено {gmd_check_circle}</string>
<string name="report_target">Пожаловаться на пост @%1$s</string>
<string name="optional_report_comment">Дополнительное сообщение для модераторов/администраторов</string>
<string name="share_link">Поделиться ссылкой</string>
<string name="share_link">Поделиться Ссылкой</string>
<string name="report">Пожаловаться</string>
<string name="status_more_options">Больше опций</string>
<string name="search_empty_error">Поисковый запрос не может быть пустым</string>
@ -110,16 +110,16 @@
<string name="followers_title">%1$s подписчиков</string>
<string name="post_title">%1$s пост</string>
<string name="about">О приложении</string>
<string name="license_info">PixelDroid это свободное ПО с открытым исходным кодом, выпускаемое под лицензией GNU General Public License (версии 3 или новее)</string>
<string name="license_info">PixelDroid это свободное ПО с открытым исходным кодом, выпускаемое под лицензией GNU General Public License (версии 3 и выше)</string>
<string name="project_website">Сайт проекта: https://pixeldroid.org</string>
<string name="dependencies_licenses">Зависимости и лицензии</string>
<string name="about_pixeldroid">О PixelDroid</string>
<string name="unfollow">Отписаться</string>
<string name="add_photo">Добавить фото</string>
<string name="poll_notification">%1$s завершил опрос</string>
<string name="poll_notification">%1$s опрос завершён</string>
<string name="instance_not_pixelfed_cancel">Отмена входа</string>
<string name="instance_not_pixelfed_continue">OK, продолжить всё равно</string>
<string name="instance_not_pixelfed_warning">Это не похоже на инстанс Pixelfed, приложение может работать нестабильно.</string>
<string name="instance_not_pixelfed_warning">Это не похоже на инстанс Pixelfed, приложение может работать с ошибками.</string>
<string name="save_image_description">Сохранить описание изображения</string>
<string name="post_image">Одно из изображений в посте</string>
<string name="verify_credentials">Невозможно получить информацию о пользователе</string>
@ -138,25 +138,37 @@
<string name="delete_dialog">Удалить этот пост\?</string>
<string name="delete">Удалить</string>
<plurals name="nb_following">
<item quantity="one">%d Подписка</item>
<item quantity="few">%d Подписки</item>
<item quantity="many">%d Подписок</item>
<item quantity="other">%d Подписок</item>
<item quantity="one">%d
\nПодписка</item>
<item quantity="few">%d
\nПодписки</item>
<item quantity="many">%d
\nПодписок</item>
<item quantity="other">%d
\nПодписок</item>
</plurals>
<plurals name="nb_followers">
<item quantity="one">%d Подписчик</item>
<item quantity="few">%d Подписчика</item>
<item quantity="many">%d Подписчиков</item>
<item quantity="other">%d Подписчиков</item>
<item quantity="one">%d
\nПодписчик</item>
<item quantity="few">%d
\nПодписчика</item>
<item quantity="many">%d
\nПодписчиков</item>
<item quantity="other">%d
\nПодписчиков</item>
</plurals>
<plurals name="nb_posts">
<item quantity="one">%d Пост</item>
<item quantity="few">%d Поста</item>
<item quantity="many">%d Постов</item>
<item quantity="other">%d Постов</item>
<item quantity="one">%d
\nПост</item>
<item quantity="few">%d
\nПоста</item>
<item quantity="many">%d
\nПостов</item>
<item quantity="other">%d
\nПостов</item>
</plurals>
<string name="post_is_album">Этот пост в альбоме</string>
<string name="submit_comment">Отправить комментарий</string>
<string name="submit_comment">Предложить комментарий</string>
<string name="add_comment">Добавить комментарий</string>
<plurals name="number_comments">
<item quantity="one">%d комментарий</item>
@ -179,7 +191,7 @@
<string name="image_preview">Предварительный просмотр редактируемого изображения</string>
<string name="filter_thumbnail">Фильтр миниатюр</string>
<string name="no_media_description">Добавить описание медиа файла здесь…</string>
<string name="switch_to_carousel">Показывать в режиме «карусели»</string>
<string name="switch_to_carousel">Показывать в режиме «карусель»</string>
<string name="whats_an_instance_explanation">Вас может смутить текстовое поле, запрашивающее доменное имя вашего \'инстанса\'.
\n
\nPixelfed это федеративная платформа и часть \"федиверса\", что означает, что она может общаться с другими платформами, говорящими на том же языке, как например Mastodon (см. https://joinmastodon.org).
@ -189,4 +201,15 @@
\nДополнительную информации о Pixelfed вы можете посмотреть здесь: https://pixelfed.org</string>
<string name="crop_button">Кнопка для обрезки или поворота изображения</string>
<string name="switch_to_grid">Переключить в виде сетки</string>
<string name="discover_no_infinite_load">Обзор не может загружаться бесконечно. Потяните, чтобы обновить другие изображения.</string>
<string name="dialog_message_cancel_follow_request">Отменить запрос на подписку\?</string>
<string name="follow_requested">Подписаться на Запрос</string>
<string name="total_exceeds_album_limit">Вы выбрали большее изображений, чем разрешено вашим сервером (%1$s). Изображения сверх установленного лимита игнорируются.</string>
<string name="api_not_enabled_dialog">На этом инстансе API не активирован. Свяжитесь с вашим администратором для его активации.</string>
<string name="delete_post_failed_io_except">Не удалось удалить пост, проверить подключение\?</string>
<string name="delete_post_failed_error">Ошибка при удалении поста %1$d</string>
<string name="empty_feed">Здесь ничего нет :(</string>
<string name="edit_link_failed">Не удалось открыть страницу редактирования</string>
<string name="upload_error">Код ошибки, возвращенный сервером: %1$d</string>
<string name="size_exceeds_instance_limit">Размер изображения в альбоме превышает максимальный размер в %1$d разрешённый инстансом (%2$d Кбайт, тогда как лимит установлен в %3$d Кбайт). По всей вероятности вы не сможете загрузить его.</string>
</resources>

View File

@ -43,8 +43,8 @@
<string name="instance_error">无法获取实例信息</string>
<string name="retry">重试</string>
<string name="posting_image_accessibility_hint">待发布的图像</string>
<string name="media_upload_failed">{gmd_cloud_off} 媒体上传失败,请重试或检查网络状况</string>
<string name="media_upload_completed">{gmd_cloud_done} 媒体已上传</string>
<string name="media_upload_failed">媒体上传失败,请重试或检查网络状况</string>
<string name="media_upload_completed">已完成媒体上传</string>
<string name="hashtags">标签</string>
<string name="accounts">帐户</string>
<string name="posts">帖文</string>
@ -90,14 +90,14 @@
<string name="dark_theme">深色</string>
<string name="nothing_to_see_here">这里什么也没有!</string>
<string name="crop_result_error">图像裁剪后无法恢复</string>
<string name="busy_dialog_ok_button">好的</string>
<string name="busy_dialog_ok_button">好的,等一下。</string>
<string name="busy_dialog_text">图像仍在处理中,请先等待完成!</string>
<string name="post_image">帖文中的一张图片</string>
<string name="add_photo">添加照片</string>
<string name="poll_notification">%1$s投票已经结束</string>
<string name="instance_not_pixelfed_cancel">取消登录</string>
<string name="instance_not_pixelfed_continue">了解,请继续</string>
<string name="instance_not_pixelfed_warning">这似乎不是一个 Pixelfed 实例,可能会导致应用意外退出</string>
<string name="instance_not_pixelfed_warning">这似乎不是一个 Pixelfed 实例,因此该应用可能以意想不到的方式崩溃。</string>
<string name="verify_credentials">无法获得用户信息</string>
<string name="about">关于</string>
<string name="project_website">项目主页https://pixeldroid.org</string>
@ -105,4 +105,81 @@
<string name="about_pixeldroid">关于 PixelDroid</string>
<string name="share_link">分享链接</string>
<string name="delete">删除</string>
<string name="whats_an_instance_explanation">请求你的 \'实例\' 域名的文本框可能让你觉得困惑。
\n
\nPixelfed是一个联合平台是“fediverse”的一部分这意味着它可以与其他使用相同语言的平台进行交流就像 Mastodon (见 https://joinmastodon.org)
\n
\n这也意味着你必须选择 Pixelfed 使用哪个服务器或“实例”。如果你不清楚你可以看这里https://pixelfed.org/join
\n
\n关于 Pixelfed 的更多信息请见此处https://pixelfed.org</string>
<string name="api_not_enabled_dialog">此实例上未激活 API。联系管理员请他们激活它。</string>
<string name="delete_post_failed_io_except">法删除帖子,请检查你的连接\?</string>
<string name="delete_post_failed_error">无法删除帖子,错误 %1$d</string>
<string name="mascot_description">图片显示的是一只小熊猫Pixelfed的吉祥物正在用手机</string>
<string name="issues_contribute">报告问题或为这个应用程序作贡献:</string>
<string name="help_translate">帮助将 PixelDroid 翻译到你的语言:</string>
<string name="language">语言</string>
<string name="delete_dialog">删除这则帖子?</string>
<string name="panda_pull_to_refresh_to_try_again">这只熊猫不高兴。下拉刷新以再次尝试。</string>
<string name="something_went_wrong">出错了…</string>
<string name="discover_no_infinite_load">Discover 不会无限加载。下拉来刷新获取其他图像。</string>
<string name="discover">发现</string>
<string name="open_drawer_menu">打开抽屉按钮</string>
<string name="profile_picture">个人资料图片</string>
<string name="toolbar_title_edit">编辑</string>
<string name="report_error">无法发送报告</string>
<string name="reported">已报告 {gmd_check_circle}</string>
<string name="report_target">报告 @%1$s 的帖子</string>
<string name="optional_report_comment">管理员的可选消息</string>
<string name="report">报告</string>
<string name="status_more_options">更多选项</string>
<string name="search_empty_error">搜索查询不能为空</string>
<string name="follows_title">%1$s 的关注</string>
<string name="followers_title">%1$s 的关注者</string>
<string name="post_title">%1$s 的帖子</string>
<string name="license_info">PixelDroid 是自由开源软件,使用 GNU 通用公共许可证 (版本3或更高版本)</string>
<string name="dependencies_licenses">依赖和许可证</string>
<string name="dialog_message_cancel_follow_request">取消这个关注请求?</string>
<string name="follow_requested">已请求关注</string>
<string name="empty_feed">这儿没什么可看的 :(</string>
<string name="edit_link_failed">未能打开编辑页面</string>
<string name="post_is_album">这个帖子是一个相册</string>
<string name="submit_comment">提交评论</string>
<string name="add_comment">添加一条评论</string>
<plurals name="number_comments">
<item quantity="other">%d 条评论</item>
</plurals>
<string name="no_cancel_edit">不,取消编辑</string>
<string name="save_before_returning">保存你的编辑?</string>
<string name="crop_button">裁剪或旋转图片的按钮</string>
<string name="image_preview">被编辑图片的预览</string>
<string name="filter_thumbnail">过滤器的缩略图</string>
<string name="upload_error">服务器返回了错误码:%1$d</string>
<string name="size_exceeds_instance_limit">相册中 %1$d 号图片的尺寸超出了实例允许的最大尺寸 (图片大小为 %2$d kb 而上限为 %3$d kb)。你可能无法上传这张图片。</string>
<string name="total_exceeds_album_limit">你选择的图片数超出了你服务器允许的最大数目 (%1$s)。超出上限的图像已被忽略。</string>
<string name="no_media_description">在此处添加一个媒体描述…</string>
<string name="save_image_description">保存图片描述</string>
<string name="switch_to_carousel">切换到旋转视图</string>
<string name="switch_to_grid">切换到网格视图</string>
<plurals name="nb_following">
<item quantity="other">%d
\n关注账户</item>
</plurals>
<plurals name="nb_followers">
<item quantity="other">%d
\n关注者</item>
</plurals>
<plurals name="nb_posts">
<item quantity="other">%d
\n帖子</item>
</plurals>
<plurals name="shares">
<item quantity="other">%d 次分享</item>
</plurals>
<plurals name="likes">
<item quantity="other">%d 个赞</item>
</plurals>
<plurals name="description_max_characters">
<item quantity="other">描述必须最多包含 %d 个字符。</item>
</plurals>
</resources>

View File

@ -1,7 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Name of the app. In most languages you won't want to change this. -->
<string name="app_name">PixelDroid</string>
<!-- Button to go to the user's profile -->
<string name="menu_account">My Profile</string>
<!-- Button to go to the settings -->
<string name="menu_settings">Settings</string>
<string name="invalid_domain">"Invalid domain"</string>
<string name="registration_failed">"Could not register the application with this server"</string>
@ -14,16 +19,35 @@
<string name="instance_not_pixelfed_continue">"OK, continue anyway"</string>
<string name="instance_not_pixelfed_cancel">"Cancel logging in"</string>
<string name="title_activity_settings2">Settings</string>
<!-- Theme Preferences -->
<!-- Theme Preferences: title of button -->
<string name="theme_title">Application Theme</string>
<!-- Theme Preferences: title of the settings section dedicated to themes -->
<string name="theme_header">Theme</string>
<!-- Theme Preferences: default option (follow the system theme) -->
<string name="default_system">Default (Follows system)</string>
<!-- Theme Preferences: light theme option -->
<string name="light_theme">Light</string>
<!-- Theme Preferences: dark theme option -->
<string name="dark_theme">Dark</string>
<!-- Notifications: follow notification -->
<string name="followed_notification">%1$s followed you</string>
<!-- Notifications: mention (@) notification -->
<string name="mention_notification">%1$s mentioned you</string>
<!-- Notifications: share (boost) notification -->
<string name="shared_notification">%1$s shared your post</string>
<!-- Notifications: like (favourite) notification -->
<string name="liked_notification">%1$s liked your post</string>
<!-- Notifications: end of poll notification -->
<string name="poll_notification">"%1$s's poll has ended"</string>
<!-- Login page -->
@ -201,4 +225,7 @@ For more info about Pixelfed, you can check here: https://pixelfed.org"</string>
<string name="mascot_description">Image showing a red panda, Pixelfed\'s mascot, using a phone</string>
<string name="delete_post_failed_error">Could not delete the post, error %1$d</string>
<string name="delete_post_failed_io_except">Could not delete the post, check your connection?</string>
<!-- Error message when a selected file can not be found -->
<string name="file_not_found">File %1$s was not found</string>
</resources>

View File

@ -26,7 +26,7 @@
android:summary="@string/about_pixeldroid"
app:icon="@drawable/info_black_24dp">
<intent
android:targetPackage="org.pixeldroid.app"
android:targetPackage="@string/application_id"
android:targetClass="org.pixeldroid.app.settings.AboutActivity"/>
</Preference>
</PreferenceScreen>