From 6bc5e33c5d82dd8d9d5d2792b8bd9c7eccaaa790 Mon Sep 17 00:00:00 2001 From: Jeremy Massel <1123407+jkmassel@users.noreply.github.com> Date: Wed, 25 Feb 2026 14:00:15 -0700 Subject: [PATCH 1/2] feat: Add WordPress.com OAuth support to Android demo app Support both self-hosted (Application Passwords) and WordPress.com (OAuth2) authentication in the Android demo app by adopting the new wordpress-rs authentication API. Key changes: - Update wordpress-rs to version with OAuth2 support - Rewrite AuthenticationManager to branch on DiscoveredAuthenticationMechanism - Migrate site persistence from SharedPreferences to encrypted AccountRepository - Add GutenbergKitApplication for AccountRepository initialization - Update SiteCapabilitiesDiscovery to use autodiscovery with WP.com route handling - Add OAuth callback intent filter and credentials template Co-Authored-By: Claude Opus 4.6 --- .gitignore | 1 + .../wordpress/gutenberg/RESTAPIRepository.kt | 33 ++- .../gutenberg/stores/EditorAssetsLibrary.kt | 8 +- android/app/src/main/AndroidManifest.xml | 11 + .../wp_com_oauth_credentials.json.example | 4 + .../gutenbergkit/AuthenticationManager.kt | 277 ++++++++++++++---- .../example/gutenbergkit/ConfigurationItem.kt | 43 ++- .../gutenbergkit/ConfigurationStorage.kt | 61 ---- .../gutenbergkit/GutenbergKitApplication.kt | 18 ++ .../com/example/gutenbergkit/MainActivity.kt | 54 ++-- .../gutenbergkit/SiteCapabilitiesDiscovery.kt | 85 ++---- .../gutenbergkit/SitePreparationActivity.kt | 3 + .../gutenbergkit/SitePreparationViewModel.kt | 33 ++- android/gradle/libs.versions.toml | 4 +- 14 files changed, 429 insertions(+), 206 deletions(-) create mode 100644 android/app/src/main/assets/wp_com_oauth_credentials.json.example delete mode 100644 android/app/src/main/java/com/example/gutenbergkit/ConfigurationStorage.kt create mode 100644 android/app/src/main/java/com/example/gutenbergkit/GutenbergKitApplication.kt diff --git a/.gitignore b/.gitignore index 6f5329068..603c6b114 100644 --- a/.gitignore +++ b/.gitignore @@ -184,6 +184,7 @@ local.properties /android/.gradle /android/.kotlin /android/.idea +/android/app/src/main/assets/wp_com_oauth_credentials.json ## Production Build Products /android/Gutenberg/src/main/assets/assets diff --git a/android/Gutenberg/src/main/java/org/wordpress/gutenberg/RESTAPIRepository.kt b/android/Gutenberg/src/main/java/org/wordpress/gutenberg/RESTAPIRepository.kt index 7197695e5..6a8d9e736 100644 --- a/android/Gutenberg/src/main/java/org/wordpress/gutenberg/RESTAPIRepository.kt +++ b/android/Gutenberg/src/main/java/org/wordpress/gutenberg/RESTAPIRepository.kt @@ -24,10 +24,11 @@ class RESTAPIRepository( private val json = Json { ignoreUnknownKeys = true } private val apiRoot = configuration.siteApiRoot.trimEnd('/') - private val editorSettingsUrl = "$apiRoot$EDITOR_SETTINGS_PATH" - private val activeThemeUrl = "$apiRoot$ACTIVE_THEME_PATH" - private val siteSettingsUrl = "$apiRoot$SITE_SETTINGS_PATH" - private val postTypesUrl = "$apiRoot$POST_TYPES_PATH" + private val namespace = configuration.siteApiNamespace.firstOrNull() + private val editorSettingsUrl = buildNamespacedUrl(EDITOR_SETTINGS_PATH) + private val activeThemeUrl = buildNamespacedUrl(ACTIVE_THEME_PATH) + private val siteSettingsUrl = buildNamespacedUrl(SITE_SETTINGS_PATH) + private val postTypesUrl = buildNamespacedUrl(POST_TYPES_PATH) /** * Cleanup any expired cache entries. @@ -72,7 +73,7 @@ class RESTAPIRepository( } private fun buildPostUrl(id: Int): String { - return "$apiRoot/wp/v2/posts/$id?context=edit" + return buildNamespacedUrl("/wp/v2/posts/$id?context=edit") } // MARK: Editor Settings @@ -139,7 +140,7 @@ class RESTAPIRepository( } private fun buildPostTypeUrl(type: String): String { - return "$apiRoot/wp/v2/types/$type?context=edit" + return buildNamespacedUrl("/wp/v2/types/$type?context=edit") } // MARK: GET Active Theme @@ -212,6 +213,26 @@ class RESTAPIRepository( return urlResponse } + /** + * Builds a URL from the API root and path, inserting the site API namespace + * after the version segment if one is configured. + * + * For example, with namespace `sites/123/` and path `/wp/v2/types`: + * the result is `$apiRoot/wp/v2/sites/123/types`. + */ + private fun buildNamespacedUrl(path: String): String { + if (namespace == null) { + return "$apiRoot$path" + } + + val parts = path.removePrefix("/").split("/", limit = 3) + if (parts.size < 3) { + return "$apiRoot$path" + } + + return "$apiRoot/${parts[0]}/${parts[1]}/$namespace${parts[2]}" + } + companion object { private const val EDITOR_SETTINGS_PATH = "/wp-block-editor/v1/settings" private const val ACTIVE_THEME_PATH = "/wp/v2/themes?context=edit&status=active" diff --git a/android/Gutenberg/src/main/java/org/wordpress/gutenberg/stores/EditorAssetsLibrary.kt b/android/Gutenberg/src/main/java/org/wordpress/gutenberg/stores/EditorAssetsLibrary.kt index bb53e25a9..e0596ee2a 100644 --- a/android/Gutenberg/src/main/java/org/wordpress/gutenberg/stores/EditorAssetsLibrary.kt +++ b/android/Gutenberg/src/main/java/org/wordpress/gutenberg/stores/EditorAssetsLibrary.kt @@ -266,7 +266,13 @@ class EditorAssetsLibrary( private fun editorAssetsUrl(configuration: EditorConfiguration): String { val baseUrl = configuration.siteApiRoot.trimEnd('/') - return "$baseUrl/wpcom/v2/editor-assets?exclude=core,gutenberg" + val namespace = configuration.siteApiNamespace.firstOrNull() + + return if (namespace != null) { + "$baseUrl/wpcom/v2/${namespace}editor-assets?exclude=core,gutenberg" + } else { + "$baseUrl/wpcom/v2/editor-assets?exclude=core,gutenberg" + } } /** diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 0a22ac632..73310ee1d 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools"> + + + + + + + + { - val success = apiDiscoveryResult.success - val apiRootUrl = success.apiRootUrl.url() - val applicationPasswordAuthenticationUrl = - success.applicationPasswordsAuthenticationUrl.url() - withContext(Dispatchers.Main) { - launchAuthenticationFlow( - apiRootUrl, - applicationPasswordAuthenticationUrl - ) - } - } + try { + when (val apiDiscoveryResult = WpLoginClient(emptyList()).apiDiscovery(siteUrl)) { + is ApiDiscoveryResult.Success -> { + val success = apiDiscoveryResult.success + currentDiscoverySuccess = success - else -> { - withContext(Dispatchers.Main) { - callback.onAuthenticationFailure("Failed to find api root: $apiDiscoveryResult") + withContext(Dispatchers.Main) { + when (success.authentication) { + is DiscoveredAuthenticationMechanism.ApplicationPasswords -> { + launchApplicationPasswordsFlow(success) + } + is DiscoveredAuthenticationMechanism.OAuth2 -> { + launchOAuthFlow(success) + } + } + } + } + else -> { + withContext(Dispatchers.Main) { + callback.onAuthenticationFailure( + "Failed to find api root: $apiDiscoveryResult" + ) + } } } + } catch (e: Exception) { + withContext(Dispatchers.Main) { + callback.onAuthenticationFailure("Authentication error: ${e.message}") + } } } } - private fun launchAuthenticationFlow( - apiRootUrl: String, - applicationPasswordAuthenticationUrl: String - ) { - // Store the API root URL for use when processing authentication result - currentApiRootUrl = apiRootUrl - - val uriBuilder = applicationPasswordAuthenticationUrl.toUri().buildUpon() + private fun launchApplicationPasswordsFlow(success: AutoDiscoveryAttemptSuccess) { + val authUrl = applicationPasswordsUrl(success.authentication) + ?: run { + currentCallback?.onAuthenticationFailure("No application passwords URL found") + return + } + val uriBuilder = authUrl.url().toUri().buildUpon() uriBuilder - .appendQueryParameter("app_name", APP_NAME_AUTH) - .appendQueryParameter("app_id", "00000000-0000-4000-9000-000000000000") - // Url scheme is defined in AndroidManifest file - .appendQueryParameter("success_url", "gutenbergkit://authorized") + .appendQueryParameter("app_name", APP_NAME) + .appendQueryParameter("app_id", APP_ID) + .appendQueryParameter("success_url", SELF_HOSTED_REDIRECT_URI) uriBuilder.build().let { uri -> - val intent = Intent(Intent.ACTION_VIEW, uri) - context.startActivity(intent) + context.startActivity(Intent(Intent.ACTION_VIEW, uri)) + } + } + + private fun launchOAuthFlow(success: AutoDiscoveryAttemptSuccess) { + val credentials = loadOAuthCredentials() + if (credentials == null) { + currentCallback?.onAuthenticationFailure( + "WP.com OAuth credentials not configured. " + + "Add wp_com_oauth_credentials.json to app assets." + ) + return } + + val config = wordpressComOauth2Configuration( + clientId = credentials.clientId, + clientSecret = credentials.clientSecret, + redirectUri = WPCOM_REDIRECT_URI, + scope = listOf(WpComOauthScope.GLOBAL) + ) + currentOAuthConfig = config + + val host = success.parsedSiteUrl.toURL().toURI().host + val state = java.util.UUID.randomUUID().toString() + currentOAuthState = state + + val authUrl = config.buildTokenRequestUrl( + state = state, + blog = WpComSiteIdentifier.Slug(value = host) + ) + + context.startActivity(Intent(Intent.ACTION_VIEW, authUrl.url().toUri())) } fun processAuthenticationResult(intent: Intent, callback: AuthenticationCallback) { - intent.data?.let { data -> + currentCallback = callback + intent.data?.let { uri -> + when (uri.host) { + "authorized" -> handleApplicationPasswordsCallback(uri, callback) + "wpcom-authorized" -> handleOAuthCallback(uri, callback) + } + } + } + + private fun handleApplicationPasswordsCallback( + data: Uri, + callback: AuthenticationCallback + ) { + try { + val siteUrl = data.getQueryParameter("site_url") + ?: throw IllegalStateException("site_url is missing from authentication") + val username = data.getQueryParameter("user_login") + ?: throw IllegalStateException("username is missing from authentication") + val password = data.getQueryParameter("password") + ?: throw IllegalStateException("password is missing from authentication") + + val discoverySuccess = currentDiscoverySuccess + ?: throw IllegalStateException("API discovery result is not available") + val siteApiRoot = discoverySuccess.apiRootUrl.toURL().toString() + + val account = Account.SelfHostedSite( + id = 0u, + domain = siteUrl, + username = username, + password = password, + siteApiRoot = siteApiRoot + ) + accountRepository.store(account) + + val stored = accountRepository.all().last() + currentDiscoverySuccess = null + callback.onAuthenticationSuccess(stored) + } catch (e: Exception) { + callback.onAuthenticationFailure("Authentication error: ${e.message}") + } + } + + private fun handleOAuthCallback(data: Uri, callback: AuthenticationCallback) { + val config = currentOAuthConfig + val state = currentOAuthState + + if (config == null || state == null) { + callback.onAuthenticationFailure("OAuth state not available") + return + } + + CoroutineScope(Dispatchers.IO).launch { try { - val siteUrl = data.getQueryParameter("site_url") - ?: throw IllegalStateException("site_url is missing from authentication") - val username = data.getQueryParameter("user_login") - ?: throw IllegalStateException("username is missing from authentication") - val password = data.getQueryParameter("password") - ?: throw IllegalStateException("password is missing from authentication") - - val siteApiRoot = currentApiRootUrl - ?: throw IllegalStateException("API root URL is not available") - currentApiRootUrl = null - - val authToken = "Basic " + Base64.encodeToString( - "$username:$password".toByteArray(), - Base64.NO_WRAP + val result = config.parseTokenResponse( + url = data.toString(), + expectedState = state + ) + val tokenParams = config.buildTokenRequestParameters(code = result.code) + + val wpComClient = WpComApiClient( + authProvider = WpAuthenticationProvider.none(), + interceptors = emptyList() ) - callback.onAuthenticationSuccess(siteUrl, siteApiRoot, authToken) + val tokenResult = wpComClient.request { client -> + client.oauth2().requestToken(tokenParams) + } + + withContext(Dispatchers.Main) { + when (tokenResult) { + is WpRequestResult.Success -> { + val tokenResponse = tokenResult.response.data + val blogId = tokenResponse.blogId + val discoverySuccess = currentDiscoverySuccess + val siteHost = discoverySuccess?.parsedSiteUrl?.toURL()?.toURI()?.host + + val account = if (blogId != null) { + Account.SelfHostedSite( + id = 0u, + domain = siteHost ?: tokenResponse.blogUrl ?: "WordPress.com", + username = siteHost ?: tokenResponse.blogUrl ?: "WordPress.com", + password = tokenResponse.accessToken, + siteApiRoot = wordpressComSiteApiRoot(blogId) + ) + } else { + Account.WpCom( + id = 0u, + username = tokenResponse.blogUrl ?: "WordPress.com", + token = tokenResponse.accessToken, + siteApiRoot = "" + ) + } + + accountRepository.store(account) + val stored = accountRepository.all().last() + + currentOAuthConfig = null + currentOAuthState = null + currentDiscoverySuccess = null + + callback.onAuthenticationSuccess(stored) + } + else -> { + callback.onAuthenticationFailure("Token exchange failed") + } + } + } } catch (e: Exception) { - callback.onAuthenticationFailure("Authentication error: ${e.message}") + withContext(Dispatchers.Main) { + callback.onAuthenticationFailure("OAuth error: ${e.message}") + } } } } -} \ No newline at end of file + + private fun loadOAuthCredentials(): OAuthCredentials? { + return try { + val json = context.assets.open("wp_com_oauth_credentials.json") + .bufferedReader() + .use { it.readText() } + val jsonObject = JSONObject(json) + val clientId = jsonObject.optLong("client_id", 0) + val clientSecret = jsonObject.optString("client_secret", "") + if (clientId == 0L || clientSecret.isEmpty()) null + else OAuthCredentials(clientId.toULong(), clientSecret) + } catch (e: Exception) { + null + } + } + + private data class OAuthCredentials(val clientId: ULong, val clientSecret: String) +} diff --git a/android/app/src/main/java/com/example/gutenbergkit/ConfigurationItem.kt b/android/app/src/main/java/com/example/gutenbergkit/ConfigurationItem.kt index 3fa2a2b0f..3e89a9452 100644 --- a/android/app/src/main/java/com/example/gutenbergkit/ConfigurationItem.kt +++ b/android/app/src/main/java/com/example/gutenbergkit/ConfigurationItem.kt @@ -1,12 +1,51 @@ package com.example.gutenbergkit +import android.util.Base64 +import uniffi.wp_mobile.Account + sealed class ConfigurationItem { object BundledEditor : ConfigurationItem() object LocalWordPress : ConfigurationItem() data class ConfiguredEditor( + val accountId: ULong, val name: String, val siteUrl: String, val siteApiRoot: String, val authHeader: String - ) : ConfigurationItem() -} \ No newline at end of file + ) : ConfigurationItem() { + companion object { + fun fromAccount(account: Account): ConfiguredEditor = when (account) { + is Account.SelfHostedSite -> { + // WP.com OAuth sites are stored as SelfHostedSite with the + // access token as the password and a WP.com API root. + // Detect this and use Bearer auth instead of Basic. + val isWpCom = account.siteApiRoot.contains("public-api.wordpress.com") + ConfiguredEditor( + accountId = account.id, + name = account.domain + .removePrefix("https://") + .removePrefix("http://") + .trimEnd('/'), + siteUrl = account.domain, + siteApiRoot = account.siteApiRoot, + authHeader = if (isWpCom) { + "Bearer ${account.password}" + } else { + "Basic " + Base64.encodeToString( + "${account.username}:${account.password}".toByteArray(), + Base64.NO_WRAP + ) + } + ) + } + is Account.WpCom -> ConfiguredEditor( + accountId = account.id, + name = account.username, + siteUrl = account.username, + siteApiRoot = account.siteApiRoot, + authHeader = "Bearer ${account.token}" + ) + } + } + } +} diff --git a/android/app/src/main/java/com/example/gutenbergkit/ConfigurationStorage.kt b/android/app/src/main/java/com/example/gutenbergkit/ConfigurationStorage.kt deleted file mode 100644 index 194f62713..000000000 --- a/android/app/src/main/java/com/example/gutenbergkit/ConfigurationStorage.kt +++ /dev/null @@ -1,61 +0,0 @@ -package com.example.gutenbergkit - -import android.content.Context -import android.content.SharedPreferences -import androidx.core.content.edit -import org.json.JSONArray -import org.json.JSONObject - -class ConfigurationStorage(context: Context) { - private val sharedPrefs: SharedPreferences = - context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE) - - companion object { - private const val PREFS_NAME = "gutenberg_configs" - private const val KEY_EDITOR_CONFIGS = "remote_configurations" - } - - fun saveConfigurations(configurations: List) { - val jsonArray = JSONArray() - configurations.forEach { config -> - if (config is ConfigurationItem.ConfiguredEditor) { - val jsonObject = JSONObject().apply { - put("name", config.name) - put("siteUrl", config.siteUrl) - put("siteApiRoot", config.siteApiRoot) - put("authHeader", config.authHeader) - } - jsonArray.put(jsonObject) - } - } - sharedPrefs.edit { - putString(KEY_EDITOR_CONFIGS, jsonArray.toString()) - } - } - - fun loadConfigurations(): List { - val savedData = sharedPrefs.getString(KEY_EDITOR_CONFIGS, null) ?: return emptyList() - val configurations = mutableListOf() - - try { - val jsonArray = JSONArray(savedData) - for (i in 0 until jsonArray.length()) { - val jsonObject = jsonArray.getJSONObject(i) - val config = ConfigurationItem.ConfiguredEditor( - name = jsonObject.getString("name"), - siteUrl = jsonObject.getString("siteUrl"), - siteApiRoot = jsonObject.optString( - "siteApiRoot", - jsonObject.getString("siteUrl") + "/wp-json/" - ), - authHeader = jsonObject.getString("authHeader") - ) - configurations.add(config) - } - } catch (e: Exception) { - // Ignore parsing errors - } - - return configurations - } -} \ No newline at end of file diff --git a/android/app/src/main/java/com/example/gutenbergkit/GutenbergKitApplication.kt b/android/app/src/main/java/com/example/gutenbergkit/GutenbergKitApplication.kt new file mode 100644 index 000000000..6cce5473a --- /dev/null +++ b/android/app/src/main/java/com/example/gutenbergkit/GutenbergKitApplication.kt @@ -0,0 +1,18 @@ +package com.example.gutenbergkit + +import android.app.Application +import rs.wordpress.api.android.KeystorePasswordTransformer +import uniffi.wp_mobile.AccountRepository + +class GutenbergKitApplication : Application() { + lateinit var accountRepository: AccountRepository + private set + + override fun onCreate() { + super.onCreate() + accountRepository = AccountRepository( + rootPath = filesDir.resolve("accounts").absolutePath, + passwordTransformer = KeystorePasswordTransformer() + ) + } +} diff --git a/android/app/src/main/java/com/example/gutenbergkit/MainActivity.kt b/android/app/src/main/java/com/example/gutenbergkit/MainActivity.kt index 3725cbfd6..6e833b2a3 100644 --- a/android/app/src/main/java/com/example/gutenbergkit/MainActivity.kt +++ b/android/app/src/main/java/com/example/gutenbergkit/MainActivity.kt @@ -44,12 +44,16 @@ import com.example.gutenbergkit.ui.dialogs.DiscoveringSiteDialog import com.example.gutenbergkit.ui.theme.AppTheme import org.wordpress.gutenberg.BuildConfig import org.wordpress.gutenberg.model.EditorConfiguration +import uniffi.wp_mobile.Account class MainActivity : ComponentActivity(), AuthenticationManager.AuthenticationCallback { private val configurations = mutableStateListOf() private val isDiscoveringSite = mutableStateOf(false) private val isLoadingCapabilities = mutableStateOf(false) - private lateinit var configurationStorage: ConfigurationStorage + private val authError = mutableStateOf(null) + private val accountRepository by lazy { + (application as GutenbergKitApplication).accountRepository + } private lateinit var authenticationManager: AuthenticationManager private val siteCapabilitiesDiscovery = SiteCapabilitiesDiscovery() @@ -61,8 +65,7 @@ class MainActivity : ComponentActivity(), AuthenticationManager.AuthenticationCa super.onCreate(savedInstanceState) enableEdgeToEdge() - configurationStorage = ConfigurationStorage(this) - authenticationManager = AuthenticationManager(this) + authenticationManager = AuthenticationManager(this, accountRepository) // Add default bundled editor configuration configurations.add(ConfigurationItem.BundledEditor) @@ -70,8 +73,10 @@ class MainActivity : ComponentActivity(), AuthenticationManager.AuthenticationCa // Add local WordPress option configurations.add(ConfigurationItem.LocalWordPress) - // Load saved configurations - configurations.addAll(configurationStorage.loadConfigurations()) + // Load saved accounts + configurations.addAll( + accountRepository.all().map { ConfigurationItem.ConfiguredEditor.fromAccount(it) } + ) setContent { AppTheme { @@ -96,12 +101,16 @@ class MainActivity : ComponentActivity(), AuthenticationManager.AuthenticationCa authenticationManager.startAuthentication(siteUrl, this) }, onDeleteConfiguration = { config -> + if (config is ConfigurationItem.ConfiguredEditor) { + accountRepository.remove(config.accountId) + } configurations.remove(config) - configurationStorage.saveConfigurations(configurations) }, isDiscoveringSite = isDiscoveringSite.value, onDismissDiscovering = { isDiscoveringSite.value = false }, - isLoadingCapabilities = isLoadingCapabilities.value + isLoadingCapabilities = isLoadingCapabilities.value, + authError = authError.value, + onDismissAuthError = { authError.value = null } ) } } @@ -154,22 +163,14 @@ class MainActivity : ComponentActivity(), AuthenticationManager.AuthenticationCa authenticationManager.processAuthenticationResult(intent, this) } - override fun onAuthenticationSuccess(siteUrl: String, siteApiRoot: String, authToken: String) { + override fun onAuthenticationSuccess(account: Account) { isDiscoveringSite.value = false - val siteName = siteUrl.removePrefix("https://").removePrefix("http://").substringBefore("/") - val newConfig = ConfigurationItem.ConfiguredEditor( - name = siteName, - siteUrl = siteUrl, - siteApiRoot = siteApiRoot, - authHeader = authToken - ) - configurations.add(newConfig) - configurationStorage.saveConfigurations(configurations) + configurations.add(ConfigurationItem.ConfiguredEditor.fromAccount(account)) } override fun onAuthenticationFailure(errorMessage: String) { isDiscoveringSite.value = false - // Error will be shown in Compose UI + authError.value = errorMessage } } @@ -187,7 +188,9 @@ fun MainScreen( onDeleteConfiguration: (ConfigurationItem) -> Unit, isDiscoveringSite: Boolean = false, onDismissDiscovering: () -> Unit = {}, - isLoadingCapabilities: Boolean = false + isLoadingCapabilities: Boolean = false, + authError: String? = null, + onDismissAuthError: () -> Unit = {} ) { var showAddDialog = remember { mutableStateOf(false) } var showDeleteDialog = remember { mutableStateOf(null) } @@ -331,6 +334,19 @@ fun MainScreen( onDismiss = { /* Cannot dismiss while loading */ } ) } + + authError?.let { error -> + androidx.compose.material3.AlertDialog( + onDismissRequest = onDismissAuthError, + title = { Text("Authentication Error") }, + text = { Text(error) }, + confirmButton = { + androidx.compose.material3.TextButton(onClick = onDismissAuthError) { + Text("OK") + } + } + ) + } } @OptIn(ExperimentalFoundationApi::class) diff --git a/android/app/src/main/java/com/example/gutenbergkit/SiteCapabilitiesDiscovery.kt b/android/app/src/main/java/com/example/gutenbergkit/SiteCapabilitiesDiscovery.kt index efc73bf8a..502a21515 100644 --- a/android/app/src/main/java/com/example/gutenbergkit/SiteCapabilitiesDiscovery.kt +++ b/android/app/src/main/java/com/example/gutenbergkit/SiteCapabilitiesDiscovery.kt @@ -3,11 +3,8 @@ package com.example.gutenbergkit import android.util.Log import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext -import org.json.JSONObject import rs.wordpress.api.kotlin.ApiDiscoveryResult import rs.wordpress.api.kotlin.WpLoginClient -import java.net.HttpURLConnection -import java.net.URL /** * Data class representing the capabilities discovered from a WordPress site. @@ -18,8 +15,7 @@ data class SiteCapabilities( ) /** - * Discovers WordPress site capabilities by querying the API root endpoint. - * This mirrors the iOS implementation's capability discovery logic. + * Discovers WordPress site capabilities by querying the site via autodiscovery. */ class SiteCapabilitiesDiscovery { @@ -32,28 +28,28 @@ class SiteCapabilitiesDiscovery { } /** - * Discovers site capabilities via API discovery. + * Discovers site capabilities via API autodiscovery. * - * @param siteApiRoot The WordPress REST API root URL (e.g., "https://example.com/wp-json") + * @param siteUrl The WordPress site URL (e.g., "example.com" or "example.wordpress.com") * @return SiteCapabilities indicating which features are supported */ suspend fun discoverCapabilities( - siteApiRoot: String, + siteUrl: String, ): SiteCapabilities = withContext(Dispatchers.IO) { try { - // Extract the site URL from the API root URL - // e.g., "https://example.com/wp-json" -> "https://example.com" - val siteUrl = siteApiRoot.removeSuffix("/").substringBeforeLast("/wp-json") - - // Use WpLoginClient to perform API discovery, which includes API details - when (val apiDiscoveryResult = WpLoginClient().apiDiscovery(siteUrl)) { + when (val apiDiscoveryResult = WpLoginClient(emptyList()).apiDiscovery(siteUrl)) { is ApiDiscoveryResult.Success -> { - val success = apiDiscoveryResult.success - val apiDetails = success.apiDetails + val apiDetails = apiDiscoveryResult.success.apiDetails + val siteSlug = siteUrl + .removePrefix("https://").removePrefix("http://") + .trimEnd('/') - // Check if the site has the required routes using hasRoute() method + // Check both the standard route and the WP.com rewritten + // form that includes /sites/{slug}/ after the namespace prefix. val supportsPlugins = apiDetails.hasRoute(ROUTE_EDITOR_ASSETS) + || apiDetails.hasRoute(wpComRoute(ROUTE_EDITOR_ASSETS, siteSlug)) val supportsThemeStyles = apiDetails.hasRoute(ROUTE_EDITOR_SETTINGS) + || apiDetails.hasRoute(wpComRoute(ROUTE_EDITOR_SETTINGS, siteSlug)) Log.d(TAG, "Discovered capabilities - Plugins: $supportsPlugins, Theme Styles: $supportsThemeStyles") @@ -63,57 +59,26 @@ class SiteCapabilitiesDiscovery { ) } else -> { - Log.w(TAG, "API discovery via WpLoginClient failed: $apiDiscoveryResult, trying direct HTTP fetch") - discoverCapabilitiesViaHttp(siteApiRoot) + Log.w(TAG, "API discovery failed: $apiDiscoveryResult") + getDefaultCapabilities() } } } catch (e: Exception) { - Log.w(TAG, "API discovery via WpLoginClient threw, trying direct HTTP fetch", e) - try { - discoverCapabilitiesViaHttp(siteApiRoot) - } catch (httpError: Exception) { - Log.e(TAG, "Direct HTTP discovery also failed", httpError) - getDefaultCapabilities() - } + Log.e(TAG, "API discovery threw", e) + getDefaultCapabilities() } } /** - * Discovers capabilities by directly fetching the REST API root and inspecting - * the `routes` object. This works over plain HTTP, unlike WpLoginClient which - * may require HTTPS. + * Rewrites a route for WP.com by inserting /sites/{slug}/ after the + * namespace/version prefix. + * + * e.g., "/wpcom/v2/editor-assets" with slug "example.wordpress.com" + * -> "/wpcom/v2/sites/example.wordpress.com/editor-assets" */ - private fun discoverCapabilitiesViaHttp(siteApiRoot: String): SiteCapabilities { - val url = URL(siteApiRoot.trimEnd('/') + "/") - val connection = url.openConnection() as HttpURLConnection - try { - connection.requestMethod = "GET" - connection.connectTimeout = 10_000 - connection.readTimeout = 10_000 - connection.setRequestProperty("Accept", "application/json") - - val responseCode = connection.responseCode - if (responseCode != HttpURLConnection.HTTP_OK) { - Log.w(TAG, "HTTP discovery got status $responseCode") - return getDefaultCapabilities() - } - - val body = connection.inputStream.bufferedReader().use { it.readText() } - val json = JSONObject(body) - val routes = json.optJSONObject("routes") ?: return getDefaultCapabilities() - - val supportsPlugins = routes.has(ROUTE_EDITOR_ASSETS) - val supportsThemeStyles = routes.has(ROUTE_EDITOR_SETTINGS) - - Log.d(TAG, "HTTP discovery - Plugins: $supportsPlugins, Theme Styles: $supportsThemeStyles") - - return SiteCapabilities( - supportsPlugins = supportsPlugins, - supportsThemeStyles = supportsThemeStyles - ) - } finally { - connection.disconnect() - } + private fun wpComRoute(route: String, siteSlug: String): String { + val parts = route.removePrefix("/").split("/", limit = 3) + return "/${parts[0]}/${parts[1]}/sites/$siteSlug/${parts[2]}" } /** diff --git a/android/app/src/main/java/com/example/gutenbergkit/SitePreparationActivity.kt b/android/app/src/main/java/com/example/gutenbergkit/SitePreparationActivity.kt index 4c4d4a0a4..27043206b 100644 --- a/android/app/src/main/java/com/example/gutenbergkit/SitePreparationActivity.kt +++ b/android/app/src/main/java/com/example/gutenbergkit/SitePreparationActivity.kt @@ -61,6 +61,7 @@ class SitePreparationActivity : ComponentActivity() { companion object { private const val EXTRA_CONFIGURATION_ITEM = "configuration_item" private const val KEY_TYPE = "type" + private const val KEY_ACCOUNT_ID = "accountId" private const val KEY_NAME = "name" private const val KEY_SITE_URL = "siteUrl" private const val KEY_SITE_API_ROOT = "siteApiRoot" @@ -90,6 +91,7 @@ class SitePreparationActivity : ComponentActivity() { is ConfigurationItem.ConfiguredEditor -> { JSONObject().apply { put(KEY_TYPE, TYPE_CONFIGURED) + put(KEY_ACCOUNT_ID, accountId.toLong()) put(KEY_NAME, name) put(KEY_SITE_URL, siteUrl) put(KEY_SITE_API_ROOT, siteApiRoot) @@ -110,6 +112,7 @@ class SitePreparationActivity : ComponentActivity() { TYPE_LOCAL_WORDPRESS -> ConfigurationItem.LocalWordPress TYPE_CONFIGURED -> { ConfigurationItem.ConfiguredEditor( + accountId = json.optLong(KEY_ACCOUNT_ID, 0).toULong(), name = json.getString(KEY_NAME), siteUrl = json.getString(KEY_SITE_URL), siteApiRoot = json.getString(KEY_SITE_API_ROOT), diff --git a/android/app/src/main/java/com/example/gutenbergkit/SitePreparationViewModel.kt b/android/app/src/main/java/com/example/gutenbergkit/SitePreparationViewModel.kt index 534faf0fa..42249d92c 100644 --- a/android/app/src/main/java/com/example/gutenbergkit/SitePreparationViewModel.kt +++ b/android/app/src/main/java/com/example/gutenbergkit/SitePreparationViewModel.kt @@ -50,6 +50,7 @@ class SitePreparationViewModel( try { loadConfiguration( ConfigurationItem.ConfiguredEditor( + accountId = 0u, name = "Local WordPress", siteUrl = credentials.siteUrl, siteApiRoot = credentials.siteApiRoot, @@ -208,16 +209,33 @@ class SitePreparationViewModel( private suspend fun loadConfiguration(config: ConfigurationItem.ConfiguredEditor): EditorConfiguration { val capabilities = siteCapabilitiesDiscovery.discoverCapabilities( - siteApiRoot = config.siteApiRoot + siteUrl = config.siteUrl ) + // For WP.com sites, the stored siteApiRoot is namespace-specific + // (e.g. https://public-api.wordpress.com/wp/v2/sites/1562023). + // The editor needs the base REST API root and a siteApiNamespace + // so the JS middleware can insert the site ID into request paths. + val wpComSiteId = extractWpComSiteId(config.siteApiRoot) + val siteApiRoot = if (wpComSiteId != null) { + "https://public-api.wordpress.com" + } else { + config.siteApiRoot + } + val siteApiNamespace = if (wpComSiteId != null) { + arrayOf("sites/$wpComSiteId/") + } else { + arrayOf() + } + return EditorConfiguration.builder( siteURL = config.siteUrl, - siteApiRoot = config.siteApiRoot, + siteApiRoot = siteApiRoot, postType = _uiState.value.postType ) .setPlugins(capabilities.supportsPlugins) .setThemeStyles(capabilities.supportsThemeStyles) + .setSiteApiNamespace(siteApiNamespace) .setNamespaceExcludedPaths(arrayOf()) .setAuthHeader(config.authHeader) .setTitle("") @@ -229,6 +247,17 @@ class SitePreparationViewModel( .build() } + /** + * Extracts the WP.com site ID from a namespace-specific API root URL. + * Returns null if the URL is not a WP.com API root. + * + * Example: "https://public-api.wordpress.com/wp/v2/sites/1562023" -> "1562023" + */ + private fun extractWpComSiteId(siteApiRoot: String): String? { + val regex = Regex("""public-api\.wordpress\.com/.+/sites/(\d+)""") + return regex.find(siteApiRoot)?.groupValues?.get(1) + } + fun buildConfiguration(): EditorConfiguration? { val baseConfig = _uiState.value.editorConfiguration ?: return null diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index 3f0d56c56..b2816f849 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] agp = "8.7.3" -kotlin = "2.0.21" +kotlin = "2.1.21" kotlinx-serialization = "1.7.3" coreKtx = "1.13.1" junit = "4.13.2" @@ -16,7 +16,7 @@ mockito = "4.1.0" robolectric = "4.14.1" kotlinx-coroutines = '1.10.2' androidx-recyclerview = '1.3.2' -wordpress-rs = 'trunk-d02efa6d4d56bc5b44dd2191e837163f9fa27095' +wordpress-rs = '1190-c2b404d9c9754b229967386fa7460d65fe87a29d' composeBom = "2024.12.01" activityCompose = "1.9.3" jsoup = "1.18.1" From 33d52c7d2291531ee2e8cfdfd3d5904f0dddafd3 Mon Sep 17 00:00:00 2001 From: Jeremy Massel <1123407+jkmassel@users.noreply.github.com> Date: Wed, 25 Feb 2026 16:07:03 -0700 Subject: [PATCH 2/2] build: regenerate web bundle after dependency upgrades Co-Authored-By: Claude Opus 4.6 --- ...etch-DzQXJcVn.js => api-fetch-BgqGGkkJ.js} | 2 +- .../Gutenberg/assets/de-9Geli_WE.js | 12 + .../Gutenberg/assets/de-BjSDNWt3.js | 12 - .../Gutenberg/assets/editor-AWehgETB.js | 5 + ...ditor-UqwlMgkg.css => editor-Cf5OshbS.css} | 2 +- .../Gutenberg/assets/editor-F1M7Y6NI.js | 5 - .../Gutenberg/assets/index-D5lKWSLL.css | 1 - .../{index-D0zSxreW.js => index-DKJ3mNF9.js} | 6 +- .../Gutenberg/assets/index-DvAXeshS.css | 1 + .../Gutenberg/assets/ja-WHACik0L.js | 13 + .../Gutenberg/assets/ja-p1J1yvbI.js | 13 - .../assets/{nl-D8g2UsLw.js => nl-BnbF5dUh.js} | 2 +- .../Gutenberg/assets/pl-C1QZA0Qj.js | 14 - .../Gutenberg/assets/pl-DFnL5syL.js | 14 + .../assets/{ro-CZ4DJ-Hf.js => ro-CQNJ3pUA.js} | 2 +- .../Gutenberg/assets/utils--JBboUpJ.js | 83 - .../Gutenberg/assets/utils-eDRL8Uqu.js | 81 + .../assets/wordpress-globals-BSt_mlUr.js | 1502 ----------------- .../assets/wordpress-globals-CZK7M7Wr.js | 865 ++++++++++ .../Gutenberg/assets/zh-tw-BTyt7o5D.js | 12 - .../Gutenberg/assets/zh-tw-xOy6N8V8.js | 12 + ios/Sources/GutenbergKit/Gutenberg/index.html | 4 +- 22 files changed, 1012 insertions(+), 1651 deletions(-) rename ios/Sources/GutenbergKit/Gutenberg/assets/{api-fetch-DzQXJcVn.js => api-fetch-BgqGGkkJ.js} (97%) create mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/de-9Geli_WE.js delete mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/de-BjSDNWt3.js create mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/editor-AWehgETB.js rename ios/Sources/GutenbergKit/Gutenberg/assets/{editor-UqwlMgkg.css => editor-Cf5OshbS.css} (98%) delete mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/editor-F1M7Y6NI.js delete mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/index-D5lKWSLL.css rename ios/Sources/GutenbergKit/Gutenberg/assets/{index-D0zSxreW.js => index-DKJ3mNF9.js} (97%) create mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/index-DvAXeshS.css create mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/ja-WHACik0L.js delete mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/ja-p1J1yvbI.js rename ios/Sources/GutenbergKit/Gutenberg/assets/{nl-D8g2UsLw.js => nl-BnbF5dUh.js} (96%) delete mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/pl-C1QZA0Qj.js create mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/pl-DFnL5syL.js rename ios/Sources/GutenbergKit/Gutenberg/assets/{ro-CZ4DJ-Hf.js => ro-CQNJ3pUA.js} (71%) delete mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/utils--JBboUpJ.js create mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/utils-eDRL8Uqu.js delete mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/wordpress-globals-BSt_mlUr.js create mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/wordpress-globals-CZK7M7Wr.js delete mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/zh-tw-BTyt7o5D.js create mode 100644 ios/Sources/GutenbergKit/Gutenberg/assets/zh-tw-xOy6N8V8.js diff --git a/ios/Sources/GutenbergKit/Gutenberg/assets/api-fetch-DzQXJcVn.js b/ios/Sources/GutenbergKit/Gutenberg/assets/api-fetch-BgqGGkkJ.js similarity index 97% rename from ios/Sources/GutenbergKit/Gutenberg/assets/api-fetch-DzQXJcVn.js rename to ios/Sources/GutenbergKit/Gutenberg/assets/api-fetch-BgqGGkkJ.js index 876767570..7296b2e8b 100644 --- a/ios/Sources/GutenbergKit/Gutenberg/assets/api-fetch-DzQXJcVn.js +++ b/ios/Sources/GutenbergKit/Gutenberg/assets/api-fetch-BgqGGkkJ.js @@ -1 +1 @@ -import{m as o}from"./index-D0zSxreW.js";const c=window.wp.apiFetch,{getQueryArg:m}=window.wp.url;function P(){const{siteApiRoot:e="",preloadData:t=null}=o();c.use(c.createRootURLMiddleware(e)),c.use(p),c.use(h),c.use(f),c.use(w),c.use(b),c.use(g),c.use(c.createPreloadingMiddleware(t??_))}function p(e,t){return e.mode="cors",delete e.headers["x-wp-api-fetch-from-editor"],t(e)}function h(e,t){const{siteApiNamespace:a,namespaceExcludedPaths:i}=o(),n=new RegExp(`(${a.join("|")})`);return e.path&&!i.some(s=>e.path.startsWith(s))&&!n.test(e.path)&&(e.path=e.path.replace(/^(?\/?(?:[\w.-]+\/){2})/,`$${a[0]}`)),t(e)}function f(e,t){const{authHeader:a}=o();return e.headers=e.headers||{},a&&(e.headers.Authorization=a,e.credentials="omit"),t(e)}function w(e,t){const{post:a}=o(),{id:i,restNamespace:n,restBase:r}=a??{};if(i===void 0||!n||!r)return t(e);const s=`/${n}/${r}/${i}`;return e.path===s||e.path?.startsWith(`${s}?`)?Promise.resolve([]):t(e)}function b(e,t){return e.path&&e.path.startsWith("/wp/v2/media")&&e.method==="POST"&&e.body instanceof FormData&&e.body.get("post")==="-1"&&e.body.delete("post"),t(e)}function g(e,t){if(e.path&&e.path.indexOf("oembed")!==-1){let n=function(){const r=document.createElement("a");return r.href=a,r.innerText=a,{html:r.outerHTML,type:"rich",provider_name:"Embed"}};const a=m(e.path,"url"),i=t(e,t);return new Promise(r=>{i.then(s=>{if(s.html){const l=document.implementation.createHTMLDocument("");l.body.innerHTML=s.html;const d=['[class="embed-youtube"]','[class="embed-vimeo"]','[class="embed-dailymotion"]','[class="embed-ted"]'].join(","),u=l.querySelector(d);s.html=u?u.innerHTML:s.html}r(s)}).catch(()=>{r(n())})})}return t(e,t)}const _={"/wp/v2/types?context=view":{body:{post:{description:"",hierarchical:!1,has_archive:!1,name:"Posts",slug:"post",taxonomies:["category","post_tag"],rest_base:"posts",rest_namespace:"wp/v2",template:[],template_lock:!1,_links:{}},page:{description:"",hierarchical:!0,has_archive:!1,name:"Pages",slug:"page",taxonomies:[],rest_base:"pages",rest_namespace:"wp/v2",template:[],template_lock:!1,_links:{}}}},"/wp/v2/types/post?context=edit":{body:{name:"Posts",slug:"post",supports:{title:!0,editor:!0,author:!0,thumbnail:!0,excerpt:!0,trackbacks:!0,"custom-fields":!0,comments:!0,revisions:!0,"post-formats":!0,autosave:!0},taxonomies:["category","post_tag"],rest_base:"posts",rest_namespace:"wp/v2",template:[],template_lock:!1}}};export{P as configureApiFetch}; +import{m as o}from"./index-DKJ3mNF9.js";const c=window.wp.apiFetch,{getQueryArg:m}=window.wp.url;function P(){const{siteApiRoot:e="",preloadData:t=null}=o();c.use(c.createRootURLMiddleware(e)),c.use(p),c.use(h),c.use(f),c.use(w),c.use(b),c.use(g),c.use(c.createPreloadingMiddleware(t??_))}function p(e,t){return e.mode="cors",delete e.headers["x-wp-api-fetch-from-editor"],t(e)}function h(e,t){const{siteApiNamespace:a,namespaceExcludedPaths:i}=o(),n=new RegExp(`(${a.join("|")})`);return e.path&&!i.some(s=>e.path.startsWith(s))&&!n.test(e.path)&&(e.path=e.path.replace(/^(?\/?(?:[\w.-]+\/){2})/,`$${a[0]}`)),t(e)}function f(e,t){const{authHeader:a}=o();return e.headers=e.headers||{},a&&(e.headers.Authorization=a,e.credentials="omit"),t(e)}function w(e,t){const{post:a}=o(),{id:i,restNamespace:n,restBase:r}=a??{};if(i===void 0||!n||!r)return t(e);const s=`/${n}/${r}/${i}`;return e.path===s||e.path?.startsWith(`${s}?`)?Promise.resolve([]):t(e)}function b(e,t){return e.path&&e.path.startsWith("/wp/v2/media")&&e.method==="POST"&&e.body instanceof FormData&&e.body.get("post")==="-1"&&e.body.delete("post"),t(e)}function g(e,t){if(e.path&&e.path.indexOf("oembed")!==-1){let n=function(){const r=document.createElement("a");return r.href=a,r.innerText=a,{html:r.outerHTML,type:"rich",provider_name:"Embed"}};const a=m(e.path,"url"),i=t(e,t);return new Promise(r=>{i.then(s=>{if(s.html){const l=document.implementation.createHTMLDocument("");l.body.innerHTML=s.html;const d=['[class="embed-youtube"]','[class="embed-vimeo"]','[class="embed-dailymotion"]','[class="embed-ted"]'].join(","),u=l.querySelector(d);s.html=u?u.innerHTML:s.html}r(s)}).catch(()=>{r(n())})})}return t(e,t)}const _={"/wp/v2/types?context=view":{body:{post:{description:"",hierarchical:!1,has_archive:!1,name:"Posts",slug:"post",taxonomies:["category","post_tag"],rest_base:"posts",rest_namespace:"wp/v2",template:[],template_lock:!1,_links:{}},page:{description:"",hierarchical:!0,has_archive:!1,name:"Pages",slug:"page",taxonomies:[],rest_base:"pages",rest_namespace:"wp/v2",template:[],template_lock:!1,_links:{}}}},"/wp/v2/types/post?context=edit":{body:{name:"Posts",slug:"post",supports:{title:!0,editor:!0,author:!0,thumbnail:!0,excerpt:!0,trackbacks:!0,"custom-fields":!0,comments:!0,revisions:!0,"post-formats":!0,autosave:!0},taxonomies:["category","post_tag"],rest_base:"posts",rest_namespace:"wp/v2",template:[],template_lock:!1}}};export{P as configureApiFetch}; diff --git a/ios/Sources/GutenbergKit/Gutenberg/assets/de-9Geli_WE.js b/ios/Sources/GutenbergKit/Gutenberg/assets/de-9Geli_WE.js new file mode 100644 index 000000000..20dc74574 --- /dev/null +++ b/ios/Sources/GutenbergKit/Gutenberg/assets/de-9Geli_WE.js @@ -0,0 +1,12 @@ +const e=["Verlassen"],t=["Revision"],n=["Klicken"],i=["Beide"],r=["Gelöscht"],s=["Maß"],a=["Variation"],o=["Anwendung"],l=["Enthält"],d=["Platzhalter"],u=["Quellenangabe"],c=["Dateiname"],h=["Registriert"],g=["Aktivität"],m=["Gültig"],b=["JavaScript"],p=["Anmerkungen"],k=["Wieder geöffnet"],f=["Anmerkung"],w=["Vorgänger"],v=["Brotkrümelnavigation"],y=["Erlauben"],B=["Aktiv"],z=["Deaktivieren"],S=["Element"],A=["Begriff"],D=["Schlagwort"],T=["Kategorie"],E=["Sichtbar"],L=["Anzahl"],x=["Anhang"],P=["Beitrag"],V=["An"],I=["Von"],C=["Gestern"],M=["Heute"],W=["Optional"],N=["Einheit"],F=["Jahre"],$=["Monate"],R=["Wochen"],H=["Tage"],G=["Falsch"],U=["Wahr"],K=["Über"],O=["Danach"],Z=["Davor"],Y=["Ausschneiden"],j=["Ignorieren"],q=["Vergrößern"],J=["Dichte"],Q=["Übersicht"],X=["Duoton"],_=["Kommentare"],ee=["Formate"],te=["Anzeigen"],ne=["Ausgeblendet"],ie=["Eigenschaften"],re=["Schriftsätze"],se=["Homepage"],ae=["Maximum"],oe=["Minimum"],le=["Attribute"],de=["Format"],ue=["Ausdehnung"],ce=["Unschärfe"],he=["Eingelassen"],ge=["Herausgestellt"],me=["Paletten"],be=["Geschlossen"],pe=["Offen"],ke=["Deaktivieren"],fe=["Aktivieren"],we=["Planung löschen"],ve=["Veröffentlichung zurückziehen"],ye=["Zeilen"],Be=["Überschreibungen"],ze=["Gesperrt"],Se=["Wiederholen"],Ae=["Enthält"],De=["Manuell"],Te=["Ungefiltert"],Ee=["Bedingungen"],Le=["Ist"],xe=["Inserter"],Pe=["Zugänglichkeit"],Ve=["Oberfläche"],Ie=["Wiederherstellen"],Ce=["Papierkorb"],Me=["Entwürfe"],We=["Ausblenden"],Ne=["Wert"],Fe=["Erforderlich"],$e=["Methode"],Re=["E-Mail-Adresse"],He=["Quelle"],Ge=["Schriften"],Ue=["Installieren"],Ke=["Hinweis"],Oe=["Gruppe auflösen"],Ze=["Fußnoten"],Ye=["Fortfahren"],je=["Loslösen"],qe=["Passwort"],Je=["Fußnote"],Qe=["Zahlen"],Xe=["Skalieren"],_e=["Seite"],et=["Unbekannt"],tt=["Übergeordnet"],nt=["Ausstehend"],it=["Vorschläge"],rt=["Sprache"],st=["Bibliothek"],at=["Aktivieren"],ot=["Auflösung"],lt=["Einfügen"],dt=["Openverse"],ut=["Schatten"],ct=["Zentriert"],ht=["Position"],gt=["Oben gehalten"],mt=["Tilde"],bt=["CSS"],pt=["Videos"],kt=["Festgelegt"],ft=["Verringern"],wt=["Erhöhen"],vt=["Untertitel"],yt=["Vorlage"],Bt=["Handle"],zt=["XXL"],St=["Schrift"],At=["Eingeschränkt"],Dt=["H6"],Tt=["H5"],Et=["H4"],Lt=["H3"],xt=["H2"],Pt=["H1"],Vt=["Taxonomien"],It=["Bei Mauszeigerkontakt"],Ct=["Zusammenfassung"],Mt=["Nicht festgelegt"],Wt=["Jetzt"],Nt=["Übergeordnete"],Ft=["Suffix"],$t=["Präfix"],Rt=["sagt"],Ht=["Antwort"],Gt=["Antworten"],Ut=["Stapel"],Kt=["Woche"],Ot=["Ungültig"],Zt=["Sperren"],Yt=["Freischalten"],jt=["Vorschau"],qt=["Fertig"],Jt=["Icon"],Qt=["Löschen"],Xt=["Aktionen"],_t=["Umbenennen"],en=["Aa"],tn=["Stile"],nn=["Menüs"],rn=["Antwort"],sn=["Elemente"],an=["Untermenüs"],on=["Immer"],ln=["Darstellung"],dn=["Lesezeichen"],un=["Hervorheben"],cn=["Palette"],hn=["Farben"],gn=["Pfeil"],mn=["Zeile"],bn=["Anordnung"],pn=["Flow"],kn=["Flex"],fn=["Veröffentlichung"],wn=["Stil"],vn=["Radius"],yn=["Außenabstand"],Bn=["Duoton"],zn=["Logo"],Sn=["Hervorhebungen"],An=["Schatten"],Dn=["Layout"],Tn=["Gepunktet"],En=["Gestrichelt"],Ln=["Deine Anpassungen für"],xn=["Ränder"],Pn=["Raster"],Vn=["Bereich"],In=["Einrücken"],Cn=["Ausrücken"],Mn=["Sortiert"],Wn=["Unsortiert"],Nn=["Ziehen"],Fn=["Ausrichten"],$n=["Bedienfelder"],Rn=["Großschreibung"],Hn=["Kleinbuchstaben"],Gn=["Großbuchstaben"],Un=["Vertikal"],Kn=["Horizontal"],On=["Themes"],Zn=["Stichwort"],Yn=["Filter"],jn=["Dekoration"],qn=["Nur"],Jn=["Ausschließen"],Qn=["Einbeziehen"],Xn=["Design"],_n=["Voreinstellungen"],ei=["Art"],ti=["Beschriftung"],ni=["Kapitel"],ii=["Beschreibungen"],ri=["Untertitel"],si=["Untertitel"],ai=["Schlagwörter"],oi=["Details"],li=["Radial"],di=["Linear"],ui=["Anonym"],ci=["Zeichen"],hi=["Beschreibung"],gi=["Basis"],mi=["Autor"],bi=["Original"],pi=["Name"],ki=["Hochformat"],fi=["Querformat"],wi=["Gemischt"],vi=["Rechts"],yi=["Links"],Bi=["Unten"],zi=["Oben"],Si=["Innenabstand"],Ai=["Abstand"],Di=["Richtung"],Ti=["Zuschneiden"],Ei=["Drehen"],Li=["Zoomen"],xi=["Design"],Pi=["Text"],Vi=["Benachrichtigungen"],Ii=["Seite","Seiten"],Ci=["Versatz"],Mi=["Beiträge"],Wi=["Seiten"],Ni=["Allgemein"],Fi=["Weiß"],$i=["Schwarz"],Ri=["Ausgewählt"],Hi=["Hochstellen"],Gi=["Tiefstellen"],Ui=["Vorlagen"],Ki=["Typografie"],Oi=["Inhalt"],Zi=["Menü"],Yi=["Kontakt"],ji=["Impressum"],qi=["Start"],Ji=["Benutzer"],Qi=["Website"],Xi=["Erstellen"],_i=["Desktop"],er=["Mobil"],tr=["Tablet"],nr=["Umfrage"],ir=["Social"],rr=["Einfarbig"],sr=["Typ"],ar=["Winkel"],or=["Auswählen"],lr=["Theme"],dr=["Leer"],ur=["Buttons"],cr=["Hintergrund"],hr=["Hilfe"],gr=["Ohne Titel"],mr=["Weiter"],br=["Zurück"],pr=["Fertigstellen"],kr=["Ersetzen"],fr=["Inserter"],wr=["Podcast"],vr=["Navigation"],yr=["Template"],Br=["Verlauf"],zr=["Mitternacht"],Sr=["Version"],Ar=["Maße"],Dr=["Templates"],Tr=["Hinzufügen"],Er=["Farbe"],Lr=["Individuell"],xr=["Entwurf"],Pr=["Überspringen"],Vr=["Links"],Ir=["Menü"],Cr=["Footer"],Mr=["Gruppe"],Wr=["Taxonomie"],Nr=["Standard"],Fr=["Suchen"],$r=["Kalender"],Rr=["Zurück"],Hr=["E-Book"],Gr=["Unterstreichen"],Ur=["Vorschaubild"],Kr=["Anmerkung"],Or=["Medien"],Zr=["Medien"],Yr=["Stile"],jr=["Allgemein"],qr=["Optionen"],Jr=["Minuten"],Qr=["Stunden"],Xr=["Zeit"],_r=["Jahr"],es=["Tag"],ts=["Dezember"],ns=["November"],is=["Oktober"],rs=["September"],ss=["August"],as=["Juli"],os=["Juni"],ls=["Mai"],ds=["April"],us=["März"],cs=["Februar"],hs=["Januar"],gs=["Monat"],ms=["Cover"],bs=["Riesig"],ps=["Mittel"],ks=["Normal"],fs=["Begriffe"],ws=["Avatar"],vs=["Anzeigen"],ys=["HTML"],Bs=["Overlay"],zs=["Backtick"],Ss=["Punkt"],As=["Komma"],Ds=["Aktuell"],Ts=["Titel"],Es=["Erstellen"],Ls=["Galerien"],xs=["XL"],Ps=["L"],Vs=["M"],Is=["S"],Cs=["Klein"],Ms=["Stummgeschaltet"],Ws=["Automatisch"],Ns=["Vorladen"],Fs=["Support"],$s=["Archiv"],Rs=["Groß"],Hs=["Datei"],Gs=["Spalte"],Us=["Schleife"],Ks=["Automatische Wiedergabe"],Os=["Automatische Speicherung"],Zs=["Untertitel"],Ys=["OK"],js=["Link entfernen"],qs=["Seitennummerierung"],Js=["Höhe"],Qs=["Breite"],Xs=["Erweitert"],_s=["Geplant"],ea=["Plugins"],ta=["Absätze"],na=["Überschriften"],ia=["Wörter"],ra=["Öffentlich"],sa=["Privat"],aa=["Begriff"],oa=["Schlagwort"],la=["Sofort"],da=["Wird gespeichert"],ua=["Veröffentlicht"],ca=["Planen"],ha=["Aktualisieren"],ga=["Kopieren"],ma=["Chat"],ba=["Status"],pa=["Standard"],ka=["Kurzmitteilung"],fa=["Reihenfolge"],wa=["Gespeichert"],va=["Einbettungen"],ya=["Blöcke"],Ba=["Rückgängig machen"],za=["Wiederherstellen"],Sa=["Duplizieren"],Aa=["Entfernen"],Da=["Sichtbarkeit"],Ta=["Block"],Ea=["Werkzeuge"],La=["Editor"],xa=["Einstellungen"],Pa=["Zurücksetzen"],Va=["Aus"],Ia=["An"],Ca=["p.m."],Ma=["a.m."],Wa=["URL"],Na=["Absenden"],Fa=["Schließen"],$a=["Link"],Ra=["Durchstreichen"],Ha=["Kursiv"],Ga=["Fett"],Ua=["Kategorie"],Ka=["Auswählen"],Oa=["Video"],Za=["Tabelle"],Ya=["Shortcode"],ja=["Trennzeichen"],qa=["Zitat"],Ja=["Absatz"],Qa=["Liste"],Xa=["Foto"],_a=["Größe"],eo=["Bild"],to=["Vorschau"],no=["Überschrift"],io=["Bilder"],ro=["Keine"],so=["Galerie"],ao=["Mehr"],oo=["Klassisch"],lo=["Video"],uo=["Audio"],co=["Musik"],ho=["Bild"],go=["Blog"],mo=["Beitrag"],bo=["Spalten"],po=["Experimente"],ko=["Code"],fo=["Kategorien"],wo=["Button"],vo=["Anwenden"],yo=["Abbrechen"],Bo=["Bearbeiten"],zo=["Audio"],So=["Hochladen"],Ao=["Leeren"],Do=["Widgets"],To=["Autoren"],Eo=["Titelform"],Lo=["Kommentar"],xo=["Diskussion"],Po=["Textauszug"],Vo=["Veröffentlichen"],Io=["Metadaten"],Co=["Speichern"],Mo=["Revisionen"],Wo=["Dokumentation (engl.)"],No=["Gutenberg"],Fo=["Demo"],$o={100:["100"],"block descriptionDisplay the tab buttons for a tabbed interface.":["Zeigt die Tab-Buttons für eine tabbasierte Oberfläche an."],"block titleTabs Menu":["Tabs-Menü"],"block descriptionA single tab button in the tabs menu. Used as a template for styling all tab buttons.":["Ein einzelner Tab-Button im Tabs-Menü. Wird als Template für die Gestaltung aller Tab-Buttons verwendet."],"block titleTab Menu Item":["Tab-Menüeintrag"],"block descriptionContainer for tab panel content in a tabbed interface.":["Der Container für den Inhalt der Tab-Bedienfelder in einer Tab-Oberfläche."],"block titleTab Panels":["Tab-Bedienfelder"],"Uploading %s file":["%s Datei wird hochgeladen","%s Dateien werden hochgeladen"],"Uploaded %s file":["%s Datei wurde hochgeladen","%s Dateien wurden hochgeladen"],"Open classic revisions screen":["Klassische Revisionsansicht öffnen"],"Created %s.":["%s erstellt"],"Failed to load media file.":["Das Laden der Mediendatei ist fehlgeschlagen."],"No media file available.":["Es ist keine Mediendatei verfügbar."],"View file":["Datei anzeigen"],Exit:e,Revision:t,"Only one revision found.":["Es wurde nur eine Revision gefunden."],"No revisions found.":["Es wurden keine Revisionen gefunden."],"Revision restored.":["Die Revision wurde wiederhergestellt."],"Media updated.":["Das Medium wurde aktualisiert."],"Tab menu item":["Tab-Menüeintrag"],"Hover Text":["Text bei Mauszeigerkontakt"],"Hover Background":["Hintergrund bei Mauszeigerkontakt"],"Active Text":["Aktiver Text"],"Active Background":["Aktiver Hintergrund"],"Move tab down":["Tab nach unten verschieben"],"Move tab up":["Tab nach oben verschieben"],"Move tab left":["Tab nach links verschieben"],"Move tab right":["Tab nach rechts verschieben"],"Add tabs to display menu":["Tabs zur Anzeige des Menüs hinzufügen"],"Remove Tab":["Tab entfernen"],"Remove the current tab":["Den aktuellen Tab entfernen"],"Add a new tab":["Einen neuen Tab hinzufügen"],Click:n,"Submenu Visibility":["Untermenü-Sichtbarkeit"],"Navigation Overlay template part preview":["Vorschau des Template-Teils für das Navigations-Overlay"],"This overlay is empty.":["Dieses Overlay ist leer."],"This overlay template part no longer exists.":["Dieses Overlay-Template-Teil existiert nicht mehr."],"%s (missing)":["%s (fehlt)"],"The selected overlay template part is missing or has been deleted. Reset to default overlay or create a new overlay.":["Der ausgewählte Overlay-Template-Teil fehlt oder wurde gelöscht. Auf Standard-Overlay zurücksetzen oder ein neues Overlay erstellen."],"Add your own CSS to customize the appearance of the %s block. You do not need to include a CSS selector, just add the property and value, e.g. color: red;.":["Füge dein eigenes CSS hinzu, um das Design des Blocks %s anzupassen. Du musst keinen CSS-Selektor einfügen, sondern nur die Eigenschaft und den Wert, z. B. color: red;."],"%d field needs attention":["%d Feld benötigt Beachtung","%d Felder benötigen Beachtung"],"The custom CSS is invalid. Do not use <> markup.":["Das individuelle CSS ist ungültig. Verwende nicht das Markup <>."],"Parent block is hidden on %s":["Übergeordneter Block ist bei %s ausgeblendet"],"Block is hidden on %s":["Block ist bei %s ausgeblendet"],"%1$d of %2$d Item":["%1$d von %2$d Element","%1$d von %2$d Elementen"],"Enables editing media items (attachments) directly in the block editor with a dedicated media preview and metadata panel.":["Aktiviert die Bearbeitung von Medienelementen (Verknüpfungen) direkt im Block-Editor mit einer speziellen Medienvorschau und einem Metadatenfeld."],"Media Editor":["Medien-Editor"],"Block pattern descriptionA navigation overlay with vertically and horizontally centered navigation":["Ein Navigations-Overlay mit vertikal und horizontal zentrierter Navigation"],"Overlay with centered navigation":["Overlay mit zentrierter Navigation"],"Get started today!":["Beginne noch heute"],"Find out how we can help your business.":["Erfahre, wie wir deinem Unternehmen helfen können."],"Block pattern descriptionA navigation overlay with vertically and horizontally centered navigation, site info, and a CTA":["Ein Navigations-Overlay mit vertikal und horizontal zentrierter Navigation, Website-Informationen und einer Handlungsaufforderung"],"Overlay with site info and CTA":["Overlay mit Website-Informationen und Handlungsaufforderung"],"Block pattern descriptionA navigation overlay with orange background site title and tagline":["Ein Navigations-Overlay mit orangefarbenem Hintergrund, Website-Titel und Website-Untertitel"],"Overlay with orange background":["Orange hinterlegtes Overlay"],"Block pattern descriptionA navigation overlay with black background and big white text":["Ein Navigations-Overlay mit schwarzem Hintergrund und großem weißen Text"],"Overlay with black background":["Schwarz hinterlegtes Overlay"],'The CSS must not contain "%s".':["Das CSS darf kein „%s“ enthalten."],'The CSS must not end in "%s".':["Das CSS darf nicht mit „%s“ enden."],"block keywordoverlay":["Overlay"],"block keywordclose":["schließen"],"block descriptionA customizable button to close overlays.":["Ein anpassbarer Button zum Schließen von Overlays."],"block titleNavigation Overlay Close":["Navigations-Overlay schließen"],"block descriptionDisplay a breadcrumb trail showing the path to the current page.":["Zeigt einen Breadcrumb-Pfad zur aktuellen Seite an."],"Date modified":["Änderungsdatum"],"Date added":["Hinzufügedatum"],"Attached to":["Verknüpft mit"],"Search for a post or page to attach this media to.":["Suche nach einem Beitrag oder einer Seite, um dieses Medium zu verknüpfen."],"Search for a post or page to attach this media to or .":["Suche nach einem Beitrag oder einer Seite, um dieses Medium zu verknüpfen, oder die ."],"(Unattached)":["(Nicht verknüpft)"],"Choose file":["Datei auswählen"],"Choose files":["Dateien auswählen"],"There is %d event":["Es gibt %d Ereignis.","Es gibt %d Ereignisse."],"Exclude: %s":["Ausschließen: %s"],Both:i,"Display Mode":["Anzeigemodus"],"Submenu background":["Hintergrund des Untermenüs"],"Submenu text":["Text des Untermenüs"],Deleted:r,"No link selected":["Kein Link ausgewählt"],"External link":["Externer Link"],"Create new overlay template":["Neues Overlay-Template erstellen"],"Select an overlay for navigation.":["Wähle ein Overlay für die Navigation aus."],"An error occurred while creating the overlay.":["Beim Erstellen des Overlays ist ein Fehler aufgetreten."],'One response to "%s"':["Eine Antwort zu „%s“"],"Use the classic editor to add content.":["Verwende den klassischen Editor, um Inhalte hinzuzufügen."],"Search for and add a link to the navigation item.":["Suche nach einem Link und füge ihn zum Navigationselement hinzu."],"Select a link":["Link auswählen"],"No items yet.":["Es gibt noch keine Elemente."],"The text may be too small to read. Consider using a larger container or less text.":["Der Text ist möglicherweise zu klein zum Lesen. Verwende einen größeren Container oder weniger Text."],"Parent block is hidden":["Übergeordneter Block ist ausgeblendet"],"Block is hidden":["Block ist ausgeblendet"],Dimension:s,"Set custom value":["Individuellen Wert festlegen"],"Use preset":["Vorgabe verwenden"],Variation:a,"Go to parent block":["Zum übergeordneten Block"],'Go to "%s" block':["Zum Block „%s“"],"Block will be hidden according to the selected viewports. It will be included in the published markup on the frontend. You can configure it again by selecting it in the List View (%s).":["Der Block wird entsprechend den ausgewählten Viewports ausgeblendet. Er wird in das veröffentlichte Markup des Frontends aufgenommen. Du kannst ihn erneut konfigurieren, indem du ihn in der Listenansicht (%s) auswählst."],"Block will be hidden in the editor, and omitted from the published markup on the frontend. You can configure it again by selecting it in the List View (%s).":["Der Block wird im Editor ausgeblendet und aus dem veröffentlichten Markup im Frontend entfernt. Du kannst ihn erneut konfigurieren, indem du ihn in der Listenansicht (%s) auswählst."],"Selected blocks have different visibility settings. The checkboxes show an indeterminate state when settings differ.":["Die ausgewählten Blöcke haben unterschiedliche Sichtbarkeitseinstellungen. Die Kontrollkästchen zeigen einen unbestimmten Status an, wenn die Einstellungen variieren."],"Hide on %s":["Bei %s ausblenden"],"Omit from published content":["Aus veröffentlichten Inhalten weglassen"],"Select the viewport size for which you want to hide the block.":["Wähle die Größe des Viewports aus, für den du den Block ausblenden möchtest."],"Select the viewport sizes for which you want to hide the blocks. Changes will apply to all selected blocks.":["Wähle die Viewport-Größen aus, für die du die Blöcke ausblenden möchtest. Die Änderungen gelten für alle ausgewählten Blöcke."],"Hide block":["Block ausblenden"],"Hide blocks":["Blöcke ausblenden"],"Block visibility settings updated. You can access them via the List View (%s).":["Die Block-Sichtbarkeitseinstellungen wurden aktualisiert. Du kannst über die Listenansicht (%s) darauf zugreifen."],"Redirects the default site editor (Appearance > Design) to use the extensible site editor page.":["Leitet den Standard-Website-Editor (Design > Design) um, sodass die erweiterbare Website-Editor-Seite verwendet wird."],"Extensible Site Editor":["Erweiterbarer Website-Editor"],"Enables editable block inspector fields that are generated using a dataform.":["Aktiviert bearbeitbare Blockinspektorfelder, die mithilfe eines Datenformulars generiert werden."],"Block fields: Show dataform driven inspector fields on blocks that support them":["Blockfelder: Datenformular-gesteuerte Inspektorfelder in Blöcken anzeigen, die diese unterstützen"],"Block pattern descriptionA simple pattern with a navigation block and a navigation overlay close button.":["Eine einfache Vorlage mit einem Navigationsblock und einem Schließen-Button für das Navigations-Overlay."],"Block pattern categoryDisplay your website navigation.":["Zeigt die Navigation deiner Website an."],"Block pattern categoryNavigation":["Navigation"],"Navigation Overlay":["Navigations-Overlay"],"Post Type: “%s”":["Inhaltstyp: „%s“"],"Search results for: “%s”":["Suchergebnisse für: „%s“"],"Responses to “%s”":["Antworten zu „%s“"],"Response to “%s”":["Antwort zu „%s“"],"%1$s response to “%2$s”":["%1$s Antwort zu „%2$s“","%1$s Antworten zu „%2$s“"],"One response to “%s”":["Eine Antwort zu „%s“"],"File type":["Dateityp"],Application:o,"image dimensions%1$s × %2$s":["%1$s × %2$s"],"File size":["Dateigröße"],"unit symbolKB":["KB"],"unit symbolMB":["MB"],"unit symbolGB":["GB"],"unit symbolTB":["TB"],"unit symbolPB":["PB"],"unit symbolEB":["EB"],"unit symbolZB":["ZB"],"unit symbolYB":["YB"],"unit symbolB":["B"],"file size%1$s %2$s":["%1$s %2$s"],"File name":["Dateiname"],"Updating failed because you were offline. Please verify your connection and try again.":["Die Aktualisierung ist fehlgeschlagen, da du offline bist. Bitte überprüfe deine Verbindung und versuche es erneut."],"Scheduling failed because you were offline. Please verify your connection and try again.":["Die Planung ist fehlgeschlagen, da du offline bist. Bitte überprüfe deine Verbindung und versuche es erneut."],"Publishing failed because you were offline. Please verify your connection and try again.":["Die Veröffentlichung ist fehlgeschlagen, da du offline bist. Bitte überprüfe deine Verbindung und versuche es erneut."],"Font Collections":["Schriftsammlungen"],"Configure overlay visibility":["Overlay-Sichtbarkeit konfigurieren"],"Overlay Visibility":["Overlay-Sichtbarkeit"],"Edit overlay":["Overlay bearbeiten"],"Edit overlay: %s":["Bearbeitung des Overlays: %s"],"No overlays found.":["Es wurden keine Overlays gefunden."],"Overlay template":["Overlay-Template"],"None (default)":["Keine (Standard)"],"Error: %s":["Fehler: %s"],"Error parsing mathematical expression: %s":["Fehler bei der Gliederung des mathematischen Ausdrucks: %s"],"This block contains CSS or JavaScript that will be removed when you save because you do not have permission to use unfiltered HTML.":["Dieser Block enthält CSS oder JavaScript, das beim Speichern entfernt wird, da du keine Berechtigung zur Verwendung von ungefiltertem HTML hast."],"Show current breadcrumb":["Aktuellen Breadcrumb anzeigen"],"Show home breadcrumb":["Breadcrumb Start anzeigen"],"Value is too long.":["Der Wert ist zu lang."],"Value is too short.":["Der Wert ist zu kurz."],"Value is above the maximum.":["Der Wert liegt über dem Maximum."],"Value is below the minimum.":["Der Wert unterschreitet das Minimum."],"Max. columns":["Max. Spaltenanzahl"],"Columns will wrap to fewer per row when they can no longer maintain the minimum width.":["Die Spalten werden auf weniger pro Zeile umgebrochen, wenn die Mindestbreite nicht mehr eingehalten werden kann."],"Min. column width":["Min. Spaltenbreite"],"Includes all":["Enthält alle"],"Is none of":["Entspricht keinem von"],Includes:l,"Close navigation panel":["Navigationsbereich schließen"],"Open navigation panel":["Navigationsbereich öffnen"],"Custom overlay area for navigation overlays.":["Individueller Overlay-Bereich für Navigations-Overlays."],'[%1$s] Note: "%2$s"':["[%1$s] Anmerkung zu: „%2$s“"],"You can see all notes on this post here:":["Alle Anmerkungen zu diesem Beitrag findest du hier:"],"resolved/reopened":["geklärt / wieder geöffnet"],"Email: %s":["E-Mail-Adresse: %s"],"Author: %1$s (IP address: %2$s, %3$s)":["Autor: %1$s (IP-Adresse: %2$s, %3$s)"],'New note on your post "%s"':["Eine neue Anmerkung zu deinem Beitrag „%s“"],"Email me whenever anyone posts a note":["Mir eine E-Mail senden, wenn jemand eine Anmerkung veröffentlicht"],"Comments Page %s":["Kommentarseite %s"],"block descriptionThis block is deprecated. Please use the Quote block instead.":["Dieser Block ist veraltet. Bitte verwende stattdessen den Zitat-Block."],"block titlePullquote (deprecated)":["Zitatkasten (veraltet)"],"Add new reply":["Neue Antwort hinzufügen"],Placeholder:d,Citation:u,"It appears you are trying to use the deprecated Classic block. You can leave this block intact, or remove it entirely. Alternatively, if you have unsaved changes, you can save them and refresh to use the Classic block.":["Es scheint, dass du versuchst, den veralteten Classic-Block zu verwenden. Du kannst diesen Block unverändert lassen oder ganz entfernen. Alternativ kannst du, wenn du ungespeicherte Änderungen hast, diese speichern und die Seite aktualisieren, um den Classic-Block zu verwenden."],"Button Text":["Buttontext"],Filename:c,"Embed video from URL":["Video mittels URL einbetten"],"Add a background video to the cover block that will autoplay in a loop.":["Füge dem Cover-Block ein Hintergrundvideo hinzu, das automatisch in einer Schleife abgespielt wird."],"Enter YouTube, Vimeo, or other video URL":["Video-URL von YouTube, Vimeo oder eines anderen Videos eingeben"],"Video URL":["Video-URL"],"Add video":["Video hinzufügen"],"This URL is not supported. Please enter a valid video link from a supported provider.":["Diese URL wird nicht unterstützt. Bitte gib einen gültigen Videolink eines unterstützten Anbieters ein."],"Please enter a URL.":["Bitte gib eine URL ein."],"Choose a media item…":["Medium auswählen …"],"Choose a file…":["Datei auswählen …"],"Choose a video…":["Video auswählen …"],"Show / Hide":["Ein-/Ausblenden"],"Value does not match the required pattern.":["Der Wert entspricht nicht der erforderlichen Vorlage."],"Justified text can reduce readability. For better accessibility, use left-aligned text instead.":["Blocksätze können die Lesbarkeit beeinträchtigen. Verwende stattdessen linksbündigen Text, um die Barrierefreiheit zu verbessern."],"Edit section":["Abschnitt bearbeiten"],"Exit section":["Abschnitt verlassen"],"Editing a section in the EditorEdit section":["Abschnitt bearbeiten"],"A block pattern.":["Eine Blockvorlage."],"Reusable design elements for your site. Create once, use everywhere.":["Wiederverwendbare Designelemente für deine Website. Einmal erstellen und überall verwenden."],Registered:h,"Enter menu name":["Menüname eingeben"],"Unable to create navigation menu: %s":["Navigationsmenü nicht erstellbar: %s"],"Navigation menu created successfully.":["Das Navigationsmenü wurde erfolgreich erstellt."],Activity:g,"%s: ":["%s: "],"Row %d":["Zeile %d"],"Insert right":["Rechts einfügen"],"Insert left":["Links einfügen"],"Executing ability…":["Fähigkeit wird ausgeführt …"],"Workflow suggestions":["Ablaufplan-Vorschläge"],"Workflow palette":["Ablaufplan-Palette"],"Open the workflow palette.":["Öffnet die Ablaufplan-Palette."],"Run abilities and workflows":["Fähigkeiten und Ablaufpläne ausführen"],"Empty.":["Leer"],"Enables custom mobile overlay design and content control for Navigation blocks, allowing you to create flexible, professional menu experiences.":["Individuelles Mobil-Overlay-Design und Inhaltskontrolle für Navigationsblöcke aktivieren, sodass du flexible, professionelle Menüerlebnisse erstellen kannst."],"Customizable Navigation Overlays":["Anpassbare Navigations-Overlays"],"Enables the Workflow Palette for running workflows composed of abilities, from a unified interface.":["Die Ablaufplan-Palette für die Ausführung von Ablaufplänen, die aus Fähigkeiten bestehen, über eine einheitliche Benutzeroberfläche aktivieren."],"Workflow Palette":["Ablaufplan-Palette"],"Script modules to load into the import map.":["Skriptmodule, die in die Importzuordnung geladen werden."],"block descriptionDisplay content in a tabbed interface to help users navigate detailed content with ease.":["Stellt Inhalte auf einer Oberfläche mit Tabs dar, damit Benutzer bequem durch detaillierte Inhalte navigieren können."],"block titleTabs":["Tabs"],"block descriptionContent for a tab in a tabbed interface.":["Der Inhalt für einen Tab in einer Oberfläche mit Tabs."],"block titleTab":["Tab"],"Disconnect pattern":["Vorlage trennen"],"Upload media":["Medien hochladen"],"Pick from starter content when creating a new page.":["Wähle beim Erstellen einer neuen Seite aus den Starter-Inhalten aus."],"All notes":["Alle Anmerkungen"],"Unresolved notes":["Ungeklärte Anmerkungen"],"Convert to blocks to add notes.":["In Blöcke umwandeln, um Anmerkungen hinzuzufügen."],"Notes are disabled in distraction free mode.":["Anmerkungen sind im ablenkungsfreien Modus deaktiviert."],"Always show starter patterns for new pages":["Immer Starter-Vorlagen für neue Seiten anzeigen"],"templateInactive":["Inaktiv"],"templateActive":["Aktiv"],"templateActive when used":["Aktiv, wenn verwendet"],"More details":["Weitere Details"],"Validating…":["Wird validiert …"],"Unknown error when running custom validation asynchronously.":["Unbekannter Fehler beim asynchronen Ausführen der individuellen Validierung."],"Validation could not be processed.":["Die Validierung konnte nicht verarbeitet werden."],Valid:m,"Unknown error when running elements validation asynchronously.":["Unbekannter Fehler beim asynchronen Ausführen der Element-Validierung."],"Could not validate elements.":["Die Elemente konnten nicht validiert werden."],"Tab Contents":["Tab-Inhalte"],"The tabs title is used by screen readers to describe the purpose and content of the tabs.":["Der Tabs-Titel wird von Screenreadern verwendet, um den Zweck und den Inhalt der Tabs zu beschreiben."],"Tabs Title":["Titel der Tabs"],"Type / to add a block to tab":["Gib / ein, um einen Block zum Tab hinzuzufügen"],"Tab %d…":["Tab %d …"],"Tab %d":["Tab %d"],"If toggled, this tab will be selected when the page loads.":["Wenn aktiviert, wird dieser Tab beim Laden der Seite ausgewählt."],"Default Tab":["Standard-Tab"],"Tab Label":["Tab-Beschriftung"],"Add Tab":["Tab hinzufügen"],"Synced %s is missing. Please update or remove this link.":["Die synchronisierte Entität (%s) fehlt. Bitte aktualisiere oder entferne diesen Link."],"Edit code":["Code bearbeiten"],"Add custom HTML code and preview how it looks.":["Füge individuellen HTML-Code hinzu und sieh dir an, wie er aussieht."],"Update and close":["Aktualisieren und schließen"],"Continue editing":["Bearbeitung fortsetzen"],"You have unsaved changes. What would you like to do?":["Du hast ungespeicherte Änderungen. Was würdest du gerne tun?"],"Unsaved changes":["Ungespeicherte Änderungen"],"Write JavaScript…":["JavaScript schreiben …"],"Write CSS…":["CSS schreiben …"],"Enable/disable fullscreen":["Vollbild aktivieren/deaktivieren"],JavaScript:b,"Edit HTML":["HTML bearbeiten"],"Introduce new sections and organize content to help visitors (and search engines) understand the structure of your content.":["Führe neue Abschnitte ein und organisiere Inhalte, damit Besucher (und Suchmaschinen) die Struktur deiner Inhalte besser verstehen können."],"Embed an X post.":["Einen X-Beitrag einbetten."],"If this breadcrumbs block appears in a template or template part that’s shown on the homepage, enable this option to display the breadcrumb trail. Otherwise, this setting has no effect.":["Wenn dieser Breadcrumbs-Block in einem Template oder Template-Teil erscheint, das auf der Homepage angezeigt wird, aktiviere diese Option, um den Breadcrumb-Pfad anzuzeigen. Ansonsten hat diese Einstellung keine Auswirkung."],"Show on homepage":["Auf der Homepage anzeigen"],"Finish editing a design.":["Beende die Bearbeitung eines Designs."],"The page you're looking for does not exist":["Die gesuchte Seite existiert nicht"],"Route not found":["Route nicht gefunden"],"Warning: when you deactivate this experiment, it is best to delete all created templates except for the active ones.":["Warnung: Wenn du dieses Experiment deaktivierst, ist es am besten, alle erstellten Templates zu löschen, außer den aktiven."],"Allows multiple templates of the same type to be created, of which one can be active at a time.":["Die Erstellung mehrerer Templates desselben Typs, von denen jeweils eine aktiv sein kann, ermöglichen."],"Template Activation":["Template-Aktivierung"],"Inline styles for editor assets.":["Inline-Stile für Editor-Assets."],"Inline scripts for editor assets.":["Inline-Skripte für Editor-Assets."],"Editor styles data.":["Editor-Stildaten."],"Editor scripts data.":["Editor-Skriptdaten."],"Limit result set to attachments of a particular MIME type or MIME types.":["Begrenzt den Ergebnissatz auf Anhänge eines bestimmten MIME-Typs oder bestimmter MIME-Typen."],"Limit result set to attachments of a particular media type or media types.":["Begrenzt den Ergebnissatz auf Anhänge eines bestimmten Medientyps oder bestimmter Medientypen."],"Page %s":["Seite %s"],"Page not found":["Seite nicht gefunden"],"block descriptionDisplay a custom date.":["Zeigt ein individuelles Datum an."],"block descriptionDisplays a foldable layout that groups content in collapsible sections.":["Zeigt ein ausklappbares Layout an, das Inhalte in klappbare Abschnitte gruppiert."],"block descriptionContains the hidden or revealed content beneath the heading.":["Enthält den aus- oder eingeblendeten Inhalt unter der Überschrift."],"block descriptionWraps the heading and panel in one unit.":["Umfasst die Überschrift und das Bedienfeld."],"block descriptionDisplays a heading that toggles the accordion panel.":["Zeigt eine Überschrift an, mit der das Akkordeon-Bedienfeld umgeschaltet werden kann."],"Media items":["Medienelemente"],"Search media":["Medien suchen"],"Select Media":["Medien auswählen"],"Are you sure you want to delete this note? This will also delete all of this note's replies.":["Möchtest du diese Anmerkung wirklich löschen? Dadurch werden alle Antworten zu dieser Anmerkung ebenfalls gelöscht."],"Revisions (%d)":["Revisionen (%d)"],"paging%1$d of %2$d":["%1$d von %2$d"],"%d item":["%d Element","%d Elemente"],"Color Variations":["Farbvarianten"],"Shadow Type":["Art der Schattierung"],"Font family to uninstall is not defined.":["Die zu deinstallierende Schriftfamilie wurde nicht definiert."],"Registered Templates":["Registrierte Templates"],"Failed to create page. Please try again.":["Die Seite konnte nicht erstellt werden. Bitte versuche es erneut."],"%s page created successfully.":["Die Seite %s wurde erfolgreich erstellt."],"Full content":["Kompletter Inhalt"],"No content":["Kein Inhalt"],"Display content":["Inhaltsanzeige"],"The exact type of breadcrumbs shown will vary automatically depending on the page in which this block is displayed. In the specific case of a hierarchical post type with taxonomies, the breadcrumbs can either reflect its post hierarchy (default) or the hierarchy of its assigned taxonomy terms.":["Die genaue Art der angezeigten Breadcrumbs variiert automatisch je nach Seite, auf der dieser Block angezeigt wird. Im speziellen Fall eines hierarchischen Inhaltstyps mit Taxonomien können die Brotkrumen entweder die Beitragshierarchie (Standard) oder die Hierarchie der zugewiesenen Taxonomiebegriffe widerspiegeln."],"Prefer taxonomy terms":["Taxonomiebegriffe bevorzugen"],"The text will resize to fit its container, resetting other font size settings.":["Der Text wird an die Größe seines Containers angepasst, wodurch andere Schriftgrößeneinstellungen aufgehoben werden."],"Enables a new media modal experience powered by Data Views for improved media library management.":["Eine neue Medien-Modalerfahrung aktivieren, die auf Datenansichten basiert und eine verbesserte Verwaltung der Mediathek ermöglicht."],"Data Views: new media modal":["Datenansichten: neues Medienmodal"],"block keywordterm title":["Begriffstitel"],"block descriptionDisplays the name of a taxonomy term.":["Zeigt den Namen eines Taxonomiebegriffs an."],"block titleTerm Name":["Name des Begriffs"],"block descriptionDisplays the post count of a taxonomy term.":["Zeigt die Anzahl der Beiträge eines Taxonomiebegriffs an."],"block titleTerm Count":["Begriffsanzahl"],"block keywordmathematics":["Mathematik"],"block keywordlatex":["LaTeX"],"block keywordformula":["Formel"],"block descriptionDisplay mathematical notation using LaTeX.":["Zeigt mathematische Schreibweisen mit LaTeX an."],"block titleMath":["Mathematik"],"block titleBreadcrumbs":["Brotkrümelnavigation"],"Overrides currently don't support image links. Remove the link first before enabling overrides.":["Überschreibungen unterstützen derzeit keine Bildlinks. Entferne zuerst den Link, bevor du Überschreibungen aktivierst."],Math:["Mathematik"],"CSS classes":["CSS-Klassen"],"Close Notes":["Anmerkungen schließen"],Notes:p,"View notes":["Anmerkungen anzeigen"],"New note":["Neue Anmerkung"],"Add note":["Anmerkung hinzufügen"],Reopened:k,"Marked as resolved":["Als geklärt markiert"],"Edit note %1$s by %2$s":["Anmerkung %1$s von %2$s bearbeiten"],"Reopen noteReopen":["Wieder öffnen"],"Back to block":["Zurück zum Block"],"Note: %s":["Anmerkung: %s"],"Note deleted.":["Die Anmerkung wurde gelöscht."],"Note reopened.":["Die Anmerkung wurde wieder geöffnet."],"Note added.":["Die Anmerkung wurde hinzugefügt."],"Reply added.":["Die Antwort wurde hinzugefügt."],Note:f,"You are about to duplicate a bundled template. Changes will not be live until you activate the new template.":["Du bist dabei, ein gebündeltes Template zu duplizieren. Änderungen werden erst wirksam, wenn du das neue Template aktivierst."],'Do you want to activate this "%s" template?':["Möchtest du dieses Template „%s“ aktivieren?"],"template typeCustom":["Individuell"],"Created templates":["Erstellte Templates"],"Reset view":["Ansicht zurücksetzen"],"Unknown error when running custom validation.":["Ein unbekannter Fehler ist bei der Ausführung der individuellen Validierung aufgetreten."],"No elements found":["Kein Element gefunden"],"Term template block display settingGrid view":["Rasteransicht"],"Term template block display settingList view":["Listenansicht"],"Display the terms' names and number of posts assigned to each term.":["Zeigt die Namen der Begriffe und die Anzahl der jedem Begriff zugewiesenen Beiträge an."],"Name & Count":["Name und Anzahl"],"Display the terms' names.":["Zeigt die Namen der Begriffe an."],"When specific terms are selected, only those are displayed.":["Wenn bestimmte Begriffe ausgewählt sind, werden nur diese angezeigt."],"When specific terms are selected, the order is based on their selection order.":["Wenn bestimmte Begriffe ausgewählt sind, richtet sich die Reihenfolge nach der Reihenfolge ihrer Auswahl."],"Selected terms":["Ausgewählte Begriffe"],"Show nested terms":["Verschachtelte Begriffe anzeigen"],"Display terms based on specific criteria.":["Zeigt Begriffe basierend auf bestimmten Kriterien an."],"Display terms based on the current taxonomy archive. For hierarchical taxonomies, shows children of the current term. For non-hierarchical taxonomies, shows all terms.":["Zeigt Begriffe basierend auf dem aktuellen Taxonomiearchiv an. Bei hierarchischen Taxonomien werden Unterbegriffe des aktuellen Begriffs angezeigt. Bei nicht-hierarchischen Taxonomien werden alle Begriffe angezeigt."],"Make term name a link":["Begriffsname als Link anlegen"],"Change bracket type":["Klammertyp ändern"],"Angle brackets":["Winkelklammern"],"Curly brackets":["Geschweifte Klammern"],"Square brackets":["Eckige Klammern"],"Round brackets":["Runde Klammern"],"No brackets":["Keine Klammern"],"e.g., x^2, \\frac{a}{b}":["z. B.: x^2, \\frac{a}{b}"],"LaTeX math syntax":["LaTeX-Mathematik-Syntax"],"Set a consistent aspect ratio for all images in the gallery.":["Lege ein einheitliches Seitenverhältnis für alle Bilder in der Galerie fest."],"All gallery images updated to aspect ratio: %s":["Alle Bilder der Galerie wurden auf dieses Seitenverhältnis aktualisiert: %s"],"Comments block: You’re currently using the legacy version of the block. The following is just a placeholder - the final styling will likely look different. For a better representation and more customization options, switch the block to its editable mode.":["Kommentarblock: Du verwendest derzeit die alte Version des Blocks. Folgendes ist nur ein Platzhalter. Das endgültige Design wird wahrscheinlich anders aussehen. Für eine bessere Darstellung und mehr Anpassungsmöglichkeiten kannst du den Block in den bearbeitbaren Modus umschalten."],Ancestor:w,"Source not registered":["Quelle ist nicht registriert"],"Not connected":["Nicht verbunden"],"No sources available":["Keine Quellen verfügbar"],"Text will resize to fit its container.":["Der Text wird an die Größe des Containers angepasst."],"Fit text":["Text anpassen"],"Allowed Blocks":["Zulässige Blöcke"],"Specify which blocks are allowed inside this container.":["Lege fest, welche Blöcke innerhalb dieses Containers zulässig sind."],"Select which blocks can be added inside this container.":["Lege fest, welche Blöcke innerhalb dieses Containers hinzugefügt werden können."],"Manage allowed blocks":["Zulässige Blöcke verwalten"],"Block hidden. You can access it via the List View (%s).":["Der Block ist ausgeblendet. Du kannst über die Listenansicht (%s) darauf zugreifen."],"Blocks hidden. You can access them via the List View (%s).":["Die Blöcke sind ausgeblendet. Du kannst über die Listenansicht (%s) darauf zugreifen."],"Show or hide the selected block(s).":["Die ausgewählten Blöcke ein- oder ausblenden."],"Type of the comment.":["Die Art des Kommentars."],"Creating comment failed.":["Die Erstellung des Kommentars ist fehlgeschlagen."],"Comment field exceeds maximum length allowed.":["Das Kommentarfeld überschreitet die maximal zulässige Länge."],"Creating a comment requires valid author name and email values.":["Das Erstellen eines Kommentars erfordert einen gültigen Autorennamen und E-Mail-Angaben."],"Invalid comment content.":["Der Kommentarinhalt ist ungültig."],"Cannot create a comment with that type.":["Ein Kommentar dieses Typs kann nicht erstellt werden."],"Sorry, you are not allowed to read this comment.":["Du bist leider nicht berechtigt, diesen Kommentar zu lesen."],"Query parameter not permitted: %s":["Abfrage-Parameter nicht erlaubt: %s"],"Sorry, you are not allowed to read comments without a post.":["Du bist leider nicht berechtigt, Kommentare ohne einen Beitrag zu lesen."],"Sorry, this post type does not support notes.":["Leider unterstützt dieser Inhaltstyp keine Anmerkungen."],"Note resolution status":["Klärungsstatus der Anmerkung"],Breadcrumbs:v,"block descriptionShow minutes required to finish reading the post. Can also show a word count.":["Zeigt die Minuten an, die zum Lesen des Beitrags erforderlich sind. Es kann auch die Wortanzahl angezeigt werden."],"Reply to note %1$s by %2$s":["Auf Anmerkung %1$s von %2$s antworten"],"Reopen & Reply":["Wieder öffnen und antworten"],"Original block deleted.":["Der ursprüngliche Block ist gelöscht."],"Original block deleted. Note: %s":["Der ursprüngliche Block ist gelöscht. Anmerkung: %s"],"Note date full date formatF j, Y g:i a":["j. F Y, G:i"],"Don't allow link notifications from other blogs (pingbacks and trackbacks) on new articles.":["Keine Link-Benachrichtigungen von anderen Blogs (Pingbacks und Trackbacks) bei neuen Beiträgen erlauben."],"Don't allow":["Nicht erlauben"],"Allow link notifications from other blogs (pingbacks and trackbacks) on new articles.":["Link-Benachrichtigungen von anderen Blogs (Pingbacks und Trackbacks) bei neuen Beiträgen erlauben."],Allow:y,"Trackbacks & Pingbacks":["Trackbacks und Pingbacks"],"Template activation failed.":["Die Template-Aktivierung ist fehlgeschlagen."],"Template activated.":["Das Template wurde aktiviert."],"Activating template…":["Template wird aktiviert …"],"Template Type":["Template-Typ"],"Compatible Theme":["Kompatibles Theme"],Active:B,"Active templates":["Aktive Templates"],Deactivate:z,"Value must be a number.":["Der Wert muss eine Zahl sein."],"You can add custom CSS to further customize the appearance and layout of your site.":["Du kannst individuelles CSS hinzufügen, um das Erscheinungsbild und Layout deiner Website weiter anzupassen."],"Show the number of words in the post.":["Zeigt die Anzahl der Wörter im Beitrag an."],"Word Count":["Anzahl der Wörter"],"Show minutes required to finish reading the post.":["Zeigt die Minuten an, die zum Lesen des Beitrags erforderlich sind."],"Time to Read":["Lesedauer"],"Display as range":["Als Zeitspanne darstellen"],"Turns reading time range display on or offDisplay as range":["Als Zeitspanne darstellen"],item:S,term:A,tag:D,category:T,"Suspendisse commodo lacus, interdum et.":["Suspendisse commodo lacus, interdum et."],"Lorem ipsum dolor sit amet, consectetur.":["Lorem ipsum dolor sit amet, consectetur."],Visible:E,"Unsync and edit":["Desynchronisieren und bearbeiten"],"Synced with the selected %s.":["Mit der ausgewählten Entität (%s) synchronisiert."],"%s character":["%s Zeichen","%s Zeichen"],"Range of minutes to read%1$s–%2$s minutes":["%1$s–%2$s Minuten"],"block keywordtags":["Schlagwörter"],"block keywordtaxonomy":["Taxonomie"],"block keywordterms":["Begriffe"],"block titleTerms Query":["Begriffsabfrage"],"block descriptionContains the block elements used to render a taxonomy term, like the name, description, and more.":["Enthält Blockelemente, die zur Darstellung eines Taxonomiebegriffs verwendet werden, wie Name, Beschreibung und mehr."],"block titleTerm Template":["Begriffs-Template"],Count:L,"Parent ID":["Übergeordnete ID"],"Term ID":["Begriffs-ID"],"An error occurred while performing an update.":["Während der Aktualisierung ist ein Fehler aufgetreten."],"+%s":["+%s"],"100+":["100+"],"%s more reply":["%s weitere Antwort","%s weitere Antworten"],"Show password":["Passwort anzeigen"],"Hide password":["Passwort ausblenden"],"Date time":["Datum und Uhrzeit"],"Value must be a valid color.":["Der Wert muss eine gültige Farbe sein."],"Open custom CSS":["Individuelles CSS öffnen"],"Go to: Patterns":["Wechseln zu: Vorlagen"],"Go to: Templates":["Wechseln zu: Templates"],"Go to: Navigation":["Wechseln zu: Navigation"],"Go to: Styles":["Wechseln zu: Stilen"],"Go to: Template parts":["Wechseln zu: Template-Teile"],"Go to: %s":["Wechseln zu: %s"],"No terms found.":["Es wurden keine Begriffe gefunden."],"Term Name":["Name des Begriffs"],"Limit the number of terms you want to show. To show all terms, use 0 (zero).":["Begrenze die Anzahl der Begriffe, die du darstellen möchtest. Verwende 0 (Null), um alle Begriffe anzuzeigen."],"Max terms":["Maximum an Begriffen"],"Count, low to high":["Anzahl, aufsteigend"],"Count, high to low":["Anzahl, absteigend"],"Name: Z → A":["Name: Z → A"],"Name: A → Z":["Name: A → Z"],"If unchecked, the page will be created as a draft.":["Wenn nicht ausgewählt, wird die Seite als Entwurf erstellt."],"Publish immediately":["Sofort veröffentlichen"],"Create a new page to add to your Navigation.":["Erstelle eine neue Seite, die du zu deiner Navigation hinzufügen möchtest."],"Create page":["Seite erstellen"],"Edit contents":["Inhalte bearbeiten"],"The Link Relation attribute defines the relationship between a linked resource and the current document.":["Das Attribut Link-Beziehung definiert die Beziehung zwischen einer verlinkten Ressource und dem aktuellen Dokument."],"Link relation":["Link-Beziehung"],"Blog home":["Blog-Titelseite"],Attachment:x,Post:P,"block bindings sourceTerm Data":["Begriffsdaten"],"Choose pattern":["Vorlage auswählen"],"Could not get a valid response from the server.":["Es konnte keine gültige Antwort vom Server abgerufen werden."],"Unable to connect. Please check your Internet connection.":["Die Verbindung konnte nicht hergestellt werden. Bitte überprüfe deine Internetverbindung."],"block titleAccordion":["Akkordeon"],"block titleAccordion Panel":["Akkordeon-Bedienfeld"],"block titleAccordion Heading":["Akkordeon-Überschrift"],"block titleAccordion Item":["Akkordeon-Element"],"Automatically load more content as you scroll, instead of showing pagination links.":["Lädt automatisch weitere Inhalte, während du scrollst, anstatt Seitennummerierungs-Links anzuzeigen."],"Enable infinite scroll":["Endloses Scrollen aktivieren"],"Play inline enabled because of Autoplay.":["Die Inline-Wiedergabe wurde aufgrund der automatischen Wiedergabe aktiviert."],"Display the post type label based on the queried object.":["Zeigt die Beschriftung des Inhaltstyps basierend auf dem abgefragten Objekt an."],"Post Type Label":["Beschriftung des Inhaltstyps"],"Show post type label":["Inhaltstyp-Beschriftung anzeigen"],"Post Type: Name":["Inhaltstyp: Name"],"Accordion title":["Akkordeon-Titel"],"Accordion content will be displayed by default.":["Akkordeon-Inhalte werden standardmäßig angezeigt."],"Icon Position":["Icon-Position"],"Display a plus icon next to the accordion header.":["Zeigt ein Plus-Icon neben dem Akkordeon-Header an."],"Automatically close accordions when a new one is opened.":["Lass Akkordeons automatisch schließen, wenn ein neues geöffnet wird."],"Auto-close":["Automatisch schließen"],'Post Type: "%s"':["Inhaltstyp: „%s“"],"Add Category":["Kategorie hinzufügen"],"Add Term":["Begriff hinzufügen"],"Add Tag":["Schlagwort hinzufügen"],To:V,From:I,"Year to date":["Dieses Jahr"],"Last year":["Letztes Jahr"],"Month to date":["Aktueller Monat"],"Last 30 days":["Letzte 30 Tage"],"Last 7 days":["Letzte 7 Tage"],"Past month":["Letzter Monat"],"Past week":["Letzte Woche"],Yesterday:C,Today:M,"Every value must be a string.":["Jeder Wert muss eine Zeichenfolge sein."],"Value must be an array.":["Der Wert muss ein Array sein."],"Value must be true, false, or undefined":["Der Wert muss „true“, „false“ oder undefiniert sein."],"Value must be an integer.":["Der Wert muss eine ganze Zahl sein."],"Value must be one of the elements.":["Der Wert muss eines der Elemente sein."],"Value must be a valid email address.":["Der Wert muss eine gültige E-Mail-Adresse sein."],"Add page":["Seite hinzufügen"],Optional:W,"social link block variation nameSoundCloud":["SoundCloud"],"Display a post's publish date.":["Zeigt das Veröffentlichungsdatum eines Beitrags an."],"Publish Date":["Veröffentlichungsdatum"],'"Read more" text':["„Weiterlesen“-Text"],"Poster image preview":["Vorschau des Vorschaubildes"],"Edit or replace the poster image.":["Bearbeite oder ersetze das Vorschaubild."],"Set poster image":["Vorschaubild festlegen"],"social link block variation nameYouTube":["YouTube"],"social link block variation nameYelp":["Yelp"],"social link block variation nameX":["X"],"social link block variation nameWhatsApp":["WhatsApp"],"social link block variation nameWordPress":["WordPress"],"social link block variation nameVK":["VK"],"social link block variation nameVimeo":["Vimeo"],"social link block variation nameTwitter":["Twitter"],"social link block variation nameTwitch":["Twitch"],"social link block variation nameTumblr":["Tumblr"],"social link block variation nameTikTok":["TikTok"],"social link block variation nameThreads":["Threads"],"social link block variation nameTelegram":["Telegram"],"social link block variation nameSpotify":["Spotify"],"social link block variation nameSnapchat":["Snapchat"],"social link block variation nameSkype":["Skype"],"social link block variation nameShare Icon":["Teilen-Icon"],"social link block variation nameReddit":["Reddit"],"social link block variation namePocket":["Pocket"],"social link block variation namePinterest":["Pinterest"],"social link block variation namePatreon":["Patreon"],"social link block variation nameMedium":["Medium"],"social link block variation nameMeetup":["Meetup"],"social link block variation nameMastodon":["Mastodon"],"social link block variation nameMail":["E-Mail"],"social link block variation nameLinkedIn":["LinkedIn"],"social link block variation nameLast.fm":["Last.fm"],"social link block variation nameInstagram":["Instagram"],"social link block variation nameGravatar":["Gravatar"],"social link block variation nameGitHub":["GitHub"],"social link block variation nameGoogle":["Google"],"social link block variation nameGoodreads":["Goodreads"],"social link block variation nameFoursquare":["Foursquare"],"social link block variation nameFlickr":["Flickr"],"social link block variation nameRSS Feed":["RSS-Feed"],"social link block variation nameFacebook":["Facebook"],"social link block variation nameEtsy":["Etsy"],"social link block variation nameDropbox":["Dropbox"],"social link block variation nameDribbble":["Dribbble"],"social link block variation nameDiscord":["Discord"],"social link block variation nameDeviantArt":["DeviantArt"],"social link block variation nameCodePen":["CodePen"],"social link block variation nameLink":["Link"],"social link block variation nameBluesky":["Bluesky"],"social link block variation nameBehance":["Behance"],"social link block variation nameBandcamp":["Bandcamp"],"social link block variation nameAmazon":["Amazon"],"social link block variation name500px":["500px"],"block descriptionDescribe in a few words what this site is about. This is important for search results, sharing on social media, and gives overall clarity to visitors.":["Beschreibe in wenigen Worten, worum es auf dieser Website geht. Dies ist wichtig für die Suchergebnisse, das Teilen in den sozialen Medien und sorgt generell für Klarheit bei Besuchern."],"There is no poster image currently selected.":["Es ist derzeit kein Vorschaubild ausgewählt."],"The current poster image url is %s.":["Die aktuelle Vorschaubild-URL lautet %s."],"Comments pagination":["Seitennummerierung der Kommentare"],"paging
Page
%1$s
of %2$d
":["
Seite
%1$s
von %2$d
"],"%1$s is in the past: %2$s":["%1$s ist jünger als: %2$s"],"%1$s between (inc): %2$s and %3$s":["%1$s zwischen (einschl.): %2$s und %3$s"],"%1$s is on or after: %2$s":["%1$s ist frühestens am: %2$s"],"%1$s is on or before: %2$s":["%1$s ist spätestens am: %2$s"],"%1$s is after: %2$s":["%1$s ist nach dem: %2$s"],"%1$s is before: %2$s":["%1$s ist vor dem: %2$s"],"%1$s starts with: %2$s":["%1$s beginnt mit: %2$s"],"%1$s doesn't contain: %2$s":["%1$s enthält nicht: %2$s"],"%1$s contains: %2$s":["%1$s enthält: %2$s"],"%1$s is greater than or equal to: %2$s":["%1$s ist größer als oder gleich: %2$s"],"%1$s is less than or equal to: %2$s":["%1$s ist kleiner als oder gleich: %2$s"],"%1$s is greater than: %2$s":["%1$s ist größer als: %2$s"],"%1$s is less than: %2$s":["%1$s ist kleiner als: %2$s"],"Max.":["Max."],"Min.":["Mind."],"The max. value must be greater than the min. value.":["Der Maximalwert muss größer als der Minimalwert sein."],Unit:N,"Years ago":["Jahre zuvor"],"Months ago":["Monate zuvor"],"Weeks ago":["Wochen zuvor"],"Days ago":["Tage zuvor"],Years:F,Months:$,Weeks:R,Days:H,False:G,True:U,Over:K,"In the past":["Ist jünger als"],"Not on":["Nicht am"],"Between (inc)":["Zwischen (einschl.)"],"Starts with":["Beginnt mit"],"Doesn't contain":["Enthält nicht"],"After (inc)":["Danach (einschl.)"],"Before (inc)":["Davor (einschl.)"],After:O,Before:Z,"Greater than or equal":["Größer als oder gleich"],"Less than or equal":["Kleiner als oder gleich"],"Greater than":["Größer als"],"Less than":["Kleiner als"],"%s, selected":["%s, ausgewählt"],"Go to the Previous Month":["Zum vorherigen Monat"],"Go to the Next Month":["Zum nächsten Monat"],"Today, %s":["Heute, %s"],"Date range calendar":["Kalender mit Datumsbereich"],"Date calendar":["Terminkalender"],"Interactivity API: Full-page client-side navigation":["Interaktivitäts-API: clientseitige Navigation auf der gesamten Seite"],"Set as default track":["Als Standard-Track festlegen"],"Icon size":["Icon-Größe"],"Only select
if the separator conveys important information and should be announced by screen readers.":["Wähle
nur, wenn das Trennzeichen wichtige Informationen vermittelt und von Screenreadern ausgegeben werden soll."],"Sort and filter":["Filtern und sortieren"],"Write summary. Press Enter to expand or collapse the details.":["Schreibe eine Zusammenfassung. Drücke die Eingabetaste, um die Details anzuzeigen oder zu verbergen."],"Default ()":["Standard ()"],"The ":["Das Navigations-Menü wurde gelöscht oder ist nicht verfügbar. "],"Custom HTML Preview":["Individuelle HTML-Vorschau"],"Multiple blocks selected":["Mehrere Blöcke sind ausgewählt"],'Block name changed to: "%s".':["Der Name des Blocks wurde auf: „%s“ geändert."],'Block name reset to: "%s".':["Der Name des Blocks wurde auf: „%s“ zurückgesetzt."],"https://wordpress.org/patterns/":["https://de.wordpress.org/patterns/"],"Patterns are available from the WordPress.org Pattern Directory, bundled in the active theme, or created by users on this site. Only patterns created on this site can be synced.":["Vorlagen sind im WordPress.org-Vorlagen-Verzeichnis verfügbar, die im aktivierten Theme gebündelt sind oder von Benutzern auf dieser Website erstellt wurden. Nur auf dieser Website erstellte Vorlagen können synchronisiert werden."],Source:He,"Theme & Plugins":["Theme und Plugins"],"Pattern Directory":["Vorlagen-Verzeichnis"],"Jump to footnote reference %1$d":["Zur Fußnotenreferenz %1$d navigieren"],"Mark as nofollow":["Als „nofollow“ (nicht folgen) kennzeichnen"],"Empty template part":["Leeres Template-Teil"],"Choose a template":["Ein Template auswählen"],"Manage fonts":["Schriften verwalten"],Fonts:Ge,"Install Fonts":["Schriften installieren"],Install:Ue,"No fonts found. Try with a different search term.":["Es wurden keine Schriften gefunden. Versuche es mit einem anderen Suchbegriff."],"Font name…":["Name der Schrift …"],"Select font variants to install.":["Schriftvarianten für die Installation auswählen."],"Allow access to Google Fonts":["Den Zugriff auf Google Fonts erlauben"],"You can alternatively upload files directly on the Upload tab.":["Alternativ kannst du Dateien direkt über den Tab Upload hochladen."],"To install fonts from Google you must give permission to connect directly to Google servers. The fonts you install will be downloaded from Google and stored on your site. Your site will then use these locally-hosted fonts.":["Um Schriften von Google zu installieren, musst du die Erlaubnis erteilen, eine direkte Verbindung zu den Google-Servern herzustellen. Die von dir installierten Schriften werden von Google heruntergeladen und auf deiner Website gespeichert. Deine Website verwendet dann diese lokal gespeicherten Schriften."],"Choose font variants. Keep in mind that too many variants could make your site slower.":["Wähle Schriftvarianten aus. Denk daran, dass zu viele Varianten deine Website verlangsamen könnten."],"Upload font":["Schrift hochladen"],"%1$d/%2$d variants active":["%1$d/%2$d Varianten sind aktiv"],"font styleNormal":["Normal"],"font weightExtra-bold":["Extra-Fett"],"font weightSemi-bold":["Halbfett"],"font weightNormal":["Normal"],"font weightExtra-light":["Extra-Dünn"],"Add your own CSS to customize the appearance of the %s block. You do not need to include a CSS selector, just add the property and value.":["Füge dein eigenes CSS hinzu, um das Design des Blocks %s anzupassen. Du musst keinen CSS-Selektor einfügen, sondern nur die Eigenschaft und den Wert."],'Imported "%s" from JSON.':["„%s“ wurde aus JSON importiert."],"Import pattern from JSON":["Die Vorlage aus JSON importieren"],"A list of all patterns from all sources.":["Eine Liste aller Vorlagen aus allen Quellen."],"An error occurred while reverting the template part.":["Beim Zurücksetzen des Template-Teils ist ein Fehler aufgetreten."],Notice:Ke,"Error notice":["Fehlermeldung"],"Information notice":["Hinweis zur Information"],"Warning notice":["Warnhinweis"],"Footnotes are not supported here. Add this block to post or page content.":["Fußnoten werden hier nicht unterstützt. Füge diesen Block zum Beitrags- oder Seiteninhalt hinzu."],"Comments form disabled in editor.":["Das Formular für Kommentare ist im Editor deaktiviert."],"Block: Paragraph":["Block: Absatz"],"Image settingsSettings":["Einstellungen"],"Drop to upload":["Zum Hochladen hineinziehen und loslassen"],"Background image":["Hintergrundbild"],"Only images can be used as a background image.":["Nur Bilder können als Hintergrundbilder verwendet werden."],"No results found":["Es wurden keine Ergebnisse gefunden"],"%d category button displayed.":["%d Kategorie-Button wird angezeigt.","%d Kategorie-Buttons werden angezeigt."],"All patterns":["Alle Vorlagen"],"Display a list of assigned terms from the taxonomy: %s":["Eine Liste der zugeordneten Begriffe aus der Taxonomie: %s anzeigen"],"Specify how many links can appear before and after the current page number. Links to the first, current and last page are always visible.":["Festlegen, wie viele Links vor und nach der aktuellen Seitenzahl erscheinen sollen. Die Links zur ersten, aktuellen und letzten Seite sind immer sichtbar."],"Number of links":["Anzahl von Links"],Ungroup:Oe,"Page Loaded.":["Die Seite wurde geladen."],"Loading page, please wait.":["Die Seite wird geladen, bitte warten."],"block titleDate":["Datum"],"block titleContent":["Inhalt"],"block titleAuthor":["Autor"],"block keywordtoggle":["umschalten"],"Default styles":["Standard-Stile"],"Reset the styles to the theme defaults":["Die Stile auf die Theme-Standards zurücksetzen"],"Changes will apply to new posts only. Individual posts may override these settings.":["Die Änderungen betreffen nur neue Beiträge. Einzelne Beiträge können diese Einstellungen überschreiben."],"Breadcrumbs visible.":["Breadcrumbs sind sichtbar."],"Breadcrumbs hidden.":["Breadcrumbs sind verborgen."],"Editor preferences":["Editor-Einstellungen"],"The
element should be used for the primary content of your document only.":["Das
-Element sollte nur für den hauptsächlichen Inhalt deines Dokuments benutzt werden."],"Modified Date":["Änderungsdatum"],"Overlay menu controls":["Overlay-Menüsteuerung"],'Navigation Menu: "%s"':["Navigationsmenü: „%s“"],"Enter fullscreen":["Vollbild einschalten"],"Exit fullscreen":["Vollbild verlassen"],"Select text across multiple blocks.":["Text über mehrere Blöcke hinweg wählen."],"Font family uninstalled successfully.":["Die Schriftfamilie wurde erfolgreich deinstalliert."],"Changes saved by %1$s on %2$s":["Änderungen gespeichert von %1$s am %2$s"],"Unsaved changes by %s":["Ungespeicherte Änderungen von %s"],"Preview in a new tab":["Vorschau in neuem Tab anzeigen"],"Disable pre-publish checks":["Prüfungen vor der Veröffentlichung deaktivieren"],"Show block breadcrumbs":["Block-Breadcrumbs anzeigen"],"Hide block breadcrumbs":["Block-Breadcrumbs ausblenden"],"Post overviewOutline":["Übersicht"],"Post overviewList View":["Listenansicht"],"You can enable the visual editor in your profile settings.":["Du kannst den visuellen Editor in deinen Profileinstellungen aktivieren."],"Submit Search":["Suche absenden"],"block keywordreusable":["wiederverwendbar"],"Pattern imported successfully!":["Die Vorlage wurde erfolgreich importiert!"],"Invalid pattern JSON file":["Ungültige JSON-Datei der Vorlage"],"Last page":["Letzte Seite"],"paging%1$s of %2$s":["%1$s von %2$s"],"Previous page":["Vorherige Seite"],"First page":["Erste Seite"],"%s item":["%s Eintrag","%s Einträge"],"Use left and right arrow keys to resize the canvas. Hold shift to resize in larger increments.":["Verwende die Pfeiltasten links und rechts, um die Größe der Fläche zu ändern. Halte zusätzlich die Umschalttaste gedrückt, um die Skalierung in größeren Schritten vorzunehmen."],"An error occurred while moving the item to the trash.":["Beim Verschieben des Elements in den Papierkorb ist ein Fehler aufgetreten."],'"%s" moved to the trash.':["„%s“ wurde in den Papierkorb verschoben."],"Go to the Dashboard":["Zum Dashboard"],"%s name":["%s-Name"],"%s: Name":["%s: Name"],'The current menu options offer reduced accessibility for users and are not recommended. Enabling either "Open on Click" or "Show arrow" offers enhanced accessibility by allowing keyboard users to browse submenus selectively.':["Die aktuellen Menüoptionen schränken die Barrierefreiheit für Benutzer ein und werden nicht empfohlen. Das Aktivieren von entweder „Bei Klick öffnen“ oder „Pfeil anzeigen“ bietet Tastaturbenutzern eine verbesserte Zugänglichkeit, weil sie damit selektiv durch die Untermenüs navigieren können."],"Footnotes found in blocks within this document will be displayed here.":["Fußnoten, die in Blöcken innerhalb dieses Dokuments gefunden werden, werden hier angezeigt."],Footnotes:Ze,"Open command palette":["Befehlspalette öffnen"],"Note that the same template can be used by multiple pages, so any changes made here may affect other pages on the site. To switch back to editing the page content click the ‘Back’ button in the toolbar.":["Beachte, dass dasselbe Template von mehreren Seiten verwendet werden kann. Daher können hier vorgenommene Änderungen auch Auswirkungen auf andere Seiten der Website haben. Um zur Bearbeitung des Seiteninhalts zurückzukehren, klicke auf den Zurück-Button in der Werkzeugleiste."],"Editing a template":["Ein Template bearbeiten"],"It’s now possible to edit page content in the site editor. To customise other parts of the page like the header and footer switch to editing the template using the settings sidebar.":["Es ist jetzt möglich, den Seiteninhalt im Website-Editor zu bearbeiten. Um andere Teile der Seite wie Header und Footer anzupassen, wechsle zur Bearbeitung des Templates über die Einstellungs-Seitenleiste."],Continue:Ye,"Editing a page":["Eine Seite bearbeiten"],"This pattern cannot be edited.":["Diese Vorlage kann nicht bearbeitet werden."],"Are you sure you want to delete this reply?":["Bist du sicher, dass du diese Antwort löschen möchtest?"],"Command palette":["Befehlspalette"],"Open the command palette.":["Die Befehlspalette öffnen."],Detach:je,"Edit Page List":["Seitenliste bearbeiten"],"It appears you are trying to use the deprecated Classic block. You can leave this block intact, convert its content to a Custom HTML block, or remove it entirely. Alternatively, if you have unsaved changes, you can save them and refresh to use the Classic block.":["Es scheint, dass du versuchst, den veralteten Classic-Block zu verwenden. Du kannst diesen Block unverändert lassen, seinen Inhalt in einen individuellen HTML-Block umwandeln oder ihn ganz entfernen. Alternativ kannst du, wenn du ungespeicherte Änderungen hast, diese speichern und die Seite aktualisieren, um den Classic-Block zu verwenden."],"Name for applying graphical effectsFilters":["Filter"],"Hide block tools":["Block-Werkzeuge ausblenden"],"My patterns":["Meine Vorlagen"],"Disables the TinyMCE and Classic block.":["Den TinyMCE- und Classic-Block deaktivieren."],"`experimental-link-color` is no longer supported. Use `link-color` instead.":["`experimental-link-color` wird nicht mehr unterstützt. Verwende stattdessen `link-color`."],"Sync status":["Synchronisierungsstatus"],"block titlePattern Placeholder":["Vorlagen-Platzhalter"],"block keywordreferences":["Referenzen"],"block titleFootnotes":["Fußnoten"],"Unsynced pattern created: %s":["Es wurde eine nicht synchronisierte Vorlage erstellt: %s"],"Synced pattern created: %s":["Es wurde eine synchronisierte Vorlage erstellt: %s"],"Untitled pattern block":["Unbenannter Vorlagen-Block"],"External media":["Externe Medien"],"Select image block.":["Den Block Bild auswählen."],"Patterns that can be changed freely without affecting the site.":["Vorlagen, die problemlos geändert werden können, ohne die Website zu verändern."],"Patterns that are kept in sync across the site.":["Vorlagen, die auf der gesamten Website synchron gehalten werden."],"Empty pattern":["Leere Vorlage"],"An error occurred while deleting the items.":["Beim Löschen der Elemente ist ein Fehler aufgetreten."],"Learn about styles":["Weitere Informationen zu den Stilen"],"Open style revisions":["Stil-Revisionen öffnen"],"Change publish date":["Veröffentlichungsdatum ändern"],Password:qe,"An error occurred while duplicating the page.":["Beim Duplizieren der Seite ist ein Fehler aufgetreten."],"Publish automatically on a chosen date.":["Automatisch an einem ausgewählten Datum veröffentlichen."],"Waiting for review before publishing.":["Auf die Überprüfung vor der Veröffentlichung warten."],"Not ready to publish.":["Nicht bereit zur Veröffentlichung."],"Unable to duplicate Navigation Menu (%s).":["Das Navigationsmenü konnte nicht dupliziert werden (%s)."],"Duplicated Navigation Menu":["Dupliziertes Navigationsmenü"],"Unable to rename Navigation Menu (%s).":["Das Navigationsmenü konnte nicht umbenannt werden (%s)."],"Renamed Navigation Menu":["Umbenanntes Navigationsmenü"],"Unable to delete Navigation Menu (%s).":["Das Navigationsmenü konnte nicht gelöscht werden (%s)."],"Are you sure you want to delete this Navigation Menu?":["Bist du sicher, dass du dieses Navigationsmenü löschen möchtest?"],"Navigation title":["Navigationstitel"],"Go to %s":["Zu %s"],"Set the default number of posts to display on blog pages, including categories and tags. Some templates may override this setting.":["Lege die Standardanzahl der Beiträge fest, die auf Blogseiten angezeigt werden sollen, einschließlich der Kategorien und der Schlagwörter. Einige Templates können diese Einstellung überschreiben."],"Set the Posts Page title. Appears in search results, and when the page is shared on social media.":["Lege den Titel der Beitragsseite fest. Dieser erscheint in den Suchergebnissen und wenn die Seite in den sozialen Medien geteilt wird."],"Blog title":["Blog-Titel"],"Select what the new template should apply to:":["Wähle aus, wofür das neue Template verwendet werden soll:"],"E.g. %s":["Z. B. %s"],"Manage what patterns are available when editing the site.":["Verwalte, welche Vorlagen bei der Bearbeitung der Website verfügbar sind."],"My pattern":["Meine Vorlage"],"Create pattern":["Vorlage erstellen"],"An error occurred while renaming the pattern.":["Beim Umbenennen der Vorlage ist ein Fehler aufgetreten."],"Hide & Reload Page":["Ausblenden und Seite neu laden"],"Show & Reload Page":["Anzeigen und Seite neu laden"],"Manage patterns":["Vorlagen verwalten"],"Initial %d result loaded. Type to filter all available results. Use up and down arrow keys to navigate.":["Anfangs wird %d Ergebnis geladen. Tippe, um alle verfügbaren Ergebnisse zu filtern. Verwende die Pfeiltasten nach oben und unten, um zu navigieren.","Anfangs werden %d Ergebnisse geladen. Tippe, um alle verfügbaren Ergebnisse zu filtern. Verwende die Pfeiltasten nach oben und unten, um zu navigieren."],Footnote:Je,"Lowercase Roman numerals":["Kleine römische Ziffern"],"Uppercase Roman numerals":["Große römische Ziffern"],"Lowercase letters":["Kleinbuchstaben"],"Uppercase letters":["Großbuchstaben"],Numbers:Qe,"Image is contained without distortion.":["Das Bild wird ohne Verzerrung eingefügt."],"Image covers the space evenly.":["Das Bild deckt die Fläche gleichmäßig ab."],"Image size option for resolution controlFull Size":["Volle Größe"],"Image size option for resolution controlLarge":["Groß"],"Image size option for resolution controlMedium":["Mittel"],"Image size option for resolution controlThumbnail":["Vorschaubild"],Scale:Xe,"Scale down the content to fit the space if it is too big. Content that is too small will have additional padding.":["Wenn der Inhalt zu groß ist, wird er verkleinert, damit er in den Bereich passt. Inhalte, die zu klein sind, erhalten einen zusätzlichen Innenabstand."],"Scale option for dimensions controlScale down":["Herunterskalieren"],"Do not adjust the sizing of the content. Content that is too large will be clipped, and content that is too small will have additional padding.":["Die Größe des Inhalts wird nicht angepasst. Zu große Inhalte werden abgeschnitten, und zu kleine Inhalte erhalten einen zusätzlichen Innenabstand."],"Scale option for dimensions controlNone":["Nichts"],"Fill the space by clipping what doesn't fit.":["Der Bereich wird ausgefüllt, wobei das, was nicht passt, abgeschnitten wird."],"Scale option for dimensions controlCover":["Abdecken"],"Fit the content to the space without clipping.":["Der Inhalt wird ohne Zuschnitt an den vorhandenen Bereich angepasst."],"Scale option for dimensions controlContain":["Einpassen"],"Fill the space by stretching the content.":["Der Bereich wird durch Streckung des Inhalts ausgefüllt."],"Scale option for dimensions controlFill":["Füllen"],"Aspect ratio option for dimensions controlCustom":["Individuell"],"Aspect ratio option for dimensions controlOriginal":["Original"],"Additional link settingsAdvanced":["Erweitert"],"Change level":["Ebene wechseln"],"Position: %s":["Position: %s"],"The block will stick to the scrollable area of the parent %s block.":["Der Block wird oben am scrollbaren Bereich des übergeordneten Blocks %s gehalten."],'"%s" in theme.json settings.color.duotone is not a hex or rgb string.':["„%s“ in theme.json settings.color.duotone ist keine HEX- oder RGB-Zeichenfolge."],"An error occurred while creating the item.":["Beim Erstellen des Elements ist ein Fehler aufgetreten."],"block titleTitle":["Titel"],"block titleExcerpt":["Textauszug"],"View site (opens in a new tab)":["Website anzeigen (öffnet in einem neuen Tab)"],"Last edited %s.":["Zuletzt bearbeitet %s."],Page:_e,Unknown:et,Parent:tt,Pending:nt,"Create draft":["Einen Entwurf erstellen"],"No title":["Kein Titel"],"Review %d change…":["%d Änderung überprüfen …","%d Änderungen überprüfen …"],"Focal point top position":["Fokuspunkt-Position oben"],"Focal point left position":["Fokuspunkt-Position links"],"Show label text":["Beschriftungstext anzeigen"],"No excerpt found":["Es wurde kein Textauszug gefunden"],"Excerpt text":["Textauszug"],"The content is currently protected and does not have the available excerpt.":["Der Inhalt ist momentan geschützt und deshalb ist kein Textauszug verfügbar."],"This block will display the excerpt.":["Dieser Block wird den Textauszug anzeigen."],Suggestions:it,"Horizontal & vertical":["Horizontal und vertikal"],"Expand search field":["Suchfeld erweitern"],"Right to left":["Rechts nach links"],"Left to right":["Links nach rechts"],"Text direction":["Textrichtung"],'A valid language attribute, like "en" or "fr".':["Ein gültiges Sprachattribut, wie „en“ oder „de“."],Language:rt,"Reset template part: %s":["Template-Teil zurücksetzen: %s"],"Document not found":["Das Dokument wurde nicht gefunden"],"Navigation Menu missing.":["Das Navigations-Menü fehlt."],"Navigation Menus are a curated collection of blocks that allow visitors to get around your site.":["Navigationsmenüs sind eine zusammengestellte Sammlung von Blöcken, mit denen sich Besucher auf deiner Website zurechtfinden können."],"Manage your Navigation Menus.":["Verwalte deine Navigations-Menüs."],"%d pattern found":["Es wurde %d Vorlage gefunden","Es wurden %d Vorlagen gefunden"],Library:st,"Examples of blocks":["Beispiel-Blöcke"],"The relationship of the linked URL as space-separated link types.":["Die Beziehung der verlinkten URL, als durch Leerzeichen getrennte Linktypen."],"Rel attribute":["Rel-Attribut"],'The duotone id "%s" is not registered in theme.json settings':["Die Duoton-ID „%s“ ist nicht in den theme.json-Einstellungen registriert"],"block descriptionHide and show additional content.":["Zusätzliche Inhalte verbergen und anzeigen."],"block descriptionAdd an image or video with a text overlay.":["Ein Bild oder ein Video mit einem Text-Overlay hinzufügen."],"Save panel":["Bedienfeld speichern"],"Close Styles":["Stile schließen"],"Discard unsaved changes":["Ungespeicherte Änderungen verwerfen"],Activate:at,"Activate & Save":["Aktivieren und speichern"],"Write summary…":["Eine Zusammenfassung schreiben …"],"Type / to add a hidden block":["Gib / ein, um einen verborgenen Block hinzuzufügen"],"Add an image or video with a text overlay.":["Füge ein Bild oder Video mit einem Text-Overlay hinzu."],"%d Block":["%d Block","%d Blöcke"],"Add after":["Danach hinzufügen"],"Add before":["Davor hinzufügen"],"Site Preview":["Vorschau der Website"],"block descriptionDisplay an image to represent this site. Update this block and the changes apply everywhere.":["Ein Bild anzeigen lassen, das diese Website repräsentiert. Wenn du diesen Block aktualisierst, werden die Änderungen überall übernommen."],"Add media":["Medien hinzufügen"],"Show block tools":["Block-Werkzeuge anzeigen"],"block keywordlist":["Liste"],"block keyworddisclosure":["Offenlegung"],"block titleDetails":["Details"],"https://wordpress.org/documentation/article/page-post-settings-sidebar/#permalink":["https://wordpress.org/documentation/article/page-post-settings-sidebar/#permalink"],"https://wordpress.org/documentation/article/page-post-settings-sidebar/#excerpt":["https://wordpress.org/documentation/article/page-post-settings-sidebar/#excerpt"],"https://wordpress.org/documentation/article/embeds/":["https://wordpress.org/documentation/article/embeds/"],"Open by default":["Standardmäßig offen"],"https://wordpress.org/documentation/article/customize-date-and-time-format/":["https://wordpress.org/documentation/article/customize-date-and-time-format/"],"https://wordpress.org/documentation/article/page-jumps/":["https://wordpress.org/documentation/article/page-jumps/"],"%s minute":["%s Minute","%s Minuten"],"Manage the fonts and typography used on captions.":["Die für Untertitel verwendeten Schriften und Typografien verwalten."],"Display a post's last updated date.":["Das Datum der letzten Aktualisierung eines Beitrags anzeigen."],"Post Modified Date":["Beitrags-Änderungsdatum"],"Arrange blocks in a grid.":["Blöcke in einem Raster anordnen."],"Leave empty if decorative.":["Leer lassen, wenn es dekorativ ist."],"Alternative text":["Alternativer Text"],Resolution:ot,"Name for the value of the CSS position propertyFixed":["Fest"],"Name for the value of the CSS position propertySticky":["Oben gehalten"],"Minimum column width":["Minimale Spaltenbreite"],"captionWork/ %2$s":["Werk/ %2$s"],"Examples of blocks in the %s category":["Beispiele für Blöcke der Kategorie %s"],"Create new templates, or reset any customizations made to the templates supplied by your theme.":["Erstelle neue Templates oder setze sämtliche Anpassungen zurück, die an den Templates vorgenommen wurden, die dein Theme bereitstellt."],"A custom template can be manually applied to any post or page.":["Ein individuelles Template kann manuell auf jeden Beitrag oder jede Seite angewendet werden."],"Customize the appearance of your website using the block editor.":["Passe das Design deiner Website mit Hilfe des Block-Editors an."],"https://wordpress.org/documentation/article/wordpress-block-editor/":["https://wordpress.org/documentation/article/wordpress-block-editor/"],"Post meta":["Beitrags-Meta"],"Select the size of the source images.":["Wähle die Größe der Quellbilder aus."],"Reply to A WordPress Commenter":["Einem WordPress-Kommentator antworten"],"Commenter Avatar":["Avatar des Kommentators"],"block titleTime to Read":["Lesedauer"],"Example:":["Beispiel:"],"Image inserted.":["Das Bild wurde eingefügt."],"Image uploaded and inserted.":["Das Bild wurde hochgeladen und eingefügt."],Insert:lt,"External images can be removed by the external provider without warning and could even have legal compliance issues related to privacy legislation.":["Externe Bilder können ohne Vorwarnung vom externen Anbieter entfernt werden und könnten sogar rechtliche Probleme im Zusammenhang mit der Einhaltung von Datenschutzbestimmungen mit sich bringen."],"This image cannot be uploaded to your Media Library, but it can still be inserted as an external image.":["Dieses Bild kann nicht in deine Mediathek hochgeladen werden, aber es kann trotzdem als externes Bild eingefügt werden."],"Insert external image":["Ein externes Bild einfügen"],"Fallback content":["Fallback-Inhalt"],"Scrollable section":["Scrollbarer Abschnitt"],"Aspect ratio":["Seitenverhältnis"],"Max number of words":["Max. Anzahl der Wörter"],"Choose or create a Navigation Menu":["Ein Navigationsmenü auswählen oder erstellen"],"Add submenu link":["Einen Link zum Untermenü hinzufügen"],"Search Openverse":["Openverse durchsuchen"],Openverse:dt,"Search audio":["Audio suchen"],"Search videos":["Videos suchen"],"Search images":["Bilder suchen"],'caption"%1$s"/ %2$s':["„%1$s“/ %2$s"],"captionWork by %2$s/ %3$s":["Werk von %2$s/ %3$s"],'caption"%1$s" by %2$s/ %3$s':["„%1$s“ von %2$s/ %3$s"],"Learn more about CSS":["Mehr über CSS erfahren (engl.)"],"There is an error with your CSS structure.":["Es gibt einen Fehler mit deiner CSS-Struktur."],Shadow:ut,"Border & Shadow":["Ränder und Schatten"],Center:ct,'Page List: "%s" page has no children.':["Seitenliste: „%s“-Seite hat keine untergeordneten Elemente."],"You have not yet created any menus. Displaying a list of your Pages":["Du hast noch keine Menüs erstellt. Es wird eine Liste deiner Seiten angezeigt"],"Untitled menu":["Menü ohne Titel"],"Structure for Navigation Menu: %s":["Struktur für Navigationsmenü: %s"],"(no title %s)":["(kein Titel %s)"],"Align text":["Text ausrichten"],"Append to %1$s block at position %2$d, Level %3$d":["Anwenden auf Block %1$s an Position %2$d, Ebene %3$d"],"%s block inserted":["Der Block %s wurde eingefügt"],"Report %s":["%s melden"],"Copy styles":["Stile kopieren"],"Stretch items":["Elemente strecken"],"Block vertical alignment settingSpace between":["Zwischenraum"],"Block vertical alignment settingStretch to fill":["Zum Füllen strecken"],"Untitled post %d":["Unbenannter Beitrag %d"],"Printing since 1440. This is the development plugin for the block editor, site editor, and other future WordPress core functionality.":["Drucken seit 1440. Dies ist das Entwicklungs-Plugin für den Block-Editor, den Website-Editor und für zukünftige WordPress-Core-Funktionen."],"Style Variations":["Stil-Varianten"],"Apply globally":["Global anwenden"],"%s styles applied.":["Die %s-Stile wurden angewendet."],"Currently selected position: %s":["Aktuell ausgewählte Position: %s"],Position:ht,"The block will not move when the page is scrolled.":["Der Block wird nicht verschoben, wenn die Seite gescrollt wird."],"The block will stick to the top of the window instead of scrolling.":["Der Block wird oben am Kopf des Fensters gehalten statt zu scrollen."],Sticky:gt,"Paste styles":["Stile einfügen"],"Pasted styles to %d blocks.":["Die Stile wurden in %d Blöcke eingefügt."],"Pasted styles to %s.":["Die Stile wurden in %s eingefügt."],"Unable to paste styles. Block styles couldn't be found within the copied content.":["Die Stile können nicht eingefügt werden. Die Block-Stile konnten im kopierten Inhalt nicht gefunden werden."],"Unable to paste styles. Please allow browser clipboard permissions before continuing.":["Die Stile konnten nicht eingefügt werden. Bitte aktiviere die Berechtigungen für die Nutzung der Browser-Zwischenablage, bevor du fortfährst."],"Unable to paste styles. This feature is only available on secure (https) sites in supporting browsers.":["Die Stile können nicht eingefügt werden. Diese Funktion ist nur auf sicheren (https) Websites in unterstützenden Browsern verfügbar."],Tilde:mt,"Template part":["Template-Teil"],"Apply this block’s typography, spacing, dimensions, and color styles to all %s blocks.":["Typografie, Abstände, Maße und Farbstile dieses Blocks werden auf alle %s-Blöcke angewendet."],"Import widget area":["Widget-Bereich importieren"],"Unable to import the following widgets: %s.":["Die folgenden Widgets können nicht importiert werden: %s."],"Widget area: %s":["Widget-Bereich: %s"],"Select widget area":["Einen Widget-Bereich auswählen"],"Your %1$s file uses a dynamic value (%2$s) for the path at %3$s. However, the value at %3$s is also a dynamic value (pointing to %4$s) and pointing to another dynamic value is not supported. Please update %3$s to point directly to %4$s.":["Deine Datei %1$s verwendet einen dynamischen Wert (%2$s) für den Pfad bei %3$s. Der Wert bei %3$s ist ebenfalls dynamisch (und zeigt auf %4$s); das Zeigen auf einen weiteren dynamischen Wert wird nicht unterstützt. Bitte aktualisiere %3$s so, dass er direkt auf %4$s zeigt."],"Clear Unknown Formatting":["Unbekannte Formatierungen löschen"],CSS:bt,"Open %s styles in Styles panel":["%s-Stile im Bedienfeld Stile öffnen"],"Style Book":["Stilbuch"],"Additional CSS":["Zusätzliches CSS"],"Open code editor":["Code-Editor öffnen"],"Specify a fixed height.":["Eine feste Höhe vorgeben."],"Block inspector tab display overrides.":["Die Anzeige des Tabs Block-Inspektor wird überschrieben."],"block keywordpage":["Seite"],"block descriptionDisplays a page inside a list of all pages.":["Eine Seite innerhalb einer Liste, die alle Seiten enthält, anzeigen."],"block titlePage List Item":["Element der Seitenliste"],"Show details":["Details anzeigen"],"Choose a page to show only its subpages.":["Eine Seite nur für die Anzeige auf Unterseiten auswählen."],"Parent Page":["Übergeordnete Seite"],"Media List":["Medienliste"],Videos:pt,Fixed:kt,"Fit contents.":["Inhalte anpassen."],"Specify a fixed width.":["Eine feste Breite vorgeben."],"Stretch to fill available space.":["Strecken, um den verfügbaren Platz zu füllen."],"Randomize colors":["Farben zufällig generieren"],"Document Overview":["Dokumentenübersicht"],"Convert the current paragraph or heading to a heading of level 1 to 6.":["Den aktuellen Absatz oder die aktuelle Überschrift in eine Überschrift der Ebenen 1 bis 6 umwandeln."],"Convert the current heading to a paragraph.":["Die aktuelle Überschrift in einen Absatz umwandeln."],"Transform paragraph to heading.":["Den Absatz in eine Überschrift umwandeln."],"Transform heading to paragraph.":["Die Überschrift in einen Absatz umwandeln."],"Extra Extra Large":["Extrem groß"],"Group blocks together. Select a layout:":["Blöcke gruppieren. Wähle ein Layout:"],"Color randomizer":["Zufallsgenerator für Farben"],"Indicates whether the current theme supports block-based templates.":["Zeigt an, ob das aktuelle Theme blockbasierte Templates unterstützt."],"untitled post %s":["Beitrag %s ohne Titel"],": %s":[": %s"],"Time to read:":["Lesedauer:"],"Words:":["Wörter:"],"Characters:":["Zeichen:"],"Navigate the structure of your document and address issues like empty or incorrect heading levels.":["Navigiere durch die Struktur deines Dokuments und behebe Probleme wie leere oder falsche Überschriftenebenen."],Decrement:ft,Increment:wt,"Remove caption":["Untertitel entfernen"],"Close List View":["Die Listenansicht schließen"],"Choose a variation to change the look of the site.":["Wähle eine Variante, um das Aussehen der Website zu ändern."],"Write with calmness":["In aller Ruhe schreiben"],"Distraction free":["Ablenkungsfrei"],"Reduce visual distractions by hiding the toolbar and other elements to focus on writing.":["Das reduziert die visuelle Ablenkung durch das Verstecken der Werkzeugleiste sowie anderer Elemente und ermöglicht die Fokussierung auf das Schreiben."],Caption:vt,Pattern:yt,"Raw size value must be a string, integer or a float.":["Der Rohwert für die Größe muss eine Zeichenkette, eine Ganzzahl oder ein Fließkommawert sein."],"Link author name to author page":["Den Namen des Autors auf die Seite des Autors verlinken"],"Not available for aligned text.":["Das ist für ausgerichteten Text nicht verfügbar."],"There’s no content to show here yet.":["Es gibt hier noch keinen Inhalt, der angezeigt werden kann."],"block titleComments Previous Page":["Vorherige Kommentarseite"],"block titleComments Next Page":["Nächste Kommentarseite"],"Arrow option for Next/Previous linkChevron":["Guillemet"],"Arrow option for Next/Previous linkArrow":["Pfeil"],"Arrow option for Next/Previous linkNone":["Nichts"],"A decorative arrow for the next and previous link.":["Ein dekorativer Pfeil für die Links vor und zurück."],"Format tools":["Formatierungs-Werkzeuge"],"Displays an archive with the latest posts of type: %s.":["Ein Archiv mit den neuesten Beiträgen des Typs anzeigen: %s."],"Archive: %s":["Archiv: %s"],"Archive: %1$s (%2$s)":["Archiv: %1$s (%2$s)"],handle:Bt,"Import Classic Menus":["Klassische Menüs importieren"],"You are currently in zoom-out mode.":["Der Verkleinerungsmodus ist derzeit aktiv."],"$store must be an instance of WP_Style_Engine_CSS_Rules_Store_Gutenberg":["$store muss eine Instanz von WP_Style_Engine_CSS_Rules_Store_Gutenberg sein"],'"%s" successfully created.':["„%s“ wurde erfolgreich erstellt."],XXL:zt,"View next month":["Nächsten Monat anzeigen"],"View previous month":["Vorherigen Monat anzeigen"],"Archive type: Name":["Archivtyp: Name"],"Show archive type in title":["Den Archivtyp im Titel anzeigen"],"The Queen of Hearts.":["Die Königin der Herzen."],"The Mad Hatter.":["Der verrückte Hutmacher."],"The Cheshire Cat.":["Die Grinsekatze."],"The White Rabbit.":["Das weiße Kaninchen."],"Alice.":["Alice."],"Gather blocks in a container.":["Blöcke in einem Container zusammenfassen."],"Inner blocks use content width":["Die inneren Blöcke verwenden die Breite des Inhalts"],Font:St,Constrained:At,"Spacing control":["Abstandskontrolle"],"Custom (%s)":["Individuell (%s)"],"All sides":["Alle Seiten"],"Disables custom spacing sizes.":["Deaktiviert individuelle Größen der Abstände."],"All Authors":["Alle Autoren"],"No authors found.":["Es wurden keine Autoren gefunden."],"Search Authors":["Autoren suchen"],"Author: %s":["Autor: %s"],"Create template part":["Template-Teil erstellen"],"Manage the fonts and typography used on headings.":["Verwalte die für die Überschriften verwendeten Schriften und Typografien."],H6:Dt,H5:Tt,H4:Et,H3:Lt,H2:xt,H1:Pt,"Select heading level":["Die Überschriftenebene auswählen"],"View site":["Website anzeigen"],"Display the search results title based on the queried object.":["Die Titel der Suchergebnisse basierend auf dem abgefragten Objekt anzeigen."],"Search Results Title":["Titel der Suchergebnisse"],"Search results for: “search term”":["Suchergebnisse für: „Suchbegriff“"],"Show search term in title":["Den Suchbegriff im Titel anzeigen"],Taxonomies:Vt,"Show label":["Beschriftung anzeigen"],"View options":["Optionen anzeigen"],"Disables output of layout styles.":["Deaktiviert die Ausgabe von Layout-Stilen."],"The template prefix for the created template. This is used to extract the main template type, e.g. in `taxonomy-books` extracts the `taxonomy`":["Das Template-Präfix für das erstellte Template. Dies wird verwendet, um den Haupt-Template-Typ zu extrahieren, z. B. in `taxonomy-books` wird die `taxonomy` extrahiert"],"Indicates if a template is custom or part of the template hierarchy":["Gibt an, ob ein Template individuell oder Teil der Template-Hierarchie ist"],"The slug of the template to get the fallback for":["Die Titelform des Templates, um das Fallback zu erhalten für"],'Search results for: "%s"':["Suchergebnisse für: „%s“"],"Move %1$d blocks from position %2$d left by one place":["%1$d Blöcke von Position %2$d um einen Platz nach links verschieben"],"Move %1$d blocks from position %2$d down by one place":["%1$d Blöcke von Position %2$d um einen Platz nach unten verschieben"],"Suggestions list":["Liste mit Vorschlägen"],"Set the width of the main content area.":["Leg die Breite des Hauptinhaltsbereichs fest."],"Border color and style picker":["Farb- und Stilwähler für Ränder"],"Switch to editable mode":["In den Bearbeitungsmodus wechseln"],"Blocks cannot be moved right as they are already are at the rightmost position":["Die Blöcke können nicht nach rechts verschoben werden, da sie bereits an der äußersten rechten Position sind"],"Blocks cannot be moved left as they are already are at the leftmost position":["Die Blöcke können nicht nach links verschoben werden, da sie bereits an der äußersten linken Position sind"],"All blocks are selected, and cannot be moved":["Alle Blöcke sind ausgewählt und können nicht verschoben werden"],"Whether the V2 of the list block that uses inner blocks should be enabled.":["Ob die V2 des Listenblocks, der innere Blöcke verwendet, aktiviert werden soll."],"Post Comments Form block: Comments are not enabled for this item.":["Beitrags-Kommentarformular-Block: Kommentare sind für dieses Element nicht aktiviert."],"Time to read":["Lesedauer"],"%s minute":["%s Minute","%s Minuten"],"< 1 minute":["< 1 Minute"],"Apply suggested format: %s":["Das vorgeschlagene Format anwenden: %s"],"Custom template":["Individuelles Template"],"Displays taxonomy: %s.":["Die Taxonomie anzeigen: %s."],Hover:It,'Describe the template, e.g. "Post with sidebar". A custom template can be manually applied to any post or page.':["Beschreibe das Template, z. B. „Beitrag mit Seitenleiste“. Ein individuelles Template kann manuell auf jeden Beitrag oder jede Seite angewendet werden."],"Change date: %s":["Datum ändern: %s"],"short date format without the yearM j":["j. M"],"Apply to all blocks inside":["Innerhalb aller Blöcke anwenden"],"Active theme spacing scale.":["Abstandsskalierung des aktiven Themes."],"Active theme spacing sizes.":["Abstandsgrößen des aktiven Themes."],"%sX-Large":["%sXL"],"%sX-Small":["%sXS"],"Some of the theme.json settings.spacing.spacingScale values are invalid":["Einige der Werte in „theme.json settings.spacing.spacingScale“ sind ungültig"],"post schedule date format without yearF j g:i a":["j. F, G:i"],"Tomorrow at %s":["Morgen um %s Uhr"],"post schedule time formatg:i a":["G:i"],"Today at %s":["Heute um %s Uhr"],"post schedule full date formatF j, Y g:i a":["j. F Y, G:i"],"Displays a single item: %s.":["Zeigt ein einzelnes Element an: %s."],"Single item: %s":["Einzelnes Element: %s"],"This template will be used only for the specific item chosen.":["Dieses Template wird nur für das ausgewählte, spezifische Element verwendet."],"For a specific item":["Für ein spezifisches Element"],"For all items":["Für alle Elemente"],"Select whether to create a single template for all items or a specific one.":["Wähle aus, ob du ein einzelnes Template für alle Elemente oder für ein spezifisches Element erstellen möchtest."],"Manage the fonts and typography used on buttons.":["Verwalte die Schriften und die Typografie, die auf den Buttons verwendet werden."],Summary:Ct,"Edit template":["Template bearbeiten"],"Templates define the way content is displayed when viewing your site.":["Templates definieren die Art und Weise, wie Inhalte beim Aufruf deiner Website dargestellt werden."],"Make the selected text inline code.":["Der ausgewählte Text wird zu Inline-Code."],"Strikethrough the selected text.":["Durchstreichen des ausgewählten Texts."],Unset:Mt,"action that affects the current postEnable comments":["Kommentare aktivieren"],"Embed a podcast player from Pocket Casts.":["Bette einen Podcast-Player von Pocket Casts ein."],"66 / 33":["66/33"],"33 / 66":["33/66"],"Nested blocks will fill the width of this container.":["Verschachtelte Blöcke füllen die Breite dieses Containers aus."],"Nested blocks use content width with options for full and wide widths.":["Verschachtelte Blöcke verwenden die Breite des Inhalts mit Optionen für volle und weite Breiten."],"Copy all blocks":["Alle Blöcke kopieren"],"Overlay opacity":["Overlay-Deckkraft"],"Get started here":["Jetzt loslegen"],"Interested in creating your own block?":["Möchtest du deinen eigenen Block erstellen?"],Now:Wt,"Always open List View":["Immer die Listenansicht öffnen"],"Opens the List View panel by default.":["Öffnet standardmäßig das Listenansicht-Bedienfeld."],"Start adding Heading blocks to create a table of contents. Headings with HTML anchors will be linked here.":["Beginne mit dem Hinzufügen von Überschriftenblöcken, um ein Inhaltsverzeichnis zu erstellen. Überschriften mit HTML-Ankern werden hier verlinkt."],"Only including headings from the current page (if the post is paginated).":["Nur Überschriften der aktuellen Seite einbeziehen (wenn der Beitrag seitennummeriert ist)."],"Only include current page":["Nur die aktuelle Seite einbeziehen"],"Convert to static list":["In eine statische Liste umwandeln"],Parents:Nt,"Commenter avatars come from Gravatar.":["Kommentator-Avatare kommen von Gravatar."],"Links are disabled in the editor.":["Links sind im Editor deaktiviert."],"%s response":["%s Antwort","%s Antworten"],'%1$s response to "%2$s"':["%1$s Antwort zu „%2$s“","%1$s Antworten zu „%2$s“"],"block titleComments":["Kommentare"],"Control how this post is viewed.":["Steuere, wie dieser Beitrag angezeigt wird."],"All options reset":["Alle Optionen wurden zurückgesetzt"],"All options are currently hidden":["Alle Optionen sind derzeit ausgeblendet"],"%s is now visible":["%s ist jetzt sichtbar"],"%s hidden and reset to default":["%s ausblenden und auf Standard zurücksetzen"],"%s reset to default":["%s auf Standard zurücksetzen"],Suffix:Ft,Prefix:$t,"If there are any Custom Post Types registered at your site, the Content block can display the contents of those entries as well.":["Falls auf deiner Website individuelle Inhaltstypen registriert sind, kann der Inhalts-Block die Inhalte dieser Einträge ebenfalls anzeigen."],"That might be a simple arrangement like consecutive paragraphs in a blog post, or a more elaborate composition that includes image galleries, videos, tables, columns, and any other block types.":["Dabei kann es sich um eine einfache Anordnung handeln, wie z. B. aufeinanderfolgende Absätze in einem Blogbeitrag, oder um eine aufwändigere Komposition, die Bildergalerien, Videos, Tabellen, Spalten und andere Blocktypen enthält."],"This is the Content block, it will display all the blocks in any single post or page.":["Dies ist der Inhalts-Block. Er zeigt alle Blöcke in einem Einzelbeitrag oder einer einzelnen Seite an."],"Post Comments Form block: Comments are not enabled.":["Beitrags-Kommentarformular-Block: Kommentare sind nicht aktiviert."],"To get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.":["Um mit der Moderation, der Bearbeitung und der Löschung von Kommentaren zu beginnen, besuche bitte die Ansicht Kommentare im Dashboard."],"Hi, this is a comment.":["Hallo, dies ist ein Kommentar."],"January 1, 2000 at 00:00 am":["1. Januar 2000 um 00:00 Uhr"],says:Rt,"A WordPress Commenter":["Ein WordPress-Kommentator"],"Leave a Reply":["Schreibe einen Kommentar"],'Response to "%s"':["Antwort auf „%s“"],Response:Ht,"Your comment is awaiting moderation. This is a preview; your comment will be visible after it has been approved.":["Dein Kommentar wartet auf Moderation. Dies ist eine Vorschau; dein Kommentar wird sichtbar, nachdem er freigegeben wurde."],"Your comment is awaiting moderation.":["Dein Kommentar wartet auf Freischaltung."],"block descriptionDisplays a title with the number of comments.":["Zeigt einen Titel mit der Anzahl der Kommentare an."],"block titleComments Title":["Kommentartitel"],"These changes will affect your whole site.":["Diese Änderungen betreffen deine ganze Website."],'Responses to "%s"':["Antworten auf „%s“"],"One response to %s":["Eine Antwort zu %s"],"Show comments count":["Anzahl der Kommentare anzeigen"],"Show post title":["Beitragstitel anzeigen"],"Comments Pagination block: paging comments is disabled in the Discussion Settings":["Kommentare-Seitennummerierungs-Block: Das Durchblättern der Kommentare ist in den Diskussionseinstellungen deaktiviert"],Responses:Gt,"One response":["Eine Antwort"],"block descriptionGather blocks in a layout container.":["Blöcke in einem Layout-Container zusammenfassen."],"block descriptionAn advanced block that allows displaying post comments using different visual configurations.":["Ein erweiterter Block, der das Anzeigen von Beitragskommentaren anhand verschiedener visueller Konfigurationen erlaubt."],"block descriptionDisplays the date on which the comment was posted.":["Zeigt das Datum an, an dem der Kommentar veröffentlicht wurde."],"block descriptionDisplays the name of the author of the comment.":["Zeigt den Namen des Kommentarautors an."],"block descriptionThis block is deprecated. Please use the Avatar block instead.":["Dieser Block ist veraltet. Bitte benutze stattdessen den Avatar-Block."],"block titleComment Author Avatar (deprecated)":["Kommentarautor-Avatar (veraltet)"],"This Navigation Menu is empty.":["Dieses Navigationsmenü ist leer."],"Browse styles":["Stile durchstöbern"],"Bottom border":["Rand unten"],"Right border":["Rand rechts"],"Left border":["Rand links"],"Top border":["Rand oben"],"Border color picker.":["Farbwähler für Ränder."],"Border color and style picker.":["Farb- und Stilwähler für Ränder."],"Link sides":["Seiten koppeln"],"Unlink sides":["Seiten entkoppeln"],"Quote citation":["Quellenangabe des Zitats"],"Choose a pattern for the query loop or start blank.":["Wähle eine Vorlage für die Abfrage-Schleife oder beginne leer."],"Navigation Menu successfully deleted.":["Das Navigationsmenü wurde erfolgreich gelöscht."],"Arrange blocks vertically.":["Blöcke vertikal ausrichten."],Stack:Ut,"Arrange blocks horizontally.":["Blöcke horizontal ausrichten."],"Use featured image":["Beitragsbild verwenden"],Week:Kt,"Group by":["Gruppieren nach"],"Delete selection.":["Auswahl löschen."],"Transform to %s":["In %s umwandeln"],"single horizontal lineRow":["Zeile"],"Select parent block: %s":["Übergeordneten Block auswählen: %s"],"Alignment optionNone":["Keine"],"Whether the V2 of the quote block that uses inner blocks should be enabled.":["Ob die Version 2 des Zitat-Blocks mit verschachtelten Blöcken aktiviert werden soll."],"Adding an RSS feed to this site’s homepage is not supported, as it could lead to a loop that slows down your site. Try using another block, like the Latest Posts block, to list posts from the site.":["Das Hinzufügen eines RSS-Feeds zur Homepage dieser Website wird nicht unterstützt, weil es zu einer Endlosschleife führen könnte, die deine Website ausbremst. Probiere stattdessen einen anderen Block, z. B. Letzte Beiträge, um Beiträge von der Website aufzulisten."],"block descriptionContains the block elements used to render content when no query results are found.":["Enthält die Block-Elemente, mit denen Inhalte dargestellt werden, falls keine Abfrage-Ergebnisse gefunden wurden."],"block titleNo Results":["Keine Ergebnisse"],"block titleList Item":["Listen-Element"],"block descriptionAdd a user’s avatar.":["Füge den Avatar eines Benutzers hinzu."],"block titleAvatar":["Avatar"],"View Preview":["Vorschau anzeigen"],"Download your theme with updated templates and styles.":["Lade dein Theme mit aktualisierten Templates und Styles herunter."],'Custom color picker. The currently selected color is called "%1$s" and has a value of "%2$s".':["Individueller Farbwähler. Die aktuell ausgewählte Farbe heißt „%1$s“ und hat den Wert „%2$s“."],"Largest size":["Größte Abmessung"],"Smallest size":["Kleinste Abmessung"],"Add text or blocks that will display when a query returns no results.":["Füge Text oder Blöcke hinzu, die angezeigt werden, wenn eine Abfrage keine Ergebnisse ausgibt."],"Featured image: %s":["Beitragsbild: %s"],"Link to post":["Link zum Beitrag"],Invalid:Ot,"Link to user profile":["Link zum Benutzerprofil"],"Select the avatar user to display, if it is blank it will use the post/page author.":["Wähle den gewünschten Avatar-Benutzer zum Anzeigen, falls dieser leer ist, wird der Autor des Beitrags/der Seite verwendet."],"Default Avatar":["Standard-Avatar"],"Enter a date or time format string.":["Gib eine Datums- oder Zeit-Format-Zeichenfolge ein."],"Custom format":["Individuelles Format"],"Choose a format":["Wähle ein Format"],"Enter your own date format":["Gib dein eigenes Datumsformat ein"],"long date formatF j, Y":["j. F Y"],"medium date format with timeM j, Y g:i A":["j. M Y, G:i"],"medium date formatM j, Y":["j. M Y"],"short date format with timen/j/Y g:i A":["j.n.Y, G:i"],"short date formatn/j/Y":["j.n.Y"],"Default format":["Standardformat"],"%s link":["%s-Link"],Lock:Zt,Unlock:Yt,"Lock all":["Alle sperren"],"Lock %s":["%s sperren"],"(%s website link, opens in a new tab)":["(Link zur Website von %s, wird in einem neuen Tab geöffnet)"],"(%s author archive, opens in a new tab)":["(Autoren-Archiv von %s, wird in einem neuen Tab geöffnet)"],"Preference activated - %s":["Präferenz aktiviert – %s"],"Preference deactivated - %s":["Präferenz deaktiviert – %s"],"Insert a link to a post or page.":["Einen Link zu einem Beitrag oder einer Seite einfügen."],"Classic menu import failed.":["Der Import des klassischen Menüs ist fehlgeschlagen."],"Classic menu imported successfully.":["Das klassische Menü wurde erfolgreich importiert."],"Classic menu importing.":["Ein klassisches Menü importieren."],"Failed to create Navigation Menu.":["Die Erstellung des Navigationsmenüs ist fehlgeschlagen."],"Navigation Menu successfully created.":["Das Navigationsmenü wurde erfolgreich erstellt."],"Creating Navigation Menu.":["Ein Navigationsmenü erstellen."],'Unable to create Navigation Menu "%s".':["Das Navigationsmenü „%s“ kann nicht erstellt werden."],'Unable to fetch classic menu "%s" from API.':["Das klassische Menü „%s“ kann über die API nicht abgerufen werden."],"Navigation block setup options ready.":["Die Navigationsblock-Einstellungsoptionen sind bereit."],"Loading navigation block setup options…":["Die Einrichtungs-Optionen für den Navigation-Block werden geladen …"],"Choose a %s":["%s auswählen"],"Existing template parts":["Vorhandene Template-Teile"],"Convert to Link":["In Link umwandeln"],"%s blocks deselected.":["%s Blöcke wurden abgewählt."],"%s deselected.":["%s wurde abgewählt."],"block descriptionDisplays the link of a post, page, or any other content-type.":["Zeigt den Link eines Beitrags, einer Seite oder eines anderen Inhaltstyps an."],"block titleRead More":["Weiterlesen"],"block descriptionThe author biography.":["Die Biografie des Autors."],"block titleAuthor Biography":["Biografie des Autors"],'The "%s" plugin has encountered an error and cannot be rendered.':["Das Plugin „%s“ hat einen Fehler festgestellt und kann nicht gerendert werden."],"The posts page template cannot be changed.":["Das Beitrags-Seitentemplate kann nicht geändert werden."],"Author Biography":["Autor-Biografie"],"Create from '%s'":["Aus ‚%s‘ erstellen"],"Older comments page link":["Link zur Seite der älteren Kommentare"],"If you take over, the other user will lose editing control to the post, but their changes will be saved.":["Wenn du den Beitrag übernimmst, verliert der andere Benutzer die Kontrolle über die Bearbeitung des Beitrags, aber seine Änderungen werden gespeichert."],"Select the size of the source image.":["Wähle die Größe des Quellbildes aus."],"Configure the visual appearance of the button that toggles the overlay menu.":["Konfiguriere das Erscheinungsbild des Buttons, der das Overlay-Menü öffnet und schließt."],"Show icon button":["Icon-Button anzeigen"],"font weightBlack":["Schwarz"],"font weightExtra Bold":["Extrafett"],"font weightBold":["Fett"],"font weightSemi Bold":["Halbfett"],"font weightMedium":["Medium"],"font weightRegular":["Normal"],"font weightLight":["Leicht"],"font weightExtra Light":["Extraleicht"],"font weightThin":["Dünn"],"font styleItalic":["Kursiv"],"font styleRegular":["Normal"],"Transparent text may be hard for people to read.":["Transparenter Text kann für Menschen schwer zu lesen sein."],"Sorry, you are not allowed to view this global style.":["Du bist leider nicht berechtigt, diesen globalen Stil anzuzeigen."],"Sorry, you are not allowed to edit this global style.":["Du bist leider nicht berechtigt, diesen globalen Stil zu bearbeiten."],"Older Comments":["Ältere Kommentare"],"Newer Comments":["Neuere Kommentare"],"block descriptionDisplay post author details such as name, avatar, and bio.":["Details zum Beitragsautor wie Name, Avatar und Bio anzeigen."],"Categories provide a helpful way to group related posts together and to quickly tell readers what a post is about.":["Kategorien sind hilfreich, um verwandte Beiträge zu gruppieren und Lesern schnell zu sagen, worum es in einem Beitrag geht."],"Assign a category":["Eine Kategorie zuweisen"],"%s is currently working on this post (), which means you cannot make changes, unless you take over.":["%s arbeitet gerade an diesem Beitrag (), d. h. du kannst keine Änderungen vornehmen, wenn du nicht übernimmst."],preview:jt,"%s now has editing control of this post (). Don’t worry, your changes up to this moment have been saved.":["%s hat jetzt die Bearbeitungskontrolle für diesen Beitrag (). Keine Sorge, deine Änderungen bis hierhin wurden gespeichert."],"Exit editor":["Editor verlassen"],"Draft saved.":["Der Entwurf wurde gespeichert."],"site exporter menu itemExport":["Exportieren"],"Close Block Inserter":["Block-Inserter schließen"],"Page List: Cannot retrieve Pages.":["Seiten-Liste: Es können keine Seiten abgerufen werden."],"Link is empty":["Der Link ist leer"],"Button label to reveal tool panel options%s options":["%s-Optionen"],"Search %s":["%s suchen"],"Set custom size":["Individuelle Größe festlegen"],"Use size preset":["Voreingestellte Größe verwenden"],"Reset colors":["Farben zurücksetzen"],"Reset gradient":["Verlauf zurücksetzen"],"Remove all colors":["Alle Farben entfernen"],"Remove all gradients":["Alle Verläufe entfernen"],"Color options":["Farb-Optionen"],"Gradient options":["Verlauf-Optionen"],"Add color":["Farbe hinzufügen"],"Add gradient":["Verlauf hinzufügen"],Done:qt,"Gradient name":["Name des Verlaufs"],"Color %d":["Farbe %d"],"Color format":["Farbformat"],"Hex color":["Hex-Farbe"],"block descriptionThe author name.":["Der Autorenname."],"block titleAuthor Name":["Name des Autors"],"block descriptionDisplays the previous comment's page link.":["Zeigt den vorherigen Kommentar-Seiten-Link an."],"block descriptionDisplays the next comment's page link.":["Zeit den nächsten Kommentar-Seiten-Link an."],Icon:Jt,Delete:Qt,"Icon background":["Icon-Hintergrund"],"Use as Site Icon":["Als Website-Icon verwenden"],"Site Icons are what you see in browser tabs, bookmark bars, and within the WordPress mobile apps. To use a custom icon that is different from your site logo, use the Site Icon settings.":["Website-Icons werden in Browser-Tabs, Lesezeichenleisten und in den mobilen WordPress Mobile Apps genutzt. Um ein individuelles Icon zu benutzen, das sich von deinem Website-Logo unterscheidet, verwende die Website-Icon-Einstellungen."],"Post type":["Inhaltstyp"],"Link to author archive":["Link zum Autorenarchiv"],"Author Name":["Name des Autors"],"You do not have permission to create Navigation Menus.":["Du hast keine Berechtigung, Navigationsmenüs zu erstellen."],"You do not have permission to edit this Menu. Any changes made will not be saved.":["Du hast keine Berechtigung, dieses Menü zu bearbeiten. Die vorgenommenen Änderungen werden nicht gespeichert."],"Newer comments page link":["Link zur Seite der neueren Kommentare"],"Site icon.":["Website-Icon."],"Font size nameExtra Large":["Extragroß"],"block titlePagination":["Seitennummerierung"],"block titlePrevious Page":["Vorherige Seite"],"block titlePage Numbers":["Seitenzahlen"],"block titleNext Page":["Nächste Seite"],"block descriptionDisplays a list of page numbers for comments pagination.":["Zeigt eine Liste von Seitenzahlen für die Kommentarpaginierung an."],"Site updated.":["Die Website wurde aktualisiert."],"Saving failed.":["Das Speichern ist fehlgeschlagen."],"%1$s ‹ %2$s — WordPress":["%1$s ‹ %2$s – WordPress"],"https://wordpress.org/documentation/article/styles-overview/":["https://wordpress.org/documentation/article/styles-overview/"],"An error occurred while creating the site export.":["Beim Erstellen des Website-Exports ist ein Fehler aufgetreten."],"Manage menus":["Menüs verwalten"],"%s submenu":["Untermenü von %s"],"block descriptionDisplays a paginated navigation to next/previous set of comments, when applicable.":["Falls vorhanden, wird damit eine seitenweise Navigation zum nächsten/vorherigen Satz von Kommentaren angezeigt."],"block titleComments Pagination":["Seitennummerierung der Kommentare"],Actions:Xt,"An error occurred while restoring the post.":["Beim Wiederherstellen des Beitrags ist ein Fehler aufgetreten."],Rename:_t,"An error occurred while setting the homepage.":["Beim Festlegen der Homepage ist ein Fehler aufgetreten."],"An error occurred while creating the template part.":["Beim Erstellen des Template-Teils ist ein Fehler aufgetreten."],"An error occurred while creating the template.":["Beim Erstellen des Templates ist ein Fehler aufgetreten."],"Manage the fonts and typography used on the links.":["Verwalte die für die Links verwendeten Schriften und Typografien."],"Manage the fonts used on the site.":["Verwalte die auf der Website verwendeten Schriften."],Aa:en,"An error occurred while deleting the item.":["Beim Löschen des Elements ist ein Fehler aufgetreten."],"Show arrow":["Pfeil anzeigen"],"Arrow option for Comments Pagination Next/Previous blocksChevron":["Guillemet"],"Arrow option for Comments Pagination Next/Previous blocksArrow":["Pfeil"],"Arrow option for Comments Pagination Next/Previous blocksNone":["Keine"],"A decorative arrow appended to the next and previous comments link.":["Ein dekorativer Pfeil, der für die Links zum vorherigen und nächsten Kommentar angezeigt wird."],"Indicates this palette is created by the user.Custom":["Individuell"],"Indicates this palette comes from WordPress.Default":["Standard"],"Indicates this palette comes from the theme.Theme":["Theme"],"Add default block":["Standard-Block hinzufügen"],"Whether a template is a custom template.":["Ob ein Template ein individuelles Template ist."],"Unable to open export file (archive) for writing.":["Die Export-Datei (Archiv) kann nicht zum Schreiben geöffnet werden."],"Zip Export not supported.":["Der Zip-Export wird nicht unterstützt."],"Displays latest posts written by a single author.":["Zeigt die neuesten Beiträge eines einzelnen Autors an."],"Here’s a detailed guide to learn how to make the most of it.":["Hier gibt es eine ausführliche Anleitung, wie du das Beste daraus machen kannst."],"New to block themes and styling your site?":["Neu bei Block-Themes und dem Gestalten deiner Website?"],"You can adjust your blocks to ensure a cohesive experience across your site — add your unique colors to a branded Button block, or adjust the Heading block to your preferred size.":["Du kannst deine Blöcke anpassen, um eine durchgängige Anmutung über deine Website hinweg sicherzustellen – gib einem gebrandeten Button-Block deine ganz eigenen Farben oder pass den Überschriften-Block an deine bevorzugte Größe an."],"Personalize blocks":["Blöcke individualisieren"],"You can customize your site as much as you like with different colors, typography, and layouts. Or if you prefer, just leave it up to your theme to handle!":["Du kannst deine Website mit unterschiedlichen Farben, Typografien und Layouts nach Belieben anpassen. Falls dir das lieber ist, kannst du das auch einfach deinem Theme überlassen!"],"Set the design":["Das Design festlegen"],"Tweak your site, or give it a whole new look! Get creative — how about a new color palette for your buttons, or choosing a new font? Take a look at what you can do here.":["Optimiere deine Website oder gib ihr ein ganz neues Aussehen! Sei kreativ – wie wäre es mit einer neuen Farbpalette für deine Buttons oder einer neuen Schrift? Schau dir hier an, was du alles tun kannst."],"Welcome to Styles":["Willkommen bei den Stilen"],styles:tn,"Click to start designing your blocks, and choose your typography, layout, and colors.":["Klicke auf , um mit der Gestaltung deiner Blöcke zu beginnen, und wähle deine Typografie, dein Layout und deine Farben aus."],"Design everything on your site — from the header right down to the footer — using blocks.":["Designe alles auf deiner Website – vom Header bis runter zum Footer – mithilfe von Blöcken."],"Edit your site":["Bearbeite deine Website"],"Welcome to the site editor":["Willkommen beim Website-Editor"],"Add a featured image":["Ein Beitragsbild hinzufügen"],"block descriptionThis block is deprecated. Please use the Comments block instead.":["Dieser Block ist veraltet. Bitte verwende stattdessen den Kommentar-Block."],"block titleComment (deprecated)":["Kommentar (veraltet)"],"block descriptionShow a block pattern.":["Eine Block-Vorlage anzeigen."],"block titlePattern":["Vorlage"],"block keywordequation":["Gleichung"],"block descriptionAn advanced block that allows displaying taxonomy terms based on different query parameters and visual configurations.":["Ein erweiterter Block, der das Anzeigen von Taxonomiebegriffen anhand verschiedener Abfrage-Parameter und visueller Konfigurationen erlaubt."],"block descriptionContains the block elements used to display a comment, like the title, date, author, avatar and more.":["Enthält die Block-Elemente für das Anzeigen eines Kommentars wie Titel, Datum, Autor, Avatar und mehr."],"block titleComment Template":["Kommentar-Template"],"block descriptionDisplays a link to reply to a comment.":["Zeigt einen Link zum Antworten auf einen Kommentar an."],"block titleComment Reply Link":["Kommentar-antworten-Link"],"block descriptionDisplays a link to edit the comment in the WordPress Dashboard. This link is only visible to users with the edit comment capability.":["Zeigt einen Link an, um den Kommentar im WordPress-Dashboard zu bearbeiten. Dieser Link ist nur für Benutzer sichtbar, die Kommentare bearbeiten dürfen."],"block titleComment Edit Link":["Kommentar-bearbeiten-Link"],"block descriptionDisplays the contents of a comment.":["Zeigt den Inhalt eines Kommentars an."],"block titleComment Author Name":["Kommentar-Autorenname"],"%s applied.":["%s wurde angewandt."],"%s removed.":["%s wurde entfernt."],"%s: Sorry, you are not allowed to upload this file type.":["%s: Du bist leider nicht berechtigt, diesen Dateityp hochzuladen."],"This change will affect your whole site.":["Diese Änderung betrifft deine ganze Website."],"Use left and right arrow keys to resize the canvas.":["Benutze die Pfeiltasten links und rechts, um die Größe der Arbeitsfläche zu ändern."],"Drag to resize":["Zum Ändern der Größe ziehen"],"Submenu & overlay background":["Untermenü- und Overlay-Hintergrund"],"Submenu & overlay text":["Untermenü- und Overlay-Text"],"Create new Menu":["Neues Menü erstellen"],"Unsaved Navigation Menu.":["Ungespeichertes Navigationsmenü."],Menus:nn,"Open List View":["Listenansicht öffnen"],"Embed Wolfram notebook content.":["Inhalte aus dem Wolfram-Notizbuch einbetten."],Reply:rn,"Displays more block tools":["Zeigt weitere Block-Werkzeuge an"],"Create a two-tone color effect without losing your original image.":["Erstelle einen Duoton-Farbeffekt, ohne dein Originalbild zu verlieren."],"Remove %s":["%s entfernen"],"Explore all patterns":["Alle Vorlagen erkunden"],"Allow to wrap to multiple lines":["Zeilenumbruch erlauben"],"No Navigation Menus found.":["Es wurde kein Navigationsmenü gefunden."],"Add New Navigation Menu":["Neues Navigationsmenü hinzufügen"],"Theme not found.":["Das Theme wurde nicht gefunden."],"HTML title for the post, transformed for display.":["HTML-Titel für den Beitrag, transformiert für die Anzeige."],"Title for the global styles variation, as it exists in the database.":["Der Titel der globalen Stile-Variation, wie er in der Datenbank existiert."],"Title of the global styles variation.":["Der Titel der globalen Stile-Variation."],"Global settings.":["Globale Einstellungen."],"Global styles.":["Globale Stile."],"ID of global styles config.":["Die ID der globalen Stile-Konfiguration."],"No global styles config exist with that id.":["Es existiert keine globale Stile-Konfiguration mit dieser ID."],"Sorry, you are not allowed to access the global styles on this site.":["Du bist leider nicht berechtigt, auf die globalen Stile dieser Website zuzugreifen."],"The theme identifier":["Bezeichnung des Themes"],"%s Avatar":["Avatar von %s"],"block style labelPlain":["Einfach"],Elements:sn,"Customize the appearance of specific blocks and for the whole site.":["Das Design ausgewählter Blöcke sowie der ganzen Website anpassen."],"Link to comment":["Link zum Kommentar"],"Link to authors URL":["Link zur Autoren-URL"],"Choose an existing %s or create a new one.":["Ein vorhandenes Template-Teil %s wählen oder ein neues erstellen."],"Show icon":["Icon anzeigen"],Submenus:an,Always:on,"Collapses the navigation options in a menu icon opening an overlay.":["Klappt die Navigationsoptionen in einem Menü-Icon zusammen, das ein Overlay öffnet."],Display:ln,"Embed Pinterest pins, boards, and profiles.":["Pins, Boards und Profile von Pinterest einbetten."],bookmark:dn,"block descriptionDisplays the name of this site. Update the block, and the changes apply everywhere it’s used. This will also appear in the browser title bar and in search results.":["Zeigt den Namen dieser Website an. Wenn du den Block aktualisierst, werden die Änderungen überall übernommen, wo er genutzt wird. Erscheint auch in der Browser-Titelzeile und in Suchergebnissen."],Highlight:un,"Create page: %s":["Seite erstellen: %s"],"You do not have permission to create Pages.":["Du hast keine Berechtigung, Seiten zu erstellen."],Palette:cn,"Include the label as part of the link":["Die Beschriftung als Teil des Links mit übergeben"],"Previous: ":["Zurück: "],"Next: ":["Weiter: "],"Make title link to home":["Titel auf die Homepage verlinken"],"Block spacing":["Block-Abstände"],"Max %s wide":["Max. %s breit"],"label before the title of the previous postPrevious:":["Vorheriger:"],"label before the title of the next postNext:":["Nächster:"],"block descriptionAdd a submenu to your navigation.":["Füge deiner Navigation ein Untermenü hinzu."],"block titleSubmenu":["Untermenü"],"block descriptionDisplay content in multiple columns, with blocks added to each column.":["Inhalte mehrspaltig darstellen, wobei jeder Spalte Blöcke hinzugefügt werden."],"Customize the appearance of specific blocks for the whole site.":["Passe das Design ausgewählter Blöcke für die ganze Website an."],Colors:hn,"Hide and reset %s":["%s ausblenden und zurücksetzen"],"Reset %s":["%s zurücksetzen"],"The