diff --git a/.buildkite/beta-builds.yml b/.buildkite/beta-builds.yml index d54c253621cb..f6fb82ade867 100644 --- a/.buildkite/beta-builds.yml +++ b/.buildkite/beta-builds.yml @@ -1,11 +1,11 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + # This pipeline is meant to be run via the Buildkite API, and is # only used for beta builds -# Nodes with values to reuse in the pipeline. -common_params: - # Common plugin settings to use with the `plugins` key. - - &common_plugins - - automattic/a8c-ci-toolkit#3.4.2 +agents: + queue: "android" steps: ################# @@ -14,7 +14,7 @@ steps: - label: "Gradle Wrapper Validation" command: | validate_gradle_wrapper - plugins: *common_plugins + plugins: [$CI_TOOLKIT] # Wait for Gradle Wrapper to be validated before running any other jobs - wait @@ -47,7 +47,7 @@ steps: key: wpbuild command: ".buildkite/commands/beta-build.sh wordpress" depends_on: wplint - plugins: *common_plugins + plugins: [$CI_TOOLKIT] notify: - slack: "#build-and-ship" @@ -55,7 +55,7 @@ steps: key: jpbuild command: ".buildkite/commands/beta-build.sh jetpack" depends_on: jplint - plugins: *common_plugins + plugins: [$CI_TOOLKIT] notify: - slack: "#build-and-ship" @@ -67,4 +67,4 @@ steps: - wpbuild - jpbuild command: ".buildkite/commands/create-github-release.sh" - plugins: *common_plugins + plugins: [$CI_TOOLKIT] diff --git a/.buildkite/code-freeze.yml b/.buildkite/code-freeze.yml index d46b6568e8a9..0c8e12918ffd 100644 --- a/.buildkite/code-freeze.yml +++ b/.buildkite/code-freeze.yml @@ -1,15 +1,18 @@ -# Nodes with values to reuse in the pipeline. -common_params: - # Common plugin settings to use with the `plugins` key. - - &common_plugins - - automattic/a8c-ci-toolkit#3.4.2 +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + steps: - label: "Code Freeze" - plugins: *common_plugins + plugins: [$CI_TOOLKIT] command: | - .buildkite/commands/configure-git-for-release-management.sh + echo '--- :robot_face: Use bot for git operations' + source use-bot-for-git + echo '--- :ruby: Setup Ruby Tools' install_gems + echo '--- :snowflake: Start Code Freeze' bundle exec fastlane code_freeze skip_confirm:true + agents: + queue: "tumblr-metal" diff --git a/.buildkite/commands/configure-git-for-release-management.sh b/.buildkite/commands/configure-git-for-release-management.sh deleted file mode 100755 index eb39be490f66..000000000000 --- a/.buildkite/commands/configure-git-for-release-management.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -eu - -# Git command line client is not configured in Buildkite. Temporarily, we configure it in each step. -# Later on, we should be able to configure the agent instead. -curl -L https://api.github.com/meta | jq -r '.ssh_keys | .[]' | sed -e 's/^/github.com /' >> ~/.ssh/known_hosts -git config --global user.email "mobile+wpmobilebot@automattic.com" -git config --global user.name "Automattic Release Bot" - -# Buildkite is currently using the https url to checkout. We need to override it to be able to use the deploy key. -git remote set-url origin git@github.com:wordpress-mobile/WordPress-Android.git diff --git a/.buildkite/complete-code-freeze.yml b/.buildkite/complete-code-freeze.yml index c50c7ff05254..5898aa2e9285 100644 --- a/.buildkite/complete-code-freeze.yml +++ b/.buildkite/complete-code-freeze.yml @@ -1,16 +1,21 @@ -# Nodes with values to reuse in the pipeline. -common_params: - # Common plugin settings to use with the `plugins` key. - - &common_plugins - - automattic/a8c-ci-toolkit#3.4.2 +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + steps: - label: "Complete Code Freeze" - plugins: *common_plugins + plugins: [$CI_TOOLKIT] command: | - .buildkite/commands/configure-git-for-release-management.sh + echo '--- :robot_face: Use bot for git operations' + source use-bot-for-git + + echo '--- :git: Checkout Release Branch' .buildkite/commands/checkout-release-branch.sh + echo '--- :ruby: Setup Ruby Tools' install_gems + echo '--- :snowflake: Complete Code Freeze' bundle exec fastlane complete_code_freeze skip_confirm:true + agents: + queue: "tumblr-metal" diff --git a/.buildkite/finalize-release.yml b/.buildkite/finalize-release.yml index 7c03f7137228..0c91008c11f7 100644 --- a/.buildkite/finalize-release.yml +++ b/.buildkite/finalize-release.yml @@ -1,18 +1,23 @@ -# Nodes with values to reuse in the pipeline. -common_params: - # Common plugin settings to use with the `plugins` key. - - &common_plugins - - automattic/a8c-ci-toolkit#3.4.2 +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + steps: - label: "Finalize release" - plugins: *common_plugins + plugins: [$CI_TOOLKIT] command: | - .buildkite/commands/configure-git-for-release-management.sh + echo '--- :robot_face: Use bot for git operations' + source use-bot-for-git + + echo '--- :git: Checkout Release Branch' .buildkite/commands/checkout-release-branch.sh + echo '--- :ruby: Setup Ruby Tools' install_gems cp gradle.properties-example gradle.properties + echo '--- :shipit: Finalize Release' bundle exec fastlane finalize_release skip_confirm:true + agents: + queue: "tumblr-metal" diff --git a/.buildkite/new-beta-release.yml b/.buildkite/new-beta-release.yml index 0cde24c0912b..db233146ca9a 100644 --- a/.buildkite/new-beta-release.yml +++ b/.buildkite/new-beta-release.yml @@ -1,17 +1,20 @@ -# Nodes with values to reuse in the pipeline. -common_params: - # Common plugin settings to use with the `plugins` key. - - &common_plugins - - automattic/a8c-ci-toolkit#3.4.2 +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + steps: - label: "New Beta Release" - plugins: *common_plugins + plugins: [$CI_TOOLKIT] command: | - .buildkite/commands/configure-git-for-release-management.sh + echo '--- :robot_face: Use bot for git operations' + source use-bot-for-git + echo '--- :ruby: Setup Ruby Tools' install_gems cp gradle.properties-example gradle.properties + echo '--- :shipit: New Beta Release' bundle exec fastlane new_beta_release skip_confirm:true + agents: + queue: "tumblr-metal" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 290f05477e29..8dd0c3b34ed1 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,10 +1,8 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + # Nodes with values to reuse in the pipeline. common_params: - # Common plugin settings to use with the `plugins` key. - - &ci_toolkit - automattic/a8c-ci-toolkit#3.4.2 - - &test_collector - test-collector#v1.8.0 - &test_collector_common_params files: "buildkite-test-analytics/*.xml" format: "junit" @@ -19,7 +17,7 @@ steps: - label: "Gradle Wrapper Validation" command: | validate_gradle_wrapper - plugins: [*ci_toolkit] + plugins: [$CI_TOOLKIT] # Wait for Gradle Wrapper to be validated before running any other jobs - wait @@ -43,7 +41,7 @@ steps: command: | cp gradle.properties-example gradle.properties ./gradlew checkstyle - plugins: [*ci_toolkit] + plugins: [$CI_TOOLKIT] artifact_paths: - "**/build/reports/checkstyle/checkstyle.*" @@ -51,7 +49,7 @@ steps: command: | cp gradle.properties-example gradle.properties ./gradlew detekt - plugins: [*ci_toolkit] + plugins: [$CI_TOOLKIT] artifact_paths: - "**/build/reports/detekt/detekt.html" @@ -70,7 +68,7 @@ steps: cp gradle.properties-example gradle.properties .buildkite/commands/dependency-tree-diff.sh if: build.pull_request.id != null - plugins: [*ci_toolkit] + plugins: [$CI_TOOLKIT] ################# # Unit Tests @@ -80,8 +78,8 @@ steps: - label: "🔬 Unit Test WordPress" command: ".buildkite/commands/run-unit-tests.sh wordpress" plugins: - - *ci_toolkit - - *test_collector : + - $CI_TOOLKIT + - $TEST_COLLECTOR : <<: *test_collector_common_params api-token-env-name: "BUILDKITE_ANALYTICS_TOKEN_UNIT_TESTS_WORDPRESS" artifact_paths: @@ -90,8 +88,8 @@ steps: - label: "🔬 Unit Test Processors" command: ".buildkite/commands/run-unit-tests.sh processors" plugins: - - *ci_toolkit - - *test_collector : + - $CI_TOOLKIT + - $TEST_COLLECTOR : <<: *test_collector_common_params api-token-env-name: "BUILDKITE_ANALYTICS_TOKEN_UNIT_TESTS_PROCESSORS" artifact_paths: @@ -100,8 +98,8 @@ steps: - label: "🔬 Unit Test Image Editor" command: ".buildkite/commands/run-unit-tests.sh image-editor" plugins: - - *ci_toolkit - - *test_collector : + - $CI_TOOLKIT + - $TEST_COLLECTOR : <<: *test_collector_common_params api-token-env-name: "BUILDKITE_ANALYTICS_TOKEN_UNIT_TESTS_IMAGE_EDITOR" artifact_paths: @@ -115,8 +113,8 @@ steps: - label: ":wordpress: 🔬 Instrumented tests" command: ".buildkite/commands/run-instrumented-tests.sh wordpress" plugins: - - *ci_toolkit - - *test_collector : + - $CI_TOOLKIT + - $TEST_COLLECTOR : <<: *test_collector_common_params api-token-env-name: "BUILDKITE_ANALYTICS_TOKEN_INSTRUMENTED_TESTS_WORDPRESS" artifact_paths: @@ -125,8 +123,8 @@ steps: - label: ":jetpack: 🔬 Instrumented tests" command: ".buildkite/commands/run-instrumented-tests.sh jetpack" plugins: - - *ci_toolkit - - *test_collector : + - $CI_TOOLKIT + - $TEST_COLLECTOR : <<: *test_collector_common_params api-token-env-name: "BUILDKITE_ANALYTICS_TOKEN_INSTRUMENTED_TESTS_JETPACK" artifact_paths: @@ -140,9 +138,9 @@ steps: - label: ":wordpress: :android: Prototype Build" command: ".buildkite/commands/prototype-build.sh wordpress" if: build.pull_request.id != null - plugins: [*ci_toolkit] + plugins: [$CI_TOOLKIT] - label: ":jetpack: :android: Prototype Build" command: ".buildkite/commands/prototype-build.sh jetpack" if: build.pull_request.id != null - plugins: [*ci_toolkit] + plugins: [$CI_TOOLKIT] diff --git a/.buildkite/release-builds.yml b/.buildkite/release-builds.yml index 0e44afed36d1..77b20b4647ac 100644 --- a/.buildkite/release-builds.yml +++ b/.buildkite/release-builds.yml @@ -1,11 +1,11 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + # This pipeline is meant to be run via the Buildkite API, and is # only used for release builds -# Nodes with values to reuse in the pipeline. -common_params: - # Common plugin settings to use with the `plugins` key. - - &common_plugins - - automattic/a8c-ci-toolkit#3.4.2 +agents: + queue: "android" steps: ################# @@ -15,7 +15,7 @@ steps: command: | validate_gradle_wrapper priority: 1 - plugins: *common_plugins + plugins: [$CI_TOOLKIT] # Wait for Gradle Wrapper to be validated before running any other jobs - wait @@ -51,7 +51,7 @@ steps: command: ".buildkite/commands/release-build.sh wordpress" priority: 1 depends_on: wplint - plugins: *common_plugins + plugins: [$CI_TOOLKIT] notify: - slack: "#build-and-ship" @@ -60,7 +60,7 @@ steps: command: ".buildkite/commands/release-build.sh jetpack" priority: 1 depends_on: jplint - plugins: *common_plugins + plugins: [$CI_TOOLKIT] notify: - slack: "#build-and-ship" @@ -73,4 +73,4 @@ steps: - jpbuild command: ".buildkite/commands/create-github-release.sh" priority: 1 - plugins: *common_plugins + plugins: [$CI_TOOLKIT] diff --git a/.buildkite/schedules/dependency-analysis.yml b/.buildkite/schedules/dependency-analysis.yml new file mode 100644 index 000000000000..6ecad5fb00ea --- /dev/null +++ b/.buildkite/schedules/dependency-analysis.yml @@ -0,0 +1,18 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + +agents: + queue: "android" + +steps: + - label: "dependency analysis" + command: | + echo "--- 📊 Analyzing" + cp gradle.properties-example gradle.properties + ./gradlew buildHealth + plugins: [$CI_TOOLKIT] + artifact_paths: + - "build/reports/dependency-analysis/build-health-report.*" + notify: + - slack: "#android-core-notifs" + if: build.state == "failed" diff --git a/.buildkite/shared-pipeline-vars b/.buildkite/shared-pipeline-vars new file mode 100644 index 000000000000..2dbbc02e7912 --- /dev/null +++ b/.buildkite/shared-pipeline-vars @@ -0,0 +1,7 @@ +#!/bin/sh + + # This file is `source`'d before calling `buildkite-agent pipeline upload`, and can be used + # to set up some variables that will be interpolated in the `.yml` pipeline before uploading it. + + export CI_TOOLKIT="automattic/a8c-ci-toolkit#3.4.2" + export TEST_COLLECTOR="test-collector#v1.10.1" diff --git a/.buildkite/update-release-notes.yml b/.buildkite/update-release-notes.yml index dcdca7b56518..1b2ee0a53ae0 100644 --- a/.buildkite/update-release-notes.yml +++ b/.buildkite/update-release-notes.yml @@ -1,16 +1,21 @@ -# Nodes with values to reuse in the pipeline. -common_params: - # Common plugin settings to use with the `plugins` key. - - &common_plugins - - automattic/a8c-ci-toolkit#3.4.2 +# yaml-language-server: $schema=https://raw.githubusercontent.com/buildkite/pipeline-schema/main/schema.json +--- + steps: - label: "Update release notes" - plugins: *common_plugins + plugins: [$CI_TOOLKIT] command: | - .buildkite/commands/configure-git-for-release-management.sh + echo '--- :robot_face: Use bot for git operations' + source use-bot-for-git + + echo '--- :git: Checkout Editorial Branch' .buildkite/commands/checkout-editorial-branch.sh + echo '--- :ruby: Setup Ruby Tools' install_gems + echo '--- :memo: Update Release Notes' bundle exec fastlane update_appstore_strings version:${RELEASE_VERSION} + agents: + queue: "tumblr-metal" diff --git a/.configure b/.configure index d6e9f159bcec..9abd2a6ba5c6 100644 --- a/.configure +++ b/.configure @@ -1,7 +1,7 @@ { "project_name": "WordPress-Android", "branch": "trunk", - "pinned_hash": "715a5a119a334ec1ef16b5a6bd77c52094144813", + "pinned_hash": "4b536af182cc61c263b07262e41c141f06fd5de6", "files_to_copy": [ { "file": "android/WPAndroid/gradle.properties", diff --git a/.configure-files/gradle.properties.enc b/.configure-files/gradle.properties.enc index c2c83c9d1071..cfe19b47de6b 100644 Binary files a/.configure-files/gradle.properties.enc and b/.configure-files/gradle.properties.enc differ diff --git a/.github/workflows/submit-gradle-dependencies.yml b/.github/workflows/submit-gradle-dependencies.yml index c1d2a5bfe5fe..1315fd2f085d 100644 --- a/.github/workflows/submit-gradle-dependencies.yml +++ b/.github/workflows/submit-gradle-dependencies.yml @@ -17,8 +17,4 @@ jobs: java-version: '17' - run: cp gradle.properties-example gradle.properties - name: Setup Gradle to generate and submit dependency graphs - uses: gradle/gradle-build-action@v2 - with: - dependency-graph: generate-and-submit - - name: Generate the dependency graph which will be submitted post-job - run: ./gradlew :WordPress:dependencies --no-configure-on-demand + uses: gradle/actions/dependency-submission@v3 diff --git a/README.md b/README.md index abdabaee6db2..b75475e50ee5 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ If you're a developer wanting to contribute, read on. ## Build Instructions ## -1. Make sure you've installed [Android Studio](https://developer.android.com/studio/index.html). -1. Install npm using [Node Version Manager](https://github.com/nvm-sh/nvm)(nvm), as described in step one from the [Block Editor Quickstart guide](https://developer.wordpress.org/block-editor/tutorials/devenv/#quickstart) +1. Make sure you've installed [Android Studio](https://developer.android.com/studio). +1. Install npm using [Node Version Manager](https://github.com/nvm-sh/nvm)(nvm), as described in step one from the [Block Editor Quickstart guide](https://developer.wordpress.org/block-editor/getting-started/devenv/#quickstart) 1. `cd WordPress-Android` to enter the working directory. 1. `cp gradle.properties-example gradle.properties` to set up the sample app credentials file. 1. In Android Studio, open the project from the local repository. This will auto-generate `local.properties` with the SDK location. @@ -16,7 +16,7 @@ If you're a developer wanting to contribute, read on. Notes: -* While loading/building the app in Android Studio ignore the prompt to update the gradle plugin version as that will probably introduce build errors. On the other hand, feel free to update if you are planning to work on ensuring the compatibility of the newer version. +* While loading/building the app in Android Studio, ignore the prompt to update the Gradle plugin version, as that will probably introduce build errors. On the other hand, feel free to update if you are planning to work on ensuring the compatibility of the newer version. ## Build and Test ## @@ -92,7 +92,7 @@ in the `libs/` directory comes from external libraries, which might be covered by a different license compatible with the GPLv2. [1]: https://play.google.com/store/apps/details?id=org.wordpress.android -[3]: http://developer.android.com/sdk/installing/studio.html +[3]: https://developer.android.com/studio [4]: https://make.wordpress.org/chat/ [5]: https://developer.wordpress.com/apps/ [6]: https://developer.wordpress.com/docs/oauth2/ diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 342574d534eb..aad8816a97b6 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -2,6 +2,7 @@ 25.2 ----- +* [*] Fix ability to update a published post's date [https://github.com/wordpress-mobile/WordPress-Android/pull/21036] 25.1 diff --git a/WordPress/src/main/java/org/wordpress/android/datasets/PublicizeTable.java b/WordPress/src/main/java/org/wordpress/android/datasets/PublicizeTable.java index f4149762b8e1..52968d43263e 100644 --- a/WordPress/src/main/java/org/wordpress/android/datasets/PublicizeTable.java +++ b/WordPress/src/main/java/org/wordpress/android/datasets/PublicizeTable.java @@ -157,7 +157,7 @@ private static PublicizeService getServiceFromCursor(Cursor c) { } public static boolean onlyExternalConnections(String serviceId) { - if (serviceId == null && serviceId.isEmpty()) { + if (serviceId == null || serviceId.isEmpty()) { return false; } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java b/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java index 6f1f81e55dfc..1c16c014490a 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/ActivityLauncher.java @@ -953,6 +953,26 @@ public static void viewBlogAdmin(Context context, SiteModel site) { openUrlExternal(context, site.getAdminUrl()); } + public static void addNewPostWithContentFromAIForResult( + Activity activity, + SiteModel site, + boolean isPromo, + PagePostCreationSourcesDetail source, + final String content + ) { + if (site == null) { + return; + } + + Intent intent = new Intent(activity, EditPostActivity.class); + intent.putExtra(WordPress.SITE, site); + intent.putExtra(EditPostActivityConstants.EXTRA_IS_PAGE, false); + intent.putExtra(EditPostActivityConstants.EXTRA_IS_PROMO, isPromo); + intent.putExtra(AnalyticsUtils.EXTRA_CREATION_SOURCE_DETAIL, source); + intent.putExtra(EditPostActivityConstants.EXTRA_VOICE_CONTENT, content); + activity.startActivityForResult(intent, RequestCodes.EDIT_POST); + } + public static void addNewPostForResult( Activity activity, SiteModel site, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/CollapseFullScreenDialogFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/CollapseFullScreenDialogFragment.java index 795801d2a42d..f57910c7cb0e 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/CollapseFullScreenDialogFragment.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/CollapseFullScreenDialogFragment.java @@ -22,7 +22,6 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.content.res.AppCompatResources; -import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; import androidx.core.content.res.ResourcesCompat; import androidx.core.view.MenuItemCompat; @@ -36,6 +35,7 @@ import com.google.android.material.elevation.ElevationOverlayProvider; import org.wordpress.android.R; +import org.wordpress.android.databinding.CollapseFullScreenDialogFragmentBinding; /** * A {@link DialogFragment} implementing the full-screen dialog pattern defined in the @@ -56,6 +56,7 @@ public class CollapseFullScreenDialogFragment extends DialogFragment { private static final String ARG_HIDE_ACTIVITY_BAR = "ARG_HIDE_ACTIVITY_BAR"; private static final String ARG_TITLE = "ARG_TITLE"; private static final int ID_ACTION = 1; + private CollapseFullScreenDialogFragmentBinding mBinding; public static final String TAG = CollapseFullScreenDialogFragment.class.getSimpleName(); @@ -120,7 +121,7 @@ public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { - mFragment = getChildFragmentManager().findFragmentById(R.id.full_screen_dialog_fragment_content); + mFragment = getChildFragmentManager().findFragmentById(mBinding.fullScreenDialogFragmentContent.getId()); } mController = new CollapseFullScreenDialogController() { @@ -171,7 +172,8 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c hideActivityBar(); } - ViewGroup view = (ViewGroup) inflater.inflate(R.layout.collapse_full_screen_dialog_fragment, container, false); + mBinding = CollapseFullScreenDialogFragmentBinding.inflate(inflater, container, false); + ViewGroup view = mBinding.getRoot(); initToolbar(view); setThemeBackground(view); view.setFocusableInTouchMode(true); @@ -270,20 +272,19 @@ private void initBuilderArguments() { * @param view {@link View} */ private void initToolbar(View view) { - Toolbar toolbar = view.findViewById(R.id.full_screen_dialog_fragment_toolbar); - ElevationOverlayProvider elevationOverlayProvider = new ElevationOverlayProvider(view.getContext()); float appbarElevation = getResources().getDimension(R.dimen.appbar_elevation); int elevatedColor = elevationOverlayProvider.compositeOverlayWithThemeSurfaceColorIfNeeded(appbarElevation); - toolbar.setBackgroundColor(elevatedColor); + mBinding.fullScreenDialogFragmentToolbar.setBackgroundColor(elevatedColor); - toolbar.setTitle(mTitle); - toolbar.setNavigationContentDescription(R.string.description_collapse); - toolbar.setNavigationIcon(ContextCompat.getDrawable(view.getContext(), R.drawable.ic_chevron_down_white_24dp)); - toolbar.setNavigationOnClickListener(v -> onCollapseClicked()); + mBinding.fullScreenDialogFragmentToolbar.setTitle(mTitle); + mBinding.fullScreenDialogFragmentToolbar.setNavigationContentDescription(R.string.description_collapse); + mBinding.fullScreenDialogFragmentToolbar.setNavigationIcon(ContextCompat.getDrawable(view.getContext(), + R.drawable.ic_chevron_down_white_24dp)); + mBinding.fullScreenDialogFragmentToolbar.setNavigationOnClickListener(v -> onCollapseClicked()); if (!mAction.isEmpty()) { - Menu menu = toolbar.getMenu(); + Menu menu = mBinding.fullScreenDialogFragmentToolbar.getMenu(); mMenuAction = menu.add(0, ID_ACTION, 0, this.mAction); mMenuAction.setIcon(R.drawable.ic_send_white_24dp); MenuItemCompat.setIconTintList(mMenuAction, @@ -520,4 +521,10 @@ public Builder setTitle(@StringRes int textId) { return this; } } + + @Override + public void onDestroy() { + super.onDestroy(); + mBinding = null; + } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/barcodescanner/BarcodeScanner.kt b/WordPress/src/main/java/org/wordpress/android/ui/barcodescanner/BarcodeScanner.kt index 53eaa1b35d01..e5e52f1abab1 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/barcodescanner/BarcodeScanner.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/barcodescanner/BarcodeScanner.kt @@ -6,6 +6,9 @@ import androidx.camera.core.CameraSelector import androidx.camera.core.ImageAnalysis import androidx.camera.core.ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST import androidx.camera.core.ImageProxy +import androidx.camera.core.resolutionselector.AspectRatioStrategy +import androidx.camera.core.resolutionselector.ResolutionSelector +import androidx.camera.core.resolutionselector.ResolutionStrategy import androidx.camera.lifecycle.ProcessCameraProvider import androidx.camera.view.PreviewView import androidx.compose.foundation.layout.Column @@ -41,12 +44,18 @@ fun BarcodeScanner( val preview = CameraPreview.Builder().build() preview.setSurfaceProvider(previewView.surfaceProvider) val selector = CameraSelector.Builder().requireLensFacing(CameraSelector.LENS_FACING_BACK).build() - val imageAnalysis = ImageAnalysis.Builder().setTargetResolution( - Size( - previewView.width, - previewView.height - ) - ) + val imageAnalysis = ImageAnalysis.Builder() + .setResolutionSelector(ResolutionSelector.Builder() + .setAspectRatioStrategy(AspectRatioStrategy.RATIO_16_9_FALLBACK_AUTO_STRATEGY) + .setResolutionStrategy( + ResolutionStrategy( + Size( + previewView.width, + previewView.height + ), + ResolutionStrategy.FALLBACK_RULE_CLOSEST_HIGHER_THEN_LOWER + ) + ).build()) .setBackpressureStrategy(STRATEGY_KEEP_ONLY_LATEST) .build() imageAnalysis.setAnalyzer(ContextCompat.getMainExecutor(context)) { imageProxy -> diff --git a/WordPress/src/main/java/org/wordpress/android/ui/main/WPMainActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/main/WPMainActivity.java index eae822dfde03..2c730a43acae 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/main/WPMainActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/main/WPMainActivity.java @@ -1394,10 +1394,11 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) { break; } - if (site != null && post != null) { + View snackbarAttachView = findViewById(R.id.coordinator); + if (site != null && post != null && snackbarAttachView != null) { mUploadUtilsWrapper.handleEditPostResultSnackbars( this, - findViewById(R.id.coordinator), + snackbarAttachView, data, post, site, @@ -1805,21 +1806,24 @@ public void onPostUploaded(OnPostUploaded event) { } } - mUploadUtilsWrapper.onPostUploadedSnackbarHandler( - this, - findViewById(R.id.coordinator), - event.isError(), - event.isFirstTimePublish, - event.post, - null, - targetSite, - isFirstTimePublishing -> { - mBloggingRemindersViewModel.onPublishingPost(targetSite.getId(), isFirstTimePublishing); - if (isFirstTimePublishing) { - AppReviewManager.INSTANCE.onPostPublished(); + View snackbarAttachView = findViewById(R.id.coordinator); + if (snackbarAttachView != null) { + mUploadUtilsWrapper.onPostUploadedSnackbarHandler( + this, + snackbarAttachView, + event.isError(), + event.isFirstTimePublish, + event.post, + null, + targetSite, + isFirstTimePublishing -> { + mBloggingRemindersViewModel.onPublishingPost(targetSite.getId(), isFirstTimePublishing); + if (isFirstTimePublishing) { + AppReviewManager.INSTANCE.onPostPublished(); + } } - } - ); + ); + } } } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaBrowserActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaBrowserActivity.java index 368c18fbe8a2..8235a7c84dd6 100755 --- a/WordPress/src/main/java/org/wordpress/android/ui/media/MediaBrowserActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/media/MediaBrowserActivity.java @@ -1203,10 +1203,11 @@ public void onSiteChanged(OnSiteChanged event) { @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEventMainThread(UploadService.UploadErrorEvent event) { EventBus.getDefault().removeStickyEvent(event); - if (event.mediaModelList != null && !event.mediaModelList.isEmpty()) { + View snackbarAttachView = findViewById(R.id.tab_layout); + if (event.mediaModelList != null && !event.mediaModelList.isEmpty() && snackbarAttachView != null) { mUploadUtilsWrapper.onMediaUploadedSnackbarHandler( this, - findViewById(R.id.tab_layout), + snackbarAttachView, true, !TextUtils.isEmpty(event.errorMessage) && event.errorMessage.contains(getString(R.string.error_media_quota_exceeded)) @@ -1223,10 +1224,10 @@ public void onEventMainThread(UploadService.UploadErrorEvent event) { @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEventMainThread(UploadService.UploadMediaSuccessEvent event) { EventBus.getDefault().removeStickyEvent(event); - if (event.mediaModelList != null && !event.mediaModelList.isEmpty()) { - mUploadUtilsWrapper.onMediaUploadedSnackbarHandler(this, - findViewById(R.id.tab_layout), false, - event.mediaModelList, mSite, event.successMessage); + View snackbarAttachView = findViewById(R.id.tab_layout); + if (event.mediaModelList != null && !event.mediaModelList.isEmpty() && snackbarAttachView != null) { + mUploadUtilsWrapper.onMediaUploadedSnackbarHandler(this, snackbarAttachView, false, event.mediaModelList, + mSite, event.successMessage); updateMediaGridForTheseMedia(event.mediaModelList); } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/plugins/PluginDetailActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/plugins/PluginDetailActivity.java index 1b80e9371a2d..af0326208eeb 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/plugins/PluginDetailActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/plugins/PluginDetailActivity.java @@ -11,29 +11,20 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.ProgressBar; -import android.widget.RatingBar; -import android.widget.RelativeLayout; import android.widget.SimpleAdapter; import android.widget.TextView; -import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.widget.AppCompatButton; -import androidx.appcompat.widget.SwitchCompat; -import androidx.appcompat.widget.Toolbar; -import androidx.cardview.widget.CardView; import androidx.core.text.HtmlCompat; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.FragmentTransaction; -import com.google.android.material.appbar.CollapsingToolbarLayout; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.elevation.ElevationOverlayProvider; import com.google.android.material.snackbar.Snackbar; @@ -45,6 +36,7 @@ import org.wordpress.android.WordPress; import org.wordpress.android.analytics.AnalyticsTracker; import org.wordpress.android.analytics.AnalyticsTracker.Stat; +import org.wordpress.android.databinding.PluginDetailActivityBinding; import org.wordpress.android.fluxc.Dispatcher; import org.wordpress.android.fluxc.generated.PluginActionBuilder; import org.wordpress.android.fluxc.generated.SiteActionBuilder; @@ -135,40 +127,15 @@ public class PluginDetailActivity extends LocaleAwareActivity implements OnDomai private static final int DEFAULT_RETRY_DELAY_MS = 3000; private static final int PLUGIN_RETRY_DELAY_MS = 10000; + private PluginDetailActivityBinding mBinding; private SiteModel mSite; private String mSlug; protected ImmutablePluginModel mPlugin; private Handler mHandler; - - private ViewGroup mContainer; - private TextView mTitleTextView; - private TextView mByLineTextView; - private TextView mVersionTopTextView; - private TextView mVersionBottomTextView; - private TextView mInstalledText; - private AppCompatButton mUpdateButton; - private AppCompatButton mInstallButton; - private SwitchCompat mSwitchActive; - private SwitchCompat mSwitchAutoupdates; private ProgressDialog mRemovePluginProgressDialog; private ProgressDialog mAutomatedTransferProgressDialog; private ProgressDialog mCheckingDomainCreditsProgressDialog; - private CardView mWPOrgPluginDetailsContainer; - private RelativeLayout mRatingsSectionContainer; - - protected TextView mDescriptionTextView; - protected ImageView mDescriptionChevron; - protected TextView mInstallationTextView; - protected ImageView mInstallationChevron; - protected TextView mWhatsNewTextView; - protected ImageView mWhatsNewChevron; - protected TextView mFaqTextView; - protected ImageView mFaqChevron; - - private ImageView mImageBanner; - private ImageView mImageIcon; - private boolean mIsConfiguringPlugin; private boolean mIsInstallingPlugin; private boolean mIsUpdatingPlugin; @@ -241,10 +208,10 @@ public void onCreate(@Nullable Bundle savedInstanceState) { mPluginReCheckTimer = savedInstanceState.getInt(KEY_PLUGIN_RECHECKED_TIMES, 0); } - setContentView(R.layout.plugin_detail_activity); + mBinding = PluginDetailActivityBinding.inflate(getLayoutInflater()); + setContentView(mBinding.getRoot()); - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); + setSupportActionBar(mBinding.toolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setTitle(null); @@ -253,15 +220,13 @@ public void onCreate(@Nullable Bundle savedInstanceState) { actionBar.setElevation(0); } - - CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsing_toolbar); ElevationOverlayProvider elevationOverlayProvider = new ElevationOverlayProvider(this); float appbarElevation = getResources().getDimension(R.dimen.appbar_elevation); int elevatedColor = elevationOverlayProvider .compositeOverlayIfNeeded(ContextExtensionsKt.getColorFromAttribute(this, R.attr.wpColorAppBar), appbarElevation); - collapsingToolbarLayout.setContentScrimColor(elevatedColor); + mBinding.collapsingToolbar.setContentScrimColor(elevatedColor); mHandler = new Handler(); setupViews(); @@ -299,8 +264,8 @@ public void onPlansFetched(OnPlansFetched event) { if (event.isError()) { AppLog.e(T.PLANS, PluginDetailActivity.class.getSimpleName() + ".onPlansFetched: " + event.error.type + " - " + event.error.message); - WPSnackbar.make(mContainer, getString(R.string.plugin_check_domain_credit_error), Snackbar.LENGTH_LONG) - .show(); + WPSnackbar.make(mBinding.pluginDetailContainer, getString(R.string.plugin_check_domain_credit_error), + Snackbar.LENGTH_LONG).show(); } else { // This should not happen if (event.plans == null) { @@ -308,8 +273,8 @@ public void onPlansFetched(OnPlansFetched event) { if (BuildConfig.DEBUG) { throw new IllegalStateException(errorMessage); } - WPSnackbar.make(mContainer, getString(R.string.plugin_check_domain_credit_error), Snackbar.LENGTH_LONG) - .show(); + WPSnackbar.make(mBinding.pluginDetailContainer, getString(R.string.plugin_check_domain_credit_error), + Snackbar.LENGTH_LONG).show(); AppLog.e(T.PLANS, errorMessage); return; } @@ -447,52 +412,29 @@ public void onSaveInstanceState(@NonNull Bundle outState) { // UI Helpers private void setupViews() { - mContainer = findViewById(R.id.plugin_detail_container); - mTitleTextView = findViewById(R.id.text_title); - mByLineTextView = findViewById(R.id.text_byline); - mVersionTopTextView = findViewById(R.id.plugin_version_top); - mVersionBottomTextView = findViewById(R.id.plugin_version_bottom); - mInstalledText = findViewById(R.id.plugin_installed); - mUpdateButton = findViewById(R.id.plugin_btn_update); - mInstallButton = findViewById(R.id.plugin_btn_install); - mSwitchActive = findViewById(R.id.plugin_state_active); - mSwitchAutoupdates = findViewById(R.id.plugin_state_autoupdates); - mImageBanner = findViewById(R.id.image_banner); - mImageIcon = findViewById(R.id.image_icon); - - mWPOrgPluginDetailsContainer = findViewById(R.id.plugin_wp_org_details_container); - mRatingsSectionContainer = findViewById(R.id.plugin_ratings_section_container); - - mDescriptionTextView = findViewById(R.id.plugin_description_text); - mDescriptionChevron = findViewById(R.id.plugin_description_chevron); - findViewById(R.id.plugin_description_container).setOnClickListener( - v -> toggleText(mDescriptionTextView, mDescriptionChevron)); - - mInstallationTextView = findViewById(R.id.plugin_installation_text); - mInstallationChevron = findViewById(R.id.plugin_installation_chevron); - findViewById(R.id.plugin_installation_container).setOnClickListener( - v -> toggleText(mInstallationTextView, mInstallationChevron)); - - mWhatsNewTextView = findViewById(R.id.plugin_whatsnew_text); - mWhatsNewChevron = findViewById(R.id.plugin_whatsnew_chevron); - findViewById(R.id.plugin_whatsnew_container).setOnClickListener( - v -> toggleText(mWhatsNewTextView, mWhatsNewChevron)); + mBinding.pluginDescriptionContainer.setOnClickListener( + v -> toggleText(mBinding.pluginDescriptionText, mBinding.pluginDescriptionChevron)); + + mBinding.pluginInstallationContainer.setOnClickListener( + v -> toggleText(mBinding.pluginInstallationText, mBinding.pluginInstallationChevron)); + + mBinding.pluginWhatsnewContainer.setOnClickListener( + v -> toggleText(mBinding.pluginWhatsnewText, mBinding.pluginWhatsnewChevron)); // expand description if this plugin isn't installed, otherwise expand "what's new" if // this is an installed plugin and there's an update available if (mPlugin.isInstalled()) { - toggleText(mDescriptionTextView, mDescriptionChevron); + toggleText(mBinding.pluginDescriptionText, mBinding.pluginDescriptionChevron); } else if (PluginUtils.isUpdateAvailable(mPlugin)) { - toggleText(mWhatsNewTextView, mWhatsNewChevron); + toggleText(mBinding.pluginWhatsnewText, mBinding.pluginWhatsnewChevron); } - mFaqTextView = findViewById(R.id.plugin_faq_text); - mFaqChevron = findViewById(R.id.plugin_faq_chevron); - findViewById(R.id.plugin_faq_container).setOnClickListener(v -> toggleText(mFaqTextView, mFaqChevron)); + mBinding.pluginFaqContainer.setOnClickListener(v -> toggleText(mBinding.pluginFaqText, + mBinding.pluginFaqChevron)); - findViewById(R.id.plugin_version_layout).setOnClickListener(v -> showPluginInfoPopup()); + mBinding.pluginVersionLayout.setOnClickListener(v -> showPluginInfoPopup()); - mSwitchActive.setOnCheckedChangeListener((compoundButton, isChecked) -> { + mBinding.pluginStateActive.setOnCheckedChangeListener((compoundButton, isChecked) -> { if (compoundButton.isPressed()) { if (NetworkUtils.checkConnection(PluginDetailActivity.this)) { mIsActive = isChecked; @@ -503,7 +445,7 @@ private void setupViews() { } }); - mSwitchAutoupdates.setOnCheckedChangeListener((compoundButton, isChecked) -> { + mBinding.pluginStateAutoupdates.setOnCheckedChangeListener((compoundButton, isChecked) -> { if (compoundButton.isPressed()) { if (NetworkUtils.checkConnection(PluginDetailActivity.this)) { mIsAutoUpdateEnabled = isChecked; @@ -514,9 +456,9 @@ private void setupViews() { } }); - mUpdateButton.setOnClickListener(view -> dispatchUpdatePluginAction()); + mBinding.pluginBtnUpdate.setOnClickListener(view -> dispatchUpdatePluginAction()); - mInstallButton.setOnClickListener(v -> { + mBinding.pluginBtnInstall.setOnClickListener(v -> { if (isCustomDomainRequired()) { showDomainCreditsCheckProgressDialog(); mDispatcher.dispatch(SiteActionBuilder.newFetchPlansAction(mSite)); @@ -525,24 +467,22 @@ private void setupViews() { } }); - View settingsView = findViewById(R.id.plugin_settings_page); if (canShowSettings()) { - settingsView.setVisibility(View.VISIBLE); - settingsView.setOnClickListener(v -> openUrl(mPlugin.getSettingsUrl())); + mBinding.pluginSettingsPage.setVisibility(View.VISIBLE); + mBinding.pluginSettingsPage.setOnClickListener(v -> openUrl(mPlugin.getSettingsUrl())); } else { - settingsView.setVisibility(View.GONE); + mBinding.pluginSettingsPage.setVisibility(View.GONE); } - findViewById(R.id.plugin_wp_org_page).setOnClickListener(view -> openUrl(getWpOrgPluginUrl())); + mBinding.pluginWpOrgPage.setOnClickListener(view -> openUrl(getWpOrgPluginUrl())); - findViewById(R.id.plugin_home_page).setOnClickListener(view -> openUrl(mPlugin.getHomepageUrl())); + mBinding.pluginHomePage.setOnClickListener(view -> openUrl(mPlugin.getHomepageUrl())); - findViewById(R.id.read_reviews_container).setOnClickListener(view -> openUrl(getWpOrgReviewsUrl())); + mBinding.pluginRatingsCardview.readReviewsContainer.setOnClickListener(view -> openUrl(getWpOrgReviewsUrl())); // set the height of the gradient scrim that appears atop the banner image int toolbarHeight = DisplayUtils.getActionBarHeight(this); - ImageView imgScrim = findViewById(R.id.image_gradient_scrim); - imgScrim.getLayoutParams().height = toolbarHeight * 2; + mBinding.imageGradientScrim.getLayoutParams().height = toolbarHeight * 2; refreshViews(); } @@ -552,49 +492,46 @@ private boolean isCustomDomainRequired() { } private void refreshViews() { - View scrollView = findViewById(R.id.scroll_view); - if (scrollView.getVisibility() != View.VISIBLE) { - AniUtils.fadeIn(scrollView, AniUtils.Duration.MEDIUM); + if (mBinding.scrollView.getVisibility() != View.VISIBLE) { + AniUtils.fadeIn(mBinding.scrollView, AniUtils.Duration.MEDIUM); } - mTitleTextView.setText(mPlugin.getDisplayName()); - mImageManager.load(mImageBanner, ImageType.PHOTO, StringUtils.notNullStr(mPlugin.getBanner()), + mBinding.textTitle.setText(mPlugin.getDisplayName()); + mImageManager.load(mBinding.imageBanner, ImageType.PHOTO, StringUtils.notNullStr(mPlugin.getBanner()), ScaleType.CENTER_CROP); - mImageManager.load(mImageIcon, ImageType.PLUGIN, StringUtils.notNullStr(mPlugin.getIcon())); + mImageManager.load(mBinding.imageIcon, ImageType.PLUGIN, StringUtils.notNullStr(mPlugin.getIcon())); if (mPlugin.doesHaveWPOrgPluginDetails()) { - mWPOrgPluginDetailsContainer.setVisibility(View.VISIBLE); - setCollapsibleHtmlText(mDescriptionTextView, mPlugin.getDescriptionAsHtml()); - setCollapsibleHtmlText(mInstallationTextView, mPlugin.getInstallationInstructionsAsHtml()); - setCollapsibleHtmlText(mWhatsNewTextView, mPlugin.getWhatsNewAsHtml()); - setCollapsibleHtmlText(mFaqTextView, mPlugin.getFaqAsHtml()); + mBinding.pluginWpOrgDetailsContainer.setVisibility(View.VISIBLE); + setCollapsibleHtmlText(mBinding.pluginDescriptionText, mPlugin.getDescriptionAsHtml()); + setCollapsibleHtmlText(mBinding.pluginInstallationText, mPlugin.getInstallationInstructionsAsHtml()); + setCollapsibleHtmlText(mBinding.pluginWhatsnewText, mPlugin.getWhatsNewAsHtml()); + setCollapsibleHtmlText(mBinding.pluginFaqText, mPlugin.getFaqAsHtml()); } else { - mWPOrgPluginDetailsContainer.setVisibility(View.GONE); + mBinding.pluginWpOrgDetailsContainer.setVisibility(View.GONE); } - mByLineTextView.setMovementMethod(WPLinkMovementMethod.getInstance()); + mBinding.textByline.setMovementMethod(WPLinkMovementMethod.getInstance()); if (!TextUtils.isEmpty(mPlugin.getAuthorAsHtml())) { //noinspection ConstantConditions - mByLineTextView.setText(HtmlCompat.fromHtml(mPlugin.getAuthorAsHtml(), HtmlCompat.FROM_HTML_MODE_LEGACY)); + mBinding.textByline.setText(HtmlCompat.fromHtml(mPlugin.getAuthorAsHtml(), + HtmlCompat.FROM_HTML_MODE_LEGACY)); } else { String authorName = mPlugin.getAuthorName(); String authorUrl = mPlugin.getAuthorUrl(); if (TextUtils.isEmpty(authorUrl)) { - mByLineTextView.setText(String.format(getString(R.string.plugin_byline), authorName)); + mBinding.textByline.setText(String.format(getString(R.string.plugin_byline), authorName)); } else { String authorLink = "" + authorName + ""; String byline = String.format(getString(R.string.plugin_byline), authorLink); - mByLineTextView.setMovementMethod(WPLinkMovementMethod.getInstance()); - mByLineTextView.setText(HtmlCompat.fromHtml(byline, HtmlCompat.FROM_HTML_MODE_LEGACY)); + mBinding.textByline.setMovementMethod(WPLinkMovementMethod.getInstance()); + mBinding.textByline.setText(HtmlCompat.fromHtml(byline, HtmlCompat.FROM_HTML_MODE_LEGACY)); } } - findViewById(R.id.plugin_card_site) - .setVisibility(mPlugin.isInstalled() && isNotAutoManaged() ? View.VISIBLE : View.GONE); - findViewById(R.id.plugin_state_active_container) - .setVisibility(canPluginBeDisabledOrRemoved() ? View.VISIBLE : View.GONE); - findViewById(R.id.plugin_state_autoupdates_container) - .setVisibility(mSite.isAutomatedTransfer() ? View.GONE : View.VISIBLE); - mSwitchActive.setChecked(mIsActive); - mSwitchAutoupdates.setChecked(mIsAutoUpdateEnabled); + mBinding.pluginCardSite.setVisibility(mPlugin.isInstalled() && isNotAutoManaged() ? View.VISIBLE : View.GONE); + mBinding.pluginStateActiveContainer.setVisibility(canPluginBeDisabledOrRemoved() ? View.VISIBLE : View.GONE); + mBinding.pluginStateAutoupdatesContainer.setVisibility(mSite.isAutomatedTransfer() ? View.GONE : View.VISIBLE); + mBinding.pluginStateActive.setChecked(mIsActive); + mBinding.pluginStateAutoupdates.setChecked(mIsAutoUpdateEnabled); refreshPluginVersionViews(); refreshRatingsViews(); @@ -631,67 +568,71 @@ private void refreshPluginVersionViews() { } else if (!TextUtils.isEmpty(availableVersion)) { versionTopText = String.format(getString(R.string.plugin_version), availableVersion); } - mVersionTopTextView.setText(versionTopText); - mVersionBottomTextView.setVisibility(TextUtils.isEmpty(versionBottomText) ? View.GONE : View.VISIBLE); - mVersionBottomTextView.setText(versionBottomText); + mBinding.pluginVersionTop.setText(versionTopText); + mBinding.pluginVersionBottom.setVisibility(TextUtils.isEmpty(versionBottomText) ? View.GONE : View.VISIBLE); + mBinding.pluginVersionBottom.setText(versionBottomText); refreshUpdateVersionViews(); } private void refreshUpdateVersionViews() { if (mPlugin.isInstalled()) { - mInstallButton.setVisibility(View.GONE); + mBinding.pluginBtnInstall.setVisibility(View.GONE); if (isNotAutoManaged()) { boolean isUpdateAvailable = PluginUtils.isUpdateAvailable(mPlugin); boolean canUpdate = isUpdateAvailable && !mIsUpdatingPlugin; - mUpdateButton.setVisibility(canUpdate ? View.VISIBLE : View.GONE); - mInstalledText.setVisibility(isUpdateAvailable || mIsUpdatingPlugin ? View.GONE : View.VISIBLE); + mBinding.pluginBtnUpdate.setVisibility(canUpdate ? View.VISIBLE : View.GONE); + mBinding.pluginInstalled.setVisibility( + (isUpdateAvailable || mIsUpdatingPlugin) ? View.GONE : View.VISIBLE); } else { - mUpdateButton.setVisibility(View.GONE); - mInstalledText.setVisibility(View.GONE); + mBinding.pluginBtnUpdate.setVisibility(View.GONE); + mBinding.pluginInstalled.setVisibility(View.GONE); } } else { - mUpdateButton.setVisibility(View.GONE); - mInstalledText.setVisibility(View.GONE); - mInstallButton.setVisibility(mIsInstallingPlugin ? View.GONE : View.VISIBLE); + mBinding.pluginBtnUpdate.setVisibility(View.GONE); + mBinding.pluginInstalled.setVisibility(View.GONE); + mBinding.pluginBtnInstall.setVisibility(mIsInstallingPlugin ? View.GONE : View.VISIBLE); } - findViewById(R.id.plugin_update_progress_bar).setVisibility(mIsUpdatingPlugin || mIsInstallingPlugin + mBinding.pluginUpdateProgressBar.setVisibility(mIsUpdatingPlugin || mIsInstallingPlugin ? View.VISIBLE : View.GONE); } private void refreshRatingsViews() { if (!mPlugin.doesHaveWPOrgPluginDetails()) { - mRatingsSectionContainer.setVisibility(View.GONE); + mBinding.pluginRatingsCardview.pluginRatingsSectionContainer.setVisibility(View.GONE); return; } - mRatingsSectionContainer.setVisibility(View.VISIBLE); + mBinding.pluginRatingsCardview.pluginRatingsSectionContainer.setVisibility(View.VISIBLE); int numRatingsTotal = mPlugin.getNumberOfRatings(); - TextView txtNumRatings = findViewById(R.id.text_num_ratings); String numRatings = FormatUtils.formatInt(numRatingsTotal); - txtNumRatings.setText(String.format(getString(R.string.plugin_num_ratings), numRatings)); + mBinding.pluginRatingsCardview.textNumRatings.setText(String.format(getString(R.string.plugin_num_ratings), + numRatings)); - TextView txtNumDownloads = findViewById(R.id.text_num_downloads); if (mPlugin.getDownloadCount() > 0) { String numDownloads = FormatUtils.formatInt(mPlugin.getDownloadCount()); - txtNumDownloads.setText(String.format(getString(R.string.plugin_num_downloads), numDownloads)); + mBinding.pluginRatingsCardview.textNumDownloads. + setText(String.format(getString(R.string.plugin_num_downloads), numDownloads)); } else { - txtNumDownloads.setText(""); + mBinding.pluginRatingsCardview.textNumDownloads.setText(""); } - setRatingsProgressBar(R.id.progress5, mPlugin.getNumberOfRatingsOfFive(), numRatingsTotal); - setRatingsProgressBar(R.id.progress4, mPlugin.getNumberOfRatingsOfFour(), numRatingsTotal); - setRatingsProgressBar(R.id.progress3, mPlugin.getNumberOfRatingsOfThree(), numRatingsTotal); - setRatingsProgressBar(R.id.progress2, mPlugin.getNumberOfRatingsOfTwo(), numRatingsTotal); - setRatingsProgressBar(R.id.progress1, mPlugin.getNumberOfRatingsOfOne(), numRatingsTotal); + setRatingsProgressBar(mBinding.pluginRatingsCardview.progress5, mPlugin.getNumberOfRatingsOfFive(), + numRatingsTotal); + setRatingsProgressBar(mBinding.pluginRatingsCardview.progress4, mPlugin.getNumberOfRatingsOfFour(), + numRatingsTotal); + setRatingsProgressBar(mBinding.pluginRatingsCardview.progress3, mPlugin.getNumberOfRatingsOfThree(), + numRatingsTotal); + setRatingsProgressBar(mBinding.pluginRatingsCardview.progress2, mPlugin.getNumberOfRatingsOfTwo(), + numRatingsTotal); + setRatingsProgressBar(mBinding.pluginRatingsCardview.progress1, mPlugin.getNumberOfRatingsOfOne(), + numRatingsTotal); - RatingBar ratingBar = findViewById(R.id.rating_bar); - ratingBar.setRating(mPlugin.getAverageStarRating()); + mBinding.pluginRatingsCardview.ratingBar.setRating(mPlugin.getAverageStarRating()); } - private void setRatingsProgressBar(@IdRes int progressResId, int numRatingsForStar, int numRatingsTotal) { - ProgressBar bar = findViewById(progressResId); + private void setRatingsProgressBar(ProgressBar bar, int numRatingsForStar, int numRatingsTotal) { bar.setMax(numRatingsTotal); bar.setProgress(numRatingsForStar); } @@ -805,42 +746,42 @@ private void confirmRemovePlugin() { } private void showSuccessfulUpdateSnackbar() { - WPSnackbar.make(mContainer, + WPSnackbar.make(mBinding.pluginDetailContainer, getString(R.string.plugin_updated_successfully, mPlugin.getDisplayName()), Snackbar.LENGTH_LONG) .show(); } private void showSuccessfulInstallSnackbar() { - WPSnackbar.make(mContainer, + WPSnackbar.make(mBinding.pluginDetailContainer, getString(R.string.plugin_installed_successfully, mPlugin.getDisplayName()), Snackbar.LENGTH_LONG) .show(); } private void showSuccessfulPluginRemovedSnackbar(String pluginDisplayName) { - WPSnackbar.make(mContainer, + WPSnackbar.make(mBinding.pluginDetailContainer, getString(R.string.plugin_removed_successfully, pluginDisplayName), Snackbar.LENGTH_LONG) .show(); } private void showUpdateFailedSnackbar() { - WPSnackbar.make(mContainer, + WPSnackbar.make(mBinding.pluginDetailContainer, getString(R.string.plugin_updated_failed, mPlugin.getDisplayName()), Snackbar.LENGTH_LONG) .setAction(R.string.retry, view -> dispatchUpdatePluginAction()) .show(); } private void showInstallFailedSnackbar() { - WPSnackbar.make(mContainer, + WPSnackbar.make(mBinding.pluginDetailContainer, getString(R.string.plugin_installed_failed, mPlugin.getDisplayName()), Snackbar.LENGTH_LONG) .setAction(R.string.retry, view -> dispatchInstallPluginAction()) .show(); } private void showPluginRemoveFailedSnackbar() { - WPSnackbar.make(mContainer, + WPSnackbar.make(mBinding.pluginDetailContainer, getString(R.string.plugin_remove_failed, mPlugin.getDisplayName()), Snackbar.LENGTH_LONG) .show(); @@ -1040,7 +981,7 @@ public void onSitePluginConfigured(@NonNull OnSitePluginConfigured event) { // The plugin should be disabled if it was active, we should show that to the user mIsActive = mPlugin.isActive(); - mSwitchActive.setChecked(mIsActive); + mBinding.pluginStateActive.setChecked(mIsActive); } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.java deleted file mode 100644 index 840908ba2f0a..000000000000 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.java +++ /dev/null @@ -1,139 +0,0 @@ -package org.wordpress.android.ui.posts; - -import android.app.Dialog; -import android.content.DialogInterface; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatDialogFragment; -import androidx.appcompat.view.ContextThemeWrapper; - -import com.google.android.material.dialog.MaterialAlertDialogBuilder; - -import org.wordpress.android.R; -import org.wordpress.android.WordPress; -import org.wordpress.android.databinding.AddCategoryBinding; -import org.wordpress.android.fluxc.model.SiteModel; -import org.wordpress.android.fluxc.model.TermModel; -import org.wordpress.android.fluxc.store.TaxonomyStore; -import org.wordpress.android.models.CategoryNode; -import org.wordpress.android.util.ToastUtils; - -import java.util.ArrayList; - -import javax.inject.Inject; - -public class AddCategoryFragment extends AppCompatDialogFragment { - private SiteModel mSite; - private AddCategoryBinding mBinding; - - @Inject TaxonomyStore mTaxonomyStore; - - public static AddCategoryFragment newInstance(SiteModel site) { - AddCategoryFragment fragment = new AddCategoryFragment(); - Bundle bundle = new Bundle(); - bundle.putSerializable(WordPress.SITE, site); - fragment.setArguments(bundle); - return fragment; - } - - @Override - @NonNull - public Dialog onCreateDialog(Bundle savedInstanceState) { - ((WordPress) requireActivity().getApplication()).component().inject(this); - - initSite(savedInstanceState); - - AlertDialog.Builder builder = - new MaterialAlertDialogBuilder(new ContextThemeWrapper(getActivity(), R.style.PostSettingsTheme)); - // Get the layout inflater - LayoutInflater inflater = requireActivity().getLayoutInflater(); - //noinspection InflateParams - mBinding = AddCategoryBinding.inflate(inflater, null, false); - - loadCategories(); - - builder.setView(mBinding.getRoot()) - .setPositiveButton(android.R.string.ok, null) - .setNegativeButton(android.R.string.cancel, null); - - return builder.create(); - } - - @Override - public void onStart() { - super.onStart(); - AlertDialog dialog = (AlertDialog) requireDialog(); - dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (addCategory()) { - dismiss(); - } - } - }); - } - - private void initSite(Bundle savedInstanceState) { - if (savedInstanceState == null) { - if (getArguments() != null) { - mSite = (SiteModel) getArguments().getSerializable(WordPress.SITE); - } else { - mSite = (SiteModel) requireActivity().getIntent().getSerializableExtra(WordPress.SITE); - } - } else { - mSite = (SiteModel) savedInstanceState.getSerializable(WordPress.SITE); - } - - if (mSite == null) { - ToastUtils.showToast(requireActivity(), R.string.blog_not_found, ToastUtils.Duration.SHORT); - getParentFragmentManager().popBackStack(); - } - } - - private boolean addCategory() { - String categoryName = mBinding.categoryName.getText().toString(); - CategoryNode selectedCategory = (CategoryNode) mBinding.parentCategory.getSelectedItem(); - long parentId = (selectedCategory != null) ? selectedCategory.getCategoryId() : 0; - - if (categoryName.replaceAll(" ", "").equals("")) { - mBinding.categoryName.setError(getText(R.string.cat_name_required)); - return false; - } - - TermModel newCategory = new TermModel( - TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY, - categoryName, - parentId - ); - ((SelectCategoriesActivity) requireActivity()).categoryAdded(newCategory); - - return true; - } - - private void loadCategories() { - CategoryNode rootCategory = CategoryNode.createCategoryTreeFromList(mTaxonomyStore.getCategoriesForSite(mSite)); - ArrayList categoryLevels = CategoryNode.getSortedListOfCategoriesFromRoot(rootCategory); - categoryLevels.add(0, new CategoryNode(0, 0, getString(R.string.top_level_category_name))); - if (categoryLevels.size() > 0) { - ParentCategorySpinnerAdapter categoryAdapter = - new ParentCategorySpinnerAdapter(getActivity(), R.layout.categories_row_parent, categoryLevels); - mBinding.parentCategory.setAdapter(categoryAdapter); - } - } - - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - outState.putSerializable(WordPress.SITE, mSite); - } - - @Override - public void onDestroy() { - super.onDestroy(); - mBinding = null; - } -} diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.kt new file mode 100644 index 000000000000..c4030d07572b --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/AddCategoryFragment.kt @@ -0,0 +1,129 @@ +package org.wordpress.android.ui.posts + +import android.app.Dialog +import android.content.DialogInterface +import android.os.Bundle +import androidx.appcompat.app.AlertDialog +import androidx.appcompat.app.AppCompatDialogFragment +import androidx.appcompat.view.ContextThemeWrapper +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import org.wordpress.android.R +import org.wordpress.android.WordPress +import org.wordpress.android.databinding.AddCategoryBinding +import org.wordpress.android.fluxc.model.SiteModel +import org.wordpress.android.fluxc.model.TermModel +import org.wordpress.android.fluxc.store.TaxonomyStore +import org.wordpress.android.models.CategoryNode +import org.wordpress.android.util.ToastUtils +import org.wordpress.android.util.extensions.getSerializableCompat +import org.wordpress.android.util.extensions.getSerializableExtraCompat +import javax.inject.Inject + +class AddCategoryFragment : AppCompatDialogFragment() { + private var site: SiteModel? = null + private var binding: AddCategoryBinding? = null + + @Inject + lateinit var taxonomyStore: TaxonomyStore + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + (requireActivity().application as WordPress).component().inject(this) + initSite(savedInstanceState) + val builder = + MaterialAlertDialogBuilder(ContextThemeWrapper(activity, R.style.PostSettingsTheme)) + binding = AddCategoryBinding.inflate(layoutInflater, null, false) + loadCategories() + builder.setView(binding?.root) + .setPositiveButton(android.R.string.ok, null) + .setNegativeButton(android.R.string.cancel, null) + + return builder.create() + } + + override fun onStart() { + super.onStart() + val dialog = requireDialog() as AlertDialog + dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener { + if (addCategory()) { + dismiss() + } + } + } + + private fun initSite(savedInstanceState: Bundle?) { + site = if (savedInstanceState == null) { + if (arguments != null) { + requireArguments().getSerializableCompat(WordPress.SITE) as SiteModel? + } else { + requireActivity().intent.getSerializableExtraCompat(WordPress.SITE) as SiteModel? + } + } else { + savedInstanceState.getSerializableCompat(WordPress.SITE) as SiteModel? + } + + if (site == null) { + ToastUtils.showToast( + requireActivity(), + R.string.blog_not_found, + ToastUtils.Duration.SHORT + ) + parentFragmentManager.popBackStack() + } + } + + private fun addCategory(): Boolean { + val categoryName = binding?.categoryName?.text.toString() + val selectedCategory = binding?.parentCategory?.selectedItem as? CategoryNode + val parentId = selectedCategory?.categoryId + + if (categoryName.replace(" ".toRegex(), "") == "") { + binding?.categoryName?.error = getText(R.string.cat_name_required) + return false + } + + val newCategory = parentId?.let { + TermModel( + TaxonomyStore.DEFAULT_TAXONOMY_CATEGORY, + categoryName, + it + ) + } + (requireActivity() as SelectCategoriesActivity).categoryAdded(newCategory) + return true + } + + private fun loadCategories() { + val rootCategory = site?.let { CategoryNode.createCategoryTreeFromList(taxonomyStore.getCategoriesForSite(it)) } + val categoryLevels = CategoryNode.getSortedListOfCategoriesFromRoot(rootCategory) + categoryLevels.add(0, CategoryNode(0, 0, getString(R.string.top_level_category_name))) + if (categoryLevels.size > 0) { + val categoryAdapter = + ParentCategorySpinnerAdapter( + activity, + R.layout.categories_row_parent, + categoryLevels + ) + binding?.parentCategory?.adapter = categoryAdapter + } + } + + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + outState.putSerializable(WordPress.SITE, site) + } + + override fun onDestroy() { + super.onDestroy() + binding = null + } + + companion object { + fun newInstance(site: SiteModel?): AddCategoryFragment { + val fragment = AddCategoryFragment() + val bundle = Bundle() + bundle.putSerializable(WordPress.SITE, site) + fragment.arguments = bundle + return fragment + } + } +} diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.kt index 16db759bfb31..caf240ccdb63 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivity.kt @@ -309,6 +309,7 @@ class EditPostActivity : LocaleAwareActivity(), EditorFragmentActivity, EditorIm private var postLoadingState: PostLoadingState = PostLoadingState.NONE private var isXPostsCapable: Boolean? = null private var onGetSuggestionResult: Consumer? = null + private var isVoiceContentSet = false // For opening the context menu after permissions have been granted private var menuView: View? = null @@ -717,6 +718,7 @@ class EditPostActivity : LocaleAwareActivity(), EditorFragmentActivity, EditorIm } isNewPost = state.getBoolean(EditPostActivityConstants.STATE_KEY_IS_NEW_POST, false) + isVoiceContentSet = state.getBoolean(EditPostActivityConstants.STATE_KEY_IS_VOICE_CONTENT_SET, false) updatePostLoadingAndDialogState( fromInt( state.getInt(EditPostActivityConstants.STATE_KEY_POST_LOADING_STATE, 0) @@ -1185,6 +1187,7 @@ class EditPostActivity : LocaleAwareActivity(), EditorFragmentActivity, EditorIm } outState.putInt(EditPostActivityConstants.STATE_KEY_POST_LOADING_STATE, postLoadingState.value) outState.putBoolean(EditPostActivityConstants.STATE_KEY_IS_NEW_POST, isNewPost) + outState.putBoolean(EditPostActivityConstants.STATE_KEY_IS_VOICE_CONTENT_SET, isVoiceContentSet) outState.putBoolean( EditPostActivityConstants.STATE_KEY_IS_PHOTO_PICKER_VISIBLE, editorPhotoPicker?.isPhotoPickerShowing() ?: false @@ -3526,6 +3529,20 @@ class EditPostActivity : LocaleAwareActivity(), EditorFragmentActivity, EditorIm // Start VM, load prompt and populate Editor with content after edit IS ready. val promptId: Int = intent.getIntExtra(EditPostActivityConstants.EXTRA_PROMPT_ID, -1) editorBloggingPromptsViewModel.start(siteModel, promptId) + + updateVoiceContentIfNeeded() + } + + private fun updateVoiceContentIfNeeded() { + // Check if voice content exists and this is a new post for a Gutenberg editor fragment + val content = intent.getStringExtra(EditPostActivityConstants.EXTRA_VOICE_CONTENT) + if (isNewPost && content != null && !isVoiceContentSet) { + val gutenbergFragment = editorFragment as? GutenbergEditorFragment + gutenbergFragment?.let { + isVoiceContentSet = true + it.updateContent(content) + } + } } private fun logTemplateSelection() { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivityConstants.kt b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivityConstants.kt index 7fe36f345e5a..77cf11f42b7f 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivityConstants.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/EditPostActivityConstants.kt @@ -26,6 +26,7 @@ object EditPostActivityConstants{ const val EXTRA_PAGE_TEMPLATE = "pageTemplate" const val EXTRA_PROMPT_ID = "extraPromptId" const val EXTRA_ENTRY_POINT = "extraEntryPoint" + const val EXTRA_VOICE_CONTENT = "extra_voice_content" const val STATE_KEY_EDITOR_FRAGMENT = "editorFragment" const val STATE_KEY_DROPPED_MEDIA_URIS = "stateKeyDroppedMediaUri" const val STATE_KEY_POST_LOCAL_ID = "stateKeyPostModelLocalId" @@ -40,4 +41,5 @@ object EditPostActivityConstants{ const val STATE_KEY_MEDIA_CAPTURE_PATH = "stateKeyMediaCapturePath" const val STATE_KEY_UNDO = "stateKeyUndo" const val STATE_KEY_REDO = "stateKeyRedo" + const val STATE_KEY_IS_VOICE_CONTENT_SET = "stateKeyIsVoiceContentSet" } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/posts/SelectCategoriesActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/posts/SelectCategoriesActivity.java index b0b15b3cb746..1c6c93ad2fa0 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/posts/SelectCategoriesActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/posts/SelectCategoriesActivity.java @@ -196,7 +196,7 @@ private void showAddCategoryFragment() { ft.addToBackStack(null); // Create and show the dialog. - AddCategoryFragment newFragment = AddCategoryFragment.newInstance(mSite); + AddCategoryFragment newFragment = AddCategoryFragment.Companion.newInstance(mSite); newFragment.show(ft, "dialog"); } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListActivity.java index 0dae81b0e252..ba69c23927b3 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostListActivity.java @@ -328,25 +328,21 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { return; } - if (site != null && post != null) { + View snackbarAttachView = findViewById(R.id.coordinator); + if (site != null && post != null && snackbarAttachView != null) { mUploadUtilsWrapper.handleEditPostResultSnackbars( this, - findViewById(R.id.coordinator), + snackbarAttachView, data, post, site, mUploadActionUseCase.getUploadAction(post), - new View.OnClickListener() { - @Override - public void onClick(View v) { - UploadUtils.publishPost( - ReaderPostListActivity.this, - post, - site, - mDispatcher - ); - } - }); + v -> UploadUtils.publishPost( + ReaderPostListActivity.this, + post, + site, + mDispatcher + )); } } break; @@ -357,10 +353,11 @@ public void onClick(View v) { @Subscribe(threadMode = ThreadMode.MAIN) public void onPostUploaded(OnPostUploaded event) { SiteModel site = mSiteStore.getSiteByLocalId(mSelectedSiteRepository.getSelectedSiteLocalId()); - if (site != null && event.post != null) { + View snackbarAttachView = findViewById(R.id.coordinator); + if (site != null && event.post != null && snackbarAttachView != null) { mUploadUtilsWrapper.onPostUploadedSnackbarHandler( this, - findViewById(R.id.coordinator), + snackbarAttachView, event.isError(), event.isFirstTimePublish, event.post, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostPagerActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostPagerActivity.java index 4b617af9d089..b6fddfde35e7 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostPagerActivity.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostPagerActivity.java @@ -1091,10 +1091,11 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { break; } - if (site != null && post != null) { + View snackbarAttachView = findViewById(R.id.coordinator); + if (site != null && post != null && snackbarAttachView != null) { mUploadUtilsWrapper.handleEditPostResultSnackbars( this, - findViewById(R.id.coordinator), + snackbarAttachView, data, post, site, @@ -1119,10 +1120,11 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { @Subscribe(threadMode = ThreadMode.MAIN) public void onPostUploaded(OnPostUploaded event) { SiteModel site = mSiteStore.getSiteByLocalId(mSelectedSiteRepository.getSelectedSiteLocalId()); - if (site != null && event.post != null) { + View snackbarAttachView = findViewById(R.id.coordinator); + if (site != null && event.post != null && snackbarAttachView != null) { mUploadUtilsWrapper.onPostUploadedSnackbarHandler( this, - findViewById(R.id.coordinator), + snackbarAttachView, event.isError(), event.isFirstTimePublish, event.post, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostRenderer.java b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostRenderer.java index c7157a096ebe..d5ce0cea398c 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostRenderer.java +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderPostRenderer.java @@ -48,6 +48,7 @@ */ public class ReaderPostRenderer { private static final String JAVASCRIPT_MESSAGE_HANDLER = "wvHandler"; + private static final String JS_OBJECT_ADDED_TAG = "jsObjectAdded"; private final ReaderResourceVars mResourceVars; private final ReaderPost mPost; private final int mMinFullSizeWidthDp; @@ -645,6 +646,11 @@ private String getContentTextProperties() { } private void setWebViewMessageHandler(@NonNull WebView webView) { + Object tag = webView.getTag(JS_OBJECT_ADDED_TAG.hashCode()); + if (tag != null && (boolean) tag) { + return; // Exit if the object has already been added + } + Set allowedOrigins = new HashSet<>(); allowedOrigins.add("*"); @@ -665,6 +671,9 @@ private void setWebViewMessageHandler(@NonNull WebView webView) { } return null; }); + + // Set the tag that the JS object has been added, so we can check before adding it again + webView.setTag(JS_OBJECT_ADDED_TAG.hashCode(), true); } void setPostMessageListener(@Nullable ReaderPostMessageListener listener) { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/uploads/UploadUtilsWrapper.kt b/WordPress/src/main/java/org/wordpress/android/ui/uploads/UploadUtilsWrapper.kt index 8ee2738e2d8f..c37622f5e226 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/uploads/UploadUtilsWrapper.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/uploads/UploadUtilsWrapper.kt @@ -34,7 +34,7 @@ class UploadUtilsWrapper @Inject constructor( @Suppress("LongParameterList") fun onMediaUploadedSnackbarHandler( activity: Activity?, - snackbarAttachView: View?, + snackbarAttachView: View, isError: Boolean, mediaList: List?, site: SiteModel?, @@ -53,7 +53,7 @@ class UploadUtilsWrapper @Inject constructor( @Suppress("LongParameterList") fun onPostUploadedSnackbarHandler( activity: Activity?, - snackbarAttachView: View?, + snackbarAttachView: View, isError: Boolean, isFirstTimePublish: Boolean, post: PostModel?, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/MicToStopIcon.kt b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/MicToStopIcon.kt index a85466a27b44..28359b0e32db 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/MicToStopIcon.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/MicToStopIcon.kt @@ -19,9 +19,7 @@ import androidx.compose.material.ContentAlpha import androidx.compose.material.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue +import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -37,9 +35,9 @@ import org.wordpress.android.ui.compose.theme.AppTheme @OptIn(ExperimentalAnimationApi::class) @Suppress("DEPRECATION") @Composable -fun MicToStopIcon(model: RecordingPanelUIModel) { +fun MicToStopIcon(model: RecordingPanelUIModel, isRecording: Boolean) { val isEnabled = model.isEnabled - var isMic by remember { mutableStateOf(true) } + val isMic by rememberUpdatedState(newValue = !isRecording) val isLight = !isSystemInDarkTheme() val circleColor by animateColorAsState( @@ -73,11 +71,9 @@ fun MicToStopIcon(model: RecordingPanelUIModel) { } else { model.onStopTap?.invoke() } - // isMic = !isMic } else { model.onRequestPermission?.invoke() } - isMic = !isMic } ) ) { @@ -128,7 +124,8 @@ fun ExistingLayoutPreview() { hasPermission = true, onRequestPermission = {}, actionLabel = R.string.voice_to_content_base_header_label, isEnabled = false - ) + ), + isRecording = true ) } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/RecordingUseCase.kt b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/RecordingUseCase.kt index 069d10464522..a2d546e51d0b 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/RecordingUseCase.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/RecordingUseCase.kt @@ -1,6 +1,7 @@ package org.wordpress.android.ui.voicetocontent import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.StateFlow import org.wordpress.android.util.audio.IAudioRecorder import org.wordpress.android.util.audio.RecordingUpdate import org.wordpress.android.util.audio.VoiceToContentStrategy @@ -25,4 +26,16 @@ class RecordingUseCase @Inject constructor( fun endRecordingSession() { audioRecorder.endRecordingSession() } + + fun isRecording(): StateFlow = audioRecorder.isRecording() + fun isPaused(): StateFlow = audioRecorder.isPaused() + + + fun pauseRecording() { + audioRecorder.pauseRecording() + } + + fun resumeRecording() { + audioRecorder.resumeRecording() + } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentActionEvent.kt b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentActionEvent.kt new file mode 100644 index 000000000000..543a95b8ed53 --- /dev/null +++ b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentActionEvent.kt @@ -0,0 +1,10 @@ +package org.wordpress.android.ui.voicetocontent + +import org.wordpress.android.fluxc.model.SiteModel + +sealed class VoiceToContentActionEvent { + data object Dismiss: VoiceToContentActionEvent() + data class LaunchEditPost(val site: SiteModel, val content: String) : VoiceToContentActionEvent() + data class LaunchExternalBrowser(val url: String) : VoiceToContentActionEvent() + data object RequestPermission : VoiceToContentActionEvent() +} diff --git a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentDialogFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentDialogFragment.kt index 7375ae03ffc2..b70454959765 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentDialogFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentDialogFragment.kt @@ -6,25 +6,34 @@ import android.content.DialogInterface import android.content.Intent import android.net.Uri import android.os.Bundle +import android.provider.Settings import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.FrameLayout import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AlertDialog +import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.ui.platform.ComposeView import androidx.fragment.app.viewModels +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import com.google.android.material.bottomsheet.BottomSheetBehavior +import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment import dagger.hilt.android.AndroidEntryPoint -import org.wordpress.android.ui.compose.theme.AppTheme +import kotlinx.coroutines.launch import org.wordpress.android.R -import org.wordpress.android.util.audio.IAudioRecorder.Companion.REQUIRED_RECORDING_PERMISSIONS -import android.provider.Settings -import android.util.Log -import android.widget.FrameLayout -import androidx.compose.material.ExperimentalMaterialApi -import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialog +import org.wordpress.android.ui.ActivityLauncher import org.wordpress.android.ui.ActivityNavigator +import org.wordpress.android.ui.PagePostCreationSourcesDetail +import org.wordpress.android.ui.compose.theme.AppTheme +import org.wordpress.android.ui.voicetocontent.VoiceToContentActionEvent.Dismiss +import org.wordpress.android.ui.voicetocontent.VoiceToContentActionEvent.LaunchEditPost +import org.wordpress.android.ui.voicetocontent.VoiceToContentActionEvent.LaunchExternalBrowser +import org.wordpress.android.ui.voicetocontent.VoiceToContentActionEvent.RequestPermission +import org.wordpress.android.util.audio.IAudioRecorder.Companion.REQUIRED_RECORDING_PERMISSIONS import javax.inject.Inject @AndroidEntryPoint @@ -78,26 +87,42 @@ class VoiceToContentDialogFragment : BottomSheetDialogFragment() { } override fun onSlide(bottomSheet: View, slideOffset: Float) { - // Handle the slide offset if needed + // no op } }) - // Disable touch interception by the bottom sheet to allow nested scrolling + // Disable touch interception by the bottom sheet to allow nested scrolling for landscape and small screens bottomSheet.setOnTouchListener { _, _ -> false } } // Observe the ViewModel to update the cancelable state of closing on outside touch viewModel.isCancelableOutsideTouch.observe(this) { cancelable -> - Log.i(javaClass.simpleName, "***=> disable outside touch") dialog.setCanceledOnTouchOutside(cancelable) } + lifecycleScope.launch { + lifecycle.repeatOnLifecycle(Lifecycle.State.STARTED) { + if (viewModel.isPaused.value) { + viewModel.resumeRecording() + } + } + } + return dialog } + override fun onPause() { + super.onPause() + if (viewModel.isRecording.value) { + viewModel.pauseRecording() + } + } + override fun onDismiss(dialog: DialogInterface) { - super.onDismiss(dialog) - viewModel.onBottomSheetClosed() + if (!requireActivity().isChangingConfigurations) { + super.onDismiss(dialog) + viewModel.onBottomSheetClosed() + } } private fun onBottomSheetClosed() { @@ -105,16 +130,13 @@ class VoiceToContentDialogFragment : BottomSheetDialogFragment() { } private fun observeViewModel() { - viewModel.requestPermission.observe(viewLifecycleOwner) { - requestAllPermissionsForRecording() - } - - viewModel.dismiss.observe(viewLifecycleOwner) { - dismiss() - } - - viewModel.onIneligibleForVoiceToContent.observe(viewLifecycleOwner) { url -> - launchIneligibleForVoiceToContent(url) + viewModel.actionEvent.observe(viewLifecycleOwner) { actionEvent -> + when(actionEvent) { + is LaunchEditPost -> launchEditPost(actionEvent) + is LaunchExternalBrowser -> launchIneligibleForVoiceToContent(actionEvent) + is RequestPermission -> requestAllPermissionsForRecording() + is Dismiss -> dismiss() + } } } @@ -151,9 +173,22 @@ class VoiceToContentDialogFragment : BottomSheetDialogFragment() { .show() } - private fun launchIneligibleForVoiceToContent(url: String) { + private fun launchIneligibleForVoiceToContent(event: LaunchExternalBrowser) { context?.let { - activityNavigator.openIneligibleForVoiceToContent(it, url) + activityNavigator.openIneligibleForVoiceToContent(it, event.url) + } + } + + private fun launchEditPost(event: LaunchEditPost) { + activity?.let { + ActivityLauncher.addNewPostWithContentFromAIForResult( + it, + event.site, + false, + PagePostCreationSourcesDetail.POST_FROM_MY_SITE, + event.content + ) + dismiss() } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentScreen.kt b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentScreen.kt index 1d139dd42969..852f307f1078 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentScreen.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentScreen.kt @@ -29,6 +29,7 @@ import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.Refresh import androidx.compose.material3.Surface import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState @@ -63,6 +64,16 @@ fun VoiceToContentScreen( val recordingUpdate by viewModel.recordingUpdate.observeAsState(initial = RecordingUpdate()) val configuration = LocalConfiguration.current val screenHeight = configuration.screenHeightDp.dp + val isRecording by viewModel.isRecording.collectAsState() + + DisposableEffect(Unit) { + onDispose { + if (isRecording) { + viewModel.pauseRecording() + } + } + } + // Adjust the bottom sheet height based on orientation val bottomSheetHeight = if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { screenHeight // Full height in landscape @@ -82,13 +93,16 @@ fun VoiceToContentScreen( .nestedScroll(rememberNestedScrollInteropConnection()) // Enable nested scrolling for the bottom sheet .verticalScroll(rememberScrollState()) // Enable vertical scrolling for the bottom sheet ) { - VoiceToContentView(state, recordingUpdate) + VoiceToContentView(state, recordingUpdate, isRecording) } } } @Composable -fun VoiceToContentView(state: VoiceToContentUiState, recordingUpdate: RecordingUpdate) { +fun VoiceToContentView(state: VoiceToContentUiState, + recordingUpdate: RecordingUpdate, + isRecording: Boolean +) { Column( horizontalAlignment = Alignment.CenterHorizontally, modifier = Modifier @@ -102,7 +116,7 @@ fun VoiceToContentView(state: VoiceToContentUiState, recordingUpdate: RecordingU else -> { Header(state.header) SecondaryHeader(state.secondaryHeader, recordingUpdate) - RecordingPanel(state, recordingUpdate) + RecordingPanel(state, recordingUpdate, isRecording) } } } @@ -199,10 +213,7 @@ fun formatTime(remainingTimeInSeconds: Int, maxDurationInSeconds: Int): String { val minutes = remainingTimeInSeconds / 60 val seconds = remainingTimeInSeconds % 60 - val value = if (minutes == 1) default - else String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds) - - return value + return String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds) } @Composable @@ -211,17 +222,17 @@ fun getDefaultTimeString(maxDurationInSeconds: Int): String { return "00:00" } - // Calculate minutes and seconds val minutes = (maxDurationInSeconds - 1) / 60 val seconds = (maxDurationInSeconds - 1) % 60 - // Format and return the default time string return String.format(Locale.getDefault(), "%02d:%02d", minutes, seconds) } - @Composable -fun RecordingPanel(model: VoiceToContentUiState, recordingUpdate: RecordingUpdate) { +fun RecordingPanel(model: VoiceToContentUiState, + recordingUpdate: RecordingUpdate, + isRecording: Boolean +) { model.recordingPanel?.let { Row( verticalAlignment = Alignment.CenterVertically, @@ -248,7 +259,7 @@ fun RecordingPanel(model: VoiceToContentUiState, recordingUpdate: RecordingUpdat } else if (model.uiStateType == VoiceToContentUIStateType.INELIGIBLE_FOR_FEATURE) { InEligible(model = it) } - MicToStopIcon(it) + MicToStopIcon(it, isRecording=isRecording) Spacer(modifier = Modifier.height(16.dp)) Text( text = stringResource(id = it.actionLabel), @@ -385,7 +396,7 @@ fun PreviewInitializingView() { hasPermission = false ) ) - VoiceToContentView(state = state, recordingUpdate = RecordingUpdate()) + VoiceToContentView(state = state, recordingUpdate = RecordingUpdate(), isRecording = false) } } @@ -407,7 +418,7 @@ fun PreviewReadyToRecordView() { isEligibleForFeature = true ) ) - VoiceToContentView(state = state, recordingUpdate = RecordingUpdate()) + VoiceToContentView(state = state, recordingUpdate = RecordingUpdate(), isRecording = false) } } @@ -428,7 +439,7 @@ fun PreviewNotEligibleToRecordView() { upgradeUrl = "https://www.wordpress.com" ) ) - VoiceToContentView(state = state, recordingUpdate = RecordingUpdate()) + VoiceToContentView(state = state, recordingUpdate = RecordingUpdate(), isRecording = false) } } @@ -451,7 +462,7 @@ fun PreviewRecordingView() { isEligibleForFeature = true ) ) - VoiceToContentView(state = state, recordingUpdate = RecordingUpdate()) + VoiceToContentView(state = state, recordingUpdate = RecordingUpdate(), isRecording = true) } } @@ -464,6 +475,6 @@ fun PreviewProcessingView() { uiStateType = VoiceToContentUIStateType.PROCESSING, header = HeaderUIModel(label = R.string.voice_to_content_processing_label, onClose = { }) ) - VoiceToContentView(state = state, recordingUpdate = RecordingUpdate()) + VoiceToContentView(state = state, recordingUpdate = RecordingUpdate(), isRecording = false) } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentUiState.kt b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentUiState.kt index 01d189f89456..f1d78f120224 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentUiState.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentUiState.kt @@ -20,6 +20,8 @@ data class SecondaryHeaderUIModel( data class RecordingPanelUIModel( val onMicTap: (() -> Unit)? = null, val onStopTap: (() -> Unit)? = null, + val onPauseRecording: (() -> Unit)? = null, + val onResumeRecording: (() -> Unit)? = null, val isEligibleForFeature: Boolean = false, val hasPermission: Boolean = false, val onRequestPermission: (() -> Unit)? = null, diff --git a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentUseCase.kt b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentUseCase.kt index 118ff698e7dc..1d673cbc7c92 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentUseCase.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentUseCase.kt @@ -62,15 +62,15 @@ class VoiceToContentUseCase @Inject constructor( when(response) { is JetpackAIQueryResponse.Success -> { - val finalContent: String = response.choices[0].message.content + val finalContent: String? = response.choices[0].message?.content // __JETPACK_AI_ERROR__ is a special marker we ask GPT to add to the request when it can’t // understand the request for any reason, so maybe something confused GPT on some requests. - if (finalContent == JETPACK_AI_ERROR) { + if (finalContent == null || finalContent == JETPACK_AI_ERROR) { // Send back the transcribed text here logger.logError(JETPACK_AI_ERROR) return@withContext Success(content = transcribed) } else { - return@withContext Success(content = response.choices[0].message.content) + return@withContext Success(content = finalContent) } } diff --git a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentViewModel.kt index 68fb9d361a32..700e2d4cd2f6 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/voicetocontent/VoiceToContentViewModel.kt @@ -1,7 +1,6 @@ package org.wordpress.android.ui.voicetocontent import android.content.pm.PackageManager -import android.util.Log import androidx.core.content.ContextCompat import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData @@ -17,6 +16,10 @@ import org.wordpress.android.analytics.AnalyticsTracker.Stat import org.wordpress.android.fluxc.model.jetpackai.JetpackAIAssistantFeature import org.wordpress.android.modules.UI_THREAD import org.wordpress.android.ui.mysite.SelectedSiteRepository +import org.wordpress.android.ui.voicetocontent.VoiceToContentActionEvent.Dismiss +import org.wordpress.android.ui.voicetocontent.VoiceToContentActionEvent.LaunchEditPost +import org.wordpress.android.ui.voicetocontent.VoiceToContentActionEvent.LaunchExternalBrowser +import org.wordpress.android.ui.voicetocontent.VoiceToContentActionEvent.RequestPermission import org.wordpress.android.ui.voicetocontent.VoiceToContentUIStateType.ERROR import org.wordpress.android.ui.voicetocontent.VoiceToContentUIStateType.INELIGIBLE_FOR_FEATURE import org.wordpress.android.ui.voicetocontent.VoiceToContentUIStateType.INITIALIZING @@ -45,20 +48,17 @@ class VoiceToContentViewModel @Inject constructor( private val prepareVoiceToContentUseCase: PrepareVoiceToContentUseCase, private val logger: VoiceToContentTelemetry ) : ScopedViewModel(mainDispatcher) { - private val _requestPermission = MutableLiveData() - val requestPermission = _requestPermission as LiveData - - private val _dismiss = MutableLiveData() - val dismiss = _dismiss as LiveData - private val _recordingUpdate = MutableLiveData() - val recordingUpdate: LiveData get() = _recordingUpdate - - private val _onIneligibleForVoiceToContent = MutableLiveData() - val onIneligibleForVoiceToContent = _onIneligibleForVoiceToContent as LiveData + val recordingUpdate = _recordingUpdate as LiveData private val _isCancelableOutsideTouch = MutableLiveData(true) - val isCancelableOutsideTouch: LiveData get() = _isCancelableOutsideTouch + val isCancelableOutsideTouch = _isCancelableOutsideTouch as LiveData + + private val _actionEvent = MutableLiveData() + val actionEvent = _actionEvent as LiveData + + val isRecording: StateFlow = recordingUseCase.isRecording() + val isPaused: StateFlow = recordingUseCase.isPaused() private var isStarted = false @@ -124,8 +124,6 @@ class VoiceToContentViewModel @Inject constructor( stopRecording() } else { updateRecordingData(update) - // todo: Handle other updates if needed when UI is ready, e.g., elapsed time and file size - Log.d("AudioRecorder", "Recording update: $update") } } } @@ -171,6 +169,14 @@ class VoiceToContentViewModel @Inject constructor( recordingUseCase.stopRecording() } + fun pauseRecording() { + recordingUseCase.pauseRecording() + } + + fun resumeRecording() { + recordingUseCase.resumeRecording() + } + // Workflow private fun executeVoiceToContent(file: File) { val site = selectedSiteRepository.getSelectedSite() ?: run { @@ -181,17 +187,17 @@ class VoiceToContentViewModel @Inject constructor( viewModelScope.launch { when (val result = voiceToContentUseCase.execute(site, file)) { is VoiceToContentResult.Failure -> result.transitionToError() - is VoiceToContentResult.Success -> - Log.i(javaClass.simpleName, "***=> result is ${result.content}") + is VoiceToContentResult.Success -> { + _actionEvent.postValue(LaunchEditPost(site, result.content)) + } } - _dismiss.postValue(Unit) } } // Permissions private fun onRequestPermission() { logger.track(Stat.VOICE_TO_CONTENT_BUTTON_START_RECORDING_TAPPED) - _requestPermission.postValue(Unit) + _actionEvent.postValue(RequestPermission) } private fun hasAllPermissionsForRecording(): Boolean { @@ -220,8 +226,10 @@ class VoiceToContentViewModel @Inject constructor( private fun onClose() { logger.track(Stat.VOICE_TO_CONTENT_BUTTON_CLOSE_TAPPED) - recordingUseCase.endRecordingSession() - _dismiss.postValue(Unit) + if (isRecording.value || isPaused.value) { + recordingUseCase.endRecordingSession() + } + _actionEvent.postValue(Dismiss) } private fun onRetryTap() { @@ -232,7 +240,7 @@ class VoiceToContentViewModel @Inject constructor( private fun onLinkTap(url: String?) { logger.track(Stat.VOICE_TO_CONTENT_BUTTON_UPGRADE_TAPPED) url?.let { - _onIneligibleForVoiceToContent.postValue(it) + _actionEvent.postValue(LaunchExternalBrowser(it)) } } @@ -293,7 +301,9 @@ class VoiceToContentViewModel @Inject constructor( recordingPanel = currentState.recordingPanel?.copy( onStopTap = ::onStopTap, hasPermission = true, - actionLabel = R.string.voice_to_content_done_label) + actionLabel = R.string.voice_to_content_done_label, + onResumeRecording = ::resumeRecording, + onPauseRecording = ::pauseRecording) ) } diff --git a/WordPress/src/main/java/org/wordpress/android/util/WPMediaUtils.java b/WordPress/src/main/java/org/wordpress/android/util/WPMediaUtils.java index dedc18123b5a..6aeb66346aca 100644 --- a/WordPress/src/main/java/org/wordpress/android/util/WPMediaUtils.java +++ b/WordPress/src/main/java/org/wordpress/android/util/WPMediaUtils.java @@ -18,6 +18,7 @@ import androidx.annotation.StringRes; import androidx.appcompat.app.AlertDialog; import androidx.core.content.FileProvider; +import androidx.exifinterface.media.ExifInterface; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -84,6 +85,9 @@ public static Uri getOptimizedMedia(Context context, String path, boolean isVide AppLog.e(AppLog.T.EDITOR, "Optimized picture was null!"); AnalyticsTracker.track(AnalyticsTracker.Stat.MEDIA_PHOTO_OPTIMIZE_ERROR); } else { + // Set the default orientation tag for the EXIF data + exifData.put("Orientation", String.valueOf(ExifInterface.ORIENTATION_NORMAL)); + // Write EXIF data to the new image ExifUtils.writeExifData(exifData, optimizedPath); diff --git a/WordPress/src/main/java/org/wordpress/android/util/audio/AudioRecorder.kt b/WordPress/src/main/java/org/wordpress/android/util/audio/AudioRecorder.kt index a7a1ecedff16..b79c0bc89e64 100644 --- a/WordPress/src/main/java/org/wordpress/android/util/audio/AudioRecorder.kt +++ b/WordPress/src/main/java/org/wordpress/android/util/audio/AudioRecorder.kt @@ -5,7 +5,6 @@ import android.content.Context import android.content.pm.PackageManager import android.media.MediaRecorder import android.os.Build -import android.util.Log import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -16,6 +15,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.launch +import org.wordpress.android.util.AppLog import java.io.File import java.io.IOException import org.wordpress.android.util.audio.IAudioRecorder.AudioRecorderResult @@ -41,16 +41,17 @@ class AudioRecorder( private var recordingJob: Job? = null private val coroutineScope = CoroutineScope(Dispatchers.Main + SupervisorJob()) - private var isPausedRecording = false + private val amplitudeList = mutableListOf() + private var remainingTimeInSeconds: Int = 0 private val _recordingUpdates = MutableStateFlow(RecordingUpdate()) private val recordingUpdates: StateFlow get() = _recordingUpdates.asStateFlow() private val _isRecording = MutableStateFlow(false) - val isRecording: StateFlow = _isRecording + private val isRecording = _isRecording.asStateFlow() private val _isPaused = MutableStateFlow(false) - val isPaused: StateFlow = _isPaused + private val isPaused = _isPaused.asStateFlow() @Suppress("DEPRECATION") override fun startRecording(onRecordingFinished: (AudioRecorderResult) -> Unit) { @@ -70,23 +71,21 @@ class AudioRecorder( prepare() start() + remainingTimeInSeconds = recordingStrategy.maxDuration + amplitudeList.clear() startRecordingUpdates() _isRecording.value = true _isPaused.value = false } } catch (e: IOException) { - val errorMessage = "Error preparing MediaRecorder: ${e.message}" - onRecordingFinished(Error(errorMessage)) + onRecordingFinished(Error("Error preparing MediaRecorder: ${e.message}")) } catch (e: IllegalStateException) { - val errorMessage = "Illegal state when starting recording: ${e.message}" - onRecordingFinished(Error(errorMessage)) + onRecordingFinished(Error("Illegal state when starting recording: ${e.message}")) } catch (e: SecurityException) { - val errorMessage = "Security exception when starting recording: ${e.message}" - onRecordingFinished(Error(errorMessage)) + onRecordingFinished(Error("Security exception when starting recording: ${e.message}")) } } else { - val errorMessage = "Permission to record audio not granted" - onRecordingFinished(Error(errorMessage)) + onRecordingFinished(Error("Permission to record audio not granted")) } } @@ -97,7 +96,7 @@ class AudioRecorder( release() } } catch (e: IllegalStateException) { - Log.e(TAG, "Error stopping recording: ${e.message}") + AppLog.w(AppLog.T.UTILS, "$TAG Error stopping recording: ${e.message}") } finally { recorder = null stopRecordingUpdates() @@ -118,23 +117,25 @@ class AudioRecorder( _isPaused.value = true stopRecordingUpdates() } catch (e: IllegalStateException) { - Log.e(TAG, "Error pausing recording: ${e.message}") + AppLog.w(AppLog.T.UTILS, "$TAG Error pausing recording: ${e.message}") } catch (e: UnsupportedOperationException) { - Log.e(TAG, "Pause not supported on this device: ${e.message}") + AppLog.w(AppLog.T.UTILS, "$TAG Pause not supported on this device: ${e.message}") } } override fun resumeRecording() { - if (isPausedRecording) { + if (_isPaused.value) { coroutineScope.launch { try { - delay(RESUME_DELAY) recorder?.resume() _isPaused.value = false - isPausedRecording = false + val lastRecordingUpdate = recordingUpdates.value + _recordingUpdates.value = lastRecordingUpdate.copy( + amplitudes = amplitudeList.toList() // Continue using the existing list + ) startRecordingUpdates() } catch (e: IllegalStateException) { - Log.e(TAG, "Error resuming recording") + AppLog.w(AppLog.T.UTILS, "$TAG Error resuming recording ${e.message}") } } } @@ -145,19 +146,22 @@ class AudioRecorder( } override fun recordingUpdates(): Flow = recordingUpdates + override fun isRecording(): StateFlow = isRecording + override fun isPaused(): StateFlow = isPaused @Suppress("MagicNumber") private fun startRecordingUpdates() { + var lastUpdateTime = System.currentTimeMillis() recordingJob = coroutineScope.launch { - val startTime = System.currentTimeMillis() - val amplitudeList = mutableListOf() - while (recorder != null) { + while (recorder != null && !_isPaused.value) { delay(RECORDING_UPDATE_INTERVAL) - // Calculate elapsed time in seconds - val elapsedTimeInSeconds = ((System.currentTimeMillis() - startTime) / 1000).toInt() + val currentTime = System.currentTimeMillis() + val elapsedTimeInMillis = currentTime - lastUpdateTime - // Calculate remaining time - val remainingTimeInSeconds = recordingStrategy.maxDuration - elapsedTimeInSeconds + if (elapsedTimeInMillis >= 1000) { + remainingTimeInSeconds -= (elapsedTimeInMillis / 1000).toInt() + lastUpdateTime += (elapsedTimeInMillis / 1000) * 1000 // Reset last update time accurately + } val fileSize = File(filePath).length() val amplitude = recorder?.maxAmplitude?.toFloat() ?: 0f @@ -173,7 +177,7 @@ class AudioRecorder( amplitudes = amplitudeList.toList() ) - if ( maxFileSizeExceeded(fileSize) || maxDurationExceeded(elapsedTimeInSeconds) ) { + if ( maxFileSizeExceeded(fileSize) || durationExceeded(remainingTimeInSeconds) ) { stopRecording() break } @@ -195,16 +199,16 @@ class AudioRecorder( } /** - * Checks if the recording duration has exceeded the specified maximum duration. + * Checks if the recording duration has exceeded the limit. * * @param elapsedTimeInSeconds The elapsed recording time in seconds. - * @return `true` if the elapsed time has exceeded the maximum duration minus the threshold, `false` otherwise. + * @return `true` if the elapsed time has reached zero, `false` otherwise. * If `recordingParams.maxDuration` is set to `-1`, this function always returns `false` indicating * no limit. */ - private fun maxDurationExceeded(elapsedTimeInSeconds: Int): Boolean = when { + private fun durationExceeded(elapsedTimeInSeconds: Int): Boolean = when { recordingStrategy.maxDuration == -1 -> false - else -> elapsedTimeInSeconds >= recordingStrategy.maxDuration - DURATION_THRESHOLD + else -> elapsedTimeInSeconds <= 0 } private fun stopRecordingUpdates() { @@ -214,8 +218,6 @@ class AudioRecorder( companion object { private const val TAG = "AudioRecorder" private const val RECORDING_UPDATE_INTERVAL = 75L // in milliseconds - private const val RESUME_DELAY = 500L // in milliseconds private const val FILE_SIZE_THRESHOLD = 100000L - private const val DURATION_THRESHOLD = 1 } } diff --git a/WordPress/src/main/java/org/wordpress/android/util/audio/IAudioRecorder.kt b/WordPress/src/main/java/org/wordpress/android/util/audio/IAudioRecorder.kt index 78cbd55efbad..6e09062423d9 100644 --- a/WordPress/src/main/java/org/wordpress/android/util/audio/IAudioRecorder.kt +++ b/WordPress/src/main/java/org/wordpress/android/util/audio/IAudioRecorder.kt @@ -2,6 +2,7 @@ package org.wordpress.android.util.audio import android.Manifest import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.StateFlow interface IAudioRecorder { fun startRecording(onRecordingFinished: (AudioRecorderResult) -> Unit) @@ -10,6 +11,8 @@ interface IAudioRecorder { fun resumeRecording() fun recordingUpdates(): Flow fun endRecordingSession() + fun isRecording(): StateFlow + fun isPaused(): StateFlow sealed class AudioRecorderResult { data class Success(val recordingPath: String) : AudioRecorderResult() @@ -22,6 +25,3 @@ interface IAudioRecorder { ) } } - - - diff --git a/WordPress/src/main/res/layout/plugin_detail_activity.xml b/WordPress/src/main/res/layout/plugin_detail_activity.xml index 3f3b8dfcb177..9e91dc731216 100644 --- a/WordPress/src/main/res/layout/plugin_detail_activity.xml +++ b/WordPress/src/main/res/layout/plugin_detail_activity.xml @@ -433,7 +433,9 @@ - + diff --git a/WordPress/src/main/res/values-ar/strings.xml b/WordPress/src/main/res/values-ar/strings.xml index 005306e5e8ae..d7718cbaad54 100644 --- a/WordPress/src/main/res/values-ar/strings.xml +++ b/WordPress/src/main/res/values-ar/strings.xml @@ -1,11 +1,15 @@ + موقع الوسائط + صلاحية تسجيل الصوت مطلوبة + لتسجيل صوت، يحتاج هذا التطبيق إلى صلاحية للوصول إلى الميكروفون الخاص بك. لقد سبق لك رفض هذه الصلاحية. يرجى تمكين صلاحية الميكروفون ضمن إعدادات التطبيق لاستخدام هذه الميزة. + النقر للتحرير إعادة البدء تم تنزيل التحديث. أعد التشغيل للتطبيق. تدوينة من ملف صوتي diff --git a/WordPress/src/main/res/values-de/strings.xml b/WordPress/src/main/res/values-de/strings.xml index 6ef4fbfd9ebe..35d50e17c2df 100644 --- a/WordPress/src/main/res/values-de/strings.xml +++ b/WordPress/src/main/res/values-de/strings.xml @@ -1,11 +1,15 @@ + Zum Bearbeiten tippen + Für eine Audioaufzeichnung benötigt diese App die Berechtigung, auf dein Mikrofon zuzugreifen. Du hast diese Berechtigung kürzlich verweigert. Bitte aktiviere die Mikrofonberechtigung in den App-Einstellungen, um diese Funktion verwenden zu können. + Berechtigung für Audioaufzeichnung erforderlich + Medienstandort Neu starten Update heruntergeladen. Zum Anwenden neu starten. Beitrag aus Audio erstellen diff --git a/WordPress/src/main/res/values-en-rGB/strings.xml b/WordPress/src/main/res/values-en-rGB/strings.xml index afa094cc8bc3..45c2574bfb6e 100644 --- a/WordPress/src/main/res/values-en-rGB/strings.xml +++ b/WordPress/src/main/res/values-en-rGB/strings.xml @@ -6,330 +6,330 @@ Generator: GlotPress/4.0.1 Language: en_GB --> - Media location - Audio Recording Permission Required - To record audio, this app needs permission to access your microphone. You have previously denied this permission. Please enable the microphone permission in the app settings to use this feature. Tap to edit - Choose colours and fonts that suit you. When you’re reading a post, tap the AA icon at the top of the screen. - Tags - More from %s - No posts found for %s - We couldn\'t load posts from this tag right now - We couldn\'t find any posts tagged %s right now - Retry - open post - open blog - like post - remove post like - open menu - Post from audio - Update downloaded. Restart to apply. + To record audio, this app needs permission to access your microphone. You have previously denied this permission. Please enable the microphone permission in the app settings to use this feature. + Audio Recording Permission Required + Media location Restart + Update downloaded. Restart to apply. + Post from audio + open menu + remove post like + like post + open blog + open post + Retry + We couldn\'t find any posts tagged %s right now + We couldn\'t load posts from this tag right now + No posts found for %s + More from %s + Tags + Choose colours and fonts that suit you. When you’re reading a post, tap the AA icon at the top of the screen. Reading Preferences - Unable to load this content right now - Check your network connection and try again. - Your tags - New in Reader - Tags stream Tap the dropdown at the top and select Tags to access streams from your followed tags. + Tags stream + New in Reader + Your tags + Check your network connection and try again. + Unable to load this content right now Subscribers Subscriber Subscriber growth Subscriber - Couldn\'t retrieve site subscribers - Couldn\'t retrieve site email subscribers - Couldn\'t remove subscriber - No camera app available. - %s: already subscribed - Subscribers - Email subscribers - No subscribers yet - No email subscribers yet Email subscriber - No subscribers yet - Subscribers - Subscribers - Site subscriptions - No app found to handle the request to add to calendar + No email subscribers yet + No subscribers yet + Email subscribers + Subscribers + %s: already subscribed + No camera app available. + Couldn\'t remove subscriber + Couldn\'t retrieve site email subscribers + Couldn\'t retrieve site subscribers Unable to add to calendar - Clicks - %1$s: %2$s, %3$s: %4$s, %5$s: %6$s - Subscriber totals - Total subscribers - Subscribers + No app found to handle the request to add to calendar + Site subscriptions + Subscribers + Subscribers + No subscribers yet Emails - Total %1$s subscribers: %2$s - Subscriber - Subscribers - Name - Subscriber since - Latest emails + Subscribers + Total subscribers + Subscriber totals + %1$s: %2$s, %3$s: %4$s, %5$s: %6$s + Clicks Opens + Latest emails + Subscriber since + Name + Subscribers + Subscriber + Total %1$s subscribers: %2$s There is a revision of this page that is more recent - Subscribers Updating content - Last week you had %1$s views, 1 like, and 1 comment. - Last week you had %1$s views and 1 like + Subscribers Last week you had %1$s views and 1 comment - The post was modified on another device. Please select the version of the post to keep. - The page was modified on another device. Please select the version of the page to keep. - Current device - Another device - Autosave Available - You\'ve made unsaved changes to this post from a different device. Please select the version of the post to keep. - You\'ve made unsaved changes to this page from a different device. Please select the version of the page to keep. - Edit pins - Pinned sites - All sites - Recent sites - Last week you had %1$s views, 1 like, and %2$s comments. + Last week you had %1$s views and 1 like + Last week you had %1$s views, 1 like, and 1 comment. Last week you had %1$s views, %2$s likes, and 1 comment. + Last week you had %1$s views, 1 like, and %2$s comments. + Recent sites + All sites + Pinned sites + Edit pins + You\'ve made unsaved changes to this page from a different device. Please select the version of the page to keep. + You\'ve made unsaved changes to this post from a different device. Please select the version of the post to keep. + Autosave Available + Another device + Current device + The page was modified on another device. Please select the version of the page to keep. + The post was modified on another device. Please select the version of the post to keep. Resolve Conflict - <Experimental> - send your feedback - Colour Scheme - Font - Font Size - Extra small - Small - Normal - Large Extra large - You\'re already following this tag - No followed tags + Large + Normal + Small + Extra small + Font Size + Font + Colour Scheme + send your feedback + <Experimental> Clear selected colour - Choose your colours, fonts, and sizes. Preview your selection here, and read posts with your styles once you’re done. - This is a new feature still in development. To help us improve it %s. - send your feedback - Default - Soft - Sepia - Evening - OLED - h4x0r - Candy - Followed tags + No followed tags + You\'re already following this tag Reading Preferences + Followed tags + Candy + h4x0r + OLED + Evening + Sepia + Soft + Default + send your feedback + This is a new feature still in development. To help us improve it %s. + Choose your colours, fonts, and sizes. Preview your selection here, and read posts with your styles once you’re done. Reading Preferences Follow a tag Read - Button to copy error details - Button to copy post text - Copy error details - Copy post text - Tap here to copy error details - Tap here to copy post text - The editor has encountered an unexpected error You can copy your post text in case your content is impacted. Copy error details to debug and share with support. + The editor has encountered an unexpected error + Tap here to copy post text + Tap here to copy error details + Copy post text + Copy error details + Button to copy post text + Button to copy error details Failed to update content - Unread - Mark all as read - Autoplay may cause usability issues for some users. - Edit video - Video caption. Empty Video caption. %s - Your WordPress.com profile is powered by Gravatar - Updating your avatar, name, and about info here will also update it across all sites that use Gravatar profiles. - What is Gravatar? - Updates might take some time to sync with your Gravatar profile. - Done + Video caption. Empty + Edit video + Autoplay may cause usability issues for some users. + Mark all as read + Unread Site not found. Check that you are logged into the correct account. + Done + Updates might take some time to sync with your Gravatar profile. + What is Gravatar? + Updating your avatar, name, and about info here will also update it across all sites that use Gravatar profiles. + Your WordPress.com profile is powered by Gravatar Unable to load the media for sharing. Please check the app\'s permissions\n or use the app\'s media library. We cannot open site monitoring at the moment. Please try again later - Subscribe to blogs in Discover or search for a blog that you like already. - The blogs you\'re subscribed to haven\'t posted anything recently - Go to subscriptions - Use <b>Discover</b> to find sites and tags. Try selecting <b>Subscriptions</b> to view subscribed content and manage your subscriptions. - Site monitoring - Metrics - PHP logs Web Server Logs - Unable to subscribe to this blog - You are not authorised to access this blog - Unable to unsubscribe from blog - Posts from this blog will no longer be shown - Unable to block this blog - No posts with this tag + PHP logs + Metrics + Site monitoring + Use <b>Discover</b> to find sites and tags. Try selecting <b>Subscriptions</b> to view subscribed content and manage your subscriptions. + Go to subscriptions + The blogs you\'re subscribed to haven\'t posted anything recently + Subscribe to blogs in Discover or search for a blog that you like already. No recommended blogs - 1 subscriber - Choose your interests - Unable to show this blog + No posts with this tag + Unable to block this blog + Posts from this blog will no longer be shown + Unable to unsubscribe from blog + You are not authorised to access this blog + Unable to subscribe to this blog You are already subscribed to this blog - Subscribed - Reader Blog - Tag - Manage Tags and Blogs - Follow tags - Subscribed blogs - Edit tags and blogs - Block this blog - Subscribe - Subscribed - Search subscribed blogs - Blog subscribed - %,d subscribers + Unable to show this blog + Choose your interests + 1 subscriber %s subscribers - Search for a blog - Suggested tags - Blogs to which to subscribe - Search - Discover - Subscriptions - Saved - Liked - Automattic - Lists - 0 blogs - 1 blog - %d blogs - 0 tags - 1 tag + %,d subscribers + Blog subscribed + Search subscribed blogs + Subscribed + Subscribe + Block this blog + Edit tags and blogs + Subscribed blogs + Follow tags + Manage Tags and Blogs + Tag + Reader Blog + Subscribed %d tags + 1 tag + 0 tags + %d blogs + 1 blog + 0 blogs + Lists + Automattic + Liked + Saved + Subscriptions + Discover + Search Follow tags + Blogs to which to subscribe + Suggested tags + Search for a blog Follow a tag and you’ll be able to see the best posts from it here. - Subscribe to blogs in Discover and you’ll see their latest posts here. Or search for a blog that you like already. No tags - Filter by blog - Filter by tag - See the newest posts from blogs to which you\'re subscribed - Subscribe to a blog + Subscribe to blogs in Discover and you’ll see their latest posts here. Or search for a blog that you like already. No blog subscriptions - Traffic - Waiting for connection - File type not supported as a media file. - Font size, %1$s - Network connection lost, working offline - Network connection re-established + Subscribe to a blog + See the newest posts from blogs to which you\'re subscribed + Filter by tag + Filter by blog + Waiting for connection + Traffic Working offline - %s - Primary domain - Other domains for %s - Your free WordPress.com domain - Never expires - Get a free one-year domain registration or transfer with any annual paid plan. - Upgrade to a plan - Just search for a domain + Network connection re-established + Network connection lost, working offline + Font size, %1$s + File type not supported as a media file. We cannot open media at the moment. Please try again later + Just search for a domain + Upgrade to a plan + Get a free one-year domain registration or transfer with any annual paid plan. + Never expires + Your free WordPress.com domain + Other domains for %s + Primary domain + %s Bloganuary is here! - Bloganuary will use Daily Blogging Prompts to send you topics for the month of January. You have Blogging Prompts currently disabled. - Bloganuary will use Daily Blogging Prompts to send you topics for the month of January. - Turn on blogging prompts Let’s go! + Turn on blogging prompts + Bloganuary will use Daily Blogging Prompts to send you topics for the month of January. + Bloganuary will use Daily Blogging Prompts to send you topics for the month of January. You have Blogging Prompts currently disabled. Read other bloggers’ responses to get inspiration and make new connections. - Bloganuary is coming! - For the month of January, blogging prompts will come from Bloganuary – our community challenge to build a blogging habit for the new year. - Bloganuary - Join our month-long writing challenge - Receive a new prompt to inspire you each day. Publish your response. - You have permanently denied camera permission. It is required in order to scan the barcode. Please enable it from the app settings - Grant - Cancel - Go to settings - Alternatively, you can flatten the content by ungrouping the block. - For this reason, we recommend editing the block using the web editor. + Receive a new prompt to inspire you each day. + Join our month-long writing challenge + Bloganuary + For the month of January, blogging prompts will come from Bloganuary – our community challenge to build a blogging habit for the new year. + Bloganuary is coming! For this reason, we recommend editing the block using your web browser. - Blocks nested deeper than %d levels may not render properly in the mobile editor. - Scan Barcode - Camera permission is required to scan the barcode. - Grant Camera Permission + For this reason, we recommend editing the block using the web editor. + Alternatively, you can flatten the content by ungrouping the block. + Go to settings + Cancel + Grant + You have permanently denied camera permission. It is required in order to scan the barcode. Please enable it from the app settings Camera permission is required in order to scan the barcode - Clear search - It\'s time to continue your WordPress journey on the Jetpack app. + Grant Camera Permission + Camera permission is required to scan the barcode. + Scan Barcode + Blocks nested deeper than %d levels may not render properly in the mobile editor. Let\'s go + It\'s time to continue your WordPress journey on the Jetpack app. + Clear search Very High Please provide your security key to continue. There was some trouble with the Security key login Use a security key - %s / year - %s for the first year - All Couldn\'t retrieve domains - Couldn\'t retrieve your domains - Error - From <b>Bloganuary</b> + %s for the first year + %s / year + Transfer domain Looking to transfer a domain you already own? - OK + Type to get more suggestions Search for a domain - Site Domain + OK Something went wrong while adding the domain to the basket. Make sure you are online and retry. - Transfer domain - Type to get more suggestions + Error + All + Couldn\'t retrieve your domains + Site Domain + From <b>Bloganuary</b> Edited Filter by author \'%s\' block converted to blocks - *A free domain for one year is included with all paid annual plans. - Active Shortcuts - Add or Remove shortcuts Alternatively, you can convert the content to blocks. - Cards - Choose Site + Add or Remove shortcuts Inactive Shortcuts + Active Shortcuts Shortcuts + Cards + *A free domain for one year is included with all paid annual plans. + Choose Site Use with a site you already started. - Add a site later. - All Domains - Check that you\'re online and pull to refresh. - Choose how to\nuse your domain - Choose how to use your domain - Don\'t worry, you can easily add a site later. Existing WordPress.com site - Expires %1$s - Find a domain Get Domain + Add a site later. Just buy a domain - Open domain details - Purchase a domain + Don\'t worry, you can easily add a site later. + Choose how to\nuse your domain + Choose how to use your domain Purchase Domain - Search your domains + Find a domain Tap below to find your perfect domain. You don\'t have any domains + Check that you\'re online and pull to refresh. + Open domain details + Search your domains + Purchase a domain + All Domains + Expires %1$s Account and Settings - Free for the first year with annual paid plans Select a plan - Save + Free for the first year with annual paid plans Saved + Save You might like - Blocks nested deeper than %d levels may not render properly in the mobile editor. For this reason, we recommend flattening the content by ungrouping the block or editing the block using the web editor. - Deeply nested block - Synced patterns - Tap here to show more details. Ungroup block + Tap here to show more details. + Synced patterns + Deeply nested block + Blocks nested deeper than %d levels may not render properly in the mobile editor. For this reason, we recommend flattening the content by ungrouping the block or editing the block using the web editor. Block cannot be rendered because it is deeply nested. Tap here for more details. Uh oh, something went wrong. Please try again later. Go to web Tap the personalise button to show more cards. All cards are hidden - Blogging prompts - Cards may show different content depending on what\'s happening with your site - Daily ideas for your blog posts. - Draft posts Learn how to make the most of your site with the app. + Recent actions taken on your site. Overview of your site pages. + Daily ideas for your blog posts. + Blogging prompts Promote a post and see current campaigns. - Recent actions taken on your site. + Your upcoming scheduled posts. Scheduled posts - Views, Visitors and likes Your recent draft posts. - Your upcoming scheduled posts. - Personalise home tab + Draft posts + Views, Visitors and likes + Cards may show different content depending on what\'s happening with your site Add or hide Cards - Change Settings - Only selected photos and videos you’ve given access to are available. + Personalise home tab + Tap to personalise your home tab Personalise your home tab + Change Settings Select More - Tap to personalise your home tab - Add image or video + Only selected photos and videos you’ve given access to are available. + View all campaigns All activity All pages Choose a file - View all campaigns - View all drafts + Add image or video View all scheduled posts - Hi there, I\'m the Jetpack AI Assistant. + View all drafts + View stats Hide this If I can\'t answer your question, I\'ll help you open a support ticket with our team! - View stats + Hi there, I\'m the Jetpack AI Assistant. Access this Paywall block on your web browser for advanced settings. Answer: Question: @@ -337,28 +337,28 @@ Language: en_GB Error submitting support ticket Ticket created Creating support ticket… - What can I help you with? - Send a message… How can I use my custom domain in the app? I forgot my login information + Why can\'t I log in? I can\'t upload photos/videos Help, my site is down! What is my site address? Not sure what to ask? Contact support - Why can\'t I log in? + What can I help you with? + Send a message… Clear %1$d social shares remaining - Connect accounts - Social sharing - Social sharing - Social CLOSE The app WordPress is missing required components and must be reinstalled from the Google Play Store. Installation failed Something went wrong Something went wrong Something went wrong, could not fetch campaigns + Connect accounts + Social sharing + Social sharing + Social Sharing to %1$d accounts Sharing to %1$d of %2$d accounts Sharing to %1$s @@ -367,19 +367,10 @@ Language: en_GB Customise the message Not now Connect accounts - Insert Audio Block Insert Video Block Insert Image Block Insert Gallery Block - Blaze Campaign - The blaze promote flow couldn\'t be loaded - Create Campaign - Increase your traffic by auto-sharing your posts with your friends on social media. - Close editor - Redo last change - Undo last change - 1 social share remaining - Subscribe to share more + Insert Audio Block Create You have not created any campaigns yet. Click create to get started. You have no campaigns @@ -394,6 +385,15 @@ Language: en_GB REJECTED COMPLETED ACTIVE + Create Campaign + Blaze Campaign + The blaze promote flow couldn\'t be loaded + Increase your traffic by auto-sharing your posts with your friends on social media. + Close editor + Redo last change + Undo last change + 1 social share remaining + Subscribe to share more Increase your traffic by auto-sharing your posts with your friends on social media. Social Sharing %s detached @@ -409,309 +409,309 @@ Language: en_GB Your privacy is critically important to us and always has been. We use, store, and process your personal data to optimise our app (and your experience) in various ways. Some uses of your data we absolutely need in order to make things work, and others you can customise from your Settings. Me. Manage your profile details. Message - Account closed. - All ready to go! - An error occurred while closing account. - Block grouped Block ungrouped - Free domain with annual plan - Get a free domain for the first year, remove ads on your site, and increase your storage. - Homepage + Block grouped It may take up to 30 minutes for your domain to start working properly. + Your new domain <b>%s</b> is being set up. + All ready to go! + Get a free domain for the first year, remove ads on your site, and increase your storage. + Free domain with annual plan Learn more about templates + Your homepage is using a Theme template and will open in the web editor. + Homepage + Account closed. + An error occurred while closing account. This user account cannot be closed while it has active purchases. This user account cannot be closed while it has active subscriptions. - Your homepage is using a Theme template and will open in the web editor. - Your new domain <b>%s</b> is being set up. - Confirm Close Account… This user account cannot be closed if there are unresolved chargebacks. This user account cannot be closed immediately because it has active purchases. Please contact our support team to finish deleting the account. You\'re not authorised to close the account. Couldn\'t close account automatically! - Close Account + Confirm Close Account… To confirm, please re-enter your username before closing. + Close Account Find out more - Twitter auto-sharing is no longer available Twitter auto-sharing is no longer available due to Twitter\'s changes in terms and pricing. + Twitter auto-sharing is no longer available Editing reusable blocks is not yet supported on %s for iOS - Allow notifications to keep up with your site Editing reusable blocks is not yet supported on %s for Android + Allow notifications to keep up with your site The Jetpack app has all the WordPress app’s functionality, and now exclusive access to Stats, Reader, Notifications and more. - Use WordPress with %s in the Jetpack\u00A0app. Use WordPress with %s in the Jetpack\u00A0app. - Like the example above, a domain allows people to find and visit your site from their web browser. - Recent activity + Use WordPress with %s in the Jetpack\u00A0app. Unlabeled colour. %s + Recent activity + Like the example above, a domain allows people to find and visit your site from their web browser. YourSiteName.com + Search with keywords + Search for a short and memorable domain to help people find and visit your site. for the first year + Your website has been created successfully, but we encountered an issue while preparing your custom domain for checkout. Please try again or contact support for assistance. It may take up to 30 minutes for your custom domain to start working. - Search for a short and memorable domain to help people find and visit your site. - Search with keywords We’ve emailed your receipt. %s - Your website has been created successfully, but we encountered an issue while preparing your custom domain for checkout. Please try again or contact support for assistance. App notifications have been disabled. Tap here to enable them. + We recommend <b>uninstalling the WordPress app</b> on your device to avoid data conflicts. It looks like you still have the WordPress app installed. + You no longer need the WordPress app on your device We recommend <b>uninstalling the WordPress app</b> on your device to avoid data conflicts. - We recommend <b>uninstalling the WordPress app</b> on your device to avoid data conflicts. Welcome to the Jetpack app. You can uninstall the WordPress app. - You no longer need the WordPress app on your device - Privacy and Rating Remove blocks - Add Pages to your site - Create Another Page - Describe the purpose of the image. Leave empty if decorative. - Dynamic - Manual - Playback Bar Colour + Privacy and Rating Playback Settings + Playback Bar Colour + Manual + Dynamic + Describe the purpose of the image. Leave empty if decorative. Start with bespoke, mobile-friendly layouts + Create Another Page + Add Pages to your site To use blogging reminders, you\'ll need to turn on push notifications. - %s needs permission to access your audios - %s needs permission to access your music, audio, photos and videos - %s needs permission to access your photos - %s needs permission to access your photos and videos - %s needs permission to access your videos + Turn on push notifications Continue with subdomain + Purchase domain + Photos and videos & Music and audio Music and audio Photos and videos - Photos and videos & Music and audio - Purchase domain + %s needs permission to access your audios + %s needs permission to access your videos + %s needs permission to access your photos + %s needs permission to access your photos and videos + %s needs permission to access your music, audio, photos and videos Turn on notifications - Turn on push notifications Go to Settings → Notifications → App Settings, and turn %1$s on to be notified immediately. - Dismiss notification permission warning. - Fix + You\'ll need to open the app to see notifications. Push notifications are turned off Push notifications are turned off. - You\'ll need to open the app to see notifications. + Dismiss notification permission warning. + Fix <b>%1$s</b> is using %2$s individual Jetpack plugins <b>%1$s</b> is using the <b>%2$s</b> plugin Sites with individual Jetpack plugins aren’t supported by the WordPress app. <b>%1$s</b> is using individual Jetpack plugins, which aren’t supported by the WordPress app. <b>%1$s</b> is using the <b>%2$s</b> plugin, which isn’t supported by the WordPress app. - Please switch to the Jetpack app where we’ll guide you through connecting the full Jetpack plugin to use this site with the app. - Unable to access one of your sites Unable to access some of your sites + Unable to access one of your sites + Please switch to the Jetpack app where we’ll guide you through connecting the full Jetpack plugin to use this site with the app. Switch to the Jetpack app %1$s is using %2$s, which doesn’t support all features of the app yet.\n\nPlease install the %3$s to use the app with this site. - %1$s is using %2$s, which don’t support all features of the app yet. Please install the %3$s. This site + %1$s is using %2$s, which don’t support all features of the app yet. Please install the %3$s. %1$s is using %2$s, which doesn’t support all features of the app yet. Please install the %3$s. Switching is free and only takes a minute. - Content - Done Learn more at Jetpack.com - Manage - Now that Jetpack is installed, we just need to get you set up. This will only take a minute. - Set up Switch to the Jetpack app - Traffic WP Admin + Manage + Traffic + Content + Set up + Done + Now that Jetpack is installed, we just need to get you set up. This will only take a minute. Blaze a Post now Blaze this Page Blaze this Post Track performance, start, and stop your Blaze at any time. - Best Alternative - Blaze - Drive more traffic to your site with Blaze - Free - Help - Help - Logs + Your content will appear on millions of WordPress and Tumblr sites. Promote any post or page in only a few minutes for just a few dollars a day. - Recommended + Drive more traffic to your site with Blaze + Blaze + This domain is already registered Sale + Recommended + Best Alternative + per year + Help See our FAQ for answers to common questions you may have. Thank you for switching to the Jetpack app! - This domain is already registered + Logs Tickets - Your content will appear on millions of WordPress and Tumblr sites. - per year + Free + Help Blocks menu - By setting up Jetpack you agree to our + Display your work across millions of sites. + Promote your content with Blaze Close Contact support - Display your work across millions of sites. Install the full plugin - Promote your content with Blaze Terms and conditions + By setting up Jetpack you agree to our full Jetpack plugin individual Jetpack plugins the %1$s plugin %1$s is using %2$s, which don’t support all features of the app yet.\n\nPlease install the %3$s to use the app with this site. - Only one site is available, so you can\'t change your primary site. Please install the full Jetpack plugin + Only one site is available, so you can\'t change your primary site. Contact Support - Error icon - Jetpack could not be installed at this time. Retry + Jetpack could not be installed at this time. There was a problem - Promote with Blaze + Error icon + Ready to use this site with the app. + Jetpack installed + Installing Jetpack on your site. This can take up to a few minutes to complete. + Installing Jetpack Continue + Your website credentials will not be stored and are used only for the purpose of installing Jetpack. Install Jetpack - Installing Jetpack - Installing Jetpack on your site. This can take up to a few minutes to complete. Jetpack icon - Jetpack installed - Ready to use this site with the app. - Your website credentials will not be stored and are used only for the purpose of installing Jetpack. + Promote with Blaze Unlock your site’s full potential. Get stats, notifications and more with Jetpack. Your site has the Jetpack plugin + The Jetpack mobile app is designed to work in companion with the Jetpack plugin. Switch now to get access to stats, notifications, reader, and more. Get notifications for new comments, likes, views, and more. Find and follow your favourite sites and communities, and share you content. Watch your traffic grow with helpful insights and comprehensive stats. - The Jetpack mobile app is designed to work in companion with the Jetpack plugin. Switch now to get access to stats, notifications, reader, and more. Stats & Insights - Blogging Prompts hidden - Visit <b>Site Settings</b> to turn back on - Notification will include a word or short phrase for inspiration + Jetpack lets you do more with your WordPress site. Switching is free and only takes a minute. Give WordPress a boost with Jetpack You can control Blogging Prompts and Reminders at any time in My Site > Settings > Blogging - Jetpack lets you do more with your WordPress site. Switching is free and only takes a minute. + Notification will include a word or short phrase for inspiration + Visit <b>Site Settings</b> to turn back on + Blogging Prompts hidden Turn off prompts Get help from our group of volunteers. Community forums Blogging reminders Show prompts Blogging + Please install Google Play Store to get the Jetpack app + Do this later + Switch to Jetpack + Stats, Reader, Notifications and other Jetpack powered features have been removed from the WordPress app. + Jetpack features have moved. %1$s are moving in %2$s - %1$s are moving soon %1$s is moving in %2$s + %1$s are moving soon %1$s is moving soon - Do this later - Jetpack features have moved. - Please install Google Play Store to get the Jetpack app - Stats, Reader, Notifications and other Jetpack powered features have been removed from the WordPress app. - Switch to Jetpack - %1$s higher than the previous 7 days - %1$s lower than the previous 7 days - %d weeks - 1 week Get the Jetpack app - Last 7 days - Previous 7 days View all responses - Your views in the last 7 days are %1$s higher than the previous 7 days. - Your views in the last 7 days are %1$s lower than the previous 7 days. - Your visitors in the last 7 days are %1$s higher than the previous 7 days. + %1$s lower than the previous 7 days + %1$s higher than the previous 7 days Your visitors in the last 7 days are %1$s lower than the previous 7 days. + Your visitors in the last 7 days are %1$s higher than the previous 7 days. + Your views in the last 7 days are %1$s lower than the previous 7 days. + Your views in the last 7 days are %1$s higher than the previous 7 days. + Previous 7 days + Last 7 days + %d weeks + 1 week From <b>Day One</b> - Learn more at jetpack.com Remind me later - Stats, Reader, Notifications and other Jetpack-powered features will be removed from the WordPress app on %s. - Stats, Reader, Notifications and other Jetpack-powered features will be removed from the WordPress app soon. + Stats, Reader, Notifications and other features will soon move to the Jetpack mobile app. Switch to the Jetpack app + Learn more at jetpack.com Switching is free and only takes a minute. - Stats, Reader, Notifications and other features will soon move to the Jetpack mobile app. - %d answers - 0 answers - 1 answer + Stats, Reader, Notifications and other Jetpack-powered features will be removed from the WordPress app soon. + Stats, Reader, Notifications and other Jetpack-powered features will be removed from the WordPress app on %s. Jetpack features are moving soon. - No prompts yet Notifications are moving to Jetpack - Oops Reader is moving to the Jetpack app + Your stats are moving to the Jetpack app Switch to the new Jetpack app There was an error loading prompts. - Your stats are moving to the Jetpack app + Oops + No prompts yet + %d answers + 1 answer + 0 answers ✓ Answered - close Prompts + close Alternatively, you can detach and edit this block separately by tapping “Detach”. + Permanently delete \'%s\' Category? Category deleted successfully Deleting category failed - Permanently delete \'%s\' Category? Deleting category - Update category Updating category - Block user + Update category Posts from this user will no longer be shown + Block user Report this user - Continue without Jetpack - Create a new WordPress site with the Jetpack app + Open links in WordPress It looks like you have the Jetpack app installed.\n\nWould you like to open links in the Jetpack app in the future?\n\nYou can always change this in App Settings > Open links in Jetpack + Open links in Jetpack? + Continue without Jetpack Jetpack provides stats, notifications and more to help you build and grow the WordPress site of your dreams.\n\nThe WordPress app no longer supports creating a new site. Jetpack provides stats, notifications and more to help you build and grow the WordPress site of your dreams. - Open links in Jetpack? - Open links in WordPress - Switch to the Jetpack app to keep receiving realtime notifications on your device. - urilinks + Create a new WordPress site with the Jetpack app weblinks + urilinks + Switch to the Jetpack app to keep receiving realtime notifications on your device. Switch to the Jetpack app to find, follow, and like all your favourite sites and posts with Reader. Switch to the Jetpack app to watch your site’s traffic grow with stats and insights. - Follow any site with the Jetpack app Get your notifications with the Jetpack app + Follow any site with the Jetpack app Get your stats using the new Jetpack app - Got it - Need help? - Open links in Jetpack Unable to disable open links in Jetpack Unable to enable open links in Jetpack + Open links in Jetpack + Need help? + Got it + We are unable to transfer your data and settings without a network connection. Please check to make sure your network connection is working and try again. - Please contact support or try again later. Unable to connect to the internet. - We are unable to transfer your data and settings without a network connection. + Please contact support or try again later. We’re sorry but something didn’t go as planned. Your data is safe, but we’re unable to transfer it at this time. + Uh oh, something went wrong.. + Try again Finish Remove WordPress App icon - Try again - Uh oh, something went wrong.. We’ve transferred all your data and settings. Everything is right where you left it. Thanks for switching to Jetpack! We\'ll turn off notifications from the WordPress app. You’ll get all the same notifications but now they’ll come from the Jetpack app. + WordPress help centre + Support Allows the app to disable WordPress notifications. disable WordPress notifications - Support - WordPress help centre - Continue - It looks like you’re switching from the WordPress app. Need help? + Continue We found your site. Continue to transfer all your data and sign in to Jetpack automatically. We found your sites. Continue to transfer all your data and sign in to Jetpack automatically. Your profile photo + It looks like you’re switching from the WordPress app. Welcome to Jetpack! icon - Page Attributes Parent Page + Page Attributes Contribute News 1 answer WordPress icon Write, edit, and publish from anywhere. - Author Couldn\'t retrieve authors + Author Enjoying %s? - Jetpack Social Connections + Share post to %s Jetpack Social Connections Please log in to the Jetpack app to add a widget. - Share post to %s - Check your email on this device! + Jetpack Social Connections We just sent a magic link to - Find, follow, and like all your favourite sites and posts with Reader, now available in the new Jetpack app. - Notifications are powered by Jetpack - Reader is powered by Jetpack - Stats are powered by Jetpack - Stay informed with realtime updates for new comments, site traffic, security reports and more. + Check your email on this device! Use password to sign in + Stay informed with realtime updates for new comments, site traffic, security reports and more. + Notifications are powered by Jetpack Watch your traffic grow and learn about your audience with redesigned Stats and Insights, now available in the new Jetpack app. + Stats are powered by Jetpack + Find, follow, and like all your favourite sites and posts with Reader, now available in the new Jetpack app. + Reader is powered by Jetpack The new Jetpack app has Stats, Reader, Notifications, and more that make your WordPress better. WordPress is better with Jetpack + Upgrade your plan to use video covers + Upgrade your plan to upload audio + Jetpack powered + Invalid URL. + Gradient Continue to Notifications - Continue to Reader Continue to Stats - Gradient - Invalid URL. - Jetpack powered - Upgrade your plan to upload audio - Upgrade your plan to use video covers + Continue to Reader Try the new Jetpack app Problem displaying block. \nTap to attempt block recovery. - ⭐️ Your latest post %1$s has received %2$s like. Last week, you had %1$s views and %2$s comments Last week, you had %1$s views and %2$s likes Last week, you had %1$s views. Last week, you had %1$s views, %2$s likes, and %3$s comments. + ⭐️ Your latest post %1$s has received %2$s like. Jetpack powered Image indicating scan log-in code in process Image indicating an error @@ -771,8 +771,8 @@ Language: en_GB Scan Log-in Code ⭐️ Your latest post %1$s has received %2$s likes. Not enough activity. Check back later when your site\'s had more visitors! - %1$s (%2$s%%) %1$s, %2$s%% of total subscribers + %1$s (%2$s%%) Copy link Congrats! You know your way around<br/> Get to know the app @@ -835,11 +835,6 @@ Language: en_GB Replace current featured image? Dismiss We’ll be removing the Classic Editor for new posts soon, but this won’t affect editing any of your existing posts or pages. Get a head start by enabling the Block Editor now in site settings. - No - Yes - Cancel - OK - http(s):// Try the new Block Editor Edit %s block Saving @@ -847,8 +842,11 @@ Language: en_GB Remove upload Retry Couldn\'t upload file - OK - Please wait until all files have been saved + No + Yes + Cancel + OK + http(s):// Insert link Beta Editor is still loading @@ -859,6 +857,8 @@ Language: en_GB Pick a media from gallery Take Photo or Video with camera %dpx + OK + Please wait until all files have been saved Files saving Content Cast the movie of your life. @@ -867,28 +867,16 @@ Language: en_GB Note: We’ll show you a new prompt each day on your dashboard to help get those creative juices flowing! The best way to become a better writer is to build a writing habit and share with others - that’s where Prompts come in! - Posting regularly attracts new readers. Tell us when you want to write and we’ll send you a reminder! + Introducing\nBlogging Prompts Set reminders Include a Blogging Prompt - Introducing\nBlogging Prompts + Posting regularly attracts new readers. Tell us when you want to write and we’ll send you a reminder! Become a better writer by building a habit Writing & Poetry Travel Technology Sports Real Estate - Lifestyle - Interior Design - Health - Gaming - Food - Fitness & Exercise - Film & Television - Finance - Fashion - DIY - Education - Community & Non-Profit Politics Photography Personal @@ -897,206 +885,218 @@ Language: en_GB News Music Local Services - Automotive - Art - Site topic - Tap <b>%1$s</b> to continue. - View more prompts + Lifestyle + Interior Design + Health + Gaming + Food + Fitness & Exercise + Film & Television + Finance + Fashion + DIY + Education + Community & Non-Profit Business Books Beauty + Automotive + Art E.g. Fashion, Poetry, Politics + Site topic + Tap <b>%1$s</b> to continue. Skip for today + View more prompts + %d answers Share blogging prompt ✓ Answered - %d answers Answer prompt Prompts All This colour combination may be hard for people to read. Try using a brighter background colour and/or a darker text colour. - Failed to insert media.\nTap for more info. This colour combination may be hard for people to read. Try using a darker background colour and/or a brighter text colour. - What’s your website about? + Failed to insert media.\nTap for more info. Choose a topic from the list below or type your own. - Adding category - Home + What’s your website about? Weekly Roundup - There was a problem communicating with the site. An HTTP error code 401 was returned. + Home + Adding category Which email app do you use? - Unable to read the WordPress site at that URL. Tap on help icon to view the FAQ. + There was a problem communicating with the site. An HTTP error code 401 was returned. XML-RPC calls seem blocked on this site (error code 401). If attempt to log in fails, tap on help icon to view the FAQ. + Unable to read the WordPress site at that URL. Tap on help icon to view the FAQ. XML-RPC services are disabled on this site. Menu Your search includes characters not supported in WordPress.com domains. The following characters are allowed: A–Z, a–z, 0–9. - An error occurred while updating the notification content - Today\'s Stats Check your internet connection and refresh the page. + Today\'s Stats + An error occurred while updating the notification content Edit - Mark as spam - Move to bin Failed to moderate comments + Move to bin + Mark as spam Unapprove - Navigates to layout selection screen Tiled gallery settings + Navigates to layout selection screen Gallery style You can connect your %s account on the WordPress.com website. When you\'re done, return to the app to change your Social settings. - WordPress - Automattic logo - Back icon App icon - Work from anywhere - Terms of service - Privacy policy - Source code - Day One - Jetpack - Pocket Casts - Simplenote - Tumblr + Back icon + Automattic logo + WordPress WooCommerce - You can edit this block using the web version of the editor. - Share with friends - Rate us - Instagram - Twitter - Legal and more - Automattic family + Tumblr + Simplenote + Pocket Casts + Jetpack + Day One + Source code + Privacy policy + Terms of service + Work from anywhere Work with us - Note: you must allow WordPress.com login to edit this block in the mobile editor. + Automattic family + Legal and more + Twitter + Instagram + Rate us + Share with friends + You can edit this block using the web version of the editor. Open Jetpack security settings - We\'re having trouble loading your site\'s data at the moment. - ADD MEDIA - Address settings + Note: you must allow WordPress.com login to edit this block in the mobile editor. Note: layout may vary between themes and screen sizes - Video not uploaded! Uploading videos longer than five minutes requires a paid plan. - Couldn\'t update dashboard. - The dashboard is not updated. Please check your connection and then pull to refresh. + Address settings + ADD MEDIA + We\'re having trouble loading your site\'s data at the moment. Some data hasn\'t loaded - California privacy notice + The dashboard is not updated. Please check your connection and then pull to refresh. + Couldn\'t update dashboard. + Video not uploaded! Uploading videos longer than five minutes requires a paid plan. Acknowledgements - Double tap to select font size - Font size - Get support - More support options - Selected: default - The basics - Blog - About %1$s - Legal and more - Acknowledgements + California privacy notice Version %1$s - There was an error getting post data - View all comments - Be the first to comment - Follow conversation - %1$s (%2$s) - Contact support + Acknowledgements + Legal and more + About %1$s + Blog + The basics + Selected: default + More support options + Get support + Font size + Double tap to select font size Double tap to select default font size - Follow conversation settings + Contact support + %1$s (%2$s) + Follow conversation + Be the first to comment + View all comments + There was an error getting post data There was an error getting comments - About WordPress - Copy URL from the clipboard, %s - Featured image + Follow conversation settings From clipboard - Copy link - Author - Link copied to clipboard - Switched to HTML mode - Switched to visual mode - Create your next post - Posting regularly helps build your audience! + Featured image + Copy URL from the clipboard, %s + About WordPress Create a post + Posting regularly helps build your audience! + Create your next post + Switched to visual mode + Switched to HTML mode + Link copied to clipboard + Author + Copy link Adding a custom domain makes it easy for visitors to find your site - Upcoming scheduled posts - Untitled - Create your first post - Posts appear on your blog page in reverse chronological order. It\'s time to share your ideas with the world! Add your domain + Posts appear on your blog page in reverse chronological order. It\'s time to share your ideas with the world! + Create your first post + Untitled + Upcoming scheduled posts Work on a draft post <span style=\"color:#008000;\">Free for the first year </span><span style=\"color:#50575e;\"><s>%s /year</s></span> Create link - You\'re following this conversation. You will receive notifications by email when new comments are published. - Enable in-app notifications - Unfollow conversation - Mark as sticky - Stick post to the front page - Sticky - Domains Select domain - Could not enable in-app notifications - Could not disable in-app notifications + Domains + Sticky + Stick post to the front page + Mark as sticky + Unfollow conversation + Enable in-app notifications + You\'re following this conversation. You will receive notifications by email when new comments are published. Manage follow conversation options, popup window - Following this conversation\nEnable in-app notifications? - Unsubscribed from this conversation - In-app notifications enabled + Could not disable in-app notifications + Could not enable in-app notifications In-app notifications disabled - You have a free one-year domain registration included with your plan + In-app notifications enabled + Unsubscribed from this conversation + Following this conversation\nEnable in-app notifications? Search for a domain Domains purchased on this site will redirect visitors to <b>%s</b> - Add a domain + You have a free one-year domain registration included with your plan Claim your free domain + Add a domain <span style=\"color:#d63638;\">Expires on %s</span> Expires on %s - %s<span style=\"color:#50575e;\"> /year</span> <span style=\"color:#B26200;\">%1$s for the first year </span><span style=\"color:#50575e;\"><s>%2$s /year</s></span> - Done - Name - Comment - Web address - Email address - User name cannot be empty - Web address not valid - User email not valid - Comment cannot be empty - There are unsaved changes + %s<span style=\"color:#50575e;\"> /year</span> Do you want to discard them? + There are unsaved changes + Comment cannot be empty + User email not valid + Web address not valid + User name cannot be empty + Email address + Web address + Comment + Name + Done Embed block previews are coming soon Weekly Roundup - Double tap to view embed options. Embed options + Double tap to view embed options. Site created! Complete another task. - Unknown error fetching recommended app template - Get your domain Line Height - Domains - Quick Links - Share WordPress with a friend - No response received + Get your domain + Unknown error fetching recommended app template Invalid response received + No response received Automattic Apps – Apps for any screen - You\'ll get reminders to blog <b>every day</b> at <b>%s</b>. - Notification time + Share WordPress with a friend + Quick Links + Domains Weekly Roundup: %s - Text formatting controls are located within the toolbar positioned above the keyboard while editing a text block + Notification time + You\'ll get reminders to blog <b>every day</b> at <b>%s</b>. %1$s a week at %2$s - How to edit your page - How to edit your post - Move blocks - Navigates to select %s - Select a colour above + Text formatting controls are located within the toolbar positioned above the keyboard while editing a text block Selected: %s - Changes to featured image will not be affected by the undo/redo buttons. + Select a colour above + Navigates to select %s + Move blocks + How to edit your post + How to edit your page Customise blocks + Changes to featured image will not be affected by the undo/redo buttons. Applies the setting You can rearrange blocks by tapping a block and then tapping the up and down arrows that appear on the bottom left side of the block to move it above or below other blocks. - To remove a block, select the block and click the three dots in the bottom right of the block to view the settings. From there, choose the option to remove the block. Welcome to the world of blocks - %s block, newly available + To remove a block, select the block and click the three dots in the bottom right of the block to view the settings. From there, choose the option to remove the block. Some blocks have additional settings. Tap the settings icon on the bottom right of the block to view more options. - Once you become familiar with the names of different blocks, you can add a block by typing a forward slash followed by the block name – for example, /image or /heading. + %s block, newly available Rich text editing + Once you become familiar with the names of different blocks, you can add a block by typing a forward slash followed by the block name – for example, /image or /heading. Make your content stand out by adding images, gifs, videos, and embedded media to your pages. - Embed media Give it a try by adding a few blocks to your post or page! + Embed media Each block has its own settings. To find them, tap on a block. Its settings will appear on the toolbar at the bottom of the screen. - Blocks are pieces of content that you can insert, rearrange, and style without needing to know how to code. Blocks are an easy and modern way for you to create beautiful layouts. Build layouts + Blocks are pieces of content that you can insert, rearrange, and style without needing to know how to code. Blocks are an easy and modern way for you to create beautiful layouts. Blocks allow you to focus on writing your content, knowing that all the formatting tools you need are there to help you get your message across. Arrange your content into columns, add Call to Action buttons, and overlay images with text. - %1$s out of %2$s complete Add a new block at any time by tapping on the + icon in the toolbar on the bottom left. - Failed to moderate one or more comments + %1$s out of %2$s complete Learn the basics with a quick walkthrough. + Failed to moderate one or more comments Create site Get your site up and running in just a few quick steps Create your WordPress website @@ -1118,24 +1118,24 @@ Language: en_GB Show me around Want a little help managing this site with the app? Create a new site + You can switch sites at any time. Choose a site to open We\'re sorry, Jetpack Scan is not compatible with multisite WordPress installations at this time. - You can switch sites at any time. WordPress multisites are not supported Invalid URL. Please enter a valid URL. - Jetpack Backup for Multisite installations provides downloadable backups, no one-click restores. For more information %1$s. - visit our documentation page - Embed caption. Empty Embed caption. %s + Embed caption. Empty + visit our documentation page + Jetpack Backup for Multisite installations provides downloadable backups, no one-click restores. For more information %1$s. Posting regularly can help keep your readers engaged, and attract new visitors to your site. Tip You can update this anytime - You can update this anytime via My Site > Settings > Blogging reminders. Select the days on which you want to blog + You can update this anytime via My Site > Settings > Blogging reminders. You have no reminders set. + You\'ll get reminders to blog %1$s a week on %2$s at %3$s. Reminders removed! All set! - You\'ll get reminders to blog %1$s a week on %2$s at %3$s. Update None set %s a week @@ -1148,66 +1148,66 @@ Language: en_GB Editing reusable blocks is not yet supported on WordPress for iOS Editing reusable blocks is not yet supported on WordPress for Android Alternatively, you can detach and edit these blocks separately by tapping “Detach patterns”. - Notify me Done + Notify me <a href=\"%1$s\">Enter your server credentials</a> to enable one-click site restores from backups. - WordPress for Android support - Create category - Remove as Featured Image Set as Featured Image + Remove as Featured Image + Create category + WordPress for Android support Manage your site\'s categories - The content of your latest posts page is automatically generated and cannot be edited. Categories Reminders + The content of your latest posts page is automatically generated and cannot be edited. Border settings - We need to save your content on the device before it can be published. Review your storage settings and remove files to free up space. - View storage Don\'t show again + View storage + We need to save your content on the device before it can be published. Review your storage settings and remove files to free up space. Insufficient device storage Y-axis position X-axis position - %s has no URL set - %s has URL set - Slash inserter results Type a URL - %s block + Slash inserter results + %s has URL set + %s has no URL set %s converted to normal blocks - Invalid URL. Audio file not found. - Media options + %s block Opacity - Double tap to open action sheet to add image or video - Double tap to open bottom sheet to add image or video - Drag to adjust focal point + Media options + Invalid URL. Audio file not found. Insert crosspost - Columns settings - Crosspost + Drag to adjust focal point + Double tap to open bottom sheet to add image or video + Double tap to open action sheet to add image or video Current unit is %s + Crosspost %s converted to regular block - Add link text + Columns settings Add link to %s + Add link text Add image or video - Could not find media file in path The specified path is a directory instead of a media file - <a href=\"%1$s\">Enter your server credentials</a> to fix threat. - <a href=\"%1$s\">Enter your server credentials</a> to fix threats. - Media was empty - This file type is not allowed + Could not find media file in path Unexpected empty file path for media + This file type is not allowed + Media was empty + <a href=\"%1$s\">Enter your server credentials</a> to fix threats. + <a href=\"%1$s\">Enter your server credentials</a> to fix threat. Double tap to add a link. Try with another account See instructions If you already have a site, you\'ll need to install the free Jetpack plugin and connect it to your WordPress.com account. Your profile photo To use this app for %1$s you\'ll need to have the Jetpack plugin installed and connected to your WordPress.com account. - Move image backwards Move image forwards + Move image backwards Width settings - Column settings Link Rel + Column settings No description - User profile bottom sheet information - Site (Untitled) + Site + User profile bottom sheet information Likes list %s Two Three @@ -1215,476 +1215,476 @@ Language: en_GB %s social icon Mention NEW - Preview page Preview post + Preview page Retry GIF One - No preview available Add title + No preview available Loading Link label - %s link Text colour + %s link Padding - Featured Four + Featured Add image - Create embed Custom URL + Create embed Column %d More Briefly describe the link to help screen reader user Add blocks No Jetpack sites found - Transform block… - Transform %s to What is alt text? + Transform %s to + Transform block… Failed to insert media. - %d Likes - Error loading like data. %s. - %1$s transformed to %2$s Failed to insert audio file. Describe the purpose of the image. Leave empty if the image is purely decorative. - Suggestion: + %1$s transformed to %2$s + Error loading like data. %s. + %d Likes One Like - Search block label. Current text is - Search blocks - Search button. Current button text is - Search input field. + Suggestion: Use icon button - Double tap to edit button text - Double tap to edit label text - Double tap to edit placeholder text - Hide search heading - Inside - No custom placeholder set + Search input field. + Search button. Current button text is + Search blocks + Search block label. Current text is Outside + No custom placeholder set + Inside + Hide search heading + Double tap to edit placeholder text + Double tap to edit label text + Double tap to edit button text double tap to change unit - Unreplied - No unreplied comments - No network available. - An unknown error occurred while getting likes. - An error occurred while getting likes data - %1$s. %2$s is %3$s %4$s. - Button position - Cancel search - Clear search Current placeholder text is - Search settings + Clear search + Cancel search + Button position + %1$s. %2$s is %3$s %4$s. + An error occurred while getting likes data + An unknown error occurred while getting likes. + No network available. + No unreplied comments + Unreplied ADD LINK - Disallowed comments + Search settings Always allowed IP addresses + Disallowed comments Add button text - Download Dismiss + Download Threats were successfully fixed. Please confirm you want to fix all %s active threats. The scan found %1$s potential threats with %2$s. Please review them below and take action, or tap the fix all button. We are %3$s if you need us. We\'re hard at work in the background fixing these threats. In the meantime, feel free to continue to use your site as normal, you can check the progress at any time. Edit focal point - <b>All tasks completed</b><br/>You’ll reach more people. Nice job! - Type a name for your site - example.com - Double tap to open Action Sheet to edit, replace, or clear the image Double tap to open Bottom Sheet to edit, replace, or clear the image + Double tap to open Action Sheet to edit, replace, or clear the image + example.com + Type a name for your site + <b>All tasks completed</b><br/>You’ll reach more people. Nice job! <b>All tasks completed</b><br/>You’ve customised your site. Well done! - Once this invite link is disabled, nobody will be able to use it to join your team. Are you sure? Didn\'t mean to create a new account? Go back to re-enter your email address. - Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organisation, even if they received the link from somebody else, so make sure that you share it with trusted people. - Unknown error fetching invite links data - There was an error getting roles - There was an error getting data for role %1$s - No response received - Invalid response received + Once this invite link is disabled, nobody will be able to use it to join your team. Are you sure? Disable invite link - Invite Link - Refresh links status - Generate new link - Share invite link - Disable invite link + Invalid response received + No response received + There was an error getting data for role %1$s + There was an error getting roles + Unknown error fetching invite links data + Use this link to onboard your team members without having to invite them one by one. Anybody visiting this URL will be able to sign up to your organisation, even if they received the link from somebody else, so make sure that you share it with trusted people. Expires %1$s - Threats found + Disable invite link + Share invite link + Generate new link + Refresh links status + Invite Link Threat found - <b>Scan Finished</b> <br> No threats found - <b>Scan Finished</b> <br> One potential threat found + Threats found <b>Scan Finished</b> <br> %s potential threats found - Disable + <b>Scan Finished</b> <br> One potential threat found + <b>Scan Finished</b> <br> No threats found Fixing Threat + Disable Check your pages and make changes, or add or remove pages. - Give your site a name that reflects its personality and topic. - Automatically share new posts to your social media. + View your site Discover and follow sites that inspire you. Social sharing - View your site + Automatically share new posts to your social media. + Give your site a name that reflects its personality and topic. Check your site stats - We couldn\'t find the status to say how long your downloadable backup will take. We\'ll still attempt to create your downloadable backup file. - We’ll notify you when its done. - Clock icon - Checkmark icon + We couldn\'t find the status to say how long your downloadable backup will take. Hmm, we couldn\'t find your downloadable backup status - We couldn\'t restore your site - Hmm, we couldn\'t find your restore status - We couldn\'t find the status to say how long your restore will take. + Checkmark icon + Clock icon + We’ll notify you when its done. We\'ll still attempt to restore your site. - (excludes themes, plugins, and uploads) - (SQL) - We couldn\'t create your backup - Are you sure you want to revert your site back to %1$s at %2$s?\n Anything you changed since then will be lost. + We couldn\'t find the status to say how long your restore will take. + Hmm, we couldn\'t find your restore status + We couldn\'t restore your site Confirm - Uploading… - Items included in this download - WordPress root + Are you sure you want to revert your site back to %1$s at %2$s?\n Anything you changed since then will be lost. + We couldn\'t create your backup + (SQL) + (excludes themes, plugins, and uploads) WP-content directory - Double tap to select an audio file - Failed to insert audio file. Please tap for options. - Lock icon - No application can handle this request. - OPEN - Problem opening the audio - Replace audio + WordPress root + Items included in this download + Uploading… Replace file - Optional: enter a custom message to be sent with your invitation. - Choose audio from device - Use this audio - Log in or sign up with WordPress.com - Audio caption. Empty - Audio caption. %s - Audio Player - Choose audio + Replace audio + Problem opening the audio + OPEN + No application can handle this request. + Lock icon + Failed to insert audio file. Please tap for options. + Double tap to select an audio file Double tap to listen to the audio file + Choose audio + Audio Player audio file + Audio caption. %s + Audio caption. Empty Add audio - here to help - Found - Fixed + Log in or sign up with WordPress.com + Use this audio + Choose audio from device + Optional: enter a custom message to be sent with your invitation. Learn more about roles + Fixed + Found + here to help The scan found one potential threat with %1$s. Please review the threat below and take action, or tap the fix all button. We are %2$s if you need us. - Welcome to Jetpack Scan! We\'re scoping out your site, setting up to do a full scan. We\'ll let you know if we spot any issues that might impact a scan, then your first full scan will start. To review your site again, run a manual scan, or wait for Jetpack to scan your site later today. + Welcome to Jetpack Scan! We\'re scoping out your site, setting up to do a full scan. We\'ll let you know if we spot any issues that might impact a scan, then your first full scan will start. Welcome to Jetpack Scan, we are taking a first look at your site now and the results will be with you soon. We\'re hard at work in the background fixing this threat. In the meantime, feel free to continue to use your site as normal, you can check the progress at any time. We will send you a notification if a threat is found. In the meantime, feel free to continue to use your site as normal, you can check the progress at anytime. - Jetpack Scan couldn\'t complete a scan of your site. Please check to see if your site is down – if it\'s not, try again. If it is, or if Jetpack Scan is still having problems, contact our support team. Fixing Threats - Your site has been successfully backed up - Creating downloadable backup - Backing up site from %1$s %2$s - Backing up site + Jetpack Scan couldn\'t complete a scan of your site. Please check to see if your site is down – if it\'s not, try again. If it is, or if Jetpack Scan is still having problems, contact our support team. Something went wrong - Select audio - Your site is being backed up\nBacking up from %1$s %2$s + Backing up site + Backing up site from %1$s %2$s + Creating downloadable backup + Your site has been successfully backed up Your site has been successfully backed up\nBacked up from %1$s %2$s - Done button - Error icon + Your site is being backed up\nBacking up from %1$s %2$s + Select audio There is another restore running. - No need to wait around. We\'ll notify you when your site has been restored. - Your site has been restored - All of your selected items are now restored back to %1$s %2$s. - Visit site - Restore icon - Done button - Visit site button + Error icon + Done button Restore failed - Confirm restore site button - Currently restoring site - We\'re restoring your site back to %1$s %2$s. + Visit site button + Done button + Restore icon + Visit site + All of your selected items are now restored back to %1$s %2$s. + Your site has been restored + No need to wait around. We\'ll notify you when your site has been restored. Restore site icon - Restore site button - Warning + We\'re restoring your site back to %1$s %2$s. + Currently restoring site + Confirm restore site button Red circle image with exclamation point - Done - Done button - Cloud with X icon - Restore - Choose the items to restore: - Restore Site - %1$s %2$s is the selected point for your restore. - Restore site + Warning + Restore site button Restore icon - Select %1$s Homepage %2$s to edit your Homepage. - Review site pages - Change, add, or remove your site\'s pages. - Select %1$s Pages %2$s to see your page list. - Mobile - Tablet + Restore site + %1$s %2$s is the selected point for your restore. + Restore Site + Choose the items to restore: + Restore + Cloud with X icon + Done button + Done Download failed - Marked post as seen - Marked post as unseen - Can\'t toggle seen status of this post - Not enough available site storage - Media upload failed.\n%1$s - Mark as seen + Tablet + Mobile + Select %1$s Pages %2$s to see your page list. + Change, add, or remove your site\'s pages. + Review site pages + Select %1$s Homepage %2$s to edit your Homepage. Mark as unseen - Error fixing threats. Please contact our support. + Mark as seen + Media upload failed.\n%1$s + Not enough available site storage + Can\'t toggle seen status of this post + Marked post as unseen + Marked post as seen Error getting fix status. Please contact our support. Threat was successfully fixed. + Error fixing threats. Please contact our support. Please confirm you want to fix one active threat. - Threat ignored. - Error ignoring threat. Please contact support. Fix all threats + Error ignoring threat. Please contact support. + Threat ignored. You shouldn’t ignore a security issue unless you are absolute sure it’s harmless. If you choose to ignore this threat, it will remain on your site <b>%s</b>. Error fixing threat. Please contact our support. - Your first backup will appear here within 24 hours and you will receive a notification once the backup has been completed - No matching backups found - Try adjusting your date range - Scan History - History - Preparing to scan - Scanning files - All - Fixed - No items found - Ignored - Fixing threat Threat ignored Threat fixed on %s - There was a problem handling the request. Please try again later. + Fixing threat + Ignored + No items found + Fixed + All + Scanning files + Preparing to scan + History + Scan History + Try adjusting your date range + No matching backups found + Your first backup will appear here within 24 hours and you will receive a notification once the backup has been completed Your first backup will be ready soon + There was a problem handling the request. Please try again later. Move to bottom Change block position - Share link button - We\'ve also emailed you a link to your file. icon - Your backup is now available for download - We successfully created a backup of your site from %1$s %2$s. - Download - Share link - Downloadable backup ready icon + We\'ve also emailed you a link to your file. + Share link button Download button - Currently creating a downloadable backup of your site - We\'re creating a downloadable backup of your site from %1$s %2$s. - Creating downloadable backup icon + Downloadable backup ready icon + Share link + Download + We successfully created a backup of your site from %1$s %2$s. + Your backup is now available for download Your Backup No need to wait around. We\'ll notify you when your backup is ready. - %1$s %2$s is the selected point to create a downloadable backup. - Create downloadable backup button - There was a problem handling the request. Please try again later. - There is another download running. + Creating downloadable backup icon + We\'re creating a downloadable backup of your site from %1$s %2$s. + Currently creating a downloadable backup of your site Download Backup + There is another download running. + There was a problem handling the request. Please try again later. + Create downloadable backup button + %1$s %2$s is the selected point to create a downloadable backup. %1$s · %2$s · - %1$s · %1$s · %2$s - Jetpack Scan will delete the affected file or directory. - Jetpack Scan will update to a newer version (%s). - Jetpack Scan will edit the affected file or directory. - Jetpack Scan will resolve the threat. - Fix threat - Ignore threat - Get a free estimate - user + %1$s · crosspost - Please type to filter the list of suggestions. - No %s suggestions available. - There was a problem loading suggestions. + user No matching %s. - Jetpack Scan cannot automatically fix this threat.\n We suggest that you resolve the threat manually: ensure that WordPress, your theme, and all of your plugins are up to date, and remove the offending code, theme, or plugin from your site. \n \n\n If you need more help to resolve this threat, we recommend <b>Codeable</b>, a trusted freelancer marketplace of highly vetted WordPress experts.\n They have identified a select group of security experts to help with these projects. Pricing ranges from $70–120/hour, and you can get a free estimate with no obligation to hire.\n + There was a problem loading suggestions. + No %s suggestions available. + Please type to filter the list of suggestions. + Get a free estimate + Ignore threat + Fix threat + Jetpack Scan will resolve the threat. + Jetpack Scan will edit the affected file or directory. + Jetpack Scan will update to a newer version (%s). + Jetpack Scan will delete the affected file or directory. Jetpack Scan will replace the affected file or directory. - What was the problem? - The technical details - Threat found in file: - How will we fix it? - How did Jetpack fix it? + Jetpack Scan cannot automatically fix this threat.\n We suggest that you resolve the threat manually: ensure that WordPress, your theme, and all of your plugins are up to date, and remove the offending code, theme, or plugin from your site. \n \n\n If you need more help to resolve this threat, we recommend <b>Codeable</b>, a trusted freelancer marketplace of highly vetted WordPress experts.\n They have identified a select group of security experts to help with these projects. Pricing ranges from $70–120/hour, and you can get a free estimate with no obligation to hire.\n Resolving the threat - Database %s threats - %s: malicious code pattern - Miscellaneous vulnerability - Vulnerability found in WordPress - Threat found %s - Vulnerability found in plugin - Vulnerability found in theme + How did Jetpack fix it? + How will we fix it? + Threat found in file: + The technical details + What was the problem? Threat Details - Vulnerable Plugin: %1$s (version %2$s) + Vulnerability found in theme + Vulnerability found in plugin + Threat found %s + Vulnerability found in WordPress + Miscellaneous vulnerability Vulnerable Theme: %1$s (version %2$s) - this site - Threat found + Vulnerable Plugin: %1$s (version %2$s) + %s: malicious code pattern + Database %s threats %s: infected core file + Threat found Fix All - %s hour(s) ago - %s minute(s) ago a few seconds ago + %s minute(s) ago + %s hour(s) ago + this site The last Jetpack scan ran %1$s and did not find any risks. %2$s - Activity Type filter (%s types selected) - Backup - Scan state icon - Scan now - Scan again - Don\'t worry about a thing Your site may be at risk - Please check your internet connection and retry. - No activities available - No activities recorded in the selected date range. - Activity Type filter + Don\'t worry about a thing + Scan again + Scan now + Scan state icon + Backup + Activity Type filter (%s types selected) %1$s (showing %2$s items) - Date Range filter - Activity Type (%s) + Activity Type filter + No activities recorded in the selected date range. + No activities available + Please check your internet connection and retry. No connection - No matching events found + Activity Type (%s) + Date Range filter Try adjusting your date range or activity type filters - Create downloadable backup icon - WordPress Themes - WordPress Plugins - Media Uploads - (includes wp-config.php and any non-WordPress files) + No matching events found Site database - Restore to this point - Download backup - Choose file - Error - Backup Download - Download Backup - Create downloadable backup + (includes wp-config.php and any non-WordPress files) + Media Uploads + WordPress Plugins + WordPress Themes + Create downloadable backup icon Create downloadable file - Date Range + Create downloadable backup + Download Backup + Backup Download + Error + Choose file + Download backup + Restore to this point Activity Type - Duplicate - Post sync conflict - The post you are trying to copy has two versions that are in conflict, or you recently made changes but didn\'t save them.\nEdit the post first to resolve any conflict or proceed with copying the version from this app. - Edit the post first - Copy the version from this app + Date Range Filter by Activity Type - Copy file URL - Edit file - Failed to save files.\nPlease tap for options. - Failed to upload files.\nPlease tap for options. - File block settings - File name - Error fetching subscription status for post - Could not subscribe to comments for this post - Could not unsubscribe from comments for this post - Jetpack + Copy the version from this app + Edit the post first + The post you are trying to copy has two versions that are in conflict, or you recently made changes but didn\'t save them.\nEdit the post first to resolve any conflict or proceed with copying the version from this app. + Post sync conflict + Duplicate + File name + File block settings + Failed to upload files.\nPlease tap for options. + Failed to save files.\nPlease tap for options. + Edit file + Copy file URL Choose a domain - Follow conversation by email + Jetpack Following conversation by email - Apply - Clear - No response received + Follow conversation by email + Could not unsubscribe from comments for this post + Could not subscribe to comments for this post + Error fetching subscription status for post Invalid response received + No response received + Clear + Apply Media has been removed. Try re-creating your Story. - Layouts not available while offline - Tap retry when you\'re back online. - Please check your internet connection and retry. Done There was an error while selecting the theme. - Scan - Welcome! - No recent posts - Find your connected email + Please check your internet connection and retry. + Tap retry when you\'re back online. + Layouts not available while offline Continue with store credentials + Find your connected email Try following more tags to broaden the search - <b>Madison Ruiz</b> liked your post - You received <b>50 likes</b> on your site today + No recent posts + Welcome! + Scan <b>Johan Brandt</b> responded to your post - Choose - Scrollable block menu closed. + You received <b>50 likes</b> on your site today + <b>Madison Ruiz</b> liked your post Scrollable block menu opened. Select a block. - Categories - Not set - Categories - Add New Category - Add Category - Layouts not available due to an error - Tap retry or create a blank page using the button below. - Layouts not available while offline + Scrollable block menu closed. + Choose Tap retry when you\'re back online, or create a blank page using the button below. - I am so inspired by photographer Cameron Karsten’s work. I will be trying these techniques on my next - Pamela Nguyen - Web News - Rock ‘n’ Roll Weekly - Art - Cooking - Football - Gardening - Music - Politics - My Top Ten Cafés - The World\'s Best Fans + Layouts not available while offline + Tap retry or create a blank page using the button below. + Layouts not available due to an error + Add Category + Add New Category + Categories + Not set + Categories Museums in London - Welcome to the world’s most popular website builder. - With the powerful editor, you can post on the go. - Watch your audience grow with in-depth analytics. + The World\'s Best Fans + My Top Ten Cafés + Politics + Music + Gardening + Football + Cooking + Art + Rock ‘n’ Roll Weekly + Web News + Pamela Nguyen + I am so inspired by photographer Cameron Karsten’s work. I will be trying these techniques on my next Getting Inspired - See comments and notifications in real time. Follow your favourite sites and discover new blogs. + Watch your audience grow with in-depth analytics. + See comments and notifications in real time. + With the powerful editor, you can post on the go. + Welcome to the world’s most popular website builder. Media loading failed We are working hard to add more blocks with each release. \'%s\' is not fully supported - Choose images - Edit using web editor Help button - Page created + Edit using web editor + Choose images Blank page created - Choose from WordPress Media Library - Media insert failed: %s + Page created Media insert failed. + Media insert failed: %s + Choose from WordPress Media Library Back - By Get Started Follow tags to discover new blogs - Uploading media - Uploading stock media - Uploading gif media - Open Website - Mark as Spam - Unmark as Spam + By This referrer can\'t be marked as spam + Unmark as Spam + Mark as Spam + Open Website + Uploading gif media + Uploading stock media + Uploading media Search or type URL Add this telephone link - Add this email link Add this link + Add this email link No internet connection.\nSuggestions are unavailable. - %s selected %s - Browse for items - Unable to show this comment - Microphone - Hmm, we can\'t find a WordPress.com account connected to this email address. + %s selected Get a login link by email + Hmm, we can\'t find a WordPress.com account connected to this email address. + Microphone + Unable to show this comment + Browse for items Report this post - %1$s more items - Your action is not allowed - Internal server error occurred Welcome to Reader. Discover millions of blogs at your fingertips. + Internal server error occurred + Your action is not allowed + %1$s more items Select a layout Note: column layout may vary between themes and screen sizes - Create a post - Create a page Create a post or story - Hide + Create a page + Create a post You might like - Paste block after - Updates the title. + Hide Video caption. Empty - This device doesn\'t support Camera2 API. - An error occurred while playing your video - Page title. Empty + Updates the title. + Paste block after Page title. %s - Tap %1$s Create. %2$s Then select <b>Blog post</b> - Give your story a title - Get started by choosing from a wide variety of pre-made page layouts. Or just start with a blank page. - Create blank page - Create page - Preview + Page title. Empty + An error occurred while playing your video + This device doesn\'t support Camera2 API. Close + Preview + Create page + Create blank page + Get started by choosing from a wide variety of pre-made page layouts. Or just start with a blank page. Choose a layout - Storage quota exceeded - Cannot upload file.\nStorage quota was exceeded. - Unable to find the linked page jump - Editing site icons on self-hosted WordPress sites requires the Jetpack plugin. - Story post + Give your story a title + Tap %1$s Create. %2$s Then select <b>Blog post</b> Choose from device + Story post + Editing site icons on self-hosted WordPress sites requires the Jetpack plugin. + Unable to find the linked page jump + Cannot upload file.\nStorage quota was exceeded. + Storage quota exceeded Add file Replace video Replace image or video + Convert to link Choose video Choose image or video Choose image Block removed - If you continue with Google and don\'t already have a WordPress.com account, you are creating an account and you agree to our %1$sTerms of Service%2$s. - Signup confirmation Enter your existing site address - Convert to link + Signup confirmation + If you continue with Google and don\'t already have a WordPress.com account, you are creating an account and you agree to our %1$sTerms of Service%2$s. By continuing, you agree to our %1$sTerms of Service%2$s. We’ll use this email address to create your new WordPress.com account. We’ve emailed you a signup link to create your new WordPress.com account. Check your email on this device, and tap the link in the email you receive from WordPress.com. @@ -1696,30 +1696,30 @@ Language: en_GB Not seeing the email? Check your Spam or Junk Mail folder. Check your email on this device and tap the link in the email you received from WordPress.com. We\'ll email you a link that\'ll log you in instantly, no password needed. - Reset your password Check email Get Started Enter your email address to log in or create a WordPress.com account. Or type your password Create account Send link by email + Reset your password There was a problem handling the request. Please try again later. - Tap <b>%1$s</b> to set a new title Check your site title + Tap <b>%1$s</b> to set a new title Binning this post will also discard local changes, are you sure you want to continue? %s block options - The Site Title can only be changed by a user with the administrator role. - Block copied - Block cut - Block duplicated - Block pasted - Copied block - Copy block - Duplicate block Remove block - Unsaved changes - Couldn\'t update site title. Check your network connection and try again. + Duplicate block + Copy block + Copied block + Block pasted + Block duplicated + Block cut + Block copied + The Site Title can only be changed by a user with the administrator role. The Site Title is displayed in the title bar of a web browser and is displayed in the header for most themes. + Couldn\'t update site title. Check your network connection and try again. + Unsaved changes Open link in a browser Navigates to the previous content sheet Navigates to customise the gradient @@ -1733,66 +1733,67 @@ Language: en_GB Content structure Everyone Me - Not set Dismiss - Tags - Publishing to - Schedule Now - Submit Now - Save Now - Back - Add Tags + Not set Tags help tell readers what a post is about. - Binned posts can\'t be edited. Do you want to change the status of this post to \"draft\", so you can work on it? - Move to Draft - Cancel - Publish Date Publish Date - The California Consumer Privacy Act (\"CCPA\") requires us to provide California residents with some additional information about the categories of personal information we collect and share, where we get that personal information, and how and why we use it. - Read CCPA privacy notice - Publish Date - Scheduled - Binned - Published - Select a few to continue - Done + Add Tags + Back + Save Now + Submit Now + Schedule Now + Publishing to + Tags + Publish Date + Cancel + Move to Draft + Binned posts can\'t be edited. Do you want to change the status of this post to \"draft\", so you can work on it? Move post to Drafts? Choose your tags - Update Now - Status and Visibility + Done + Select a few to continue + Published + Binned + Scheduled + Publish Date + Read CCPA privacy notice + The California Consumer Privacy Act (\"CCPA\") requires us to provide California residents with some additional information about the categories of personal information we collect and share, where we get that personal information, and how and why we use it. Privacy notice for California users + Status and Visibility + Update Now %1$s · Open Block Actions Menu Move to top - Double tap to open Action Sheet with available options - Double tap to open Bottom Sheet with available options Insert mention - Classic Blog - Static Homepage - Posts Page - Select Page - Set as Homepage - Set as Posts Page + Double tap to open Bottom Sheet with available options + Double tap to open Action Sheet with available options We cannot open pages at the moment. Please try again later - Selected homepage and page for posts cannot be the same. + Set as Posts Page + Set as Homepage %1$s is not a valid %2$s - Homepage Settings - Choose from a homepage that displays your latest posts (classic blog) or a fixed/static page. - Loading of pages failed - Accept - Cannot save homepage settings - Cannot save homepage settings before pages are loaded + Select Page + Posts Page + Static Homepage + Classic Blog + Selected homepage and page for posts cannot be the same. Homepage settings update failed, check your internet connection - To set Homepage, enable \"Static Homepage\" in Site Settings - To set Posts page, enable \"Static Homepage\" in Site Settings - Homepage successfully updated - Homepage update failed - Posts Page successfully updated + Cannot save homepage settings before pages are loaded + Cannot save homepage settings + Accept + Loading of pages failed + Choose from a homepage that displays your latest posts (classic blog) or a fixed/static page. + Homepage Settings Homepage Posts Page update failed + Posts Page successfully updated + Homepage update failed + Homepage successfully updated + To set Posts page, enable \"Static Homepage\" in Site Settings + To set Homepage, enable \"Static Homepage\" in Site Settings Select a colour Double tap to go to colour settings Find out more + What\'s New In %s Insert %d crop Failed to load into file, please try again. @@ -1802,9 +1803,11 @@ Language: en_GB Choose media Choose video Couldn\'t select site. Please try again. - What\'s New In %s Continue Reblog failed + Manage blogs + Once you create a WordPress.com blog, you can reblog content that you like to your own site. + No available WordPress.com blogs What\'s New Link address copied Copy link address @@ -1813,9 +1816,6 @@ Language: en_GB Insert Continue Copy - No available WordPress.com blogs - Once you create a WordPress.com blog, you can reblog content that you like to your own site. - Manage blogs Number of columns Move block right from position %1$s to position %2$s Move block right @@ -1823,16 +1823,15 @@ Language: en_GB Move block left Double tap to move the block to the right Double tap to move the block to the left + Block settings Creating dashboard Setting up theme Adding site features Grabbing site URL Your site will be ready shortly Hooray!\nAlmost done - Block settings Cancel upload There was a problem handling the request - Sunday Powered by Tenor Choose from Tenor Saturday @@ -1841,15 +1840,16 @@ Language: en_GB Wednesday Tuesday Monday + Sunday Failed to access content of a private site. Some media might be unavailable Accessing content of a private site Failed to crop and save image, please try again. + Failed to load image.\nPlease tap to retry. Preview Image Unknown page format We couldn\'t complete this action, and didn\'t submit this page for review. We couldn\'t complete this action, and didn\'t schedule this page. We couldn\'t complete this action, and didn\'t publish this private page. - Failed to load image.\nPlease tap to retry. We couldn\'t complete this action, and didn\'t publish this page. We couldn\'t submit this page for review, but we\'ll try again later. We couldn\'t schedule this page, but we\'ll try again later. @@ -1868,6 +1868,8 @@ Language: en_GB Uploading page Device is offline. Page saved locally. You\'ve made unsaved changes to this page + Your page is uploading + The page has failed media uploads and has been saved locally Page saved on device Page saved online Select blog for QuickPress shortcut @@ -1876,8 +1878,6 @@ Language: en_GB Light Appearance You recently made changes to this page but didn\'t save them. Choose a version to load:\n\n - Your page is uploading - The page has failed media uploads and has been saved locally Warning message Show post content Only show excerpt @@ -1893,8 +1893,8 @@ Language: en_GB Binned Scheduled Published - Not Connected The Facebook connection cannot find any Pages. Jetpack Social cannot connect to Facebook Profiles, only published Pages. + Not Connected Likes Comments Unread @@ -1906,11 +1906,11 @@ Language: en_GB Add New Card Add new stats card Use the filter button to find posts on specific subjects + Select a tag or blog, pop up window Remove the current filter Log in to WordPress.com - Select a tag or blog, pop up window - Log in to WordPress.com to see the latest posts from blogs to which you\'re subscribed Log in to WordPress.com to see the latest posts from tags to which you\'re subscribed + Log in to WordPress.com to see the latest posts from blogs to which you\'re subscribed Replace Current Block Add To End Add To Beginning @@ -1961,26 +1961,26 @@ Language: en_GB Almost there! We just need to verify your Jetpack connected email address <b>%1$s</b> Log in with your %1$s site credentials Site page - We cannot open the posts right now. Please try again later - %sB - %sM + Likes + Discover + Saved + %sQi %sQa %sT - %sQi - Saved - Discover - Likes - We cannot load the data for your site right now. Please try again later + %sB + %sM %sK + We cannot open the posts right now. Please try again later + We cannot load the data for your site right now. Please try again later WordPress Media Library Unsupported Ungroup Tap to hide the keyboard Tap here to show help - Take a Photo or Video - Start writing… Take a Video + Take a Photo or Video Take a Photo + Start writing… %s block. This block has invalid content %s block. Empty Cut block @@ -1997,12 +1997,12 @@ Language: en_GB Move block up Move block down from row %1$s to row %2$s Move block down + Link text Link inserted Image caption. %s Hide keyboard Help icon Double tap to undo last change - Link text Double tap to toggle setting Double tap to select an image Double tap to select a video @@ -2017,22 +2017,22 @@ Language: en_GB Choose from device An unknown error occurred. Please try again. Alt Text + Add video Add URL - ADD BLOCK HERE Add alt text + ADD BLOCK HERE Add description - Add video Tap the Add to Save Posts button to save a post to your list. The list has loaded with %1$d items. Notifications - Turning off Notifications for this site will disable the notifications display on the notifications tab for this site. You can fine-tune which kind of notification you see after turning on Notifications for this site. - On Off - Notifications for this site - Notifications for this site + On + Turning off Notifications for this site will disable the notifications display on the notifications tab for this site. You can fine-tune which kind of notification you see after turning on Notifications for this site. To see notifications on the notifications tab for this site, turn on Notifications for this site. - Disable the notifications display on the notifications tab for this site Enable the notifications display on the notifications tab for this site + Disable the notifications display on the notifications tab for this site + Notifications for this site + Notifications for this site Add image or video We couldn\'t submit this post for review, but we\'ll try again later. We couldn\'t schedule this post, but we\'ll try again later. @@ -2059,11 +2059,11 @@ Language: en_GB You\'ve made unsaved changes to this post The version from this app The version from another device + From this app\nSaved on %1$s\n\nFrom another device\nSaved on %2$s\n You recently made changes to this post but didn\'t save them. Choose a version to load:\n\n Which version would you like to edit? Delete permanently We won\'t save the latest changes to your draft. - From this app\nSaved on %1$s\n\nFrom another device\nSaved on %2$s\n We won\'t schedule these changes. We won\'t submit these changes for review. We won\'t publish these changes. @@ -2109,9 +2109,9 @@ Language: en_GB Share Go back Go forward + \"%1$s\" scheduled for publishing on \"%2$s\" in your %3$s app \n %4$s WordPress Scheduled Post: \"%s\" \"%s\" will be published in 10 minutes - \"%1$s\" scheduled for publishing on \"%2$s\" in your %3$s app \n %4$s \"%s\" will be published in 1 hour \"%s\" has been published Scheduled post: 10 minute reminder @@ -2154,11 +2154,11 @@ Language: en_GB No posts matching your search Search posts This is where people will find you on the internet. + Choose a custom domain name + All WordPress.com annual plans include a custom domain name. Register your free domain now. At a glance Today All-time - All WordPress.com annual plans include a custom domain name. Register your free domain now. - Choose a custom domain name Views this week Please log in to the WordPress app to add a widget. No network available @@ -2189,6 +2189,7 @@ Language: en_GB Registering domain name… Select State Select Country + Register domain Postcode State City @@ -2197,7 +2198,6 @@ Language: en_GB Country Country code Phone - Register domain Organisation (optional) For your convenience, we have prefilled your WordPress.com\n contact information. Please review to be sure it’s the correct information you want to use for this domain. Domain contact information @@ -2206,18 +2206,18 @@ Language: en_GB Domain owners have to share contact information in a public database of all domains.\n With Privacy Protection, we publish our own information instead of yours and privately forward any communication to you. Privacy Protection Please enter a valid %s + New Dismiss Try it now Choose what stats to see, and focus on the data you care most about. Tap %1$s at the bottom of Insights to customise your stats. Manage Your Stats - New Fetching revisions… Failed to insert media.\nPlease tap for options. Failed to insert media.\nPlease tap to retry. Your draft is uploading Uploading draft - An error occurred while restoring the post Drafts + An error occurred while restoring the post Backdated for: %s Only see the most relevant stats. Add and organise your insights below. Annual Site Stats @@ -2233,32 +2233,33 @@ Language: en_GB Post is being restored Post restored Post is being binned - Local changes Binning this post will also discard unsaved changes, are you sure you want to continue? + Local changes + Move to Draft + Switch to list view Switch to cards view You don\'t have any binned posts You don\'t have any draft posts You don\'t have any scheduled posts You haven\'t published any posts yet - Move to Draft - Switch to list view Please log in with your username and password. Please log in using your WordPress.com username instead of your e-mail address. + Avg. words/post Total words + Avg. likes/post Total likes + Avg. comments/post Total comments Posts Year This Year The site at this address is not a WordPress site. For us to connect to it, the site must use WordPress. - Avg. words/post - Avg. likes/post - Avg. comments/post Failed to check available domain credits Checking domain credits Register domain To install plugins, you need to have a custom domain associated with your site. Install plugin + You\'ll be able to customise the look and feel of your site later Publish on: %s Schedule for: %s Published on: %s @@ -2269,7 +2270,6 @@ Language: en_GB Period Months and Years Load more - You\'ll be able to customise the look and feel of your site later Today Best Hour Best Day @@ -2290,20 +2290,20 @@ Language: en_GB We cannot load Plans at the moment. Please try again later. Cannot load Plans No connection + Switch to block editor There was a problem loading your data, refresh your page to try again. Data not loaded Edit new posts and pages with the Block Editor Use Block Editor - Switch to block editor exit - Next Steps - Your visitors will see your icon in their browser. Add a custom icon for a polished, pro look. - Customise your site Grow your audience + Customise your site + Next Steps Choose a unique site icon + Your visitors will see your icon in their browser. Add a custom icon for a polished, pro look. + Select %1$s Stats %2$s to see how your site is performing. Tap %1$s Your Site Icon %2$s to upload a new one Draft and publish a post. - Select %1$s Stats %2$s to see how your site is performing. Enable post sharing Automatically share new posts to your social media accounts. Check your site stats @@ -2312,9 +2312,9 @@ Language: en_GB Reminder Select next period Select previous period + %1$s of views Most Popular Time %1$s (%2$s) - %1$s of views +%1$s (%2$s) Showing site preview Clear @@ -2343,9 +2343,9 @@ Language: en_GB Updating post Discard Web Discard Local + Local\nSaved on %1$s\n\nWeb\nSaved on %2$s\n This post has two versions that are in conflict. Select the version you would like to discard.\n\n Resolve sync conflict - Local\nSaved on %1$s\n\nWeb\nSaved on %2$s\n No data for this period Remove location from media We cannot open the statistics at the moment. Please try again later @@ -2380,8 +2380,8 @@ Language: en_GB Share post Create post It’s been %1$s since %2$s was published. Here’s how the post performed so far: - Tags and Categories It\'s been %1$s since %2$s was published. Get the ball rolling and increase your post views by sharing your post: + Tags and Categories All-time %1$s - %2$s Service @@ -2429,63 +2429,63 @@ Language: en_GB Medium Thumbnail History - Pending review The selected page is not available - Delete Permanently - Move to Draft - Move to Bin - No pages matching your search - Search pages - You don\'t have any draft pages - You don\'t have any scheduled pages + Pending review You don\'t have any binned pages + You don\'t have any scheduled pages + You don\'t have any draft pages You haven\'t published any pages yet - Drafts - Published - Scheduled + Search pages + No pages matching your search + Delete Permanently + Move to Bin + Move to Draft Set parent - Binned View + Binned + Scheduled + Drafts + Published We\'ve made too many attempts to send an SMS verification code — take a break, and request a new one in a minute. - No sites matching your search - Page parent has been changed There\'s no WordPress.com account matching this Google account. + No sites matching your search No blogs matching your search - Are you sure you want to delete page %s? - Page has been moved to Drafts + Page parent has been changed Page has been permanently deleted - Page has been published Page has been scheduled + Page has been published Page has been binned - Set Parent + Page has been moved to Drafts + Top level + Are you sure you want to delete page %s? There was a problem changing the page parent There was a problem changing the page status There was a problem deleting the page - Top level + Set Parent Dismiss tap here Create your site Get your site up and running. Doesn\'t it feel good to cross things off a list? - Connect to your social media accounts – your site will automatically share new posts. - Share your site View your site - Tap the %1$s Connections %2$s to add your social media accounts Preview your site to see what your visitors will see. + Share your site Tap %1$s Social %2$s to continue + Tap the %1$s Connections %2$s to add your social media accounts + Connect to your social media accounts – your site will automatically share new posts. Publish a post Tap %1$s Create Post %2$s to create a new post No thanks Connect with other sites - Cancel Go + Cancel Not now - You don\'t have any sites More + You don\'t have any sites Add tags here to find posts about your favourite topics + Log in to the WordPress.com account you used to connect Jetpack. Jetpack Jetpack FAQ - Log in to the WordPress.com account you used to connect Jetpack. To use Stats on your WordPress site, you\'ll need to install the Jetpack plugin. No themes matching your search What would you like to find? @@ -2496,40 +2496,40 @@ Language: en_GB No media matching your search Log out of WordPress? You have changes to posts that haven’t been uploaded to your site. Logging out now will delete those changes from your device. Log out anyway? - No users yet No viewers yet + No users yet Posts that you like will appear here Nothing liked yet Discover blogs No likes yet Since you\'re on a free plan, you\'ll see limited events in your activity. - No activity yet When you make changes to your site you\'ll be able to see your activity history here - Create a page + No activity yet Create a post + Create a page Upload media You don\'t have any media - featured image image gallery site icon theme image + featured image Discard profile picture - Contact email + Transient Email - New message from \'Help & Support\' - Not set Please enter your email address To continue please enter your email address and name - Transient + New message from \'Help & Support\' WordPress - Restoring to %1$s %2$s + Not set + Contact email Restore in progress - Activity Log action button + Restoring to %1$s %2$s Currently restoring your site Your site has been successfully restored - Your site is being restored\nRestoring to %1$s %2$s Your site has been successfully restored\nRestored to %1$s %2$s + Your site is being restored\nRestoring to %1$s %2$s + Activity Log action button Auto-managed Save this post and come back to read it whenever you like. It will only be available on this device — saved posts don\'t sync to your other devices. Save Posts for Later @@ -2544,85 +2544,86 @@ Language: en_GB Magic link login Site address login Email address login - Add to saved posts + Tap %s to save a post to your list. + No posts saved — yet! Post saved + View All Remove from saved posts - Removed + Add to saved posts Saved posts - Tap %s to save a post to your list. - View All - No posts saved — yet! + Removed + Change site icon Cancel + Remove Change - Change site icon - Enable + You don\'t have permission to edit the site icon. + You don\'t have permission to add a site icon. How would you like to edit the icon? - Remove + Would you like to add a site icon? Site Icon this site - Would you like to add a site icon? - You don\'t have permission to add a site icon. - You don\'t have permission to edit the site icon. - Activity icon - Activity Log - Collect information - Cookie Policy + Enable Enable notifications for %1$s%2$s%3$s? - Event + Turn on blog notifications + Turn off blog notifications Jetpack icon - Privacy Policy - Privacy settings + Event + Activity icon + Activity Log Read privacy policy - Share information with our analytics tool about your use of services while logged in to your WordPress.com account. + We use other tracking tools, including some from third parties. Read about these and how to control them. Third Party Policy This information helps us improve our products, make marketing to you more relevant, personalise your WordPress.com experience, and more as detailed in our privacy policy. - We use other tracking tools, including some from third parties. Read about these and how to control them. - Turn off blog notifications - Turn on blog notifications + Privacy Policy + Share information with our analytics tool about your use of services while logged in to your WordPress.com account. + Cookie Policy + Privacy settings + Collect information Post submitted - Plugin feature requires primary domain subscription to be associated with this user. Plugin feature requires the site to be in good standing. - Plugin cannot be installed due to disk space limitations. + Plugin feature requires primary domain subscription to be associated with this user. + Plugin feature requires admin privileges. Plugin cannot be installed on VIP sites. - Plugin feature requires a business plan. - Plugin feature requires a custom domain. + Plugin cannot be installed due to disk space limitations. Plugin feature requires a verified email address. - Plugin feature requires admin privileges. Plugin feature requires the site to be public. + Plugin feature requires a business plan. + Plugin feature requires a custom domain. We\'re doing the final setup — almost done… Installing plugin… Install Installing the first plugin on your site can take up to 1 minute. During this time you won’t be able to make changes to your site. - Daily - Email me new comments - Email me new posts Install plugin + Notifications + Email me new comments + Weekly Instantly + Daily New posts - Notifications Receive notifications for new posts from this site - Weekly + Email me new posts All My Followed Sites - Are you sure you\'d like to permanently delete this post? Followed Sites - People looking at graphs and charts Person reading device with notifications + People looking at graphs and charts %1$s on %2$s - General + Are you sure you\'d like to permanently delete this post? Important + General Use this photo %1$d of %2$d - %1$s of unlimited - Add %d - Can\'t save an empty draft - Choose from Free Photo Library Photos provided by %s - Preview %d - Search free photo library Search to find free photos to add to your Media Library + Search free photo library + Choose from Free Photo Library + Can\'t save an empty draft + %1$s of unlimited + Preview %d + Add %d Create Tag navigate up Notifications + Open external link show more photo delete @@ -2646,7 +2647,6 @@ Language: en_GB %s\'s profile picture check mark Signing up with Google… - Open external link Connection to Jetpack failed: %s You are already connected to Jetpack Visual Mode @@ -2675,22 +2675,22 @@ Language: en_GB Edit Photo Pick site New account - Sharing buttons Logged in as Person detail File details + Sharing buttons Notifications Reader Me - Notification settings My Site + Notification settings Your avatar has been uploaded and will be available shortly. It looks like you turned off permissions required for this feature.<br/><br/>To change this, edit your permissions and make sure <strong>%s</strong> is enabled. Permissions Featured - Version %s - Social module disabled You cannot access your social sharing settings because your Jetpack Social module is disabled. + Social module disabled + Version %s The chosen sound has invalid path. Please choose another. QP %s %1$d pages / posts remaining @@ -2742,15 +2742,15 @@ Language: en_GB Sending email Retry Close + There was some trouble sending the email. You can retry now or close and try again later. Username + You can always log in with a link like the one you just used, but you can also set up a password if you prefer. Password (optional) Display Name Retry Revert There was some trouble updating your account. You can retry or revert your changes to continue. There was some trouble uploading your avatar. - There was some trouble sending the email. You can retry now or close and try again later. - You can always log in with a link like the one you just used, but you can also set up a password if you prefer. Needs update Search Plugins New @@ -2772,46 +2772,46 @@ Language: en_GB Your WordPress Version Requires WordPress Version Last Updated - 1 stars - 2 stars - 3 stars - 4 stars - 5 stars Version + 5 stars + 4 stars + 3 stars + 2 stars + 1 stars + None provided %s downloads %s ratings - Frequently Asked Questions - None provided Read Reviews - Description - Installation + Frequently Asked Questions What\'s New - Installed + Installation + Description Settings + Installed Version %s installed - by %s Version %s + by %s Change photo Unable to load plugins - Deleting + Pages Manage your site\'s tags Saving + Deleting Permanently delete \'%s\' tag? - Pages A tag with this name already exists Add New Tag Description Tag Your WordPress.com site supports the use of Accelerated Mobile Pages, a Google-led initiative that dramatically speeds up loading times on mobile devices Accelerated Mobile Pages (AMP) - Learn more about date & time formatting Unable to load timezones - Custom + Learn more about date & time formatting Custom format + Custom Posts per page Choose a city in your timezone - Time Format Timezone + Time Format Date Format Week starts on Tags @@ -2844,8 +2844,8 @@ Language: en_GB Please provide an authentication code to continue. Please double check your password to continue. Login stopped - Login in progress… Please wait while logging in. + Login in progress… Tap to continue. Logged in! Google login could not be started. @@ -2868,8 +2868,8 @@ Language: en_GB Remove this image from the post? Customise File Details - There was some trouble connecting with the Google account. \nMaybe try a different account? + There was some trouble connecting with the Google account. Close To proceed with this Google account, please provide the matching WordPress.com password. This will be asked only once. A network error occurred. Please check your connection and try again. @@ -2915,8 +2915,8 @@ Language: en_GB File Name URL Alt text - Blink light Connect a site + Blink light Vibrate device Choose sound Sights and Sounds @@ -2931,8 +2931,8 @@ Language: en_GB Enable notifications Disable notifications Off - Maximum Video Size On + Maximum Video Size Maximum Image Size There was an error uploading the media in this post: %s. There was an error uploading this post: %s. @@ -2972,16 +2972,16 @@ Language: en_GB Enter the address of the WordPress site you\'d like to connect. Already logged in to WordPress.com Continue - Enter your WordPress.com password. Connect another site + Enter your WordPress.com password. Requesting log-in email It looks like this password is incorrect. Please double check your information and try again. Requesting a verification code via SMS. Text me a code instead Almost there! Please enter the verification code for WordPress.com from your authenticator app. + Open Mail Next Log in to WordPress.com using an email address to manage all your WordPress sites. - Open Mail Profile Photo Unexpected response from server Can\'t stop the upload because it\'s already finished @@ -3030,8 +3030,8 @@ Language: en_GB %1$s was denied access to your media files. To fix this, edit your permissions and turn on %2$s. View comments Quality of videos. Higher values mean better quality videos. - Enable to resize and compress videos Resizes videos in posts to this size + Enable to resize and compress videos Optimise Videos Draft uploaded Video Quality @@ -3077,8 +3077,8 @@ Language: en_GB Notifications. Manage your notifications. Reader. Follow content from other sites. My Site. View your site and manage it, including stats. - Not now Social + Not now Upload error. Try changing Optimise Images in your app\'s settings Saving media to this device Unable to save media @@ -3123,11 +3123,11 @@ Language: en_GB Medium Low Uploaded + Upload Failed Deleted Deleting Uploading Queued - Upload Failed Image Quality All media uploads have been cancelled due to an unknown error. Please retry uploading Unknown post format @@ -3188,9 +3188,9 @@ Language: en_GB now Viewer No connection, couldn\'t save your profile - None - Left Right + Left + None Selected %1$d Couldn\'t retrieve site users Fetching users… @@ -3202,22 +3202,22 @@ Language: en_GB Since %1$s Couldn\'t remove viewer Some media uploads have failed. You can\'t switch to HTML mode\n in this state. Remove all failed uploads and continue? - Visual editor Image thumbnail - Changes saved - Caption - Alt text - Link to + Visual editor Width + Link to + Alt text + Caption + Changes saved Discard unsaved changes? Stop uploading? An error occurred while inserting media You are currently uploading media. Please wait until this completes. Can\'t insert media directly in HTML mode. Please switch back to visual mode. Uploading gallery… - %1$s: %2$s - Invite sent successfully Tap to try again! + Invite sent successfully + %1$s: %2$s Invite sent but error(s) occurred! An error occurred while trying to send the invite! Cannot send: There are invalid usernames or emails @@ -3226,8 +3226,8 @@ Language: en_GB Custom message Invite Usernames or emails - External Invite People + External Clear search history Clear search history? No results found for %s for your language @@ -3235,33 +3235,33 @@ Language: en_GB Related Post Links are disabled on the preview screen Send - If you remove %1$s, that user will no longer be able to access this site, but any content that was created by %1$s will remain on the site.\n\nWould you still like to remove this user? Successfully removed %1$s + If you remove %1$s, that user will no longer be able to access this site, but any content that was created by %1$s will remain on the site.\n\nWould you still like to remove this user? Remove %1$s - People Role + People The blogs in this list have not posted anything recently Couldn\'t remove user Couldn\'t update user role Couldn\'t retrieve site viewers Error updating your Gravatar - Error locating the cropped image Error reloading your Gravatar + Error locating the cropped image Error cropping the image Checking email Currently unavailable. Please enter your password Logging in Shown publicly when you comment. Capture or select photo - Your posts, pages, and settings will be emailed to you at %s. - Plan Plans + Plan + Your posts, pages, and settings will be emailed to you at %s. Export your content - Exporting content… Export email sent! - You have active premium upgrades on your site. Please cancel your upgrades prior to deleting your site. - Show purchases + Exporting content… Checking purchases + Show purchases + You have active premium upgrades on your site. Please cancel your upgrades prior to deleting your site. Premium Upgrades Something went wrong. Could not request purchases. Deleting site… @@ -3270,15 +3270,15 @@ Language: en_GB Primary Domain There was an error in deleting your site. Please contact support for more assistance. Error deleting site - Please type %1$s in the field below to confirm. Your site will then be gone forever. Export content + Please type %1$s in the field below to confirm. Your site will then be gone forever. Confirm Delete Site Contact Support If you want a site but don\'t want any of the posts and pages you have now, our support team can delete your posts, pages, media and comments for you.\n\nThis will keep your site and URL active, but give you a fresh start on your content creation. Just contact us to have your current content cleared out. - Start your site again Let Us Help - App Settings + Start your site again Start Over + App Settings Remove failed uploads Advanced No binned comments @@ -3286,33 +3286,33 @@ Language: en_GB No approved comments Skip Couldn\'t connect. Required XML-RPC methods are missing on the server. - Status - Video Centre - Chat - Gallery - Image - Link - Quote + Video + Status Standard - Information on WordPress.com courses and events (online & in-person). - Aside + Quote + Link + Image + Gallery + Chat Audio + Aside + Information on WordPress.com courses and events (online & in-person). Opportunities to participate in WordPress.com research & surveys. Tips for getting the most out of WordPress.com. Community - Replies to my comments - Suggestions Research - Site achievements + Suggestions + Replies to my comments Username mentions + Site achievements Likes on my posts Likes on my comments Comments on my site %d items 1 item - Known users\' comments All users + Known users\' comments No comments %d comments per page 1 comment per page @@ -3322,11 +3322,11 @@ Language: en_GB Automatically approve everyone\'s comments. Automatically approve if the user has a previously approved comment Require manual approval for everyone\'s comments. - 1 day %d days - Click the verification link in the email sent to %1$s to confirm your new address - Primary site + 1 day Web address + Primary site + Click the verification link in the email sent to %1$s to confirm your new address You are currently uploading media. Please wait until this completes. Comments couldn\'t be refreshed at this time - showing older comments Set Featured Image @@ -3335,13 +3335,13 @@ Language: en_GB Permanently delete these comments? Permanently delete this comment? Delete - Comment deleted Restore + Comment deleted No spam comments - Could not load page All - Interface Language + Could not load page Off + Interface Language About the app Couldn\'t save your account settings Couldn\'t retrieve your account settings @@ -3350,8 +3350,8 @@ Language: en_GB Allow comments to be nested in threads. Thread up to Disabled - Remove Search + Remove Original Size Your site is visible only to you and users you approve Your site is visible to everyone but asks search engines not to index it @@ -3360,8 +3360,8 @@ Language: en_GB About me Display name will default to your username if it is not set Public display name - First name Last name + First name My Profile Related post preview image Couldn\'t save site info @@ -3417,8 +3417,8 @@ Language: en_GB %d levels Private Hidden - Delete Site Public + Delete Site Hold for Moderation Links in comments Automatically approve @@ -3433,22 +3433,22 @@ Language: en_GB Default Format Default Category Address - Site Title Tagline + Site Title Defaults for new posts - Account Writing + Account General Newest first + Oldest first Close after Comments - Discussion - Oldest first - Privacy Related Posts + Privacy + Discussion You don\'t have permission to upload media to the site - Never Unknown + Never This post no longer exists You\'re not authorised to view this post Unable to retrieve this post @@ -3459,22 +3459,22 @@ Language: en_GB Something went wrong. Could not activate theme by %1$s Thanks for choosing %1$s - Details - DONE MANAGE SITE + DONE Support - Try & Customise + Details View + Try & Customise Activate Active - Current Theme - Customise - Details Support - Page published + Details + Customise + Current Theme Page updated - Post published Post updated + Page published + Post published Sorry, no themes found. Load more posts No sites matched \'%s\' @@ -3505,184 +3505,184 @@ Language: en_GB Couldn\'t load notification settings Comment likes App notifications - Notifications tab Email + Notifications tab We\'ll always send important emails regarding your account, but you can get some helpful extras, too. Latest Post Summary No connection Post sent to bin - Stats Bin + Stats Preview View - Edit Publish + Edit This blog could not be found Undo The request has expired. Log in to WordPress.com to try again. - Best Views Ever Ignore + Best Views Ever Today\'s Stats All-time posts, views, and visitors Insights Log out of WordPress.com - Login/Logout Log in to WordPress.com + Login/Logout Account Settings \"%s\" wasn\'t hidden because it\'s the current site Create WordPress.com site Add self-hosted site - Show/hide sites Add a site - View Admin - View Site + Show/hide sites Choose site + View Site + View Admin Switch Site - Look and Feel - Publish Site Settings Posts + Publish + Look and Feel Configuration Tap to show them Deselect all - Show - Hide Select all - Language - Verification code - Invalid verification code + Hide + Show Log in again to continue. + Invalid verification code + Verification code + Language Unable to retrieve posts Could not open notification Unknown Search Terms - Authors Search Terms + Authors Fetching pages… Fetching posts… Fetching media… Application logs have been copied to the clipboard + This blog is empty New posts An error occurred while copying text to clipboard Uploading post - This blog is empty - Fetching themes… - %1$d months - A year %1$d years + A year + %1$d months A month - %1$d minutes - an hour ago - %1$d hours - A day %1$d days + A day + %1$d hours + an hour ago + %1$d minutes a minute ago seconds ago - Posts & Pages Videos + Posts & Pages Countries Likes - Years - Views Visitors + Views + Years + Fetching themes… Details %d selected Browse our FAQ No comments yet - View original article Like + View original article Comments are closed %1$d of %2$d Can\'t publish an empty post You don\'t have permission to view or edit posts You don\'t have permission to view or edit pages - Older than a month More - Older than 2 days + Older than a month Older than a week + Older than 2 days + Help and support Liked Comment - No posts yet. Why not create one? - Reply to %s Comment binned + Reply to %s + No posts yet. Why not create one? Logging out… - Help and support Unable to perform this action - Update Schedule + Update Enter a URL or tag to follow - Help - Invalid SSL certificate If you usually connect to this site without problems, this error could mean that someone is trying to impersonate the site, and you shouldn\'t continue. Would you like to trust the certificate anyway? - There is no network available - The media item couldn\'t be retrieved - An error occurred when accessing this blog - Failed to fetch themes - Not spam - Adding category failed - Category added successfully - The category name field is required - A mounted SD card is required to upload media - No notifications - Posts couldn\'t be refreshed at this time - Pages couldn\'t be refreshed at this time - Comments couldn\'t be refreshed at this time - An error occurred - An error occurred while moderating - An error occurred while editing the comment - Couldn\'t load the comment - Error downloading image - Your email address isn\'t valid - Enter a valid email address + Invalid SSL certificate + Help The username or password you entered is incorrect + Enter a valid email address + Your email address isn\'t valid + Error downloading image + Couldn\'t load the comment + An error occurred while editing the comment + An error occurred while moderating + An error occurred + Comments couldn\'t be refreshed at this time + Pages couldn\'t be refreshed at this time + Posts couldn\'t be refreshed at this time An error occurred while deleting the post - Select categories - Connection error - An error occurred when loading the post. Refresh your posts and try again. - Learn more - Thumbnail grid - You don\'t have permission to view the media library - Some media can\'t be deleted at this time. Try again later. - Approved - Pending - Spam - Edit comment - Approve - Unapprove - Spam - Send to bin? - Link text (optional) - Create a link - Page settings - Local draft - Horizontal alignment - Post settings - Bin - Saving changes - View in browser - Add new category - Category name - Couldn\'t create temp file for media upload. Make sure there is enough free space on your device. - New post - New media - Local changes - Image settings - WordPress blog - This blog is hidden and couldn\'t be loaded. Enable it again in settings and try again. - An error occurred while creating the app database. Try reinstalling the app. + No notifications + A mounted SD card is required to upload media + The category name field is required + Category added successfully + Adding category failed + Not spam + Failed to fetch themes + An error occurred when accessing this blog + The media item couldn\'t be retrieved + There is no network available + Unable to remove this tag + Unable to add this tag Application log - Remove site + An error occurred while creating the app database. Try reinstalling the app. + This blog is hidden and couldn\'t be loaded. Enable it again in settings and try again. + Media couldn\'t be refreshed at this time + WordPress blog + Image settings + Local changes + New media + New post No notifications…yet. Authorisation required + Check that the site URL entered is valid + Couldn\'t create temp file for media upload. Make sure there is enough free space on your device. + Category name + Add new category + View in browser + Remove site + Saving changes + Bin + Send to bin? Bin + Spam + Unapprove + Approve + Edit comment Binned - Check that the site URL entered is valid - Media couldn\'t be refreshed at this time + Spam + Pending + Approved + Delete page? + Delete post? + Post settings Couldn\'t find the file for upload. Was it deleted or moved? + Horizontal alignment + Local draft + Page settings + Create a link + Link text (optional) + Some media can\'t be deleted at this time. Try again later. + You don\'t have permission to view the media library + Thumbnail grid + Learn more + An error occurred when loading the post. Refresh your posts and try again. An error occurred when accessing this plugin - Delete post? - Delete page? - Unable to add this tag - Unable to remove this tag + Connection error + Select categories Share link Fetching posts… You and %,d others like this @@ -3690,72 +3690,72 @@ Language: en_GB You can\'t share to WordPress without a visible blog Comment marked as spam Comment unapproved + Unable to retrieve this post You and one other like this - Select photo Select video - Unable to retrieve this post - This list is empty - (Untitled) - Reblog - Couldn\'t post your comment - Unable to share - Unable to view image + Select photo + Sign Up Unable to open %s - Share - Follow - Added %s - Removed %s - One person likes this + Unable to view image + Unable to share + That isn\'t a valid tag + Couldn\'t post your comment You like this + One person likes this + Removed %s + Added %s Reply to comment… + Follow + Share + Reblog + (Untitled) No comments yet - Sign Up - That isn\'t a valid tag - Themes - Title - Caption - Description - Squares - Tiled - Circles - Slideshow - Clicks - Referrers - Today - Yesterday - Days - Weeks + This list is empty Months - Failed to update - Activate - Share - Stats + Weeks + Days + Yesterday + Today + Referrers Tags & Categories + Clicks + Stats + Share + Activate + Failed to update + Description + Caption + Title + Slideshow + Circles + Tiled + Squares + Themes Discard Manage - Reply published - %d new notifications and %d more. + %d new notifications + Reply published Log in Loading… - HTTP username HTTP password + HTTP username An error occurred while uploading media Incorrect username or password. - Password - Username Log In + Username + Password Reader - Use as featured image Include image in post content - No network available - Pages - Caption (optional) + Use as featured image Width + Caption (optional) + Pages Posts Anonymous - OK + No network available done + OK URL Uploading… Alignment @@ -3768,27 +3768,27 @@ Language: en_GB Shortcut name can\'t be empty Private Title - Categories Separate tags with commas + Categories SD Card Required Media Category updated successfully - Delete Approve - None + Delete Updating category failed - Error - Cancel - Save - Add - Category refresh error - Preview - on + None + Publish Now Reply - Yes + on + Preview + Category refresh error + Error No + Yes Notification Settings - Publish Now + Add + Save + Cancel Once Twice diff --git a/WordPress/src/main/res/values-es-rCL/strings.xml b/WordPress/src/main/res/values-es-rCL/strings.xml index b2b8b402e509..bba3de004130 100644 --- a/WordPress/src/main/res/values-es-rCL/strings.xml +++ b/WordPress/src/main/res/values-es-rCL/strings.xml @@ -1,11 +1,15 @@ + Toca para editar + Para grabar audio, esta app necesita permiso para acceder a tu micrófono. Anteriormente has denegado este permiso. Habilita el permiso del micrófono en los ajustes de la aplicación para utilizar esta función. + Se requiere permiso para grabar audio + Ubicación de medios Reiniciar Actualización descargada. Reinicia para aplicar. Publicar desde audio @@ -33,6 +37,8 @@ Language: es_CL Incremento de suscriptores Suscriptor Suscriptor por correo electrónico + Aún no hay suscriptores por correo electrónico + Aún no hay suscriptores Suscriptores por correo electrónico Suscriptores %s: Ya suscrito @@ -40,8 +46,6 @@ Language: es_CL No se pudo eliminar el suscriptor No se pudieron recuperar los suscriptores por correo electrónico del sitio No se pudieron recuperar los suscriptores del sitio - Aún no hay suscriptores por correo electrónico - Aún no hay suscriptores No se pudo agregar al calendario No se encontró ninguna aplicación para gestionar la solicitud de agregar al calendario Suscripciones al sitio @@ -67,609 +71,609 @@ Language: es_CL La semana pasada tuviste %1$s visitas y 1 comentario La semana pasada tuviste %1$s visitas y 1 Me gusta La semana pasada tuviste %1$s visitas, 1 Me gusta y 1 comentario. - Hiciste cambios en esta entrada desde otro dispositivo y no los has guardado. Selecciona la versión de la entrada que quieres conservar. + La semana pasada tuviste %1$s visitas, %2$s Me gusta y 1 comentario. + La semana pasada tuviste %1$s visitas, 1 Me gusta y %2$s comentarios. + Sitios recientes + Todos los sitios + Sitios fijos + Editar pins Hiciste cambios en esta página desde otro dispositivo y no los has guardado. Selecciona la versión de la página que quieres conservar. + Hiciste cambios en esta entrada desde otro dispositivo y no los has guardado. Selecciona la versión de la entrada que quieres conservar. Autoguardado disponible Otro dispositivo - La entrada se ha modificado en otro dispositivo. Selecciona la versión de la entrada que quieres conservar. - La página se ha modificado en otro dispositivo. Selecciona la versión de la página que quieres conservar. Dispositivo actual - Todos los sitios - Editar pins - Sitios fijos - Sitios recientes - La semana pasada tuviste %1$s visitas, 1 Me gusta y %2$s comentarios. - La semana pasada tuviste %1$s visitas, %2$s Me gusta y 1 comentario. + La página se ha modificado en otro dispositivo. Selecciona la versión de la página que quieres conservar. + La entrada se ha modificado en otro dispositivo. Selecciona la versión de la entrada que quieres conservar. Resolver conflicto - <Experimental> Extra grande - Extra pequeña Grande Normal Pequeña - Fuente + Extra pequeña Tamaño de fuente - envía tus comentarios + Fuente Esquema de color + envía tus comentarios + <Experimental> Vaciar el color seleccionado No sigues etiquetas Ya estás siguiendo esta etiqueta Preferencias de lectura Etiquetas seguidas - Elige tus colores, fuentes y tamaños. Previsualiza aquí tu selección y lee entradas con tus estilos cuando hayas terminado. - Esta es una nueva característica aún en desarrollo. Para ayudarnos a mejorarla %s. - envía tus comentarios Caramelo - Noche h4x0r OLED + Noche Sepia Suave Por defecto + envía tus comentarios + Esta es una nueva característica aún en desarrollo. Para ayudarnos a mejorarla %s. + Elige tus colores, fuentes y tamaños. Previsualiza aquí tu selección y lee entradas con tus estilos cuando hayas terminado. Preferencias de lectura Sigue una etiqueta Leer - Botón para copiar los detalles del error - Botón para copiar el texto de la entrada - Copiar detalles del error - Copiar texto de la entrada - Pulsa aquí para copiar los detalles del error. - Pulsa aquí para copiar el texto de la entrada. - El editor ha encontrado un error inesperado. Puedes copiar el texto de tu entrada en caso de que tu contenido se vea afectado. Copia los detalles del error para depurarlo y compartirlo con el servicio de asistencia. + El editor ha encontrado un error inesperado. + Pulsa aquí para copiar el texto de la entrada. + Pulsa aquí para copiar los detalles del error. + Copiar texto de la entrada + Copiar detalles del error + Botón para copiar el texto de la entrada + Botón para copiar los detalles del error Error al actualizar el contenido - La reproducción automática puede provocar problemas de usabilidad a algunos usuarios. - Editar el video - Leyenda del video. Vacío Leyenda del video. %s + Leyenda del video. Vacío + Editar el video + La reproducción automática puede provocar problemas de usabilidad a algunos usuarios. Marcar todo como leído No leído - Si actualizas aquí tu avatar, nombre e información sobre ti, también se actualizarán en todos los sitios que utilicen perfiles Gravatar. - ¿Qué es Gravatar? + Sitio no encontrado. Comprueba que has iniciado sesión con la cuenta correcta. Hecho Las actualizaciones pueden tardar algún tiempo en sincronizarse con tu perfil de Gravatar. + ¿Qué es Gravatar? + Si actualizas aquí tu avatar, nombre e información sobre ti, también se actualizarán en todos los sitios que utilicen perfiles Gravatar. Tu perfil de WordPress.com funciona con Gravatar - Sitio no encontrado. Comprueba que has iniciado sesión con la cuenta correcta. No se pueden cargar los medios para compartir. Comprueba los permisos de la aplicación\n o utiliza la biblioteca de medios. No podemos abrir las estadísticas en este momento. Por favor, inténtalo de nuevo más tarde + Registros del servidor webs + Registros de PHP + Métricas + Supervisión del sitio Utiliza <b>Descubrir</b> para encontrar sitios y etiquetas. Prueba a seleccionar <b>Suscripciones</b> para ver el contenido suscrito y gestionar tus suscripciones. Ir a suscripciones Los blogs a los que estás suscrito no han publicado nada recientemente Suscríbete a blogs en Descubrir o busca un blog que ya te guste. - Supervisión del sitio - Métricas - Registros de PHP - Registros del servidor webs - No hay entradas con esta etiqueta No hay blogs recomendados - No tienes autorización para acceder a este blog + No hay entradas con esta etiqueta No ha sido posible bloquear este blog - No es posible suscribirse a este blog - No se pudo cancelar la suscripción al blog Las entradas de este blog ya no se mostrarán - Elige tus intereses - 1 suscriptor + No se pudo cancelar la suscripción al blog + No tienes autorización para acceder a este blog + No es posible suscribirse a este blog Ya estás suscrito a este blog. No se puede mostrar este blog - Blog del lector - Gestionar etiquetas y blogs - Etiqueta - Suscribirse - Suscrito - Buscar blogs suscritos - Blog suscrito - %,d suscriptores + Elige tus intereses + 1 suscriptor %s suscriptores + %,d suscriptores + Blog suscrito + Buscar blogs suscritos + Suscrito + Suscribirse Bloquear este blog Editar etiquetas y blogs Blogs suscritos - Suscrito Seguir etiquetas - Seguir etiquetas - Blogs a los que suscribirse + Gestionar etiquetas y blogs + Etiqueta + Blog del lector + Suscrito + %d etiquetas + 1 etiqueta + 0 etiquetas + %d blogs + 1 blog + 0 blogs + Listas Automattic - Descubrir Me gustó - Listas Guardado Suscripciones - 1 blog - %d blogs - 0 blogs - 1 etiqueta - %d etiquetas - 0 etiquetas - Buscar un blog + Descubrir + Buscar + Seguir etiquetas + Blogs a los que suscribirse Etiquetas recomendadas + Buscar un blog Sigue una etiqueta y podrás ve las mejores publicaciones asociadas a ella. - Buscar - Suscríbete a blogs en Descubrir y verás sus últimas publicaciones aquí. O busca un blog que ya te guste. Sin etiquetas - Filtrar por blog - Filtrar por etiqueta + Suscríbete a blogs en Descubrir y verás sus últimas publicaciones aquí. O busca un blog que ya te guste. + No hay suscripciones al blog Suscríbete a un blog Ver las últimas entradas de los blogs a los que estás suscrito - No hay suscripciones al blog + Filtrar por etiqueta + Filtrar por blog Esperando conexión Tráfico - Tipo de archivo no admitido como archivo de medios. - Tamaño de fuente, %1$s - Conexión de red perdida, trabajando sin conexión - Conexión de red restablecida Trabajo sin conexión - Tu dominio gratuito de WordPress.com + Conexión de red restablecida + Conexión de red perdida, trabajando sin conexión + Tamaño de fuente, %1$s + Tipo de archivo no admitido como archivo de medios. + No podemos abrir las páginas en este momento. Por favor, inténtalo de nuevo más tarde Simplemente busca un dominio - Dominio principal - %s - Nunca caduca - Otros dominios para %s Mejora a un plan Registra o transfiere un dominio gratis durante un año con cualquier plan de pago anual. - No podemos abrir las páginas en este momento. Por favor, inténtalo de nuevo más tarde + Nunca caduca + Tu dominio gratuito de WordPress.com + Otros dominios para %s + Dominio principal + %s ¡Bloganuary ya está aquí! ¡Vamos! Activa las sugerencias de publicación - Bloganuary usará las sugerencias diarias de publicación para enviarte temas para el mes de enero. Actualmente tienes desactivadas las sugerencias de publicación. Bloganuary utilizará las sugerencias de publicación diarias para enviarte temas durante el mes de enero. + Bloganuary usará las sugerencias diarias de publicación para enviarte temas para el mes de enero. Actualmente tienes desactivadas las sugerencias de publicación. Lee las respuestas de otros blogueros para conseguir inspiración y hacer nuevas conexiones. - Bloganuary - Recibe una sugerencia nueva para inspirarte cada día. Publica tu respuesta. + Recibe una sugerencia nueva para inspirarte cada día. Únete a nuestro reto de escritura de un mes + Bloganuary Durante el mes de enero, las sugerencias para escribir en el blog provendrán de Bloganuary, nuestro reto comunitario para crear un hábito de blogueo para el nuevo año. ¡Bloganuary está a la vuelta de la esquina! - Cancelar + Por esta razón, te recomendamos que edites el bloque utilizando tu navegador web. + Por este motivo, te recomendamos que edites el bloque utilizando el editor web. + También puedes aplanar el contenido desagrupando el bloque. Ir a los ajustes - Has denegado de forma permanente el permiso de la cámara. Es necesario para escanear el código de barras. Actívalo en los ajustes de la aplicación + Cancelar Conceder - También puedes aplanar el contenido desagrupando el bloque. - Por este motivo, te recomendamos que edites el bloque utilizando el editor web. - Por esta razón, te recomendamos que edites el bloque utilizando tu navegador web. + Has denegado de forma permanente el permiso de la cámara. Es necesario para escanear el código de barras. Actívalo en los ajustes de la aplicación Se necesita el permiso de la cámara para escanear el código de barras Conceder permiso de la cámara Se necesita el permiso de la cámara para escanear el código de barras. Escanear código de barras Es posible que los bloques anidados a más de %d niveles no se muestren correctamente en el editor móvil. - Vaciar la búsqueda - Es hora de continuar tu viaje por WordPress en la aplicación Jetpack. Vamos + Es hora de continuar tu viaje por WordPress en la aplicación Jetpack. + Vaciar la búsqueda Muy alta + Introduce tu clave de seguridad para continuar. Hubo algunos problemas con el inicio de sesión de la clave de seguridad Usa una clave de seguridad - Introduce tu clave de seguridad para continuar. - No se pudieron recuperar tus dominios - Todos - De <b>Bloganuary</b> No se pudieron recuperar los dominios - Teclea para obtener más sugerencias - %s / año %s durante el primer año - Buscar un dominio + %s / año Transferir dominio ¿Quieres transferir un dominio que ya tienes? + Teclea para obtener más sugerencias + Buscar un dominio OK Algo ha ido mal al agregar el dominio al carrito. Asegúrate de que estás conectado y vuelve a intentarlo. Error + Todos + No se pudieron recuperar tus dominios Dominio del sitio - Filtrar por autor + De <b>Bloganuary</b> Editado - Alternativamente, puedes convertir el contenido en bloques. + Filtrar por autor Bloque \'%s\' convertido a bloques - Tarjetas + Alternativamente, puedes convertir el contenido en bloques. Agregar o eliminar atajos - Atajos - Activar atajos Desactivar atajos + Activar atajos + Atajos + Tarjetas * Dominio gratuito durante el primer año incluido en todos los planes de pago anuales. Elige el sitio Utilízalo con un sitio que ya hayas iniciado. + Sitio de WordPress.com existente + Obtener dominio + Agrega un sitio más tarde. + Solo tienes que comprar un dominio + No te preocupes, puedes agregar un sitio más adelante. + Elige cómo\nutilizar tu dominio + Elige cómo quieres utilizar tu dominio + Comprar dominio Buscar un dominio Pulsa abajo para encontrar tu dominio perfecto. No tienes dominios Comprueba que estás conectado y tira para actualizar. - Caduca el %1$s - Todos los dominios Abrir detalles del dominio - Comprar un dominio Busca en tus dominios - No te preocupes, puedes agregar un sitio más adelante. - Sitio de WordPress.com existente - Elige cómo\nutilizar tu dominio - Elige cómo quieres utilizar tu dominio - Obtener dominio - Agrega un sitio más tarde. - Solo tienes que comprar un dominio - Comprar dominio + Comprar un dominio + Todos los dominios + Caduca el %1$s Cuenta y ajustes - Gratis durante el primer año con los planes de pago anuales Elige un plan - Puede que te guste - Guardar + Gratis durante el primer año con los planes de pago anuales Guardado - Los bloques anidados a más profundidad de %d niveles puede que no se procesen correctamente en el editor móvil. Por este motivo, recomendamos allanar el contenido desagrupando el bloque o editando el bloque usando el editor web. - Bloque profundamente anidado - Patrones sincronizados - Toca aquí para mostrar más detalles. + Guardar + Puede que te guste Desagrupar bloque + Toca aquí para mostrar más detalles. + Patrones sincronizados + Bloque profundamente anidado + Los bloques anidados a más profundidad de %d niveles puede que no se procesen correctamente en el editor móvil. Por este motivo, recomendamos allanar el contenido desagrupando el bloque o editando el bloque usando el editor web. El bloque no se puede procesar debido a que está profundamente anidado. Toca aquí para más detalles. Uy, vaya, algo salió mal. Por favor, inténtalo de nuevo más tarde. Ir a la web Pulsa el botón de personalización para mostrar más tarjetas. Todas las tarjetas están ocultas + Descubre cómo sacarle el máximo partido a tu sitio con la aplicación. Acciones recientes realizadas en tu sitio. - Promociona una entrada y mira las campañas actuales. + Vista general de las páginas de tu sitio. Ideas diarias para las entradas de tu blog. Sugerencias para bloguear - Tus últimos borradores de entradas. - Borradores de entradas - Descubre cómo sacarle el máximo partido a tu sitio con la aplicación. - Vista general de las páginas de tu sitio. + Promociona una entrada y mira las campañas actuales. Tus próximas entradas programadas. Entradas programadas + Tus últimos borradores de entradas. + Borradores de entradas Vistas, visitantes y me gusta El contenido de las tarjetas puede variar en función de lo que esté pasando con tu sitio - Cambiar ajustes - Seleccionar más - Solo estarán disponibles las fotos y videos seleccionados a los que hayas dado acceso. Agregar u ocultar tarjetas Personalizar la pestaña de inicio Pulsa para personalizar la pestaña Inicio Personaliza la pestaña Inicio + Cambiar ajustes + Seleccionar más + Solo estarán disponibles las fotos y videos seleccionados a los que hayas dado acceso. Ver todas las campañas Toda la actividad Todas las páginas - Agregar una imagen o video Elegir un archivo - Ver todos los borradores + Agregar una imagen o video Ver todas las entradas programadas - Hola, soy Jetpack AI Assistant. - Si no puedo responder a tu pregunta, te ayudaré a abrir una petición de asistencia con nuestro equipo. - Ocultar esto + Ver todos los borradores Ver estadísticas + Ocultar esto + Si no puedo responder a tu pregunta, te ayudaré a abrir una petición de asistencia con nuestro equipo. + Hola, soy Jetpack AI Assistant. Accede a este bloque de Paywall en tu navegador web para realizar ajustes avanzados. Respuesta: Pregunta: Transcripción del bot móvil de Jetpack: Error al enviar la petición de asistencia - Creando petición de asistencia… Petición creada - ¿En qué podemos ayudarte? - Contactar con el soporte técnico - Enviar un mensaje… + Creando petición de asistencia… + ¿Cómo puedo utilizar mi dominio personalizado en la aplicación? No me acuerdo de mis datos de acceso ¿Por qué no puedo acceder? - ¿Cuál es la dirección de mi sitio? - ¿Cómo puedo utilizar mi dominio personalizado en la aplicación? No puedo subir fotos/videos Ayuda, mi sitio no funciona. + ¿Cuál es la dirección de mi sitio? ¿No estás seguro/a de qué preguntar? + Contactar con el soporte técnico + ¿En qué podemos ayudarte? + Enviar un mensaje… Borrar %1$d compartidas en redes sociales restantes - Algo salió mal - Algo salió mal, no se pudieron recoger las campañas - Algo salió mal CERRAR A la app de WordPress le faltan componentes obligatorios y debe ser reinstalada de la Google Play Store. Instalación fallida - Compartir social + Algo salió mal + Algo salió mal + Algo salió mal, no se pudieron recoger las campañas Conectar cuentas Compartir social + Compartir social Social Se compartirá en %1$d cuentas - No se compartirá en ninguna red social Se compartirá en %1$d de %2$d cuentas Se compartirá en %1$s - Ahora no - Conectar cuentas + No se compartirá en ninguna red social Personaliza el mensaje que quieres compartir. Si no agregas tu propio texto aquí, usaremos el título de la entrada como mensaje. Personalizar el mensaje - Insertar bloque de audio - Insertar bloque de galería - Insertar bloque de imagen + Ahora no + Conectar cuentas Insertar bloque de video - Detalles de la campaña - Crear campaña - Campaña de Blaze - Campañas de Blaze - Presupuesto + Insertar bloque de imagen + Insertar bloque de galería + Insertar bloque de audio Crear No has creado ninguna campaña todavía. Haz clic en Crear para empezar. No tienes campañas - ACTIVA - CANCELADA - COMPLETADA - EN MODERACIÓN - RECHAZADA - PROGRAMADA + Detalles de la campaña + Campañas de Blaze + Presupuesto Clics Impresiones - 1 entrada compartidas en redes sociales restante + PROGRAMADA + EN MODERACIÓN + CANCELADA + RECHAZADA + COMPLETADA + ACTIVA + Crear campaña + Campaña de Blaze + No se pudo cargar el flujo de promoción de Blaze + Aumenta el tráfico compartiendo automáticamente las entradas con tus amigos a través de las redes sociales. Cerrar editor Rehacer el último cambio Deshacer el último cambio + 1 entrada compartidas en redes sociales restante Suscríbete ahora para compartir más - Aumenta el tráfico compartiendo automáticamente las entradas con tus amigos a través de las redes sociales. - No se pudo cargar el flujo de promoción de Blaze Aumenta el tráfico compartiendo automáticamente las entradas con tus amigos a través de las redes sociales. Compartir en redes sociales - La edición de patrones sincronizados todavía no está incluida en %s para Android - La edición de patrones sincronizados todavía no está incluida en %s para iOS %s separado + La edición de patrones sincronizados todavía no está incluida en %s para iOS + La edición de patrones sincronizados todavía no está incluida en %s para Android Reutilizable Se ha producido un error al guardar tus opciones de privacidad. - Analítica - Nos permiten optimizar el rendimiento mediante la recopilación de información sobre la forma en que los usuarios interactúan con nuestras aplicaciones para móviles. - Tu privacidad es extremamente importante para nosotros y siempre lo ha sido. Utilizamos, almacenamos y procesamos tus datos personales para optimizar nuestra aplicación (y tu experiencia) de diversas maneras. Algunos usos de tus datos son absolutamente necesarios para que las cosas funcionen, y otros puedes personalizarlos en los Ajustes. Guardar Ajustes + Nos permiten optimizar el rendimiento mediante la recopilación de información sobre la forma en que los usuarios interactúan con nuestras aplicaciones para móviles. + Analítica Gestión de la privacidad + Tu privacidad es extremamente importante para nosotros y siempre lo ha sido. Utilizamos, almacenamos y procesamos tus datos personales para optimizar nuestra aplicación (y tu experiencia) de diversas maneras. Algunos usos de tus datos son absolutamente necesarios para que las cosas funcionen, y otros puedes personalizarlos en los Ajustes. Yo. Gestionar los detalles de tu perfil. Mensaje - No es posible cerrar la cuenta de este usuario porque tiene compras activas. - No es posible cerrar la cuenta de este usuario porque tiene suscripciones activas. - Ocurrió un error al cerrar la cuenta. - Se ha cerrado la cuenta. + Bloque desagrupado + Bloque agrupado El dominio puede tardar hasta 30 minutos en empezar a funcionar correctamente. Tu nuevo dominio <b>%s</b> se está configurando. ¡Todo listo! Obtén un dominio gratuito durante el primer año, elimina los anuncios de tu sitio y aumenta tu espacio de almacenamiento. Consigue un dominio gratis con un plan anual - Bloque agrupado - Bloque desagrupado Obtén más información sobre las plantillas Tu página de inicio usa una plantilla de tema, por lo que se abrirá en el editor web. Página de inicio - No es posible cerrar la cuenta de este usuario de inmediato porque tiene compras activas. Contacta con nuestros Happiness Engineers para eliminar la cuenta definitivamente. + Se ha cerrado la cuenta. + Ocurrió un error al cerrar la cuenta. + No es posible cerrar la cuenta de este usuario porque tiene compras activas. + No es posible cerrar la cuenta de este usuario porque tiene suscripciones activas. No es posible cerrar la cuenta de este usuario si tiene cargos rechazados sin resolver. - No se pudo cerrar la cuenta automáticamente. + No es posible cerrar la cuenta de este usuario de inmediato porque tiene compras activas. Contacta con nuestros Happiness Engineers para eliminar la cuenta definitivamente. No tienes autorización para cerrar la cuenta. + No se pudo cerrar la cuenta automáticamente. Confirmar el cierre de la cuenta… Para confirmar, vuelve a introducir tu nombre de usuario antes de cerrarla. Cerrar cuenta - La opción de compartir automáticamente en Twitter ya no está disponible debido a las modificaciones que ha sufrido esta red social en lo que respecta a términos y precios. Saber más + La opción de compartir automáticamente en Twitter ya no está disponible debido a las modificaciones que ha sufrido esta red social en lo que respecta a términos y precios. La opción de compartir automáticamente en Twitter ya no está disponible %s para iOS aún no es compatible con editar bloques reutilizables %s para Android aún no es compatible con editar bloques reutilizables Activa las notificaciones para estar al tanto de lo que sucede en tu sitio La aplicación de Jetpack tiene todas las funciones de la aplicación de WordPress, y ahora ofrece acceso exclusivo a Estadísticas, Lector, Notificaciones y mucho más. - Usa WordPress con %s en la\u00A0aplicación de Jetpack. Usa WordPress con %s en la\u00A0aplicación de Jetpack. - Actividad reciente + Usa WordPress con %s en la\u00A0aplicación de Jetpack. Color sin etiquetar. %s + Actividad reciente Como en el ejemplo superior, un dominio le permite a la gente encontrar y visitar tu sitio desde su navegador. Elnombredetuweb.com - Puede tardar hasta 30 minutos en que tu dominio personalizado empiece a funcionar. - Te hemos mandado tu recibo por correo electrónico. %s - el primer año - Busca una dominio corto y memorable para ayudar a la gente a encontrar y visitar tu sitio. Buscar con palabras clave + Busca una dominio corto y memorable para ayudar a la gente a encontrar y visitar tu sitio. + el primer año Tu web ha sido creada con éxito, pero hemos encontrado un problema al preparar tu dominio personalizado al finalizar la compra. Por favor, inténtalo otra vez o contacta con nuestro soporte para obtener ayuda. + Puede tardar hasta 30 minutos en que tu dominio personalizado empiece a funcionar. + Te hemos mandado tu recibo por correo electrónico. %s Las notificaciones de la App han sido desactivadas. Pulsa aquí para activarlas. Recomendamos <b>desinstalar la aplicación WordPress</b> en tu dispositivo para evitar conflictos de datos. Parece que todavía tienes la aplicación WordPress instalada. Ya no necesitas la aplicación WordPress en tu dispositivo Recomendamos <b>desinstalar la aplicación WordPress</b> en tu dispositivo para evitar conflictos de datos. Bienvenido a la aplicación Jetpack. Puedes desinstalar la aplicación WordPress. - Privacidad y valoraciones Eliminar bloques - Para usar recordatorios para publicar tienes que activar los avisos instantáneos. - Crear otra página + Privacidad y valoraciones + Ajustes de reproducción + Color de la barra de reproducción + Manual + Dinámica + Describe el propósito de la imagen. Déjalo vacío si la imagen es decorativa. Comience con diseños personalizados y preparados para dispositivos móviles + Crear otra página Agregar páginas a tu sitio - Describe el propósito de la imagen. Déjalo vacío si la imagen es decorativa. - Dinámica - Manual - Color de la barra de reproducción - Ajustes de reproducción + Para usar recordatorios para publicar tienes que activar los avisos instantáneos. Activar los avisos instantáneos - Activar los avisoa + Continuar con subdominio + Comprar dominio + Fotos y videos, Música y audio Música y audio Fotos y videos - Fotos y videos, Música y audio %s necesita permisos para acceder a tus audios + %s necesita permisos para acceder a tus videos %s necesita permisos para acceder a tus fotos - %s necesita permisos para acceder a tu música, audios, fotos y videos %s necesita permisos para acceder a tus fotos y videos - %s necesita permisos para acceder a tus videos - Continuar con subdominio - Comprar dominio + %s necesita permisos para acceder a tu música, audios, fotos y videos + Activar los avisoa Ve a Ajustes &rarr; Notificaciones &rarr; Ajustes de la app, y activa %1$s para recibir notificaciones inmediatamente. Tendrás que abrir la aplicación para ver las notificaciones. Las notificaciones push están desactivadas + Las notificaciones push están desactivadas. Descarta el aviso del permiso de notificaciones. Corrección - Las notificaciones push están desactivadas. <b>%1$s</b> está usando %2$s plugins individuales de Jetpack - La aplicación de WordPress no es compatible con los los plugins individuales de Jetpack. <b>%1$s</b> está usando el plugin <b>%2$s</b> + La aplicación de WordPress no es compatible con los los plugins individuales de Jetpack. <b>%1$s</b> está usando plugins individuales de Jetpack que no son compatibles con la aplicación de WordPress. <b>%1$s</b> está usando el plugin <b>%2$s</b> que no es compatible con la aplicación de WordPress. - Por favor, pásate a la aplicación Jetpack donde te guiaremos para que conectes el plugin Jetpack para usar este sitio con la aplicación. No se pudo acceder a algunos de tus sitios No se pudo acceder a uno de tus sitios + Por favor, pásate a la aplicación Jetpack donde te guiaremos para que conectes el plugin Jetpack para usar este sitio con la aplicación. Cambia a la aplicación Jetpack %1$s usa %2$s, que todavía no es compatible con todas las funciones de la aplicación.\n\nInstala el %3$s para usar la aplicación con este sitio. - %1$s usa %2$s, que todavía no es compatible con todas las funciones de la aplicación. Instala el %3$s. Este sitio + %1$s usa %2$s, que todavía no es compatible con todas las funciones de la aplicación. Instala el %3$s. %1$s usa %2$s, que todavía no es compatible con todas las funciones de la aplicación. Instala el %3$s. El cambio es gratuito y solo te llevará un minuto. - Hecho - Configurar - Ahora que Jetpack está instalado, solo tenemos que configurarlo. Solo te llevará un minuto. + Encontrarás más información en Jetpack.com + Cambiar a la aplicación de Jetpack WP Admin - Contenido Gestionar Tráfico - Cambiar a la aplicación de Jetpack - Encontrarás más información en Jetpack.com + Contenido + Configurar + Hecho + Ahora que Jetpack está instalado, solo tenemos que configurarlo. Solo te llevará un minuto. + Promocionar una entrada con Blaze ahora Promocionar esta página con Blaze Promocionar esta entrada con Blaze - Promocionar una entrada con Blaze ahora Inicia y detén la actividad promocional con Blaze y haz un seguimiento del rendimiento siempre que quieras. - Blaze - Comienza a promocionar cualquier entrada o página en cuestión de minutos y a un precio muy asequible. Tu contenido aparecerá en millones de sitios web de WordPress y Tumblr. + Comienza a promocionar cualquier entrada o página en cuestión de minutos y a un precio muy asequible. Genera más tráfico hacia tu sitio con Blaze - Gratis - Ayuda - Registros - Ayuda - al año - Mejor alternativa - Recomendado - Oferta + Blaze Este dominio ya está registrado + Oferta + Recomendado + Mejor alternativa + al año + Ayuda Con nuestras preguntas frecuentes podrás resolver algunas de tus dudas. ¡Gracias por cambiar a la aplicación Jetpack! + Registros Entradas + Gratis + Ayuda Menú de bloques - Contactar con el soporte técnico + Muestra tu trabajo en millones de sitios. + Promociona tu contenido con Blaze Cerrar + Contactar con el soporte técnico Instalar el plugin completo Términos y condiciones Al configurar Jetpack, aceptas nuestros - Muestra tu trabajo en millones de sitios. - Promociona tu contenido con Blaze plugin completo de Jetpack - %1$s usa %2$s, que todavía no es compatible con todas las funciones de la aplicación.\n\nInstala el %3$s para usar la aplicación con este sitio. plugins individuales de Jetpack el plugin %1$s + %1$s usa %2$s, que todavía no es compatible con todas las funciones de la aplicación.\n\nInstala el %3$s para usar la aplicación con este sitio. Instala el plugin completo de Jetpack + Solo hay un sitio disponible, por lo que no puedes cambiar tu sitio principal. Contactar con soporte Reintentar En estos momentos, no se puede instalar Jetpack. - Ícono de error Se ha producido un problema - Solo hay un sitio disponible, por lo que no puedes cambiar tu sitio principal. - Promocionar con Blaze - Jetpack instalado + Ícono de error Todo listo para usar este sitio con la aplicación. + Jetpack instalado + Instala Jetpack en tu sitio. Esto puede llevar unos minutos completarse. + Instalando Jetpack Continuar Las credenciales de tu web no se almacenarán y solo se usarán para instalar Jetpack. Instalar Jetpack - Instala Jetpack en tu sitio. Esto puede llevar unos minutos completarse. - Instalando Jetpack Ícono de Jetpack + Promocionar con Blaze Libera todo el potencial de tu sitio. Obtén estadísticas, notificaciones y más con Jetpack. + Tu sitio tiene el plugin de Jetpack + La aplicación móvil Jetpack está diseñada para funcionar junto con el plugin de Jetpack. Haz el cambio ahora y obtén acceso a estadísticas, notificaciones o el lector, entre otras funciones. Recibe notificaciones por nuevos comentarios, Me gusta, visualizaciones, etc. Comparte tu contenido y busca tus comunidades y sitios favoritos para seguirlos. Consulta el crecimiento del tráfico a tu sitio con información útil y estadísticas completas. - La aplicación móvil Jetpack está diseñada para funcionar junto con el plugin de Jetpack. Haz el cambio ahora y obtén acceso a estadísticas, notificaciones o el lector, entre otras funciones. - Tu sitio tiene el plugin de Jetpack + Estadísticas y datos clave + Con Jetpack sacarás más partido de tu sitio de WordPress. El cambio es gratuito y solo te llevará un minuto. + Dale un impulso a WordPress con Jetpack Puedes gestionar los recordatorios y estímulos para bloguear en cualquier momento desde Mi sitio > Ajustes > Bloguear Cada notificación incluirá una palabra o una breve frase inspiradora Ve a <b>Ajustes del sitio</b> para reactivarlos. Se han ocultado los estímulos para bloguear. - Con Jetpack sacarás más partido de tu sitio de WordPress. El cambio es gratuito y solo te llevará un minuto. - Estadísticas y datos clave - Dale un impulso a WordPress con Jetpack Desactivar estímulos - Bloguear - Mostrar estímulos - Recordatorios de blogueo Recibe ayuda de nuestro grupo de voluntarios. Foros de la comunidad + Recordatorios de blogueo + Mostrar estímulos + Bloguear Por favor, instala la Google Play Store para obener al app Jetpack - Algunas características de Jetpack como Estadísticas, Lector o Notificaciones, entre otras, han sido eliminadas de la app de WordPress. - Las características de Jetpack se han trasladado. Hacerlo más tarde Cambiar a Jetpack + Algunas características de Jetpack como Estadísticas, Lector o Notificaciones, entre otras, han sido eliminadas de la app de WordPress. + Las características de Jetpack se han trasladado. %1$s se trasladarán a %2$s - %1$s se trasladarán pronto %1$s se trasladará a %2$s + %1$s se trasladarán pronto %1$s se trasladará pronto + Obtén la aplicación de Jetpack Ver todas las respuestas %1$s es menor que la semana anterior %1$s es mayor que la semana anterior - Tus visitas en los últimos siete días son %1$s menos que en los siete días anteriores. - Tus visitas en los últimos siete días son %1$s más que en los siete días anteriores. Tus visitantes en los últimos siete días son %1$s menos que en los siete días anteriores. Tus visitantes en los últimos siete días son %1$s más que en los siete días anteriores. - Últimos siete días + Tus visitas en los últimos siete días son %1$s menos que en los siete días anteriores. + Tus visitas en los últimos siete días son %1$s más que en los siete días anteriores. Siete días anteriores - 1 semana + Últimos siete días %d semanas - Obtén la aplicación de Jetpack + 1 semana Desde <b>Day One</b> - Algunas funciones, como estadísticas, lector o avisos, se trasladarán pronto a la aplicación móvil de Jetpack. Recuérdamelo más tarde + Algunas funciones, como estadísticas, lector o avisos, se trasladarán pronto a la aplicación móvil de Jetpack. + Cambiar a la aplicación de Jetpack Más información en jetpack.com El cambio es gratuito y solo lleva un minuto. - Se van a retirar de la aplicación de WordPress las estadísticas, lectura, avisos y otras funcionalidades de Jetpack el %s. Pronto se van a retirar de la aplicación de WordPress las estadísticas, lectura, avisos y otras funcionalidades de Jetpack. - Cambiar a la aplicación de Jetpack - Se ha producido un error al cargar las indicaciones. - ¡Oh! - Todavía no hay sugerencias - 1 respuesta - %d respuestas - 0 respuestas + Se van a retirar de la aplicación de WordPress las estadísticas, lectura, avisos y otras funcionalidades de Jetpack el %s. Las funciones de Jetpack se trasladarán pronto. Los avisos se están trasladando a la aplicación de Jetpack El lector se está trasladando a la aplicación de Jetpack La estadísticas se están trasladado a la aplicación de Jetpack Cambiar a la nueva aplicación de Jetpack + Se ha producido un error al cargar las indicaciones. + ¡Oh! + Todavía no hay sugerencias + %d respuestas + 1 respuesta + 0 respuestas ✓ Respondido Peticiones cerrar Alternativamente, puedes separar y editar este bloque por separado tocando en \"Separar\". - Borrando la categoría que ha fallado - Categoría borrada correctamente ¿Borrar permanentemente la categoría \'%s\'? + Categoría borrada correctamente + Borrando la categoría que ha fallado Borrando la categoría - Actualizar categoría Actualizando la categoría + Actualizar categoría + Las entradas de este usuario no volverán a mostrarse Bloquear usuario Denunciar a este usuario - Las entradas de este usuario no volverán a mostrarse - enlaces URI - enlaces web - Continuar sin Jetpack Abrir enlaces en WordPress Parece que tienes instalada la aplicación de Jetpack.\n\n¿Quieres abrir enlaces en la aplicación de Jetpack en el futuro?\n\nPuedes cambiar esta opción en cualquier momento desde Ajustes de la aplicación > Abrir enlaces en Jetpack. ¿Quieres abrir enlaces en Jetpack? - Cambia a la aplicación de Jetpack para seguir recibiendo notificaciones en tiempo real en tu dispositivo. - Jetpack proporciona estadísticas, notificaciones y mucho más para ayudarte a crear y ampliar el sitio de WordPress de tus sueños. + Continuar sin Jetpack Jetpack proporciona estadísticas, notificaciones y mucho más para ayudarte a crear y ampliar el sitio de WordPress de tus sueños.\n\nLa aplicación de WordPress ya no admite la creación de sitios nuevos. + Jetpack proporciona estadísticas, notificaciones y mucho más para ayudarte a crear y ampliar el sitio de WordPress de tus sueños. Crear un sitio de WordPress nuevo con la aplicación de Jetpack + enlaces web + enlaces URI + Cambia a la aplicación de Jetpack para seguir recibiendo notificaciones en tiempo real en tu dispositivo. Cambia a la aplicación de Jetpack para buscar tus entradas y sitios favoritos, seguirlos e indicar que te gustan con el Lector. Cambia a la aplicación de Jetpack para ver cómo crece el tráfico de tu sitio con estadísticas y detalles. - De acuerdo - ¿Necesitas ayuda? - Abrir enlaces en Jetpack - No se puede desactivar Abrir enlaces en Jetpack - No se puede activar Abrir enlaces en Jetpack Recibe tus notificaciones con la aplicación de Jetpack Sigue cualquier sitio con la aplicación de Jetpack Obtén tus estadísticas con la nueva aplicación de Jetpack - Contacta con el equipo de soporte o inténtalo de nuevo más tarde. - Algo no ha ido como estaba previsto. Tus datos están protegidos, pero no podemos transferirlos en este momento. + No se puede desactivar Abrir enlaces en Jetpack + No se puede activar Abrir enlaces en Jetpack + Abrir enlaces en Jetpack + ¿Necesitas ayuda? + De acuerdo No podemos transferir tus datos y ajustes sin una conexión de red. Comprueba tu conexión de red para asegurarte de que funcione y vuelve a intentarlo. No se pudo conectar a Internet. - Terminar + Contacta con el equipo de soporte o inténtalo de nuevo más tarde. + Algo no ha ido como estaba previsto. Tus datos están protegidos, pero no podemos transferirlos en este momento. Vaya, se ha producido un error. - Ícono Quitar aplicación de WordPress Volver a intentarlo + Terminar + Ícono Quitar aplicación de WordPress Hemos transferido todos tus datos y ajustes. Todo está tal y como lo dejaste. ¡Gracias por cambiar a Jetpack! Desactivaremos las notificaciones de la aplicación de WordPress. Recibirás las mismas notificaciones, pero a partir de ahora desde la aplicación de Jetpack. + Centro de Ayuda de WordPress + Soporte Permite que la aplicación desactive las notificaciones de WordPress. desactivar notificaciones de WordPress - Soporte - Centro de Ayuda de WordPress - Tu foto de perfil - Continuar ¿Necesitas ayuda? + Continuar Hemos encontrado tu sitio. Continúa para transferir todos tus datos y acceder a Jetpack automáticamente. Hemos encontrado tus sitios. Continúa para transferir todos tus datos y acceder a Jetpack automáticamente. + Tu foto de perfil Parece que estas realizando el cambio desde la aplicación de WordPress. ¡Te damos la bienvenida a Jetpack! ícono - Atributos de la página Página superior + Atributos de la página Contribuir Noticias 1 respuesta @@ -680,43 +684,40 @@ Language: es_CL ¿Estás disfrutando de %s? Comparte una entrada en %s Conexiones de Jetpack Social - Conexiones de Jetpack Social Por favor, accede a la aplicación Jetpack para agregar un widget. + Conexiones de Jetpack Social Acabamos de enviar un enlace mágico a ¡Revisa tu correo electrónico en este dispositivo! Usar una contraseña para acceder - Los avisos funcionan con Jetpack Mantente informado con actualizaciones en tiempo real para nuevos comentarios, tráfico del sitio, informes de seguridad y más. - Reader funciona con Jetpack - Encuentra, sigue y dale \"Me gusta\" a todos tus sitios y publicaciones favoritos con Reader, ahora disponible en la nueva aplicación Jetpack. - Las estadísticas funcionan con Jetpack + Los avisos funcionan con Jetpack Observa cómo crece tu tráfico y obtén información sobre tu audiencia con estadísticas e información rediseñadas, ahora disponibles en la nueva aplicación Jetpack. - WordPress es mejor con Jetpack + Las estadísticas funcionan con Jetpack + Encuentra, sigue y dale \"Me gusta\" a todos tus sitios y publicaciones favoritos con Reader, ahora disponible en la nueva aplicación Jetpack. + Reader funciona con Jetpack La nueva app de Jetpack tiene estadísticas, lector, avisos, y más para mejorar tu WordPress. - Degradado - URL no válida. - Funciona gracias a Jetpack - Actualiza tu plan para subir audio + WordPress es mejor con Jetpack Actualiza tu plan para usar fondos de video + Actualiza tu plan para subir audio + Funciona gracias a Jetpack + URL no válida. + Degradado Continuar a los avisos - Continuar al lector Continuar a las estadísticas + Continuar al lector Prueba la nueva aplicación Jetpack Problema al mostrar el bloque. \nToca para intentar la recuperación del bloque. - ⭐️ Tu última entrada %1$s ha recibido %2$s Me gusta. - La semana pasada tuviste %1$s visitas, %2$s Me gusta y %3$s comentarios. La semana pasada tuviste %1$s visitas y %2$s comentarios La semana pasada tuviste %1$s visitas y %2$s Me gusta La semana pasada tuviste %1$s visitas. + La semana pasada tuviste %1$s visitas, %2$s Me gusta y %3$s comentarios. + ⭐️ Tu última entrada %1$s ha recibido %2$s Me gusta. Funciona gracias a Jetpack Imagen que señala que el escaneo de código de acceso está en proceso + Imagen que señala un error ¿Seguro que quieres continuar? Salir del flujo de escaneo de código de acceso No se pudo acceder con este código de acceso. Toca el botón Analizar de nuevo para volver a escanear el código. - Imagen que señala un error - Descartar - Toca Descartar y vuelve a tu navegador web para continuar. - ¡Has accedido! Ha fallado la autentificación Este código de acceso ha caducado. Toca el botón Analizar de nuevo para volver a escanear el código. El código de acceso ha caducado @@ -725,485 +726,488 @@ Language: es_CL Se requiere una conexión activa a Internet para escanear códigos de acceso No hay conexión Analizar de nuevo - ¿Estás intentando acceder a tu navegador web cerca de %1$s? + Descartar + Toca Descartar y vuelve a tu navegador web para continuar. + ¡Has accedido! Sí, quiero acceder Escanea solo los códigos QR que has cogido directamente del navegador web. No escanees nunca un código que te haya enviado alguien. + ¿Estás intentando acceder a tu navegador web cerca de %1$s? ¿Estás intentando acceder a %1$s cerca de %2$s? 💡Comentar en otros blogs es una buena forma de aumentar la atención y seguidores a tu nuevo sitio. 💡Toca \"VER MÁS\" para ver los principales comentaristas. - ✍️ Programa tus borradores para publicar en el mejor momento y llegar a tu público. ¡Vuelve a comprobarlo cuando hayas publicado tu primera entrada! Comprueba nuestros consejos destacados para aumentar tus visitas y tu tráfico %1$s + ✍️ Programa tus borradores para publicar en el mejor momento y llegar a tu público. 💡Publicar con constancia es una buena forma de crear tu público. Agrega un recordatorio para mantenerte al día. 💡Bloguea más rápidamente con nuestro curso <i>Introducción a los blogs</i> ofrecido por expertos. Se están cargando los estímulos para bloguear. Espera un momento e inténtalo de nuevo. ¿No puedes decidirte? Puedes cambiar el tema en cualquier momento. - Vista previa del tema %s Bloguear Elegido para ti Ideal para %s + Vista previa del tema %s Elige un tema - Más información Me he saltado el estímulo para bloguear de hoy - Programar + Más información Totales Otros Buscar - Vistas WordPress - Configurar recordatorios + Vistas + Programar Programa tu entrada + Configurar recordatorios Configura tus recordatorios de blogueo Consulta el curso Haz crecer tu audiencia - %1$s. Seleccionado actualmente: %2$s - Botones de flechas - Arrastrar y soltar - Arrastrar y soltar hace que reordenar bloques sea algo trivial. Presiona y sujeta un bloque, luego arrástralo a su nueva ubicación y suéltalo. - Archivo de imagen no encontrado. También puedes reorganizar los bloques tocando un bloque y luego tocando las flechas arriba y abajo que aparecen en la parte inferior izquierda del bloque para moverlo encima o debajo de otros bloques. - Explorar código de acceso - Tarea completada + Archivo de imagen no encontrado. + Arrastrar y soltar hace que reordenar bloques sea algo trivial. Presiona y sujeta un bloque, luego arrástralo a su nueva ubicación y suéltalo. + Arrastrar y soltar + Botones de flechas + %1$s. Seleccionado actualmente: %2$s Todas las tareas están completas + Tarea completada + Explorar código de acceso ⭐️ Tu última entrada %1$s ha recibido %2$s me gusta. No hay suficiente actividad. ¡Vuelve a comprobarlo más tarde, cuando tu sitio haya tenido más visitas! - %1$s (%2$s%%) %1$s, %2$s%% del total de suscriptores + %1$s (%2$s%%) Copiar enlace ¡Enhorabuena! Ya sabes manejarte<br/> + Conoce la aplicación Sube los medios directamente a tu sitio desde tu dispositivo o cámara Sube fotos o videos - Conoce la aplicación - Miniatura de video + Obtén actualizaciones en tiempo real desde tu bolsillo + Selecciona %1$s Medios %2$s para ver tu biblioteca actual. Obtén actualizaciones en tiempo real desde tu bolsillo. - Selecciona la %1$s Pestaña de avisos %2$s para recibir actualizaciones sobre la marcha. Comprueba tus avisos - Utiliza <b> Descubrir </b> para encontrar sitios y etiquetas. - Selecciona %1$s Medios %2$s para ver tu biblioteca actual. + Selecciona la %1$s Pestaña de avisos %2$s para recibir actualizaciones sobre la marcha. Selecciona %1$s Más %2$s para subir medios. Puedes agregarlos a tus entradas o páginas desde cualquier dispositivo. - Obtén actualizaciones en tiempo real desde tu bolsillo + Utiliza <b> Descubrir </b> para encontrar sitios y etiquetas. + Miniatura de video Principales comentaristas - Publicada hace un día - Publicada hace un minuto - Publicada hace un mes + Publicada hace %1$d años Publicada hace un año - Publicada hace una hora + Publicada hace %1$d meses + Publicada hace un mes Publicada hace %1$d días + Publicada hace un día Publicada hace %1$d horas + Publicada hace una hora Publicada hace %1$d minutos - Publicada hace %1$d meses + Publicada hace un minuto Publicada hace unos segundos - Publicada hace %1$d años Total de comentarios Total de \"Me gusta\" + Descartar Responder Estímulo diario - Descartar Entendido Toca <b>%1$s</b> para ver tu sitio Selecciona el %1$s Lector %2$s para descubrir otros sitios. Aprende más sobre los estímulos - Miniatura del medio - Video seleccionado Video no seleccionado + Video seleccionado + Miniatura del medio 🔥 La hora más popular %1$s %2$s Visitar el escritorio Tu sitio ya está protegido con VaultPress. Más abajo, puedes encontrar un enlace a tu escritorio de VaultPress. - Idioma actual: Tu sitio tiene VaultPress + Idioma actual: Crear sitio - Más información - Conviértete en un mejor escritor creando un hábito de escritura. Toca para más información. Agregar bloques Pantalla inicial + Más información + Conviértete en un mejor escritor creando un hábito de escritura. Toca para más información. Nuevo en la aplicación móvil de WordPress: Mensajes - ¿Te interesa crear tu audiencia? Echa un vistazo a nuestros <a href=\"%1$s\">mejores consejos</a>. Un buen nombre es corto y fácil de recordar.\nPuedes cambiarlo más adelante. Dale un nombre a tu web %s Nombre del sitio + ¿Te interesa crear tu audiencia? Echa un vistazo a nuestros <a href=\"%1$s\">mejores consejos</a>. Vistas y visitantes - Establecer como imagen destacada Eliminada como imagen destacada - Pronto eliminaremos el editor clásico para las nuevas entradas, pero esto no afectará a la edición de ninguna de tus entradas o páginas existentes. Adelántate ahora activando el editor de bloques en los ajustes del sitio. - Descartar + Establecer como imagen destacada Mantener actual Reemplazar la imagen destacada Ya tienes establecida una imagen destacada. ¿Quieres reemplazarla con la nueva imagen? ¿Reemplazamos la imagen destacada actual? - Cancelar - Aceptar - http(s):// + Descartar + Pronto eliminaremos el editor clásico para las nuevas entradas, pero esto no afectará a la edición de ninguna de tus entradas o páginas existentes. Adelántate ahora activando el editor de bloques en los ajustes del sitio. Prueba el nuevo editor de bloques - Guardando Editar el bloque %s - Eliminar la subida + Guardando Reintentar todo - No se pudo subir el archivo + Eliminar la subida Reintentar + No se pudo subir el archivo No - Bloques: %1$d\nPalabras: %2$d\nCaracteres: %3$d - Estructura del contenido + Cancelar + Aceptar + http(s):// Insertar enlace Beta - Haz una foto o video con la cámara - Elige un medio de la galería + El editor está todavía cargando + Fallo al obtener la estructura del contenido + Bloques: %1$d\nPalabras: %2$d\nCaracteres: %3$d + Estructura del contenido Elige un medio de la biblioteca de medios de WordPress + Elige un medio de la galería + Haz una foto o video con la cámara %dpx - Por favor, espera hasta que se hayan guardado todos los archivos Aceptar - El editor está todavía cargando - Fallo al obtener la estructura del contenido + Por favor, espera hasta que se hayan guardado todos los archivos + Archivos guardándose + Contenido Haz la película de tu vida. - ¡Te mostraremos un nuevo estímulo cada día en tu escritorio para ayudarte a que fluyan esos fluidos creativos! - Nota: Recordármelo Pruébalo ahora - Contenido - Archivos guardándose + Nota: + ¡Te mostraremos un nuevo estímulo cada día en tu escritorio para ayudarte a que fluyan esos fluidos creativos! El mejor modo de convertirte en un mejor escritor es crear un hábito de escritura y compartir con otros - ¡aquí es donde entran los estímulos! - Configurar recordatorios Presentando\nEstímulos para bloguear + Configurar recordatorios Incluir el estímulo para bloquear Publicar con regularidad atrae nuevos lectores. ¡Cuéntanos cuándo quieres escribir y te enviaremos un recordatorio! Conviértete en un mejor escritor creando un hábito - Inmobiliaria - Deportes - Tecnología - Viajes Escritura y poesía - Comunitario y ONG - Educación - Moda + Viajes + Tecnología + Deportes + Inmobiliaria + Política + Fotografía + Personal + Gente + Paternidad + Noticias + Música + Servicios locales + Estilo de vida + Diseño de interiores + Salud + Juegos + Comida + Forma física y ejercicio Películas y televisión Finanzas - Forma física y ejercicio - Comida - Juegos - Salud - Diseño de interiores - Estilo de vida - Servicios locales - Música - Noticias - Paternidad - Gente - Personal - Fotografía - Política + Moda DIY - Omitir por hoy - Ver más estímulos + Educación + Comunitario y ONG + Negocios + Libros + Belleza + Automoción + Arte Ej.: Moda, poesía, política Temática del sitio Toca <b>%1$s</b> para continuar. - Arte - Automoción - Belleza - Libros - Negocios - ✓ Respondido + Omitir por hoy + Ver más estímulos %d respuestas Comparte el estímulo de bloguear - Todos + ✓ Respondido Responder estímulo Estímulos + Todos Esta combinación de color puede ser difícil de leer para la gente. Intenta usar un color de fondo más claro y/o un color de texto más oscuro. - Fallo al insertar los medios.\nToca para más información. Esta combinación de color puede ser difícil de leer para la gente. Intenta usar un color de fondo más oscuro y/o un color de texto más claro. + Fallo al insertar los medios.\nToca para más información. Elige una temática de las listadas a continuación o escribe la tuya propia. ¿De qué trata tu web? - Agregar categorías - Inicio Resumen semanal - Ha habido un problema al comunicar con el sitio. Se ha devuelto un código de error HTTP 401. + Inicio + Agregar categorías ¿Qué aplicación de correo electrónico usas? - No se pudo leer el sitio WordPress en esa URL. Toca en el ícono de ayuda para ver las FAQ. + Ha habido un problema al comunicar con el sitio. Se ha devuelto un código de error HTTP 401. Las llamadas XML-RPC parecen bloqueadas en este sitio (código de error 401). Si el intento de acceso falla, toca en el ícono de ayuda para ver las FAQ. + No se pudo leer el sitio WordPress en esa URL. Toca en el ícono de ayuda para ver las FAQ. Los servicios XML-RPC están desactivados en este sitio. Menú Tu búsqueda incluye caracteres no compatibles en los dominios de WordPress.com. Se permiten los siguientes caracteres: A–Z, a–z, 0–9. - Ocurrió un error al actualizar el contenido del aviso Comprueba tu conexión a Internet y actualiza la página. Estadísticas de hoy + Ocurrió un error al actualizar el contenido del aviso Editar Fallo al moderar los comentarios - Marcar como spam Mover a la papelera + Marcar como spam Rechazar - Navega a la pantalla de selección del diseño Ajustes de la galería de mosaico + Navega a la pantalla de selección del diseño Estilo de la galería Puedes conectar tu cuenta de %s en el sitio web WordPress.com. Cuando hayas terminado, vuelve a la aplicación para cambiar tus ajustes sociales. Ícono de la aplicación Ícono de volver Logotipo de Automattic WordPress - Day One - Jetpack - Pocket Casts - Política de privacidad + WooCommerce + Tumblr Simplenote + Pocket Casts + Jetpack + Day One Código fuente + Política de privacidad Términos del servicio - Tumblr - WooCommerce Trabaja desde cualquier lugar + Trabaja con nosotros Familia Automattic - Instagram Legal y otros + Twitter + Instagram Valóranos Compartir con amigos - Twitter - Trabaja con nosotros Puedes editar este bloque usando la versión web del editor. - Nota: Debes permitir el acceso desde WordPress.com para editar este bloque en el editor móvil. Abrir los ajustes de seguridad de Jetpack - AGREGAR MEDIOS - Ajustes de la dirección + Nota: Debes permitir el acceso desde WordPress.com para editar este bloque en el editor móvil. Nota: El diseño puede variar entre temas y tamaños de pantalla + Ajustes de la dirección + AGREGAR MEDIOS Estamos teniendo problemas en este momento para cargar los datos de tu sitio. - ¡Video no subido! Para subir videos de más de 5 minutos es necesario un plan de pago. + Algunos datos no se han cargado El escritorio no está actualizado. Por favor, comprueba tu conexión y luego pulsa para refrescar. No se pudo actualizar el escritorio. - Algunos datos no se han cargado + ¡Video no subido! Para subir videos de más de 5 minutos es necesario un plan de pago. Agradecimientos Aviso de privacidad de California + Versión %1$s Agradecimientos Legal y otros Sobre %1$s - Versión %1$s Blog - Toca dos veces para seleccionar un tamaño de fuente - Tamaño de la fuente - Obtener soporte - Más opciones de soporte - Seleccionado: Por defecto Lo básico - %1$s (%2$s) - Contactar con el soporte + Seleccionado: Por defecto + Más opciones de soporte + Obtener soporte + Tamaño de la fuente + Toca dos veces para seleccionar un tamaño de fuente Toca dos veces para seleccionar el tamaño de fuente por defecto - Sé el primero en comentar + Contactar con el soporte + %1$s (%2$s) Seguir la conversación - Ha habido un error al obtener los datos de la entrada + Sé el primero en comentar Ver todos los comentarios - Ajustes para seguir la conversación + Ha habido un error al obtener los datos de la entrada Ha habido un error al obtener los comentarios - Copiar la URL desde el portapapeles, %s - Imagen destacada + Ajustes para seguir la conversación Desde el portapapeles + Imagen destacada + Copiar la URL desde el portapapeles, %s Acerca de WordPress - Copiar el enlace - Autor - Cambiado a modo HTML - Cambiado a modo visual + Crear una entrada ¡Publicar regularmente ayuda a crear tu audiencia! Crear tu próxima entrada - Crear una entrada + Cambiado a modo visual + Cambiado a modo HTML Enlace copiado al portapapeles + Autor + Copiar el enlace Agregar un dominio personalizado hace que sea más fácil para tus visitantes encontrar tu sitio Agrega tu dominio Las entradas aparecen en la página de tu blog en orden cronológicamente inverso. ¡Es el momento de compartir tus ideas con el mundo! Crear tu primera entrada - Siguientes entradas programadas Sin título + Siguientes entradas programadas Trabaja en el borrador de una entrada <span style=\"color:#008000;\">Gratis el primer año </span><span style=\"color:#50575e;\"><s>%s /año</s></span> Crear un enlace Seleccionar el dominio Dominios - Marcar como fija - Fijar la entrada en la portada Fija + Fijar la entrada en la portada + Marcar como fija + Dejar de seguir la conversación Activar los avisos de la aplicación Estás siguiendo esta conversación. Recibirás avisos por correo electrónico cuando se publiquen nuevos comentarios. - Dejar de seguir la conversación Gestionar las opciones para seguir la conversación, ventana emergente - No se pudieron activar los avisos de la aplicación No se pudieron desactivar los avisos de la aplicación - Siguiendo esta conversación\n¿Activar los avisos de la aplicación? + No se pudieron activar los avisos de la aplicación + Desactivados los avisos de la aplicación Activados los avisos de la aplicación Cancelada la suscripción a esta conversación - Desactivados los avisos de la aplicación + Siguiendo esta conversación\n¿Activar los avisos de la aplicación? + Buscar un dominio Los dominios comprados en este sitio redirigirán a los visitantes a <b>%s</b> Con tu plan, tienes incluido el registro de dominio gratis durante un año - Buscar un dominio - Agregar un dominio Reclama tu dominio gratuito + Agregar un dominio <span style=\"color:#d63638;\">Caduca el %s</span> Caduca el %s - %s<span style=\"color:#50575e;\"> /año</span> <span style=\"color:#B26200;\">%1$s el primer año </span><span style=\"color:#50575e;\"><s>%2$s /año</s></span> + %s<span style=\"color:#50575e;\"> /año</span> ¿Quieres descartarlos? Hay cambios sin guardar - Comentario El comentario no puede estar vacío - Dirección de correo electrónico - Hecho Correo electrónico del usuario no válido - Nombre + Dirección web no válida El nombre de usuario no puede estar vacío + Dirección de correo electrónico Dirección web - Dirección web no válida + Comentario + Nombre + Hecho Pronto llegarán las vistas previas de los bloques incrustados Resumen semanal - Doble toque para ver las opciones de incrustación. Opciones de incrustación + Doble toque para ver las opciones de incrustación. ¡Sitio creado! Completa otra tarea. - Obtén tu dominio Altura de la línea + Obtén tu dominio Error desconocido al recuperar la plantilla recomendada de la aplicación - Comparte WordPress con un amigo - Dominios - Enlaces rápidos Respuesta recibida no válida No se ha recibido ninguna respuesta Aplicaciones Automattic - Aplicaciones para cualquier pantalla - Recibirás recordatorios para bloquear <b>todos los días</b> a las <b>%s</b>. - Hora del aviso + Comparte WordPress con un amigo + Enlaces rápidos + Dominios Repaso semanal: %s + Hora del aviso + Recibirás recordatorios para bloquear <b>todos los días</b> a las <b>%s</b>. %1$s a la semana a las %2$s Los controles de formato de texto están dentro de la barra de herramientas situada encima del teclado mientras editas un bloque de texto - Cómo editar tu página - Cómo editar tu entrada - Mover bloques - Navega para seleccionar %s - Selecciona un color de arriba Selecionado: %s - Los cambios en la imagen destacada no se verán afectados por los botones de deshacer/rehacer. + Selecciona un color de arriba + Navega para seleccionar %s + Mover bloques + Cómo editar tu entrada + Cómo editar tu página Personalizar bloques + Los cambios en la imagen destacada no se verán afectados por los botones de deshacer/rehacer. Aplica el ajuste Puedes reorganizar los bloques tocando un bloque y luego tocando las flechas arriba y abajo que aparecen en la parte inferior izquierda del bloque para moverlo encima o debajo de otros bloques. - Para eliminar un bloque, selecciona el bloque y haz clic en los tres puntos de la parte inferior derecha del bloque para ver los ajustes. A partir de ahí, elige la opción para eliminar el bloque. Bienvenido al mundo de los bloques - Bloque %s, disponible nuevamente + Para eliminar un bloque, selecciona el bloque y haz clic en los tres puntos de la parte inferior derecha del bloque para ver los ajustes. A partir de ahí, elige la opción para eliminar el bloque. Algunos bloques tienen ajustes adicionales. Toca el ícono de los ajustes en la parte inferior derecha del bloque para ver más opciones. - Una vez que te hayas familiarizado con los nombres de los diferentes bloques, puedes agregar un bloque escribiendo una barra inclinada seguida del nombre del bloque, por ejemplo, \"/imagen\" o \"/encabezado\". + Bloque %s, disponible nuevamente Edición de texto enriquecido + Una vez que te hayas familiarizado con los nombres de los diferentes bloques, puedes agregar un bloque escribiendo una barra inclinada seguida del nombre del bloque, por ejemplo, \"/imagen\" o \"/encabezado\". Haz que tu contenido destaque agregando imágenes, gifs, videos y medios incrustados a tus páginas. - Cada bloque tiene sus propios ajustes. Para encontrarlos, toca en un bloque. Sus ajustes aparecerán en la barra de herramientas de la parte inferior de la pantalla. - Medio incrustado ¡Pruébalo agregando unos cuantos bloques a tu entrada o página! - Los bloques son piezas de contenido que puedes insertar, reorganizar y dar estilo sin necesidad de saber programar. Los bloques son una forma fácil y moderna para que crees bonitos diseños. + Medio incrustado + Cada bloque tiene sus propios ajustes. Para encontrarlos, toca en un bloque. Sus ajustes aparecerán en la barra de herramientas de la parte inferior de la pantalla. Crear diseños + Los bloques son piezas de contenido que puedes insertar, reorganizar y dar estilo sin necesidad de saber programar. Los bloques son una forma fácil y moderna para que crees bonitos diseños. Los bloques te permiten centrarte en la escritura de tu contenido, sabiendo que todas las herramientas de formato que necesitas están ahí para ayudarte a transmitir tu mensaje. Organiza tu contenido en columnas, agrega botones de llamada a la acción y superpón imágenes con texto. Agrega un nuevo bloque en cualquier momento tocando el ícono \"+\" en la barra de herramientas en la parte inferior izquierda. %1$s de %2$s completado - Ha fallado la moderación de uno o más comentarios Aprende lo básico con un rápido recorrido. + Ha fallado la moderación de uno o más comentarios Crear un sitio Ten tu sitio activo y funcionando en solo unos rápidos pasos Crea tu web WordPress - Activar las estadísticas del sitio No se pudieron activar las estadísticas del sitio + Activar las estadísticas del sitio Activa las estadísticas del sitio para ver información detallada sobre el tráfico, los \"Me gusta\", los comentarios y los suscriptores. - Estamos trabajando duro para agregar compatibilidad para vistas previas %s. Mientras tanto, puedes previsualizar el contenido incrustado en la entrada. - ¿Qué es un bloque? ¿Buscas las estadísticas? + ¿Qué es un bloque? + Estamos trabajando duro para agregar compatibilidad para vistas previas %s. Mientras tanto, puedes previsualizar el contenido incrustado en la entrada. Estamos trabajando duro para agregar compatibilidad para vistas previas %s. Mientras tanto, puedes previsualizar el contenido incrustado en la página. + No se pudo incrustar el medio + Prueba otro término de búsqueda No se han encontrado bloques - Pronto llegarán las vistas previas del bloque incrustado %s Todavía no están disponibles las vistas previas de %s - Prueba otro término de búsqueda - No se pudo incrustar el medio - Toca dos veces para previsualizar la página. + Pronto llegarán las vistas previas del bloque incrustado %s Toca dos veces para previsualizar la entrada. + Toca dos veces para previsualizar la página. Mostrado en la pestaña del navegador de tu visitante y en otros sitios online. Muéstrame el camino + ¿Quieres una pequeña ayuda para gestionar este sitio con la aplicación? Crear un nuevo sitio - Elige un sitio para abrir Puedes cambiar los sitios en cualquier momento. - ¿Quieres una pequeña ayuda para gestionar este sitio con la aplicación? + Elige un sitio para abrir Lo sentimos, en este momento Jetpack Scan no es compatible con las instalaciones multisitio de WordPress. Los multisitios de WordPress no son compatibles URL no válida. Por favor, introduce una URL válida. - Jetpack Backup para instalaciones multisitio proporciona copias de seguridad descargables, no restauraciones con un solo clic. Para más información, %1$s. - visita nuestra página de documentación - Leyenda incrustada. Vacía Leyenda incrustada. %s - Puedes actualizar esto en cualquier momento desde Mi sitio > Ajustes > Recordatorios de blogueo. - Selecciona los días en los que quieres bloguear - Puedes actualizar esto en cualquier momento - Consejo + Leyenda incrustada. Vacía + visita nuestra página de documentación + Jetpack Backup para instalaciones multisitio proporciona copias de seguridad descargables, no restauraciones con un solo clic. Para más información, %1$s. Publicar regularmente puede ayudar a que tus lectores permanezcan implicados, y a atraer nuevos visitantes a tu sitio. - Recibirás recordatorios para bloguear %1$s a la semana el %2$s a las %3$s. + Consejo + Puedes actualizar esto en cualquier momento + Selecciona los días en los que quieres bloguear + Puedes actualizar esto en cualquier momento desde Mi sitio > Ajustes > Recordatorios de blogueo. No tienes configurado ningún recordatorio. + Recibirás recordatorios para bloguear %1$s a la semana el %2$s a las %3$s. ¡Recordatorios eliminados! ¡Todo configurado! - %s a la semana - Nada configurado Actualizar - Tu entrada se está publicando … mientras tanto puedes configurar recordatorios de blogueo los días que quiera publicar. - Configura recordatorios de blogueo los días que quieras publicar. + Nada configurado + %s a la semana Configurar recordatorios + Configura recordatorios de blogueo los días que quieras publicar. + Tu entrada se está publicando … mientras tanto puedes configurar recordatorios de blogueo los días que quiera publicar. + Configura tus recordatorios de blogueo Este es tu recordatorio para crear algo hoy Es hora de bloguear en %s WordPress para iOS aún no es compatible con editar bloques reutilizables - Configura tus recordatorios de blogueo WordPress para Android aún no es compatible con editar bloques reutilizables Alternativamente, puedes separar y editar estos bloques por separado tocando en \"Separar patrones\". Hecho Avísame <a href=\"%1$s\">Introduce las credenciales de tu servidor</a> para activar las restauraciones del sitio con un clic de las copias de seguridad. - Crear una categoría - Eliminar como imagen destacada Establecer como imagen destacada + Eliminar como imagen destacada + Crear una categoría Soporte de WordPress para Android Gestiona las categorías de tu sitio - El contenido de la página de tus últimas entradas se genera automáticamente y no se puede editar. - Recordatorios Categorías + Recordatorios + El contenido de la página de tus últimas entradas se genera automáticamente y no se puede editar. Ajustes del borde No mostrar de nuevo - Tenemos que guardar tu contenido en tu dispositivo antes de que pueda ser publicado. Revisa tus ajustes de almacenamiento y elimina archivos para ganar espacio. Ver el almacenamiento - Posición del eje Y + Tenemos que guardar tu contenido en tu dispositivo antes de que pueda ser publicado. Revisa tus ajustes de almacenamiento y elimina archivos para ganar espacio. Insuficiente almacenamiento en el dispositivo + Posición del eje Y Posición del eje X - %s no tiene una URL configurada - %s tiene una URL configurada - Resultados del insertador de corte Teclea una URL - Bloque %s + Resultados del insertador de corte + %s tiene una URL configurada + %s no tiene una URL configurada %s convertido a bloques normales - URL no válida. Archivo de audio no encontrado. - Opciones de medios + Bloque %s Opacidad - Toca dos veces para abrir la hoja de acción para agregar imagen o video - Toca dos veces para abrir la hoja inferior para agregar imagen o video - Arrastra para ajustar el punto focal + Opciones de medios + URL no válida. Archivo de audio no encontrado. Insertar entrada cruzada - Ajustes de columnas - Entrada cruzada + Arrastra para ajustar el punto focal + Toca dos veces para abrir la hoja inferior para agregar imagen o video + Toca dos veces para abrir la hoja de acción para agregar imagen o video La unidad actual es %s + Entrada cruzada %s convertido a bloque normal - Agregar texto del enlace + Ajustes de columnas Agregar enlace a %s + Agregar texto del enlace Agregar una imagen o video - No se pudo encontrar el archivo de medios en la ruta La ruta especificada es un directorio y no un archivo de medios - El tipo de archivo no está permitido + No se pudo encontrar el archivo de medios en la ruta Ruta de archivo de medios vacía inesperada + El tipo de archivo no está permitido El medio estaba vacío <a href=\"%1$s\">Introduce las credenciales de tu servidor</a> para corregir las amenazas. <a href=\"%1$s\">Introduce las credenciales de tu servidor</a> para corregir la amenaza. Toca dos veces para agregar un enlace. - Ver las instrucciones Probar con otra cuenta + Ver las instrucciones Si ya tienes un sitio, tendrás que instalar el plugin gratuito de Jetpack y conectarlo a tu cuenta de WordPress. Tu foto de perfil Si quieres usar esta aplicación para %1$s, deberás tener el plugin de Jetpack configurado y conectado a una cuenta de WordPress.com. - Ajustes de columna - \"rel\" del enlace - Mover la imagen hacia atrás Mover la imagen hacia delante - Sin descripción + Mover la imagen hacia atrás Ajustes de anchura - Información de hoja inferior del perfil de usuario - Sitio + \"rel\" del enlace + Ajustes de columna + Sin descripción (Sin título) + Sitio + Información de hoja inferior del perfil de usuario Lista de Me gusta %s Dos Tres @@ -1211,62 +1215,62 @@ Language: es_CL Ícono social %s Mención NUEVO - Previsualizar la página Previsualizar la entrada - GIF + Previsualizar la página Reintentar + GIF Uno Agregar título Vista previa no disponible Cargando - Enlace %s - Color del texto Etiqueta del enlace + Color del texto + Enlace %s Relleno - Destacado Cuatro + Destacado Agregar imagen - Crear una incrustación URL personalizada + Crear una incrustación Columna %d Más Describe brevemente el enlace para ayudar a los usuarios de lectores de pantalla Agregar bloques No se han encontrado sitios de Jetpack - Transformar bloque… - Transformar %s a ¿Qué es el texto alt? + Transformar %s a + Transformar bloque… Fallo al insertar los medios. - %1$s transformado a %2$s - Describe el propósito de la imagen. Déjalo vacío si la imagen es puramente decorativa. Fallo al insertar el archivo de audio. + Describe el propósito de la imagen. Déjalo vacío si la imagen es puramente decorativa. + %1$s transformado a %2$s Error al cargar los datos de me gusta. %s. %d me gusta 1 me gusta Sugerencia: - Etiqueta del bloque de búsqueda. El texto actual es - Bloques de búsqueda - Botón de búsqueda. El texto actual del botón es - Campo de introducción de búsqueda. Usar botón de ícono - doble toque para cambiar la unidad - Doble toque para editar el texto del botón - Doble toque para editar el texto de la etiqueta - Doble toque para editar el texto del marcador de posición - Ocultar el encabezado de búsqueda - Dentro - No se ha establecido ningún marcador de posición personalizado + Campo de introducción de búsqueda. + Botón de búsqueda. El texto actual del botón es + Bloques de búsqueda + Etiqueta del bloque de búsqueda. El texto actual es Exterior - Sin responder - No hay ningún comentario sin responder + No se ha establecido ningún marcador de posición personalizado + Dentro + Ocultar el encabezado de búsqueda + Doble toque para editar el texto del marcador de posición + Doble toque para editar el texto de la etiqueta + Doble toque para editar el texto del botón + doble toque para cambiar la unidad + El texto de marcador de posición actual es + Vaciar la búsqueda + Cancelar la búsqueda + Posición del botón + %1$s. %2$s is %3$s %4$s. Ocurrió un error al obtener los datos de los me gusta - No hay ninguna red disponible. Ocurrió un error al obtener los me gusta. - %1$s. %2$s is %3$s %4$s. - Posición del botón - Cancelar la búsqueda - Vaciar la búsqueda - El texto de marcador de posición actual es + No hay ninguna red disponible. + No hay ningún comentario sin responder + Sin responder AGREGAR ENLACE Ajustes de búsqueda Direcciones IP permitidas siempre @@ -1274,341 +1278,341 @@ Language: es_CL Agregar el texto del botón Descartar Descargar - La exploración ha encontrado %1$s amenazas potenciales con %2$s. Por favor, revísalas a continuación y lleva a cabo alguna acción o toca el botón de corregir todo. Estamos %3$s si nos necesitas. - Por favor, confirma que quieres corregir todas las %s amenazas activas. Amenazas corregidas correctamente. + Por favor, confirma que quieres corregir todas las %s amenazas activas. + La exploración ha encontrado %1$s amenazas potenciales con %2$s. Por favor, revísalas a continuación y lleva a cabo alguna acción o toca el botón de corregir todo. Estamos %3$s si nos necesitas. Trabajamos duro para corregir estas amenazas en segundo plano. Mientras tanto puedes seguir usando tu sitio como siempre, puedes volver a comprobar el progreso en cualquier momento. Editar el punto focal - Toque doble para abrir la hoja de acción para editar, reemplazar o vaciar la imagen Toque doble para abrir la hoja del fondo para editar, reemplazar o vaciar la imagen + Toque doble para abrir la hoja de acción para editar, reemplazar o vaciar la imagen example.com Teclea un nombre para tu sitio <b>Se han completado todas las tareas</b><br/>Has llegado a más gente. ¡Buen trabajo! <b>Se han completado todas las tareas</b><br/>Has personalizado tu sitio. ¡Bien hecho! - Una vez desactivado el enlace de invitación, nadie podrá usarlo para unirse a tu equipo. ¿Seguro que deseas continuar? ¿No querías crear una nueva cuenta? Vuelve atrás y vuelve a introducir tu dirección de correo electrónico. + Una vez desactivado el enlace de invitación, nadie podrá usarlo para unirse a tu equipo. ¿Seguro que deseas continuar? + Desactivar enlace de invitación Respuesta recibida no válida + No se ha recibido ninguna respuesta Ocurrió un error al recuperar datos para el perfil %1$s Ha habido un error al obtener los perfiles - Desactivar enlace de invitación Error desconocido al obtener los datos de los enlaces de invitación Utiliza este enlace para embarcar a los miembros de tu equipo sin tener que invitarlos uno a uno. Cualquiera que visite estas URL podrá registrarse en tu organización, aunque haya recibido el enlace de otra persona, así que asegúrate de que lo compartes con gente de confianza. - No se ha recibido ninguna respuesta - Desactivar enlace de invitación Caduca %1$s + Desactivar enlace de invitación + Compartir enlace de invitación Generar nuevo enlace de invitación Refrescar el estado del enlace Enlace de invitación - Compartir enlace de invitación - <b>Exploración finalizada</b><br>No se han encontrado amenazas potenciales + Se ha encontrado una amenaza + Se han encontrado amenazas <b>Exploración finalizada</b><br>%s amenazas potenciales encontradas <b>Exploración finalizada</b><br>Una amenaza potencial encontrada - Se han encontrado amenazas - Se ha encontrado una amenaza - Desactivar + <b>Exploración finalizada</b><br>No se han encontrado amenazas potenciales Corrigiendo la amenaza + Desactivar Revisa tus páginas y haz cambios, o agrega o elimina páginas. - Comparte automáticamente las nuevas entradas en tus medios sociales. - Compartir socialmente + Ve tu sitio Descubre y sigue sitios que te inspiren. + Compartir socialmente + Comparte automáticamente las nuevas entradas en tus medios sociales. Dale un nombre a tu sitio que refleje su personalidad y temática. - Ve tu sitio Revisa las estadísticas de tu sitio - No pudimos encontrar el estado para decir cuánto tardará tu copia de seguridad descargable. Trataremos de crear un archivo de copia de seguridad descargable. + No pudimos encontrar el estado para decir cuánto tardará tu copia de seguridad descargable. Vaya, no hemos podido encontrar el estado de tu copia de seguridad descargable Ícono de marca de comprobación Ícono de reloj Te avisaremos cuando hayamos terminado. - No pudimos restaurar tu sitio - No pudimos encontrar el estado para decir cuánto tardará tu restauración. Volveremos a intentar restaurar tu sitio. + No pudimos encontrar el estado para decir cuánto tardará tu restauración. Vaya, no hemos podido encontrar el estado de tu restauración - No pudimos crear tu copia de seguridad - (excluye temas, plugins y subidas) - (SQL) + No pudimos restaurar tu sitio Confirmar ¿Estás seguro de querer revertir tu sitio al %1$s a las %2$s?\n Todo lo que hayas cambiado desde entonces se perderá. - Elementos incluidos en esta descarga + No pudimos crear tu copia de seguridad + (SQL) + (excluye temas, plugins y subidas) Directorio wp-content Raíz de WordPress + Elementos incluidos en esta descarga Subiendo… - Toca dos veces para seleccionar un archivo de audio - Fallo al insertar el archivo de audio. Por favor, toca para ver las opciones. - Ícono de candado - Ninguna aplicación puede gestionar esta solicitud. - ABRIR - Problema al abrir el audio - Reemplazar audio Reemplazar archivo - Accede o regístrate con WordPress.com - Agregar audio - Leyenda del audio. Vacía - Leyenda del audio. %s - archivo de audio - Reproductor de audio - Elegir audio + Reemplazar audio + Problema al abrir el audio + ABRIR + Ninguna aplicación puede gestionar esta solicitud. + Ícono de candado + Fallo al insertar el archivo de audio. Por favor, toca para ver las opciones. + Toca dos veces para seleccionar un archivo de audio Toca dos veces para escuchar el archivo de audio - Opcional: Introduce un mensaje personalizado que enviar con tu invitación. - Elige un audio del dispositivo + Elegir audio + Reproductor de audio + archivo de audio + Leyenda del audio. %s + Leyenda del audio. Vacía + Agregar audio + Accede o regístrate con WordPress.com Usasr este audio + Elige un audio del dispositivo + Opcional: Introduce un mensaje personalizado que enviar con tu invitación. Aprende más sobre los perfiles + Corregido + Encontrado aquí para ayudar La exploración ha encontrado una amenaza potencial con %1$s. Por favor, revísalas a continuación y lleva a cabo alguna acción o toca el botón de corregir todo. Estamos %2$s si nos necesitas. - Encontrado - Corregido Para revisar tu sitio de nuevo ejecuta una exploración manual, o espera a que Jetpack explore tu sitio más tarde hoy mismo. ¡Bienvenido a la exploración de Jetpack! Le estamos echando un vistazo a tu web para dejarlo todo a punto para el primer análisis completo. Te informaremos si encontramos algún problema que le pueda afectar y después comenzará tu primer análisis. + Bienvenido a la herramienta de exploración de Jetpack, estamos echándole un primer vistazo a tu web en estos momentos, te mostraremos los resultados enseguida. Trabajamos duro para corregir estas amenazas en segundo plano. Mientras tanto puedes seguir usando tu sitio como siempre, puedes volver a comprobar el progreso en cualquier momento. Te enviaremos un aviso si se encuentra una amenaza. Mientras tanto, no dudes en seguir usando tu sitio con normalidad, puedes comprobar el progreso en cualquier momento. - Bienvenido a la herramienta de exploración de Jetpack, estamos echándole un primer vistazo a tu web en estos momentos, te mostraremos los resultados enseguida. Corrigiendo amenazas Jetpack Scan no ha podido realizar un análisis de tu sitio. Comprueba si tu sitio está caído. Si no, vuelve a intentarlo. Si tu sitio está caído o si Jetpack Scan sigue teniendo problemas, ponte en contacto con nuestro equipo de soporte. - La copia de seguridad de tu sitio se ha realizado correctamente - Haciendo copia de seguridad del sitio desde %1$s %2$s + Algo salió mal Haciendo copia de seguridad del sitio + Haciendo copia de seguridad del sitio desde %1$s %2$s Creando una copia de seguridad descargable - Algo salió mal + La copia de seguridad de tu sitio se ha realizado correctamente La copia de seguridad de tu sitio se ha realizado correctamente\nHecha copia de seguridad desde %1$s %2$s La copia de seguridad de tu sitio se está realizando\nHaciendo copia de seguridad desde %1$s %2$s Elegir audio Hay otra restauración en curso. - Botón Listo Ícono de error - Todos los elementos seleccionados se han restaurado a la versión del %1$s %2$s. - Botón Listo + Botón Listo No se pudo restaurar - Tu sitio se ha restaurado + Botón Visitar sitio + Botón Listo Ícono de restaurar Visitar el sitio - Botón Visitar sitio + Todos los elementos seleccionados se han restaurado a la versión del %1$s %2$s. + Tu sitio se ha restaurado No hace falta que esperes. Te enviaremos un aviso cuando la restauración se haya completado. + Ícono de restaurar sitio Estamos restaurando la versión de tu sitio del %1$s %2$s. Estamos restaurando el sitio - Ícono de restaurar sitio Botón Confirmar restauración del sitio - Botón Restaurar sitio - Advertencia Imagen de un círculo rojo con un signo de exclamación - Listo - Botón Listo - Nube con ícono de X - Restaurar + Advertencia + Botón Restaurar sitio + Ícono de restaurar Restaurar sitio - Elige los elementos que quieres restaurar: %1$s %2$s es el punto seleccionado para la restauración. Restaurar sitio - Ícono de restaurar + Elige los elementos que quieres restaurar: + Restaurar + Nube con ícono de X + Botón Listo + Listo La descarga ha fallado - Selecciona %1$s Página de inicio %2$s para editar tu página de inicio. - Cambia, agrega o elimina páginas en tu sitio. + Tableta + Dispositivos móviles Selecciona %1$s Páginas %2$s para ver tu lista de páginas. + Cambia, agrega o elimina páginas en tu sitio. Revisar las páginas del sitio - Dispositivos móviles - Tableta - Espacio de almacenamiento del sitio insuficiente + Selecciona %1$s Página de inicio %2$s para editar tu página de inicio. + Marcar como no leída + Marcar como leída No se pudieron subir los elementos multimedia.\n%1$s + Espacio de almacenamiento del sitio insuficiente No se puede activar o desactivar el estado Es visible de esta entrada - Marcar entrada como leída Marcar entrada como no leída - Marcar como leída - Marcar como no leída - Por favor, confirma que quieres corregir una amenaza activa. - Se ha producido un error al corregir las amenazas. Ponte en contacto con el servicio de soporte. + Marcar entrada como leída Se ha producido un error al comprobar el estado de la reparación. Ponte en contacto con el servicio de soporte. La amenaza se ha corregido correctamente. + Se ha producido un error al corregir las amenazas. Ponte en contacto con el servicio de soporte. + Por favor, confirma que quieres corregir una amenaza activa. Corregir todas las amenazas No se pudo ignorar la amenaza. Ponte en contacto con el servicio de soporte. Se ha ignorado la amenaza. No deberías ignorar un problema de seguridad a menos que estés absolutamente seguro de que no es dañino. Si eliges ignorar esta amenaza, seguirá en tu sitio <b>%s</b>. No se pudo corregir la amenaza. Ponte en contacto con el servicio de soporte. - Prueba a ajustar el rango de fechas - No se han encontrado copias de seguridad coincidentes - Tu primera copia de seguridad estará disponible aquí en 24 horas y recibirás una notificación una vez que se haya completado - Historial de exploraciones - Todos - Fijo + Amenaza ignorada + Amenaza corregida el %s + Corrigiendo la amenaza Se ha ignorado - Historia No se encontró ningún elemento - Preparando escaneado + Fijo + Todos Analizando archivos - Corrigiendo la amenaza - Amenaza corregida el %s - Amenaza ignorada + Preparando escaneado + Historia + Historial de exploraciones + Prueba a ajustar el rango de fechas + No se han encontrado copias de seguridad coincidentes + Tu primera copia de seguridad estará disponible aquí en 24 horas y recibirás una notificación una vez que se haya completado Tu primera copia de seguridad estará lista pronto Ocurrió un problema al gestionar la petición. Por favor, inténtalo de nuevo más tarde. - Cambiar la posición del bloque Mover al final - Botón de compartir enlace - También hemos enviado un enlace a tu archivo. + Cambiar la posición del bloque Ícono - Hemos creado una copia de seguridad de tu sitio desde %1$s %2$s. - Descargar + También hemos enviado un enlace a tu archivo. + Botón de compartir enlace Botón de descarga + Ícono de copia de seguridad descargable lista Compartir enlace + Descargar + Hemos creado una copia de seguridad de tu sitio desde %1$s %2$s. Tu copia de seguridad ya está disponible para descargarla - Ícono de copia de seguridad descargable lista Tu copia de seguridad - Estamos creando una copia de seguridad descargable de tu sitio desde %1$s %2$s. No hace falta que esperes. Te avisaremos cuando la copia de seguridad esté lista - Se está creando una copia de seguridad descargable de tu sitio Ícono de copia de seguridad descargable en curso + Estamos creando una copia de seguridad descargable de tu sitio desde %1$s %2$s. + Se está creando una copia de seguridad descargable de tu sitio + Descargar copia de seguridad Hay otra descarga en curso. + Ocurrió un problema al gestionar la petición. Por favor, inténtalo de nuevo más tarde. Botón Crear copia de seguridad descargable %1$s %2$s es el punto seleccionado para crear una copia de seguridad descargable. - Ocurrió un problema al gestionar la petición. Por favor, inténtalo de nuevo más tarde. - Descargar copia de seguridad %1$s · %2$s · %1$s · %2$s %1$s · + entrada cruzada + usuario No coincide con %s. - No hay sugerencias %s disponibles. Ocurrió un problema al cargar las sugerencias. + No hay sugerencias %s disponibles. Escribe algo para filtrar la lista de sugerencias. - usuario - entrada cruzada + Consigue un presupuesto gratuito + Ignorar amenaza Corregir amenaza Jetpack Scan solucionará la amenaza. - Jetpack Scan borrará el archivo o el directorio afectados. Jetpack Scan editará el archivo o el directorio afectados. Jetpack Scan se actualizará a una versión más reciente (%s). - Consigue un presupuesto gratuito - Ignorar amenaza + Jetpack Scan borrará el archivo o el directorio afectados. Jetpack Scan reemplazará el archivo o el directorio afectados. Jetpack Scan no puede solucionar automáticamente esta amenaza.\n Te sugerimos que soluciones esta amenaza manualmente: asegúrate de que WordPress, tu tema y todos los plugins están actualizados y elimina el código, tema o plugin que esté causando problemas en tu sitio web. \n \n\n Si necesitas más ayuda para resolver esta amenaza, te recomendamos <b>Codeable</b>, una plataforma de profesionales de confianza, altamente cualificados, expertos en WordPress.\n Han hecho una selección de expertos en seguridad para ayudarnos con estos proyectos. Los precios oscilan entre 70–120 USD/hora y puedes obtener un presupuesto gratuito sin compromiso.\n - Amenaza detectada en el archivo: Solucionando la amenaza - ¿Cómo vamos a repararlo? ¿Cómo lo solucionó Jetpack? - ¿Cuál fue el problema? + ¿Cómo vamos a repararlo? + Amenaza detectada en el archivo: Información técnica + ¿Cuál fue el problema? Detalles de la amenaza - Amenazas de base de datos %s - %s: patrón de código malicioso - Plugin vulnerable: %1$s (versión %2$s) - Tema vulnerable: %1$s (versión %2$s) - Se ha encontrado una vulnerabilidad en WordPress + Se ha encontrado una vulnerabilidad en un tema + Se ha encontrado una vulnerabilidad en un plugin Amenaza encontrada %s + Se ha encontrado una vulnerabilidad en WordPress Varias vulnerabilidades - Se ha encontrado una vulnerabilidad en un plugin - Se ha encontrado una vulnerabilidad en un tema - La última exploración de Jetpack se ejecutó %1$s y no encontró ningún riesgo. %2$s - en unos segundos - hace %s hora(s) - hace %s minuto(s) - este sitio + Tema vulnerable: %1$s (versión %2$s) + Plugin vulnerable: %1$s (versión %2$s) + %s: patrón de código malicioso + Amenazas de base de datos %s %s: archivo principal infectado Se ha encontrado una amenaza Corregir todo - Filtro de tipo de actividad (%s tipos seleccionados) - Copias de seguridad - Analizar de nuevo - No te preocupes + en unos segundos + hace %s minuto(s) + hace %s hora(s) + este sitio + La última exploración de Jetpack se ejecutó %1$s y no encontró ningún riesgo. %2$s Puede que tu sitio web esté desprotegido + No te preocupes + Analizar de nuevo Analizar ahora Ícono de estado del análisis + Copias de seguridad + Filtro de tipo de actividad (%s tipos seleccionados) + %1$s (mostrando %2$s elementos) + Filtro de tipo de actividad No se han registrado actividades en el rango de fechas seleccionado. No hay actividades disponibles Revisa tu conexión a Internet e inténtalo de nuevo. - Filtro de tipo de actividad - %1$s (mostrando %2$s elementos) Sin conexión Tipo de actividad (%s) Filtro de rango de fechas Intenta ajustar los filtros de rango de fecha o de tipo de actividad No se han encontrado eventos coincidentes - Crea un ícono de copia de seguridad descargable + Base de datos del sitio + (incluye wp-config.php y cualquier archivo que no sea de WordPress) Subidas de medios Plugins de WordPress - (incluye wp-config.php y cualquier archivo que no sea de WordPress) - Base de datos del sitio Temas de WordPress - Tipo de actividad - Rango de fechas - Descargar copia de seguridad - Restaurar hasta este punto - Descarga de la copia de seguridad + Crea un ícono de copia de seguridad descargable Crear un archivo descargable Crear una copia de seguridad descargable Descargar copia de seguridad - Elegir archivo + Descarga de la copia de seguridad Error + Elegir archivo + Descargar copia de seguridad + Restaurar hasta este punto + Tipo de actividad + Rango de fechas Filtrar por tipo de actividad - Duplicar Copiar la versión de esta aplicación Editar la entrada primero La entrada que estás tratando de copiar tiene dos versiones que están en conflicto o has hecho cambios recientemente, pero no los has guardado.\nEdita la entrada primero para resolver cualquier conflicto o procede a copiar la versión de esta aplicación. Conflicto de sincronización de la entrada - Editar el archivo - Fallo al guardar los medios.\nPor favor, toca para ver las opciones. - Fallo al subir los archivos.\nPor favor, toca para ver las opciones. - Ajustes del archivo del bloque + Duplicar Nombre del archivo + Ajustes del archivo del bloque + Fallo al subir los archivos.\nPor favor, toca para ver las opciones. + Fallo al guardar los medios.\nPor favor, toca para ver las opciones. + Editar el archivo Copiar la URL del archivo - Jetpack Elige un dominio - Seguir la conversación por correo electrónico + Jetpack Siguiendo la conversación por correo electrónico - No se pudo crear la suscripción a los comentarios de esta entrada + Seguir la conversación por correo electrónico No se pudo anular la suscripción a los comentarios de esta entrada + No se pudo crear la suscripción a los comentarios de esta entrada Error al recuperar el estado de suscripción para la entrada - Aplicar - Vaciar Respuesta recibida no válida No se ha recibido ninguna respuesta + Vaciar + Aplicar Los medios han sido eliminados. Intenta volver a crear tu historia. + Hecho Se ha producido un error al elegir el tema. + Por favor, revisa tu conexión a Internet e inténtalo de nuevo. Toca en reintentar cuando vuelvas a estar conectado. Los diseños no están disponibles sin conexión - Por favor, revisa tu conexión a Internet e inténtalo de nuevo. - Hecho Continuar con las credenciales de la tienda Encuentra tu correo electrónico conectado - ¡Bienvenido! Prueba a seguir más etiquetas para ampliar la búsqueda No hay entradas recientes + ¡Bienvenido! Explorar - A <b>Madison Ruíz</b> le ha gustado tu entrada <b>Juan Gómez</b> ha respondido en tu entrada Hoy has recibido <b>50 me gusta</b> en tu sitio - Se ha cerrado el menú de bloques desplazable. + A <b>Madison Ruíz</b> le ha gustado tu entrada Se ha abierto el menú de bloques desplazable. Selecciona un bloque. + Se ha cerrado el menú de bloques desplazable. Elegir - Toca \"Reintentar\" o crea una página en blanco usando el botón a continuación. - Los diseños no están disponibles debido a un error Toca \"Reintentar\" cuando vuelvas a estar en línea o crea una página en blanco usando el botón a continuación. Los diseños no están disponibles sin conexión + Toca \"Reintentar\" o crea una página en blanco usando el botón a continuación. + Los diseños no están disponibles debido a un error Agregar una categoría - Categorías - No establecido Agregar una nueva categoría Categorías - Mis diez mejores cafés + No establecido + Categorías Museos en Londres Los mejores fanáticos del mundo - Pamela Nguyen - Rock n\' roll semanal - Noticias web + Mis diez mejores cafés + Política Música Jardinería - Arte - Política Fútbol Cocina + Arte + Rock n\' roll semanal + Noticias web + Pamela Nguyen Estoy muy inspirado por el trabajo del fotógrafo Cameron Karsten. Probaré estas técnicas en mi próximo Inspírate Sigue tus sitios favoritos y descubre nuevos blogs. - Bienvenido al maquetador web más popular del mundo. Observa cómo crece tu audiencia con analíticas avanzadas. - Con el potente editor puedes publicar sobre la marcha. Mira los comentarios y avisos en tiempo real. + Con el potente editor puedes publicar sobre la marcha. + Bienvenido al maquetador web más popular del mundo. La carga del medio ha fallado - \"%s\" no es totalmente compatible Estamos trabajando duro para agregar más bloques con cada versión. - Elegir las imágenes - Editar usando el editor web + \"%s\" no es totalmente compatible Botón de ayuda + Editar usando el editor web + Elegir las imágenes Página en blanco creada Página creada Inserción del medio fallida. @@ -1618,626 +1622,626 @@ Language: es_CL Primeros pasos Sigue etiquetas para descubrir nuevos blogs Por - Subiendo medios - Subiendo medios GIF - Subiendo medios de inventarios + Este referido no puede ser marcado como spam + Desmarcar como spam Marcar como spam Abrir la web - Desmarcar como spam - Este referido no puede ser marcado como spam + Subiendo medios GIF + Subiendo medios de inventarios + Subiendo medios Busca o escribe la URL Agregar este enlace de teléfono - Agregar este enlace de correo electrónico Agregar este enlace + Agregar este enlace de correo electrónico No hay conexión a Internet.\nNo están disponibles las sugerencias. %s %s seleccionado - No se puede mostrar este comentario - Vaya, no encontramos una cuenta de WordPress.com conectada a esta dirección de correo electrónico. Obtener un enlace de acceso por correo electrónico - Navegar por elementos + Vaya, no encontramos una cuenta de WordPress.com conectada a esta dirección de correo electrónico. Micrófono + No se puede mostrar este comentario + Navegar por elementos Informar de esta entrada + Bienvenido al Lector. Descubre millones de blogs a tu alcance. Ocurrió un error interno del servidor Tu acción no está permitida - Bienvenido al Lector. Descubre millones de blogs a tu alcance. %1$s elementos más - Nota: el diseño de la columna puede variar entre temas y tamaños de pantalla Seleccionar un diseño + Nota: el diseño de la columna puede variar entre temas y tamaños de pantalla + Crear una entrada o historia Crear una página Crear una entrada - Crear una entrada o historia Puede que te guste Ocultar - Este dispositivo no es compatible con la API de Camera2 - Título de la página. Vacío - Título de la página. %s - Pegar el bloque después - Actualiza el título. Leyenda del video. Vacía + Actualiza el título. + Pegar el bloque después + Título de la página. %s + Título de la página. Vacío Ocurrió un error al reproducir tu video + Este dispositivo no es compatible con la API de Camera2 Cerrar + Vista previa + Crear una página + Crear una página en blanco Empieza eligiendo entre una amplia variedad de diseños de página prefabricados. O simplemente empieza con una página en blanco. Elegir un diseño - Crear una página en blanco - Crear una página - Vista previa Pon un título a tu historia Toca crear %1$s. %2$s Después selecciona <b>Entrada del blog</b> - Cuota de almacenamiento superada - No se puede subir el archivo.\nSe ha superado la cuota de almacenamiento. + Elegir el dispositivo Entrada de la historia Para la edición de los íconos del sitio en sitios WordPress autoalojados se necesita el plugin Jetpack. - Elegir el dispositivo No se pudo encontrar el salto de página enlazado + No se puede subir el archivo.\nSe ha superado la cuota de almacenamiento. + Cuota de almacenamiento superada Agregar un archivo - Reemplazar la imagen o video Reemplazar el video - Si continúas con Google y aún no tienes una cuenta de WordPress.com, crearás una cuenta y aceptas nuestros %1$stérminos del servicio%2$s. - Introduce la dirección de tu sitio existente - Bloque eliminado - Elegir una imagen - Elegir una imagen o video - Elegir un video + Reemplazar la imagen o video Convertir en enlace + Elegir un video + Elegir una imagen o video + Elegir una imagen + Bloque eliminado + Introduce la dirección de tu sitio existente Confirmación del registro + Si continúas con Google y aún no tienes una cuenta de WordPress.com, crearás una cuenta y aceptas nuestros %1$stérminos del servicio%2$s. Si continúas, aceptas nuestros %1$stérminos del servicio%2$s. Usaremos esta dirección de correo electrónico para crear tu nueva cuenta de WordPress.com. Te hemos enviado por correo electrónico un enlace de registro para crear tu nueva cuenta de WordPress.com. Comprueba tu correo electrónico en este dispositivo y toca el enlace en el correo electrónico que has recibido de WordPress.com. Introduce la información de tu cuenta para %1$s. + o Continuar con Google - Hecho Encuentra la dirección de tu sitio - Te enviaremos por correo electrónico un enlace que te hará acceder automáticamente, sin necesidad de contraseña. - Comprueba tu correo electrónico en este dispositivo y toca el enlace en el correo electrónico que has recibido de WordPress.com. - o + Hecho ¿No ves el correo electrónico? Comprueba tu carpeta de spam o correo no deseado. + Comprueba tu correo electrónico en este dispositivo y toca el enlace en el correo electrónico que has recibido de WordPress.com. + Te enviaremos por correo electrónico un enlace que te hará acceder automáticamente, sin necesidad de contraseña. Comprobar el correo electrónico - Crear una cuenta - Introduce tu dirección de correo electrónico para acceder o crear una cuenta de WordPress.com. Primeros pasos + Introduce tu dirección de correo electrónico para acceder o crear una cuenta de WordPress.com. O escribe tu contraseña - Restablecer tu contraseña + Crear una cuenta Enviar el enlace por correo electrónico + Restablecer tu contraseña Ha habido un problema al gestionar la solicitud. Por favor, inténtalo de nuevo más tarde. - Toca <b>%1$s</b> para configurar un nuevo título Comprueba el título de tu sitio + Toca <b>%1$s</b> para configurar un nuevo título Al enviar esta entrada a la papelera también se descartarán los cambios locales, ¿estás seguro de que quieres continuar? Opciones del bloque %s - Bloque copiado - Bloque cortado - Bloque duplicado - Bloque pegado - Bloque copiado - Copiar bloque - Duplicar bloque Eliminar el bloque + Duplicar bloque + Copiar bloque + Bloque copiado + Bloque pegado + Bloque duplicado + Bloque cortado + Bloque copiado El título del sitio solo puede ser cambiado por un usuario con el perfil de administrador. - Cambios sin guardar - No se pudo actualizar el título del sitio. Comprueba tu conexión de red e inténtalo nuevamente. El título del sitio se muestra en la barra de título de un navegador web y en la cabecera de la mayoría de los temas. - Navega a la hoja de contenido anterior + No se pudo actualizar el título del sitio. Comprueba tu conexión de red e inténtalo nuevamente. + Cambios sin guardar Abrir el enlace en un navegador - Personalizar el degradado - Toca dos veces para seleccionar la opción - Volver - Tipo de degradado - Navega al selector de color personalizado + Navega a la hoja de contenido anterior Navega para personalizar el degradado + Navega al selector de color personalizado + Tipo de degradado + Volver + Toca dos veces para seleccionar la opción + Personalizar el degradado + Autor de la página La miniatura del medio no se ha podido cargar + Estructura del contenido Todos Yo - Estructura del contenido - Autor de la página Descartar No establecido - Las entradas en la papelera no se pueden editar. ¿Deseas cambiar el estado de esta entrada a \"borrador\" para poder trabajar en ella? - Cancelar - Mover a borrador + Las etiquetas ayudan a los lectores diciéndoles de qué se trata la entrada. + Fecha de publicación + Agregar etiquetas Volver - Publicando en Guardar ahora - Programar ahora Enviar ahora - Fecha de publicación + Programar ahora + Publicando en Etiquetas - Fecha de publicación - Agregar etiquetas - Las etiquetas ayudan a los lectores diciéndoles de qué se trata la entrada. - La Ley de Privacidad del Consumidor de California (\"CCPA\") nos obliga a que proporcionemos información adicional a los residentes de California sobre las categorías de información personal que recopilamos y compartimos, dónde obtenemos esa información personal y cómo y por qué la usamos. - Lee el aviso de privacidad de CCPA + Fecha de publicación + Cancelar + Mover a borrador + Las entradas en la papelera no se pueden editar. ¿Deseas cambiar el estado de esta entrada a \"borrador\" para poder trabajar en ella? ¿Mover entrada a borradores? + Elige tus etiquetas + Hecho + Selecciona algunos para continuar Publicado - Programada En la papelera + Programada Fecha de publicación - Hecho - Selecciona algunos para continuar - Elige tus etiquetas + Lee el aviso de privacidad de CCPA + La Ley de Privacidad del Consumidor de California (\"CCPA\") nos obliga a que proporcionemos información adicional a los residentes de California sobre las categorías de información personal que recopilamos y compartimos, dónde obtenemos esa información personal y cómo y por qué la usamos. Aviso de privacidad para usuarios de California Estado y visibilidad Actualizar ahora %1$s · - Mover arriba Abrir el menú de acciones de bloques - Toca dos veces pata abrir la hoja de acción con las opciones disponibles - Toca dos veces para abrir la hoja inferior con las opciones disponibles + Mover arriba Insertar una mención + Toca dos veces para abrir la hoja inferior con las opciones disponibles + Toca dos veces pata abrir la hoja de acción con las opciones disponibles No podemos abrir las páginas en este momento. Por favor, inténtalo de nuevo más tarde - Establecer como página de inicio Establecer como página de entradas - Blog clásico - La página de inicio seleccionada y la página de entradas no pueden ser la misma. - Página de entradas + Establecer como página de inicio + %1$s no es una %2$s válida Seleccionar la página + Página de entradas Página de inicio estática - %1$s no es una %2$s válida - Aceptar + Blog clásico + La página de inicio seleccionada y la página de entradas no pueden ser la misma. + Ha fallado la actualización de la página de inicio, comprueba tu conexión a internet No se pueden guardar los ajustes de la página de inicio antes de que las páginas estén cargadas - Ha fallado la carga de las páginas No se pueden guardar los ajustes de la página de inicio - Ha fallado la actualización de la página de inicio, comprueba tu conexión a internet - Ajustes de la página de inicio + Aceptar + Ha fallado la carga de las páginas Elige entre una página de inicio que muestre tus últimas publicaciones (blog clásico) o una página fija/estática. - Para establecer la página de inicio, activa \"Página de inicio estática\" en los ajustes del sitio - Para establecer la página de entradas, activa \"Página de inicio estática\" en los ajustes del sitio - Página de inicio actualizada correctamente - Ha fallado la actualización de la página de inicio - Página de entradas actualizada correctamente - Ha fallado la actualización de la página de entradas + Ajustes de la página de inicio Página de inicio + Ha fallado la actualización de la página de entradas + Página de entradas actualizada correctamente + Ha fallado la actualización de la página de inicio + Página de inicio actualizada correctamente + Para establecer la página de entradas, activa \"Página de inicio estática\" en los ajustes del sitio + Para establecer la página de inicio, activa \"Página de inicio estática\" en los ajustes del sitio Seleccionar un color Toca dos veces para ir a los ajustes del color - recortar - Fallo al cargar en el archivo, por favor, inténtalo de nuevo. - Qué hay de nuevo en %s Saber más + Qué hay de nuevo en %s Insertar %d - Elegir el medio + recortar + Fallo al cargar en el archivo, por favor, inténtalo de nuevo. + Vista previa de la miniatura de la imagen Usar este medio Usar este video + Elegir el medio Elegir el video - Vista previa de la miniatura de la imagen No se pudo seleccionar el sitio. Por favor, inténtalo de nuevo. - Insertar + Continuar + Ha fallado reblog + Gestionar blogs + Una vez que crees un sitio en WordPress.com, puedes volver a publicar el contenido que te gusta en tu propio sitio. + No hay blogs de WordPress.com disponibles + Qué hay de nuevo Copiada la dirección del enlace + Copiar la dirección del enlace Compartir en No se pudo compartir + Insertar Continuar - Copiar la dirección del enlace Copiar - Gestionar blogs - Una vez que crees un sitio en WordPress.com, puedes volver a publicar el contenido que te gusta en tu propio sitio. - No hay blogs de WordPress.com disponibles - Ha fallado reblog - Continuar - Qué hay de nuevo Número de columnas - Toca dos veces para mover el bloque hacia la izquierda - Toca dos veces para mover el bloque hacia la derecha - Mover bloque a la izquierda - Mover el bloque a la izquierda desde la posición %1$s a la posición %2$s - Mover el bloque a la derecha Mover el bloque a la derecha desde la posición %1$s a la posición %2$s + Mover el bloque a la derecha + Mover el bloque a la izquierda desde la posición %1$s a la posición %2$s + Mover bloque a la izquierda + Toca dos veces para mover el bloque hacia la derecha + Toca dos veces para mover el bloque hacia la izquierda Ajustes del bloque - Obteniendo la URL del sitio - Agregando las características del sitio - Configurar el tema Creando el escritorio + Configurar el tema + Agregando las características del sitio + Obteniendo la URL del sitio Tu sitio estará listo en breve ¡Hurra!\nCasi está hecho - Ha habido un problema al gestionar la petición Cancelar la subida + Ha habido un problema al gestionar la petición Funciona con Tenor Elegir desde Tenor - Viernes - Lunes Sábado - Domingo + Viernes Jueves - Martes Miércoles + Martes + Lunes + Domingo Ha fallado el acceso al contenido de un sitio privado. Algunos medios pueden no estar disponibles Accediendo al contenido de un sitio privado Fallo al recortar y guardar la imagen, por favor, inténtalo de nuevo. - No pudimos completar esta acción y no se publicó esta página privada. - No pudimos completar esta acción y no se ha programado esta página. - No pudimos completar esta acción y no se envió esta página a revisión. - Formato de página desconocido Fallo al cargar la imagen.\nPor favor, toca para volver a intentarlo. Previsualizar la imagen - No pudimos subir este medio y no se envió esta página a revisión. + Formato de página desconocido + No pudimos completar esta acción y no se envió esta página a revisión. + No pudimos completar esta acción y no se ha programado esta página. + No pudimos completar esta acción y no se publicó esta página privada. No pudimos completar esta acción y no se publicó esta página. - No pudimos publicar esta página, pero lo intentaremos de nuevo más tarde. - No pudimos publicar esta página privada, pero lo intentaremos de nuevo más tarde. - No pudimos programar esta página, pero lo intentaremos de nuevo más tarde. No pudimos enviar esta página a revisión, pero lo intentaremos de nuevo más tarde. - No pudimos subir este medio y no se publicó la página. - No pudimos subir este medio y no se publicó esta página privada. + No pudimos programar esta página, pero lo intentaremos de nuevo más tarde. + No pudimos publicar esta página privada, pero lo intentaremos de nuevo más tarde. + No pudimos publicar esta página, pero lo intentaremos de nuevo más tarde. + No pudimos subir este medio y no se envió esta página a revisión. No pudimos subir este medio y no se ha programado esta página. + No pudimos subir este medio y no se publicó esta página privada. + No pudimos subir este medio y no se publicó la página. Guardaremos tu borrador cuando tu dispositivo vuelva a estar online Publicaremos tu página privada cuando tu dispositivo vuelva a estar online. - El dispositivo está desconectado. La página se ha guardado localmente. - Hiciste cambios no guardados en esta página - Página en espera - Subiendo la página + Programaremos tu página cuando tu dispositivo vuelva a estar online. Enviaremos tu página para revisión cuando tu dispositivo vuelva a estar online. Publicaremos la página cuando tu dispositivo vuelva a estar online. - Programaremos tu página cuando tu dispositivo vuelva a estar online. - Apariencia - Oscuro - Establecido por el ahorrador de batería - Claro - Recientemente has hecho cambios en esta página, pero no los has guardado. Elige una versión para cargar:\n\n - Página guardada en el dispositivo + Página en espera + Subiendo la página + El dispositivo está desconectado. La página se ha guardado localmente. + Hiciste cambios no guardados en esta página + Tu página se está subiendo La página ha fallado al subir los medios y ha sido guardada localmente + Página guardada en el dispositivo La página se ha guardado online - Tu página se está subiendo Selecciona un blog para el atajo a QuickPress + Establecido por el ahorrador de batería + Oscuro + Claro + Apariencia + Recientemente has hecho cambios en esta página, pero no los has guardado. Elige una versión para cargar:\n\n Mensaje de advertencia Mostrar el contenido de la entrada - Ajustes de enlace - Enlazar a Mostrar solo el extracto - Editar el medio de la portada + Enlazar a + Ajustes de enlace Longitud del extracto (palabras) - URL del enlace del botón + Editar el medio de la portada PERSONALIZAR - Agregar un bloque de párrafo + URL del enlace del botón Radio del borde + Agregar un bloque de párrafo Crear una entrada - No conectado - Publicada - Programada En la papelera + Programada + Publicada La conexión con Facebook no puede encontrar ninguna página. Jetpack Social no puede conectar con perfiles de Facebook, solo con páginas publicadas. - No enviar a la papelera - Papelera - Comentarios + No conectado Me gusta + Comentarios No leído + No enviar a la papelera + Papelera Actividad - General Entradas y páginas - Agregar una nueva tarjeta de estadísticas + General Agregar una nueva tarjeta + Agregar una nueva tarjeta de estadísticas + Usa el botón de filtro para encontrar entradas sobre temas específicos Selecciona una etiqueta o blog, ventana emergente Quitar el filtro actual Acceder a WordPress.com - Usa el botón de filtro para encontrar entradas sobre temas específicos - Accede a WordPress.com para ver las últimas entradas de los blogs que sigues Accede a WordPress.com para ver las últimas entradas de las etiquetas que sigues - Agregar el bloque después - Agregar el bloque antes - Agregar al principio - Agregar al final + Accede a WordPress.com para ver las últimas entradas de los blogs que sigues Reemplazar el bloque actual + Agregar al final + Agregar al principio + Agregar el bloque antes + Agregar el bloque después Agregar una etiqueta Filtrar - Agregar un shortcode… - Editar los medios - Editar el video Leyenda del video. %s - Crear una entrada + Editar el video + Editar los medios + Agregar un shortcode… Autor de la entrada -   y %1$d %2$s - altas - bajas - medias - muy altas - explora todas las estadísticas para este período - Los días con visitas %1$s para %2$s son: %2$s %3$s. Toca para más. - No hay estadísticas en este período. + Crear una entrada Has escuchado todas las estadísticas de este período.\n Si vuelves a tocar, se reiniciará desde el principio. + No hay estadísticas en este período. Actividad de publicación para %1$s + Los días con visitas %1$s para %2$s son: %2$s %3$s. Toca para más. + explora todas las estadísticas para este período + muy altas + altas + medias + bajas +   y %1$d %2$s %1$s, %2$d %3$s - Crear una entrada o página Leyenda de la galería. %s + Crear una entrada o página Creador de la web Ahora no Cualquier cosa que quieras crear o compartir, te ayudaremos a hacerlo aquí mismo. - Imagen no seleccionada Bienvenido a WordPress Biblioteca de fotos - Entrada del blog - Agregar nueva + Imagen no seleccionada , seleccionada - Miniatura de la imagen Imagen seleccionada + Miniatura de la imagen + Entrada del blog + Agregar nueva Publicar + Sincronizar ahora Esta entrada se sincronizará inmediatamente. ¿Preparado para sincronizar? - Sincronizar ahora - -%s Este dominio no está disponible + -%s No pudimos acceder a tu sitio. Tendrás que contactar con tu alojamiento para solucionarlo. - No pudimos acceder a tu sitio porque necesita <b>identificación HTTP</b>. Tendrás que contactar con tu alojamiento para solucionarlo. No pudimos acceder a tu sitio debido a un problema con el <b>certificado SSL</b>. Tendrás que contactar con tu alojamiento para solucionarlo. - Accede con las credenciales de tu sitio %1$s + No pudimos acceder a tu sitio porque necesita <b>identificación HTTP</b>. Tendrás que contactar con tu alojamiento para solucionarlo. No pudimos acceder en tu sitio al <b>archivo XMLRCP</b>. Tendrás que contactar con tu alojamiento para solucionarlo. ¡Ya casi estamos! Solo necesitamos verificar tu dirección de correo electrónico conectada a Jetpack <b>%1$s</b> + Accede con las credenciales de tu sitio %1$s Página del sitio - No podemos abrir las entradas en este momento. Por favor, inténtalo de nuevo más tarde - Descubrir Me gusta + Descubrir Guardado - No podemos cargar los datos para tu sitio en este momento. Por favor, inténtalo de nuevo más tarde - %sK - %sM - %sG - %sT - %sP %sE + %sP + %sT + %sG + %sM + %sK + No podemos abrir las entradas en este momento. Por favor, inténtalo de nuevo más tarde + No podemos cargar los datos para tu sitio en este momento. Por favor, inténtalo de nuevo más tarde Biblioteca de medios de WordPress - Empieza a escribir… - Haz una foto - Haz una foto o un video - Haz un video - Toca aquí para mostrar la ayuda - Toca para ocultar el teclado - Desagrupar No compatible - Cortar bloque - Bloque %s. Vacío + Desagrupar + Toca para ocultar el teclado + Toca aquí para mostrar la ayuda + Haz un video + Haz una foto o un video + Haz una foto + Empieza a escribir… Bloque %s. Este bloque tiene contenido no válido - Ninguna aplicación puede manejar esta petición. Por favor, instala un navegador web. - Abrir los ajustes - Bloque de salto de página. %s - Pegar la URL - Título de la entrada. Vacío - Título de la entrada. %s - Problema al mostrar el bloque + Bloque %s. Vacío + Cortar bloque Problema al abrir el video - Mover el bloque hacia abajo, de la fila %1$s a la fila %2$s - Mover el bloque arriba - Mover el bloque hacia arriba, de la fila %1$s a la fila %2$s + Problema al mostrar el bloque + Título de la entrada. %s + Título de la entrada. Vacío + Pegar la URL + Bloque de salto de página. %s + Abrir los ajustes + Ninguna aplicación puede manejar esta petición. Por favor, instala un navegador web. Navegar arriba - Toca dos veces para deshacer el último cambio - Ícono de ayuda - Ocultar el teclado - Leyenda de la imagen. %s - Enlace insertado - Texto del enlace + Mover el bloque hacia arriba, de la fila %1$s a la fila %2$s + Mover el bloque arriba + Mover el bloque hacia abajo, de la fila %1$s a la fila %2$s Mover el bloque abajo - Toca dos veces para rehacer el último cambio - Toca dos veces para seleccionar - Toca dos veces para seleccionar un video - Toca dos veces para seleccionar una imagen + Texto del enlace + Enlace insertado + Leyenda de la imagen. %s + Ocultar el teclado + Ícono de ayuda + Toca dos veces para deshacer el último cambio Toca dos veces para alternar los ajustes - Toca dos veces y mantén para editar - Toca dos veces para agregar un bloque - Toca dos veces para editar este valor - Toca dos veces para mover el bloque hacia abajo + Toca dos veces para seleccionar una imagen + Toca dos veces para seleccionar un video + Toca dos veces para seleccionar + Toca dos veces para rehacer el último cambio Toca dos veces para mover el bloque hacia arriba - Elegir desde el dispositivo + Toca dos veces para mover el bloque hacia abajo + Toca dos veces para editar este valor + Toca dos veces para agregar un bloque + Toca dos veces y mantén para editar El valor actual es %s + Elegir desde el dispositivo + Ocurrió un error desconocido. Por favor, inténtalo de nuevo. + Texto alternativo + Agregar video + Agregar la URL Agregar el texto alternativo AGREGAR EL BLOQUE AQUÍ Agregar descripción - Agregar la URL - Agregar video - Texto alternativo - Ocurrió un error desconocido. Por favor, inténtalo de nuevo. - La lista se ha cargado con %1$d elementos. Toca el botón \"Agregar a las entradas guardadas\" para guardar una entrada en tu lista. + La lista se ha cargado con %1$d elementos. + Avisos Desactivado Activado Al desactivar los avisos para este sitio, se desactivarán los avisos mostrados en la pestaña de avisos de este sitio. Puedes ajustar qué tipo de aviso ves después de activar los avisos para este sitio. - Avisos + Para ver los avisos en la pestaña de avisos de este sitio, activa los avisos para este sitio. Activar los avisos mostrados en la pestaña de avisos de este sitio Desactivar los avisos mostrados en la pestaña de avisos de este sitio - Para ver los avisos en la pestaña de avisos de este sitio, activa los avisos para este sitio. Avisos para este sitio Avisos para este sitio Agregar una imagen o video - No pudimos publicar esta entrada privada, pero lo intentaremos de nuevo más tarde. - No pudimos programar esta entrada, pero lo intentaremos de nuevo más tarde. No pudimos enviar esta entrada para revisión, pero lo intentaremos de nuevo más tarde. - No pudimos completar esta acción y no se publicó esta entrada. - No pudimos completar esta acción y no se envió esta entrada privada. + No pudimos programar esta entrada, pero lo intentaremos de nuevo más tarde. + No pudimos publicar esta entrada privada, pero lo intentaremos de nuevo más tarde. No pudimos publicar esta entrada, pero lo intentaremos de nuevo más tarde. - No pudimos completar esta acción y no se ha programado esta entrada. No pudimos completar esta acción y no se envió esta entrada para revisión. - No pudimos subir este medio. - No pudimos subir este medio y no se publicó la entrada. - No pudimos subir este medio y no se publicó esta entrada privada. - No pudimos subir este medio y no se ha programado esta entrada. + No pudimos completar esta acción y no se ha programado esta entrada. + No pudimos completar esta acción y no se envió esta entrada privada. + No pudimos completar esta acción y no se publicó esta entrada. No pudimos subir este medio y no se envió esta entrada para revisión. - No pudimos completar esta acción. + No pudimos subir este medio y no se ha programado esta entrada. + No pudimos subir este medio y no se publicó esta entrada privada. + No pudimos subir este medio y no se publicó la entrada. + No pudimos subir este medio. No pudimos completar esta acción, pero lo intentaremos de nuevo más tarde. + No pudimos completar esta acción. No se puede previsualizar un borrador vacío No se puede previsualizar una página vacía No se puede previsualizar una entrada vacía - Generando la vista previa… Vista previa no disponible Error al intentar guardar la entrada antes de previsualizarla - Hiciste cambios no guardados en esta entrada + Generando la vista previa… Guardando… - Borrar permanentemente - Recientemente has hecho cambios en esta entrada, pero no los has guardado. Elige una versión para cargar:\n\n - Desde esta aplicación\nGuardado en %1$s\n\nDesde otro dispositivo\nGuardado en %2$s\n + Hiciste cambios no guardados en esta entrada La versión desde esta aplicación La versión desde otro dispositivo + Desde esta aplicación\nGuardado en %1$s\n\nDesde otro dispositivo\nGuardado en %2$s\n + Recientemente has hecho cambios en esta entrada, pero no los has guardado. Elige una versión para cargar:\n\n ¿Qué versión te gustaría editar? + Borrar permanentemente No guardaremos los últimos cambios en tu borrador. - Guardaremos tu borrador cuando tu dispositivo vuelva a estar online + No programaremos estos cambios. No enviaremos estos cambios para revisión. - Publicaremos tu entrada privada cuando tu dispositivo vuelva a estar online. No publicaremos estos cambios. - No programaremos estos cambios. + Guardaremos tu borrador cuando tu dispositivo vuelva a estar online + Publicaremos tu entrada privada cuando tu dispositivo vuelva a estar online. + Programaremos tu entrada cuando tu dispositivo vuelva a estar online. Enviaremos tu entrada para revisión cuando tu dispositivo vuelva a estar online. Publicaremos la entrada cuando tu dispositivo vuelva a estar online. - Programaremos tu entrada cuando tu dispositivo vuelva a estar online. - Guardando el nombre de usuario… Esta acción no puede cancelarse. Es posible que el nombre de usuario ya haya sido actualizado. Tu nuevo nombre de usuario es %1$s - Estás cambiando tu nombre de usuario a %1$s%2$s%3$s. Cambiar tu nombre de usuario también afectará a tu perfil de Gravatar y a las direcciones de perfil de Intense Debate. Para continuar, confirma tu nuevo nombre de usuario. + Guardando el nombre de usuario… Cambiar el nombre de usuario + Estás cambiando tu nombre de usuario a %1$s%2$s%3$s. Cambiar tu nombre de usuario también afectará a tu perfil de Gravatar y a las direcciones de perfil de Intense Debate. Para continuar, confirma tu nuevo nombre de usuario. ¡Cuidado! Estás a punto de cambiar tu nombre de usuario, que actualmente es %1$s%2$s%3$s. No podrás volver a recuperar tu nombre de usuario. Ver y cambiar los ajustes de rendimiento de Jetpack Rendimiento y velocidad - Alojamiento de video sin anuncios - Imágenes más rápidas - Archivos estáticos más rápidos - Búsqueda mejorada + Más Reemplaza la búsqueda integrada en WordPress con una experiencia mejorada de búsqueda + Búsqueda mejorada Búsqueda de Jetpack + Alojamiento de video sin anuncios Medios - Más - Desactivado Carga las páginas más rápido al permitir a Jetpack optimizar tus imágenes y archivos estáticos (como CSS y JavaScript). + Archivos estáticos más rápidos + Imágenes más rápidas + Desactivado + Activado + Acelerador de sitios Mejora la velocidad de tu sitio al cargar solo las imágenes visibles en la pantalla. Rendimiento - Acelerador de sitios - Activado Descargas - Las estadísticas de descarga de archivos no se registraron antes del 28 de Junio de 2019. - Descargas de archivos Archivo + Descargas de archivos + Las estadísticas de descarga de archivos no se registraron antes del 28 de Junio de 2019. Zona horaria del sitio (UTC -%s) - Zona horaria del sitio (UTC) Zona horaria del sitio (UTC +%s) - \"%1$s\" programado para publicar el \"%2$s\" en tu aplicación de %3$s\n%4$s - Entrada programada de WordPress: \"%s\" + Zona horaria del sitio (UTC) + Escritorio + Por defecto Cerrar el diálogo + Seleccionar el tipo de vista previa + Compartir Volver Avanzar + \"%1$s\" programado para publicar el \"%2$s\" en tu aplicación de %3$s\n%4$s + Entrada programada de WordPress: \"%s\" \"%s\" se publicará en 10 minutos - Seleccionar el tipo de vista previa - Compartir - Por defecto - Escritorio - \"%s\" ha sido publicado \"%s\" se publicará en 1 hora - Entrada programada - Entrada programada: recordatorio de 1 hora + \"%s\" ha sido publicado Entrada programada: recordatorio de 10 minutos + Entrada programada: recordatorio de 1 hora + Entrada programada El aviso no puede crearse cuando la fecha de publicación ha pasado. Cuando se publique - Desactivado - 1 hora antes 10 minutos antes + 1 hora antes + Desactivado Agregar al calendario Aviso Fecha y hora Por favor, introduce una dirección completa de una web, como example.com. Accede con WordPress.com para conectar con %1$s - Editor + Visitas + Entrada + %1$s: %2$s, %3$s: %4$s + Elemento contraído + Elemento expandido Contraer Ampliar Gráfico actualizado. - Elemento contraído - Elemento expandido - %1$s: %2$s, %3$s: %4$s - Cargando los datos de la tarjeta seleccionada %1$s %2$s del período: %3$s, cambio desde el período anterior - %4$s - Entrada - Visitas - Cerrar + Cargando los datos de la tarjeta seleccionada + Editor Ampliar - Verifica tu dirección de correo electrónico - las instrucciones se enviaron a %s + Cerrar Verifica tu dirección de correo electrónico - las instrucciones se enviaron a tu correo electrónico + Verifica tu dirección de correo electrónico - las instrucciones se enviaron a %s Cancelar Aceptar - Quitar enlace http(s):// + Quitar enlace Insertar enlace - Subiendo medios.\nPor favor, toca para ver las opciones. Reintentar la subida + Subiendo medios.\nPor favor, toca para ver las opciones. Abrir enlace en una nueva ventana/pestaña Para ver tus estadísticas accede a la cuenta de WordPress.com. + Ninguna entrada coincide con tu búsqueda + Buscar entradas Aquí es donde la gente te encuentra en Internet. Elige un nombre de dominio premium Todos los planes de WordPress.com incluyen un nombre de dominio personalizado. Registra ahora tu dominio premium gratuito. - Ninguna entrada coincide con tu búsqueda - Buscar entradas - Histórico De un vistazo Hoy - Agregar widget - Histórico - Color - Oscuro - Claro - No se pudieron cargar los datos - No hay ninguna red disponible + Histórico + Visitas esta semana Por favor, accede a la aplicación WordPress para agregar un widget. - Color + No hay ninguna red disponible + No se pudieron cargar los datos Tipo + Color Selecciona tu sitio - Sitio + Oscuro + Claro + Color Selecciona tu sitio + Sitio + Histórico Visitas esta semana - Visitas esta semana + Agregar widget Está tardando más tiempo del normal recargar los detalles del plugin. Por favor, compruébalo de nuevo más tarde. Si acabas de registrar un nombre de dominio, por favor, espera hasta que terminemos de configurarlo e inténtalo de nuevo.\n\nEn caso contrario, parece que algo fue mal y la característica del plugin podría no estar disponible para este sitio. Estado (no disponible) Al registrar este dominio aceptas nuestros %1$stérminos y condiciones%2$s + Comprueba tu conexión a la red e inténtalo de nuevo. No se pudo cargar esta página en este momento. No se pudieron recuperar los ajustes. Algunas APIs no están disponibles para la cuenta e ID de esta aplicación OAuth. - Comprueba tu conexión a la red e inténtalo de nuevo. Al configurar Jetpack aceptas nuestros %1$stérminos y condiciones%2$s No hay ninguna conexión. La edición está desactivada. - Actualizar contraseña - Contraseña actualizada Para volver a conectar la aplicación con tu sitio alojado, introduce aquí la nueva contraseña del sitio. + Contraseña actualizada + Actualizar contraseña Registrando el nombre de dominio… - Selecciona el país Selecciona la provincia - Dirección - Dirección 2 + Selecciona el país + Registrar un dominio + Código postal + Provincia Ciudad - Código del país + Dirección 2 + Dirección País + Código del país Teléfono - Código postal - Registrar un dominio - Provincia - Para tu comodidad, hemos precompletado tu información de contacto\n de WordPress.com. Por favor, comprueba que es la información correcta que quieres usar para este dominio. Organización (opcional) + Para tu comodidad, hemos precompletado tu información de contacto\n de WordPress.com. Por favor, comprueba que es la información correcta que quieres usar para este dominio. Información de contacto del dominio Registrar públicamente Registrar privadamente con protección de privacidad Los propietarios de dominios tienen que compartir información en una base de datos pública de todos los dominios.\n Con la protección de privacidad publicamos nuestra propia información en vez de la tuya, y te redirigiremos de forma privada cualquier comunicación dirigida a ti. - Por favor, introduce un %s válido Protección de privacidad - Gestiona tus estadísticas - Descartar + Por favor, introduce un %s válido Nuevo - Elige qué estadísticas ver, y céntrate en los datos que más te preocupen. Toca en %1$s al fondo de las estadísticas para personalizarlas. + Descartar Pruébalo ahora + Elige qué estadísticas ver, y céntrate en los datos que más te preocupen. Toca en %1$s al fondo de las estadísticas para personalizarlas. + Gestiona tus estadísticas Recuperando revisiones… Fallo al insertar los medios.\nPor favor, toca para ver las opciones. Fallo al insertar los medios.\nPor favor, toca para volver a intentarlo. Tu borrador se está subiendo Subiendo borrador - Ocurrió un error mientras se restauraba la entrada Borradores + Ocurrió un error mientras se restauraba la entrada Retroceder a: %s + Solo ves las estadísticas más relevantes. Agrega y organiza tus detalles abajo. + Estadísticas anuales del sitio No se pudieron cargar las sugerencias de dominios Teclea una palabra clave para más ideas No se han encontrado sugerencias Registrar dominio - Estadísticas anuales del sitio - Solo ves las estadísticas más relevantes. Agrega y organiza tus detalles abajo. - Cambios locales - Al enviar esta entrada a la papelera también se descartarán los cambios sin guardar, ¿estás seguro de querer continuar? + Quitar de los detalles + Mover abajo + Mover arriba + Ajustes de los parámetros de las estadísticas La entrada se está moviendo a borradores - Entrada restaurada La entrada se está restaurando + Entrada restaurada La entrada se está enviando a la papelera - Ajustes de los parámetros de las estadísticas - Mover abajo - Mover arriba - Quitar de los detalles + Al enviar esta entrada a la papelera también se descartarán los cambios sin guardar, ¿estás seguro de querer continuar? + Cambios locales Mover a borradores - Cambiar a la vista de tarjetas Cambiar a la vista de lista + Cambiar a la vista de tarjetas + No tienes ninguna entrada en la papelera No tienes ninguna entrada en borrador - Aún no has publicado ninguna entrada No tienes ninguna entrada programada - No tienes ninguna entrada en la papelera + Aún no has publicado ninguna entrada Por favor, inicia sesión con tu nombre de usuario y contraseña. Por favor, inicia sesión con tu nombre de usuario WordPress.com, en lugar de tu dirección de correo electrónico. Promedio palabras/entrada @@ -2255,6 +2259,7 @@ Language: es_CL Registro de dominio Para instalar plugins, debes tener un dominio personalizado asociado con su sitio. Instalar plugin + Podrás personalizar la apariencia de tu sitio más tarde Publicar en: %s Programado para: %s Publicado en: %s @@ -2265,7 +2270,6 @@ Language: es_CL Periodo Meses y Años Cargar Más - Podrás personalizar la apariencia de tu sitio más tarde Hoy Mejor Hora Mejor Día @@ -2286,19 +2290,19 @@ Language: es_CL No podemos cargar planes en este momento. Por favor inténtalo de nuevo más tarde. No se pueden cargar planes Sin conexión + Cambiar al editor de bloques Se ha producido un problema al cargar los datos, actualiza la página para volver a intentarlo. Datos no cargados Edita nuevas publicaciones y páginas con el editor de bloques Utiliza el Editor de Bloques - Cambiar al editor de bloques salir Haz crecer tu audiencia - Siguientes pasos - Tus visitantes verán tu ícono en su navegador. Agrega un ícono personalizado para un look pulido y profesional. Personaliza tu sitio + Siguientes pasos Elige un ícono del sitio único - Puntea %1$sEl Icono de tu Sitio%2$s para cargar uno nuevo + Tus visitantes verán tu ícono en su navegador. Agrega un ícono personalizado para un look pulido y profesional. Selecciona las %1$s estadísticas %2$s para ver cómo está rindiendo tu sitio. + Puntea %1$sEl Icono de tu Sitio%2$s para cargar uno nuevo Guarda en borrador y publica una entrada. Habilita el compartir publicaciones Comparte automáticamente nuevas publicaciones en tus cuentas de redes sociales. @@ -2308,44 +2312,45 @@ Language: es_CL Recordatorio Seleccione el siguiente período Seleccione el período anterior - Tiempo Más Popular %1$s de visitas + Tiempo Más Popular %1$s (%2$s) +%1$s (%2$s) - Limpiar - Hubo un problema Mostrando vista previa del sitio + Limpiar Parece como si estuvieras en una conexión lenta. Si no ves el nuevo sitio en la lista, prueba a actualizar. Cancelar Asistente de Creación de Sitios Estamos creando tu nuevo sitio + Hubo un problema Crear sitio Crear sitio Aquí es donde la gente te encontrará en Internet. - Hubo un problema No hay direcciones disponibles que coincidan con tu búsqueda Error al comunicarse con el servidor, inténtalo de nuevo + Hubo un problema Hubo un problema - %1$d de %2$d ¡Tu sitio ha sido creado! + %1$d de %2$d Crear sitio Sugerencias actualizadas No se pudo seleccionar el sitio autohospedado recién agregado. Conflicto de versión - Deshacer Permite que los informes automáticos de caídas nos ayuden a mejorar el rendimiento de la aplicación. Informe de caída + Deshacer Versión web descartada Versión local descartada Actualizando entrada Descartar Web - Este post tiene dos versiones que están en conflicto. Selecciona la versión que quieras descartar.\n\n Descartar local - Resolver conflicto de sincronización Local\nGuardado el %1$s\n\nWeb\nGuardado el %2$s\n + Este post tiene dos versiones que están en conflicto. Selecciona la versión que quieras descartar.\n\n + Resolver conflicto de sincronización No hay datos para este período Quita la ubicación de los medios No podemos abrir las estadísticas en este momento. Por favor inténtalo de nuevo más tarde No hay medios que coincidan con tu búsqueda + ¡Busca para encontrar GIF para agregar a tu biblioteca de medios! Vistas Autor Autores @@ -2375,9 +2380,8 @@ Language: es_CL Compartir entrada Crear entrada Ha pasado %1$s desde que %2$s fue publicado. Así es la performance de la entrada hasta ahora: - ¡Busca para encontrar GIF para agregar a tu biblioteca de medios! - Etiquetas y Categorías Ha pasado %1$s desde que %2$s fue publicado. Haz rodar la pelota e incrementa las vistas de tu entrada al compartirlo: + Etiquetas y Categorías Todo-el-tiempo %1$s - %2$s Servicio @@ -2425,8 +2429,8 @@ Language: es_CL Mediano Imagen en miniatura Historial - Revisión pendiente La página seleccionada no está disponible + Revisión pendiente No tienes ninguna página en la papelera No tiene ninguna página programada No tienes ninguna página en borrador @@ -2445,8 +2449,8 @@ Language: es_CL Hemos intentado demasiadas veces enviarte un código de verificación de SMS: Tómate un descanso y solicita uno nuevo en un minuto. No hay ninguna cuenta WordPress.com que coincida con esta cuenta de Google. No hay sitios que coincidan con tu búsqueda - Se ha cambiado la página padre Ningún blog coincide con tu búsqueda + Se ha cambiado la página padre La página se ha eliminado permanentemente La página se ha programado La página ha sido publicada @@ -2461,23 +2465,23 @@ Language: es_CL Descartar pulsa aquí Crea tu sitio - ¿No se siente bien tachar las cosas de una lista? Obtén tu sitio y hazlo funcionar. + ¿No se siente bien tachar las cosas de una lista? Ve tu sitio - Comparte tu sitio - Conéctate a tus cuentas de medios sociales – tu sitio compartirá automáticamente nuevos mensajes. - Pulsa en %1$s Conexiones %2$s para agregar tus cuentas de medios sociales Previsualiza tu sitio para ver lo que verán tus visitantes. + Comparte tu sitio Toca en %1$s Social %2$s para continuar + Pulsa en %1$s Conexiones %2$s para agregar tus cuentas de medios sociales + Conéctate a tus cuentas de medios sociales – tu sitio compartirá automáticamente nuevos mensajes. Publicar una entrada Tap %1$s Crear Entrada %2$s para crear una nueva entrada - Conecta con otros sitios No, gracias + Conecta con otros sitios Ir Cancelar No ahora - No tienes ningún sitio Más + No tienes ningún sitio Agrega aquí etiquetas para descubrir entradas sobre tus temas favoritos Inicia sesión en la cuenta WordPress.com que usaste para conectar jetpack. Jetpack @@ -2489,278 +2493,278 @@ Language: es_CL No tienes ninguna etiqueta Añade aquí tus etiquetas de uso frecuente para que las puedas seleccionar rápidamente al etiquetar tus entradas Crear una etiqueta - ¿Cerrar sesión de WordPress? No hay medios que coincidan con tu búsqueda + ¿Cerrar sesión de WordPress? Tienes cambios pendientes de subir en las entradas de tu sitio. Al desconectarse se eliminarán los cambios del dispositivo. ¿Deseas cerrar sesión de todos modos? Aún sin vistas Aún sin usuarios Los posts que te gusten aparecerán aquí Aún no te gusta algo Descubre blogs - Ya que estás en un plan gratuito, verás eventos limitados en tu actividad. Aún no hay “me gusta” - Aún sin actividad + Ya que estás en un plan gratuito, verás eventos limitados en tu actividad. Cuando realices cambios en tu sitio, podrás ver tu historial de actividades aquí - No tienes ningún medio - Cargar media - Crear una página + Aún sin actividad Crear una entrada - imagen del tema + Crear una página + Cargar media + No tienes ningún medio galería de imágenes ícono del sitio + imagen del tema imagen destacada Descartar imagen de perfil + Pasajero Correo - WordPress - Email de contacto - No establecido Por favor ingresa tu dirección de correo electrónico Para continuar, por favor ingresa tu dirección de correo electrónico y tu nombre Nuevo mensaje desede ‘Ayuda y Soporte’ - Pasajero - Restaurando a %1$s %2$s + WordPress + No establecido + Email de contacto Restauración en progreso - Botón de acción del Registro de Actividad + Restaurando a %1$s %2$s Actualmente restaurando tu sitio - Tu sitio ha sido restaurado correctamente\nRestaurado a %1$s %2$s Tu sitio ha sido restaurado satisfactoriamente + Tu sitio ha sido restaurado correctamente\nRestaurado a %1$s %2$s Tu sitio está siendo restaurado\nRestaurando a %1$s %2$s + Botón de acción del Registro de Actividad Auto-administrado Guarda esta entrada y vuelve cuando quieras para leerla. Solo estará disponible en este dispositivo — las entradas guardadas no se sincronizan con otros dispositivos. - No se encontraron resultados - No se pudo realizar la búsqueda Guardar Entrada para Más tarde - Sitios + No se pudo realizar la búsqueda + No se encontraron resultados Leer la entrada de origen + Sitios Enlace mágico enviado - Dirección de correo electrónico - Inicio de sesión con Enlace Mágico - Enlace mágico enviado + Verificación de código Credenciales de login + Enlace mágico enviado + Inicio de sesión con Enlace Mágico Dirección del sitio a acceder - Verificación de código - Se guardó la entrada - Ver todas - Eliminado - Agregar a entradas guardadas + Dirección de correo electrónico Pulse %s para guardar un mensaje en la lista. No hay mensajes guardados — todavía! + Se guardó la entrada + Ver todas Eliminar de las entradas guardadas + Agregar a entradas guardadas Entradas guardadas + Eliminado + Cambiar el icono del sitio Cancelar Eliminar Cambiar + No tienes permiso para editar el icono del sitio. + No tienes permiso para agregar un icono de sitio. + ¿Cómo te gustaría editar el icono? + ¿Deseas agregar un icono de sitio? Ícono del sitio este sitio Habilitar - Cambiar el icono del sitio - ¿Deseas agregar un icono de sitio? - No tienes permiso para agregar un icono de sitio. - ¿Cómo te gustaría editar el icono? - No tienes permiso para editar el icono del sitio. + ¿Habilitar notificaciones para %1$s%2$s%3$s? + Activar los avisos del blog + Desactivar los avisos del blog Icono de jetpack - Política de Privacidad - Política de Cookies - Registro de actividades Evento Icono de actividad - Comparte información con nuestra herramienta de análisis sobre el uso de los servicios mientras estás conectado a tu cuenta de WordPress.com. - Recopilar información - Opciones de privacidad - Esta información nos ayuda a mejorar nuestros productos, hacer marketing más relevante para ti, personalizar tu experiencia en WordPress.com, y más, como se detalla en nuestra política de privacidad. + Registro de actividades Leer la política de privacidad - ¿Habilitar notificaciones para %1$s%2$s%3$s? Usamos otras herramientas de rastreo, incluyendo algunas de terceras partes. Lee acerca de estos y cómo controlarlos. Política de Terceras Partes - Desactivar los avisos del blog - Activar los avisos del blog + Esta información nos ayuda a mejorar nuestros productos, hacer marketing más relevante para ti, personalizar tu experiencia en WordPress.com, y más, como se detalla en nuestra política de privacidad. + Política de Privacidad + Comparte información con nuestra herramienta de análisis sobre el uso de los servicios mientras estás conectado a tu cuenta de WordPress.com. + Política de Cookies + Opciones de privacidad + Recopilar información Entrada enviada - La característica del plugin requiere que la suscripción de dominio principal se asocie con este usuario. La característica del plugin requiere que el sitio esté en buena forma. - La característica del plugin requiere una dirección de correo electrónico verificada. + La característica del plugin requiere que la suscripción de dominio principal se asocie con este usuario. + La característica del plugin requiere privilegios de administrador. + El plugin no puede ser instalado en sitios VIP. El plugin no se puede instalar debido a limitaciones de espacio en disco. + La característica del plugin requiere una dirección de correo electrónico verificada. + La característica del plugin requiere que el sitio sea público. La característica del plugin requiere un plan de negocios. - El plugin no puede ser instalado en sitios VIP. - La característica del plugin requiere privilegios de administrador. La característica del plugin requiere un dominio personalizado. - La característica del plugin requiere que el sitio sea público. Estamos haciendo la configuración final — casi está listo… Instalando plugin… Instalar La instalación del primer plugin en tu sitio puede tardar hasta 1 minuto. Durante este tiempo no podrás realizar cambios en tu sitio. + Instalar plugin + Notificaciones + Enviarme nuevos comentarios Semanalmente + Al instante Diariamente Nuevas entradas - Enviarme nuevos comentarios - Al instante - Enviarme email en nuevas entradas Recibir notificaciones de nuevos entradas de este sitio - Notificaciones - Instalar plugin - Gente que mira los gráficos - Persona que lee el dispositivo con notificaciones - Sitios Seguidos + Enviarme email en nuevas entradas Todos Mis Sitios Seguidos + Sitios Seguidos + Persona que lee el dispositivo con notificaciones + Gente que mira los gráficos %1$s en %2$s ¿Seguro que quieres eliminar definitivamente esta publicación? Importante General Utiliza esta foto %1$d de %2$d - Agregar %d - No se puede guardar un borrador vacío - Elige entre la Biblioteca de Fotos Gratis - Previsualizar %d - %1$s de ilimitado Fotos proporcionadas por %s Busca fotos gratuitas para agregar a tu Biblioteca Multimedia Buscar en la biblioteca de fotos gratis + Elige entre la Biblioteca de Fotos Gratis + No se puede guardar un borrador vacío + %1$s de ilimitado + Previsualizar %d + Agregar %d Crear Etiqueta + navegar hacia arriba + Notificaciones + Abrir enlace externo ver más foto eliminar + Reproducir vídeo + reproducir vídeo destacado + plugin logo banner de plugin + selección de medios de WordPress + cámara abierta + selecciona desde el dispositivo + información de rol reproducir + vista previa de la imagen vista previa audio + reproducir vídeo papelera reintentar - eliminar %s previsualización de medios, nombre de archivo %s - reproducir vídeo - vista previa de la imagen - navegar hacia arriba - Notificaciones - información de rol - cámara abierta - selecciona desde el dispositivo - Reproducir vídeo - selección de medios de WordPress - plugin logo + eliminar %s imagen del perfil de %s - reproducir vídeo destacado - Registrarse con Google… marca el check - Abrir enlace externo + Registrarse con Google… Error en la conexión a Jetpack: %s Ya estás conectado a Jetpack - Vista previa - %s TB + Modo Visual Modo HTML + Vista previa Guardar como Borrador - Modo Visual + %s TB %s GB + %s MB + %s kB + %s B %1$s de %2$s + Si necesitas más espacio considera actualizar tu plan de WordPress. + Espacio Utilizado Multimedia Comentario marcado como no spam Comentario marcado como spam - Cuenta nueva - Comentario aprobado Comentario eliminado - Me gusta el comentario + Comentario restaurado Comentario enviado a la papelera - Comentario no aprobado Ya no me gusta el comentario - Comentario restaurado - Editar Foto - %s B - %s kB - %s MB + Me gusta el comentario + Comentario no aprobado + Comentario aprobado Detalle de notificación %s + Editar Foto Elegir sitio - Si necesitas más espacio considera actualizar tu plan de WordPress. - Espacio Utilizado + Cuenta nueva Has ingresado como - Yo - Detalles del archivo - Configuración de notificaciones - Notificaciones Detalle de la persona + Detalles del archivo Botones de compartir + Notificaciones Lector + Yo Mi sitio + Configuración de notificaciones Tu avatar ha sido subido y estará disponible en breve. + Parece que ha desactivado los permisos requeridos para esta función. <br/><br/>Para cambiar esto, edita tus permisos y asegúrate de que <strong>%s</strong> está habilitado. Permisos Destacado - Versión %s - Parece que ha desactivado los permisos requeridos para esta función. <br/><br/>Para cambiar esto, edita tus permisos y asegúrate de que <strong>%s</strong> está habilitado. - Módulo Social desactivado No puedes acceder a tus ajustes para compartir porque tu módulo Social de Jetpack está desactivado. + Módulo Social desactivado + Versión %s El sonido elegido tiene una ruta de acceso no válida. Por favor, elija otro. QP %s - %1$d páginas/entradas, y 1 archivo restante - %1$d páginas, y 1 archivo restante - %1$d entradas, y 1 archivo restante + %1$d páginas/entradas restantes 1 página restante %1$d páginas restantes - %1$d páginas/entradas restantes %1$d entradas restantes + %1$d páginas/entradas, y 1 archivo restante + %1$d entradas, y 1 archivo restante + %1$d páginas, y 1 archivo restante + 1 entrada, y 1 archivo restante 1 página y 1 archivo restante - 1 página, y %1$d de %2$d archivos restantes %1$d páginas/entradas, y %2$d de %3$d archivos restantes - %1$d páginas, y %2$d de %3$d archivos restantes - 1 entrada, y 1 archivo restante %1$d entradas, y %2$d de %3$d archivos restantes + %1$d páginas, y %2$d de %3$d archivos restantes 1 entrada, y %1$d de %2$d archivos restantes + 1 página, y %1$d de %2$d archivos restantes %1$d entradas/páginas no cargadas %1$d páginas no cargadas - 1 página con %1$d archivos no subidos 1 página no cargada + %1$d entradas no subidas + 1 entrada no subida %1$d entradas/páginas con %2$d archivos no subidos %1$d páginas con %2$d archivos no cargados - 1 entrada con %1$d archivos no subidos - 1 entrada no subida + 1 página con %1$d archivos no subidos %1$d entradas con %2$d archivos no cargados - %1$d entradas no subidas - (Sin título) - \@%s - 1 página con 1 archivo no subido + 1 entrada con %1$d archivos no subidos %1$d entradas/páginas con 1 archivo no subido %1$d páginas con 1 archivo no subido - 1 entrada con 1 archivo no subido + 1 página con 1 archivo no subido %1$d entradas con 1 archivo no subido + 1 entrada con 1 archivo no subido + (Sin título) + \@%s Crear sitio + Toca para continuar. ¡Sitio creado! + Google tardó mucho en responder. Es posible que tengas que esperar por una mejor conexión. Cambia tu nombre de usuario + Escribe para obtener más sugerencias + Tu nombre de usuario actual es %1$s %2$s %3$s. Con pocas excepciones, otros sólo verán el nombre mostrado, %4$s %5$s %6$s. + No se sugieren nombres de usuario de %1$s %2$s %3$s. Por favor ingresa más letras o números para obtener sugerencias. + Se ha producido un error al recuperar sugerencias de nombre de usuario. + ¿Descartar cambiar nombre de usuario? + Descartar Guardar Añadir Avatar - Google tardó mucho en responder. Es posible que tengas que esperar por una mejor conexión. - Toca para continuar. El correo electrónico ya existe en WordPress.com.\nProcedemos a Ingresar. - Descartar - ¿Descartar cambiar nombre de usuario? - Se ha producido un error al recuperar sugerencias de nombre de usuario. - No se sugieren nombres de usuario de %1$s %2$s %3$s. Por favor ingresa más letras o números para obtener sugerencias. - Tu nombre de usuario actual es %1$s %2$s %3$s. Con pocas excepciones, otros sólo verán el nombre mostrado, %4$s %5$s %6$s. - Escribe para obtener más sugerencias - Enviando correo electrónico Actualizando cuenta… + Enviando correo electrónico Reintentar Cerrar + Hubo algunos problemas para enviar el correo electrónico. Puedes reintentar ahora o cerrar y volver a intentarlo más tarde. Nombre de usuario + Siempre puedes acceder con un enlace como el que acabas de usar, pero también puedes configurar una contraseña si lo prefieres. + Contraseña (opcional) + Nombre para Mostrar Reintentar - Hubo algún problema al subir tu avatar. Revertir Hubo algunos problemas al actualizar tu cuenta. Puedes reintentar o revertir los cambios para continuar. - Nombre para Mostrar - Contraseña (opcional) - Hubo algunos problemas para enviar el correo electrónico. Puedes reintentar ahora o cerrar y volver a intentarlo más tarde. - Siempre puedes acceder con un enlace como el que acabas de usar, pero también puedes configurar una contraseña si lo prefieres. + Hubo algún problema al subir tu avatar. + Necesita actualización + Buscar Plugins Nuevo Popular + Sin coincidencias + Ver Todos + Administrar + No se puede buscar plugins + Error al instalar %s + Instalado correctamente %s Instalar Me gusta Añadir nuevo sitio Crea un nuevo sitio para tu negocio, revista o blog personal; o conecta una instalación existente de WordPress. - Buscar Plugins - Error al instalar %s - Instalado correctamente %s - Administrar - Necesita actualización - No se puede buscar plugins - Ver Todos - Sin coincidencias Para obtener notificaciones útiles en tu dispositivo desde tu sitio de WordPress, tendrás que instalar el plugin Jetpack. ¿Deseas configurar Jetpack? Carga diferida de imágenes Instalar Jetpack @@ -2771,17 +2775,17 @@ Language: es_CL Versión 5 estrellas 4 estrellas - 1 estrella 3 estrellas 2 estrellas - Preguntas Más Frecuentes + 1 estrella Ninguno proporcionado %s descargas %s calificaciones Leer Reseñas + Preguntas Más Frecuentes + Qué hay de nuevo Instalación Descripción - Qué hay de nuevo Opciones Instalado Versión %s instalada @@ -2789,21 +2793,21 @@ Language: es_CL por %s Cambiar foto No se pueden cargar plugins + Páginas + Administra las etiquetas de tu sitio Guardando Eliminando ¿Eliminar permanentemente la etiqueta \'%s\'? - Administra las etiquetas de tu sitio - Páginas Ya existe una etiqueta con este nombre Agregar nueva etiqueta Descripción Etiqueta Tu sitio WordPress.com soporta el uso de páginas móviles aceleradas, una iniciativa liderada por Google que acelera drásticamente los tiempos de carga en dispositivos móviles Páginas Móviles Aceleradas (AMP) - Aprende sobre el formato de fecha y hora No se pudieron cargar las zonas horarias - Personalizado + Aprende sobre el formato de fecha y hora Formato personalizado + Personalizado Entradas por página Elige una ciudad en tu zona horaria Zona horaria @@ -2849,15 +2853,15 @@ Language: es_CL Envíame un mensaje con otro código en su lugar Enviaremos un mensaje de texto al número de teléfono que termina en %s. Por favor ingresa el código de verificación indicado en el SMS. Tamaño - Faltan %1$d de %2$d archivos 1 archivo restante + Faltan %1$d de %2$d archivos 1 entrada restante Subiendo… Escribir Entrada %d archivos cargados correctamente ,%d cargado exitosamente - 1 archivo no subido 1 archivo cargado + 1 archivo no subido %d archivos cargados %d archivos no cargados Quitar de la entrada @@ -2887,22 +2891,22 @@ Language: es_CL Protección contra ataques de fuerza bruta Enviar notificaciones push Enviar notificaciones por correo electrónico - Seguridad Supervisar el tiempo de funcionamiento del sitio - Agregar a librería de medios + Seguridad + Configuración de Jetpack Agregar a Elegir sitio - Configuración de Jetpack + Agregar a librería de medios Agregar a nueva entrada IP o rango no válido Eliminando ¿Eliminar este vídeo? ¿Eliminar esta imagen? - Detalles del audio Detalles del documento + Detalles del audio Detalles del video - Vista previa Detalles de la imagen + Vista previa Fecha de Subida Duración Dimensiones de Vídeo @@ -2911,8 +2915,8 @@ Language: es_CL Nombre de Archivo URL Texto alternativo - Parpadeo de luz Conectar un sitio + Parpadeo de luz Vibrar dispositivo Seleccionar sonido Visuales y de Sonidos @@ -2927,8 +2931,8 @@ Language: es_CL Activar los avisos Desactivar los avisos Desactivado - Tamaño Máximo del Vídeo Activado + Tamaño Máximo del Vídeo Tamaño Máximo de la Imagen Hubo un error al subir los medios en esta entrada: %s. Hubo un error al subir esta entrada: %s. @@ -2940,8 +2944,8 @@ Language: es_CL Se ha eliminado el medio. ¿Eliminarlo de esta entrada? Error al abrir el explorador Web predeterminado. Por favor, elige otra aplicación: No se puede abrir el vínculo - Esta entrada ya no existe No pude encontrar la entrada en el servidor + Esta entrada ya no existe Se canceló la carga de medios Hubo un error al cargar el medio en esta página: %s. Hubo un error al cargar esta página: %s. @@ -2951,45 +2955,45 @@ Language: es_CL Entrada programada Reintentar Entrada en cola - Se perdió la conexión al servidor Cargando \"%s\" - Mi sitio + Se perdió la conexión al servidor Mis sitios + Mi sitio No pude detectar tu aplicación de cliente de correo Introduce un código de verificación Por favor escribe el nombre de usuario Inicia sesión en WordPress.com para acceder a la entrada. Error al agregar el sitio. Código de error: %s Comprobando la dirección del sitio - Tu dirección de sitio aparece en la barra en la parte superior de la pantalla cuando visitas tu sitio en Chrome. ¿Necesita más ayuda? + Tu dirección de sitio aparece en la barra en la parte superior de la pantalla cuando visitas tu sitio en Chrome. ¿Cuál es la dirección de mi sitio? Dirección del sitio Introduce la dirección del sitio WordPress con el que te gustaría conectar. Ya has iniciado sesión en WordPress.com Continuar - Ingresa tu contraseña de WordPress.com. Conectar otro sitio + Ingresa tu contraseña de WordPress.com. Solicitando correo de acceso Parece que esta contraseña es incorrecta. Por favor revisa tu información y vuelva a intentarlo. Solicitando un código de verificación vía SMS. Envíame un mensaje con un código en su lugar ¡Casi lo tenemos! Por favor, introduce el código de verificación de tu aplicación Authenticator. + Abrir correo electrónico Siguiente Inicia sesión en WordPress.com usando una dirección de correo electrónico para administrar todos tus sitios de WordPress. - Abrir correo electrónico - Respuesta inesperada del servidor Foto de Perfil + Respuesta inesperada del servidor No se puede detener la carga porque ya está terminado Título Rehacer Deshacer ¡Disculpas! Esta característica no está implementada todavía :( - ADVERTENCIA: ¡no todos los artículos soltados son soportados! Los medios son demasiado pequeños para mostrar + ADVERTENCIA: ¡no todos los artículos soltados son soportados! No se permite colocar imágenes en el Título - No se permite el soltado de imágenes en modo html Se ha producido un error al soltar texto + No se permite el soltado de imágenes en modo html Comparte tu historia aquí… Privado Borrador @@ -3003,12 +3007,12 @@ Language: es_CL Etiquetas Slug Extracto + Sin Asignar Más opciones Categorías y Etiquetas - Sin Asignar Todo - Categoría de padre (opcional): Nivel superior + Categoría de padre (opcional): No tienes audio No tienes ningún documento No tienes videos @@ -3018,16 +3022,16 @@ Language: es_CL El archivo excede el tamaño máximo de carga de este sitio Video demasiado grande para subir Imagen demasiado grande para subirla. Intente cambiar la configuración de Optimizar Imágenes en la aplicación + Audio Vídeos Documentos Imágenes Todo - Audio %1$s denegó el acceso a tus archivos de medios. Para solucionar esto modifica tus permisos y activa %2$s. Ver comentarios Calidad de los vídeos. Los valores más altos significan una mejor calidad de video. - Habilitar para cambiar el tamaño y comprimir vídeos Redimensiona vídeos en entradas a este tamaño + Habilitar para cambiar el tamaño y comprimir vídeos Optimizar Vídeos Borrador cargado Calidad de Vídeo @@ -3040,41 +3044,41 @@ Language: es_CL Cambia el texto de la etiqueta de los botones compartir. Este texto no aparecerá hasta que se añada al menos un botón para compartir. Conectando cuenta No se pudo realizar la conexión %s porque no se seleccionó ninguna cuenta. + Conectado Twitter Likes - Conectado Permitir que usted y sus lectores puedan colocar “me gusta” a los comentarios Botones Editar “Más” Botones Un botón “Más” contiene un menú desplegable que muestra los botones de uso compartido Seleccione los botones que se muestran bajo sus mensajes - Me Gusta en Comentarios Nombre de usuario Twitter - Etiqueta + Me Gusta en Comentarios Estilo del Botón + Etiqueta Botones compartir Mostrar Botón “Me Gusta” Mostrar Botón Teblog Reblog & Me Gusta Botones Oficiales Sólo Texto - Selecciona la cuenta que deseas autorizar. Ten en cuenta que las entradas se compartirán automáticamente en la cuenta seleccionada. - Icono y Texto Sólo Ícono + Icono y Texto + Selecciona la cuenta que deseas autorizar. Ten en cuenta que las entradas se compartirán automáticamente en la cuenta seleccionada. Conectando %s ¿Desconectar de %s? Conectar otra cuenta + Reconectar Desconectar - Conéctate para compartir automáticamente tus entradas del blog a %s. Conectar - Reconectar + Conéctate para compartir automáticamente tus entradas del blog a %s. Cuentas conectadas Conecta tus servicios de medios sociales favoritos y comparte automáticamente las entradas nuevas con tus amigos. Notificaciones. Administra tus notificaciones. Lector. Sigue el contenido de otros sitios. Mi sitio. Ve tu sitio y adminístralo, incluyendo estadísticas. - No ahora Social + No ahora Error de carga. Intenta cambiar la configuración de optimizar imágenes Guardando media a este dispositivo No se puede guardar media @@ -3085,12 +3089,12 @@ Language: es_CL Pulsa y manten pulsado para seleccionar varios comentarios Elige vídeo desde el dispositivo Elige la foto desde el dispositivo + Medios de WordPress Añadir como Galería Agregar individualmente - Medios de WordPress + Agregar varias fotos %d columnas 1 columna - Agregar varias fotos Reenviar email Enviamos un correo electrónico a %s cuando te inscribiste por primera vez. Por favor, abre el mensaje y haga clic en el botón azul para activar la publicación. Te enviamos un email cuando te inscribiste por primera vez. Por favor, abre el mensaje y haz clic en el botón azul para activar la publicación. @@ -3098,8 +3102,8 @@ Language: es_CL Error al enviar correo electrónico de verificación. ¿Ya estás verificado? Email de verificación enviado, revisa tu buzón de entrada Guardar entrada como borrador - Tomar foto Grabar video + Tomar foto ¡Ten cuidado! Una vez que eliminas un sitio, no se puede recuperar. Por favor, asegúrate antes de proceder. Todas tus entradas, imágenes y datos serán borrados. Y la dirección de este sitio (%s) se perderá. ¿Eliminar sitio? @@ -3114,11 +3118,11 @@ Language: es_CL Entrada guardada en línea Calidad de las imágenes. Valores más altos significan imágenes de mejor calidad. Habilitar para cambiar el tamaño y comprimir imágenes - Subido - Alta - Baja Máxima + Alta Media + Baja + Subido Falló la Carga Eliminado Eliminando @@ -3129,14 +3133,14 @@ Language: es_CL Formato desconocida de entrada Enviar Suscriptor - Este sitio ya existe en la aplicación, no se puede agregar. Se ha detectado un sitio duplicado. + Este sitio ya existe en la aplicación, no se puede agregar. Ya estás registrado en una cuenta WordPress.com, no puedes agregar un sitio WordPress.com enlazado a otra cuenta. No se puede cargar el medio Se requiere conexión para actualizar la biblioteca No tienes permiso para ver o editar medios - Se denegó el permiso de lectura a los medios del dispositivo No se han encontrado medios + Se denegó el permiso de lectura a los medios del dispositivo Optimizar Imágenes Sucedió un error en media Error al cargar medios @@ -3169,8 +3173,8 @@ Language: es_CL Gustando… Procesando… ¡Listo! - Cerrar Sesión Me gusta el comentario + Cerrar Sesión Inicia sesión en WordPress.com Más en WordPress.com Más de %s @@ -3198,21 +3202,21 @@ Language: es_CL Desde %1$s No se pudo quitar al espectador Algunas cargas de archivos fallaron. Puedes cambiar a modo HTML en este estado. ¿Eliminar los archivos que fallaron y continuar? - Editor Visual Miniatura de imagen - Cambios guardados - Leyenda - Texto alternativo - Enlace a + Editor Visual Ancho + Enlace a + Texto alternativo + Leyenda + Cambios guardados ¿Descartar los cambios no guardados? ¿Detener la cargar? Se produjo un error al cargar los archivos Actualmente estás subiendo archivos. Por favor, espera hasta que termine. No se puede insertar medios directamente en modo HTML. Por favor, cambia al modo visual. Cargando Galería… - Invitación enviada exitosamente ¡Toca para volver a intentarlo! + Invitación enviada exitosamente %1$s: %2$s ¡Invitación enviada pero sucedió un error! ¡Se produjo un error al intentar enviar la invitación! @@ -3222,8 +3226,8 @@ Language: es_CL Mensaje personalizado Invitar Nombres de usuarios o correos electrónicos - Externos Invitar Personas + Externos Borrar historial de búsqueda ¿Borrar historial de búsqueda? No se encontraron resultados para %s para tu idioma @@ -3249,8 +3253,8 @@ Language: es_CL Ingresando Se muestra públicamente cuando comentas. Capturar o seleccionar foto - Plan Planes + Plan Tus mensajes, páginas y ajustes se te enviarán por correo electrónico a %s. Exporta tu contenido ¡Correo electrónico de exportación enviado! @@ -3291,14 +3295,14 @@ Language: es_CL Imagen Galería Chat - Aside Audio + Aside Información sobre cursos y eventos WordPress.com (online y presencial). Oportunidades para participar en Investigación y encuestas WordPress.com. Consejos para sacar el máximo provecho de WordPress.com. Comunidad - Sugerencias Investigación + Sugerencias Respuestas a mis comentarios Menciones de usuario Logros del sitio @@ -3336,8 +3340,8 @@ Language: es_CL No hay comentarios en spam Todo No se pudo cargar la página - Idioma de la interfaz Desactivado + Idioma de la interfaz Acerca de la aplicación No pude guardar la configuración de la cuenta No se pudo recuperar la configuración de tu cuenta @@ -3437,11 +3441,11 @@ Language: es_CL General El más reciente primero Los mas viejos primero + Cerrar después Comentarios Publicaciones relacionadas Privacidad Discusión - Cerrar después No tienes permiso para cargar medios en este sitio Desconocida Nunca @@ -3455,11 +3459,11 @@ Language: es_CL Algo salió mal. No se pudo activar el tema por %1$s Gracias por elegir %1$s + ADMINISTRAR SITIO + LISTO Soporte Detalles Ver - ADMINISTRAR SITIO - LISTO Prueba y Personaliza Activar Activo @@ -3501,18 +3505,18 @@ Language: es_CL No se han podido cargar los ajustes de avisos Me gusta al comentario Avisos de la aplicación - Pestaña de avisos Correo electrónico + Pestaña de avisos Siempre enviaremos correos electrónicos importantes con respecto a su cuenta, pero también puedes conseguir algunos extras útiles. Sumario de la Última Entrada Sin conexión Entrada enviada a la papelera - Estadísticas Papelera + Estadísticas Vista previa Ver - Editar Publicar + Editar No se pudo encontrar este blog Deshacer La solicitud ha expirado. Inicia sesión en WordPress.com para intentarlo de nuevo. @@ -3522,236 +3526,236 @@ Language: es_CL Entradas, vistas y visitantes de todos los tiempos Detalles Cerrar sesión de WordPress.com - Iniciar/Cerrar sesión Iniciar sesión en WordPress.com - \"%s\" no se ocultó porque es el sitio actual + Iniciar/Cerrar sesión Preferencias de la Cuenta + \"%s\" no se ocultó porque es el sitio actual Crear sitio WordPress.com Añadir sitio autoalojado - Mostrar/Ocultar sitios Agrega un sitio - Ver sitio + Mostrar/Ocultar sitios Elegir sitio - Cambiar sitio + Ver sitio Ver Administrador - Aspecto - Publicar - Entradas + Cambiar sitio Ajustes del sitio + Entradas + Publicar + Aspecto Configuración Toca para mostrarlos Anular todas las selecciones - Mostrar - Ocultar Seleccionar todo - Idioma - Código de verificación - Código de verificación no válido + Ocultar + Mostrar Inicie sesión de nuevo para continuar. + Código de verificación no válido + Código de verificación + Idioma No fue posible cargar las entradas No se pudo abrir la notificación - Autores + Términos de Búsqueda Desconocidos Términos de búsqueda + Autores Recuperando páginas… Recuperando entradas… Recuperando medios… - Términos de Búsqueda Desconocidos Los informes de la aplicación se han copiado al portapapeles + Este blog está vacío Nuevas entradas Ocurrió un error al copiar el texto en el portapapeles Subiendo entrada - Este blog está vacío - Obteniendo temas… - %1$d meses - Un año %1$d años + Un año + %1$d meses Un mes - %1$d minutos - hace una hora - %1$d horas - Un día %1$d días + Un día + %1$d horas + hace una hora + %1$d minutos hace un minuto hace unos segundos Vídeos + Entradas y Páginas Países Me gusta - Años - Vistas Visitantes - Entradas y Páginas + Vistas + Años + Obteniendo temas… Detalles %d seleccionados + Revisa nuestras Preguntas Más Frecuentes Aún no hay comentarios - Ver artículo original Me gusta + Ver artículo original Los comentarios están cerrados %1$d de %2$d + No se puede publicar una entrada vacía + No tienes permiso para ver o editar entradas + No tienes permiso para ver o editar páginas + Más Hace más de 1 mes - Hace más de 2 días Hace más de 1 semana + Hace más de 2 días + Ayuda y soporte Me gustó Comentario - Aún no se han publicado entradas. ¿Por qué no crear una? + Comentario eliminado Responder a %s + Aún no se han publicado entradas. ¿Por qué no crear una? Cerrar sesión… - Comentario eliminado - Más - No tienes permiso para ver o editar páginas - No tienes permiso para ver o editar entradas - No se puede publicar una entrada vacía - Revisa nuestras Preguntas Más Frecuentes - Ayuda y soporte No es posible realizar esta acción - Actualizar Programación + Actualizar Introduce una URL o etiqueta para seguir - Ayuda - Certificado SSL no válido SI normalmente se conecta sin problemas a este sitio sin problemas, este error puede significar que alguien están intentando suplantar el sitio, por lo que no deberías continuar. ¿Quieres, de todas formas, confiar en el certificado? - El elemento multimedia no ha podido ser recuperado - Ha ocurrido un error mientras se accedía a este blog - No es spam - No se pudo añadir la categoría - El campo nombre de categoría es necesario - Se necesita una tarjeta SD montada para subir medios - Sin notificaciones - Las entradas no pueden ser actualizadas en este momento - No se pudieron actualizar los comentarios - Ocurrió un error - Ocurrió un error al moderar el comentario - Ocurrió un error al editar el comentario - No se pudo cargar el comentario - Error al descargar la imagen - Tu dirección de correo electrónico no es válida - Ingresa una dirección de correo electrónico válida - No hay conexiones de red disponible + Certificado SSL no válido + Ayuda El usuario o contraseña que ingresaste no son correctos + Ingresa una dirección de correo electrónico válida + Tu dirección de correo electrónico no es válida + Error al descargar la imagen + No se pudo cargar el comentario + Ocurrió un error al editar el comentario + Ocurrió un error al moderar el comentario + Ocurrió un error + No se pudieron actualizar los comentarios Las páginas no pueden ser actualizadas en este momento + Las entradas no pueden ser actualizadas en este momento + Se ha producido un error al eliminar la entrada + Sin notificaciones + Se necesita una tarjeta SD montada para subir medios + El campo nombre de categoría es necesario Categoría agregada correctamente + No se pudo añadir la categoría + No es spam Ocurrió un error al obtener los temas - Se ha producido un error al eliminar la entrada - Seleccionar categorías - Error de conexión - Ocurrió un error al cargar la entrada. Actualiza tus entradas e intenta nuevamente. - Aprender más - Malla (red) de miniaturas - No tienes permiso para ver la librería multimedia - Texto del enlace (opcional) - Crear un enlace - Ajustes de página - Borrador local - Alineación horizontal - Ajustes de entrada - Aprobado - Pendiente - Spam - En la papelera - Editar comentario - Aprobar - Rechazar - Spam - Enviar a la papelera - ¿Enviar a la papelera? - Papelera - Guardando cambios - Eliminar sitio - Ver en el navegador - Añadir nueva categoría - Nombre de la categoría - No se pudo crear un archivo temporal para subir el archivo multimedia. Asegúrate que haya suficiente espacio libre en tu dispositivo. - Se necesita autorización - Nueva entrada - Nuevo elemento multimedia - Cambios locales - Ajustes de imagen - Blog de WordPress - Este blog está oculto y no se puede cargar. Actívalo de nuevo en ajustes y prueba de nuevo. + Ha ocurrido un error mientras se accedía a este blog + El elemento multimedia no ha podido ser recuperado + No hay conexiones de red disponible + No se pudo eliminar esta etiqueta + No se pudo agregar esta etiqueta Registro de la aplicación Hubo un error al crear la base de datos de la app. Por favor, intenta reinstalar la app. - Algunos elementos multimedia no pudieron ser borrados. Prueba más tarde. + Este blog está oculto y no se puede cargar. Actívalo de nuevo en ajustes y prueba de nuevo. No se puede actualizar Media en este momento + Blog de WordPress + Ajustes de imagen + Cambios locales + Nuevo elemento multimedia + Nueva entrada Sin notificaciones… aún. + Se necesita autorización Comprueba que la URL del sitio ingresada es válida + No se pudo crear un archivo temporal para subir el archivo multimedia. Asegúrate que haya suficiente espacio libre en tu dispositivo. + Nombre de la categoría + Añadir nueva categoría + Ver en el navegador + Eliminar sitio + Guardando cambios + Papelera + ¿Enviar a la papelera? + Enviar a la papelera + Spam + Rechazar + Aprobar + Editar comentario + En la papelera + Spam + Pendiente + Aprobado ¿Eliminar página? ¿Eliminar entrada? + Ajustes de entrada No se pudo encontrar el archivo para cargar. ¿Lo eliminaste o moviste? + Alineación horizontal + Borrador local + Ajustes de página + Crear un enlace + Texto del enlace (opcional) + Algunos elementos multimedia no pudieron ser borrados. Prueba más tarde. + No tienes permiso para ver la librería multimedia + Malla (red) de miniaturas + Aprender más + Ocurrió un error al cargar la entrada. Actualiza tus entradas e intenta nuevamente. Se ha producido un error al acceder a este plugin - No se pudo agregar esta etiqueta - No se pudo eliminar esta etiqueta + Error de conexión + Seleccionar categorías Compartir enlace Recuperando entradas… A ti, y a %,d personas más les gusta esto A %,d personas les gusta esto - Comentado marcado como spam No puedes compartir en WordPress sin un blog visible + Comentado marcado como spam Comentario no aprobado - Elige una foto - Elige un vídeo No fue posible cargar esta entrada A ti y a otra persona les gusta esto - Esta lista esta vacía - Compartir - Seguir - Eliminado %s - A una persona le gusta esto - Te gusta esto - Agregado %s - No se pudo compartir - No se pudo ver la imágen + Elige un vídeo + Elige una foto + Registro No se pudo abrir %s + No se pudo ver la imágen + No se pudo compartir + Esa no es un etiqueta válida No se pudo publicar tu comentario + Te gusta esto + A una persona le gusta esto + Eliminado %s + Agregado %s Contestar el comentario… + Seguir + Compartir + Reblog (Sin título) Aún no hay comentarios - Esa no es un etiqueta válida - Reblog - Registro - Temas - Cuadrados - Mosaico - Círculos - Título - Leyenda - Descripción - No se pudo actualizar - Activar - Compartir - Estadísticas - Clics - Etiquetas y categorías - Referentes - Hoy - Ayer - Días - Semanas + Esta lista esta vacía Meses + Semanas + Días + Ayer + Hoy + Referentes + Etiquetas y categorías + Clics + Estadísticas + Compartir + Activar + No se pudo actualizar + Descripción + Leyenda + Título Pase de diapositivas + Círculos + Mosaico + Cuadrados + Temas Descartar Administrar - Respuesta publicada - %d nuevas notificaciones y %d más. + %d nuevas notificaciones + Respuesta publicada Iniciar Sesión Cargando… - Usuario HTTP Contraseña HTTP + Usuario HTTP Se ha producido un error al cargar los archivos Nombre de usuario o contraseña incorrecta. - Contraseña - Nombre de usuario Iniciar sesión + Nombre de usuario + Contraseña Lector - Usar como imagen destacada Incluír imagen en el contenido del mensaje - No hay red disponible - Páginas - Leyenda (opcional) + Usar como imagen destacada Ancho + Leyenda (opcional) + Páginas Entradas Anónimo - OK + No hay red disponible hecho + OK URL Subiendo… Alineamiento @@ -3764,27 +3768,27 @@ Language: es_CL El nombre del acceso directo no puede ser vacío Privado Título - Categorías Separa las etiquetas con comas + Categorías Requiere tarjeta SD Multimedia Categoría actualizada correctamente - Eliminar Aprobar - Ninguno + Eliminar Actualizando la categoría que falló - Error - Cancelar - Guardar - Añadir - Error de actualización de categorías - Vista previa - en + Ninguno + Publicar ahora Responder - Ajustes de avisos - + en + Vista previa + Error de actualización de categorías + Error No - Publicar ahora + + Ajustes de avisos + Añadir + Guardar + Cancelar Una vez Dos veces diff --git a/WordPress/src/main/res/values-es-rCO/strings.xml b/WordPress/src/main/res/values-es-rCO/strings.xml index 09bbff66965e..25df2a90e54c 100644 --- a/WordPress/src/main/res/values-es-rCO/strings.xml +++ b/WordPress/src/main/res/values-es-rCO/strings.xml @@ -1,11 +1,15 @@ + Toca para editar + Para grabar audio, esta app necesita permiso para acceder a tu micrófono. Anteriormente has denegado este permiso. Habilita el permiso del micrófono en los ajustes de la aplicación para utilizar esta función. + Se requiere permiso para grabar audio + Ubicación de medios Reiniciar Actualización descargada. Reinicia para aplicar. Publicar desde audio diff --git a/WordPress/src/main/res/values-es/strings.xml b/WordPress/src/main/res/values-es/strings.xml index 2448c5258ae9..aad73dd5dd05 100644 --- a/WordPress/src/main/res/values-es/strings.xml +++ b/WordPress/src/main/res/values-es/strings.xml @@ -1,11 +1,15 @@ + Toca para editar + Para grabar audio, esta app necesita permiso para acceder a tu micrófono. Anteriormente has denegado este permiso. Habilita el permiso del micrófono en los ajustes de la aplicación para utilizar esta función. + Se requiere permiso para grabar audio + Ubicación de medios Reiniciar Actualización descargada. Reinicia para aplicar. Publicar desde audio diff --git a/WordPress/src/main/res/values-fr-rCA/strings.xml b/WordPress/src/main/res/values-fr-rCA/strings.xml index 7da066aa1f78..a7c224a492a6 100644 --- a/WordPress/src/main/res/values-fr-rCA/strings.xml +++ b/WordPress/src/main/res/values-fr-rCA/strings.xml @@ -1,11 +1,15 @@ + Appuyer pour modifier + Pour enregistrer l’audio, l’application doit disposer des droits d’accès à votre microphone. Vous avez précédemment refusé ce droit. Veuillez activer les droits d’accès au microphone dans les réglages de l’application pour utiliser cette fonctionnalité. + Autorisation d’enregistrement de l’audio requise + Emplacement des médias Redémarrer Mise à jour téléchargée. Redémarrez pour appliquer les mises à jour. Publier à partir d’un contenu audio diff --git a/WordPress/src/main/res/values-fr/strings.xml b/WordPress/src/main/res/values-fr/strings.xml index 7da066aa1f78..a7c224a492a6 100644 --- a/WordPress/src/main/res/values-fr/strings.xml +++ b/WordPress/src/main/res/values-fr/strings.xml @@ -1,11 +1,15 @@ + Appuyer pour modifier + Pour enregistrer l’audio, l’application doit disposer des droits d’accès à votre microphone. Vous avez précédemment refusé ce droit. Veuillez activer les droits d’accès au microphone dans les réglages de l’application pour utiliser cette fonctionnalité. + Autorisation d’enregistrement de l’audio requise + Emplacement des médias Redémarrer Mise à jour téléchargée. Redémarrez pour appliquer les mises à jour. Publier à partir d’un contenu audio diff --git a/WordPress/src/main/res/values-he/strings.xml b/WordPress/src/main/res/values-he/strings.xml index e77afbe18914..a2780b084466 100644 --- a/WordPress/src/main/res/values-he/strings.xml +++ b/WordPress/src/main/res/values-he/strings.xml @@ -1,11 +1,15 @@ + יש להקיש כדי לערוך + כדי להקליט אודיו, יש להעניק לאפליקציה הרשאה לגשת אל המיקרופון. בעבר מנעת את ההרשאה הזאת. עליך לאפשר את ההרשאה למיקרופון בהגדרות האפליקציה כדי להשתמש באפשרות הזאת. + נדרשת הרשאה להקליט אודיו + מיקום המדיה להפעיל מחדש העדכון הורד. כדי להחיל עדכונים יש לבצע הפעלה מחדש. פוסט מאודיו diff --git a/WordPress/src/main/res/values-id/strings.xml b/WordPress/src/main/res/values-id/strings.xml index 0fdd92caffc3..38af54957995 100644 --- a/WordPress/src/main/res/values-id/strings.xml +++ b/WordPress/src/main/res/values-id/strings.xml @@ -1,11 +1,15 @@ + Ketuk untuk menyunting + Aplikasi ini perlu izin untuk mengakses mikrofon untuk merekam audio. Anda telah menolak izin ini sebelumnya. Aktifkan izin mikrofon dalam pengaturan aplikasi untuk menggunakan fitur ini. + Izin Perekaman Audio Diperlukan + Lokasi Media Mulai ulang Pembaruan telah diunduh. Mulai ulang untuk menerapkan pembaruan. Pos dari Audio @@ -3128,6 +3132,7 @@ Language: id Semua unggahan media telah dibatalkan karena error yang tidak diketahui. Coba unggah lagi Format pos tidak diketahui Kirim + Pelanggan Situs duplikat terdeteksi. Situs ini sudah ada dalam aplikasi, Anda tidak bisa menambahkannya. Anda sudah login ke akun WordPress.com, Anda tidak dapat menambahkan situs WordPress.com yang terikat ke akun lain. diff --git a/WordPress/src/main/res/values-it/strings.xml b/WordPress/src/main/res/values-it/strings.xml index 62f3bc57b0ca..5a75a4e411a5 100644 --- a/WordPress/src/main/res/values-it/strings.xml +++ b/WordPress/src/main/res/values-it/strings.xml @@ -1,11 +1,15 @@ + Tocca per modificare + Per registrare l\'audio, questa app ha bisogno dell\'autorizzazione ad accedere al tuo microfono. Hai già negato questa autorizzazione. Per utilizzare questa funzionalità, attiva l\'autorizzazione al microfono nelle impostazioni dell\'app. + È richiesta l\'autorizzazione alla registrazione audio + Posizione dei media Riavvia Aggiornamento scaricato. Riavvia per applicarlo. Articolo dall\'audio diff --git a/WordPress/src/main/res/values-ja/strings.xml b/WordPress/src/main/res/values-ja/strings.xml index 831f9782fc57..3c97045c57e5 100644 --- a/WordPress/src/main/res/values-ja/strings.xml +++ b/WordPress/src/main/res/values-ja/strings.xml @@ -1,11 +1,15 @@ + タップして編集 + 音声を録音するには、このアプリにマイクへのアクセス権限が必要です。 以前、この権限を拒否しています。 この機能を使用するには、アプリの設定でマイクの権限を有効化してください。 + 音声録音の権限が必須 + メディアの位置 再開 更新がダウンロードされました。 再起動して適用します。 音声ファイルから投稿 diff --git a/WordPress/src/main/res/values-ko/strings.xml b/WordPress/src/main/res/values-ko/strings.xml index 824755431e89..ecb30420d62e 100644 --- a/WordPress/src/main/res/values-ko/strings.xml +++ b/WordPress/src/main/res/values-ko/strings.xml @@ -1,11 +1,15 @@ + 눌러서 편집 + 오디오를 녹음하려면 앱에 마이크 액세스 권한이 필요합니다. 이전에 이 권한을 거부하셨습니다. 이 기능을 사용하려면 앱 설정에서 마이크 권한을 활성화하세요. + 오디오 녹음 권한 필수 + 미디어 위치 재시작 업데이트가 다운로드되었습니다. 적용하려면 재시작하세요. 오디오에서 글 작성하기 diff --git a/WordPress/src/main/res/values-nl/strings.xml b/WordPress/src/main/res/values-nl/strings.xml index 996f70a94359..44f312173d71 100644 --- a/WordPress/src/main/res/values-nl/strings.xml +++ b/WordPress/src/main/res/values-nl/strings.xml @@ -1,11 +1,15 @@ + Tikken om te bewerken + Om audio op te nemen, heeft deze app toestemming nodig om toegang te krijgen tot je microfoon. Je hebt deze toestemming eerder geweigerd. Schakel de microfoon toestemming in de app-instellingen in om deze functie te gebruiken. + Toestemming voor audio-opname vereist + Medialocatie Herstart Update gedownload. Herstarten om toe te passen. Bericht van audio @@ -109,7 +113,7 @@ Language: nl Leesvoorkeuren Volg een tag Lees - Je kan je berichttekst kopiëren als de fout betrekking heeft op je content. Kopieer de foutdetails om te debuggen en te delen met de ondersteuning. + Je kunt je berichttekst kopiëren als de fout betrekking heeft op je inhoud. Kopieer de foutdetails om te debuggen en te delen met ondersteuning. De editor is op een onverwacht probleem gestuit Tik hier om de berichttekst te kopiëren Tik hier om de foutdetails te kopiëren @@ -126,17 +130,17 @@ Language: nl Ongelezen Site niet gevonden. Controleer of je op het juiste account bent ingelogd. Gereed - Het kan even duren voordat updates met je Gravatar-profiel worden gesynchroniseerd. + Het kan even duren voordat updates met je Gravatar profiel worden gesynchroniseerd. Wat is Gravatar? - Als je je avatar, naam en beschrijving hier aanpast, worden deze ook bijgewerkt op alle sites waarop het Gravatar-profiel wordt gebruikt. - Je WordPress.com-profiel wordt mogelijk gemaakt door Gravatar - Unable to load the media for sharing. Controleer de bestandsrechten.\n or use the app\'s media library. + Als je je avatar, naam en beschrijving hier updatet, worden deze ook geüpdatet op alle sites waarop het Gravatar profiel wordt gebruikt. + Je WordPress.com profiel wordt mogelijk gemaakt door Gravatar + Kan de media niet laden om te delen. Controleer de rechten van de app.\n of gebruik de mediabibliotheek van de app. We kunnen momenteel geen media openen. Probeer het later opnieuw - Web Server Logs + Web server logs PHP-logboeken Meetwaarden Sitebewaking - Gebruik <b> Ontdekken </b> om sites en tags te zoeken. Try selecting <b>Subscriptions</b> to view subscribed content and manage your subscriptions. + Gebruik <b>Ontdekken</b> om sites en tags te zoeken. Probeer <b>Abonnementen</b> te selecteren om geabonneerde inhoud te bekijken en je abonnementen te beheren. Ga naar abonnementen The blogs you\'re subscribed to haven\'t posted anything recently Of zoek een blog die je al leuk vindt. @@ -153,12 +157,12 @@ Language: nl (1 abonnee) %s abonnees %,d Abonnees - Blog subscribed - Search subscribed blogs + Blog geabonneerd + Zoek in blogs waarop je bent geabonneerd Geabonneerd Abonneren Deze blog blokkeren - Tags en blogs bijwerken + Tags en blogs bewerken Geabonneerd op blog Tag volgen Blogs beheren @@ -166,11 +170,11 @@ Language: nl Reader-blog Geabonneerd %d Tags - 1 Tag - 0 Tags + 1 tag + 0 tags %d blogs - 1 Blog - 0 Blogs + 1 blog + 0 blogs Lijsten Automattic Geliket @@ -1802,8 +1806,8 @@ Language: nl Doorgaan Reblog mislukt Blogs beheren - Zodra je een WordPress.com-blog aanmaakt, kan je inhoud die je leuk vindt rebloggen op je eigen site. - Geen beschikbare WordPress.com-blogs + Zodra je een WordPress.com blog aanmaakt, kan je inhoud die je leuk vindt rebloggen op je eigen site. + Geen beschikbare WordPress.com blogs Wat is er nieuw Link adres gekopieerd Link adres kopiëren diff --git a/WordPress/src/main/res/values-pl/strings.xml b/WordPress/src/main/res/values-pl/strings.xml index 00c1c4096718..635409c6ee5f 100644 --- a/WordPress/src/main/res/values-pl/strings.xml +++ b/WordPress/src/main/res/values-pl/strings.xml @@ -1,11 +1,15 @@ + Stuknij, aby edytować + Aby nagrywać dźwięk, aplikacja potrzebuje pozwolenia na dostęp do mikrofonu. Wcześniej odmówiono. Włącz uprawnienia mikrofonu w ustawieniach aplikacji, aby nagrywać. + Wymagana zgoda na nagrywanie dźwięku + Położenie plików Uruchom ponownie Aktualizacja pobrana. Uruchom ponownie aby ją zastosować. Wpis z audio. @@ -23,6 +27,15 @@ Language: pl Wybierz pasujące ci kolory i czcionki. Podczas czytania wpisu kliknij ikonę AA na górze ekranu. Ustawienia czytania Aby uzyskać dostęp do zawartości obserwowanych tagów kliknij listę rozwijaną na górze je wybierz. + Tagi stream + Nowość w aplikacji Reader + Twoje tagi + Sprawdź swoje połączenie internetowe i spróbuj ponownie. + Nie można teraz załadować wybranej treści + Subskrybenci + Subskrybent + Wzrost liczby subskrybentów + Subskrybent Ruch Rozmiar liter, %1$s Plik nie jest obsługiwany jako plik mediów. diff --git a/WordPress/src/main/res/values-ro/strings.xml b/WordPress/src/main/res/values-ro/strings.xml index 1894462b1998..530f64bb715c 100644 --- a/WordPress/src/main/res/values-ro/strings.xml +++ b/WordPress/src/main/res/values-ro/strings.xml @@ -1,11 +1,15 @@ + Atinge pentru a edita + Pentru a înregistra audio, această aplicație are nevoie de permisiunea ta ca să-ți acceseze microfonul. Ai refuzat anterior această permisiune. Ca să folosești această funcționalitate, te rog să activezi permisiunea pentru microfon în setările aplicației. + Permisiunea pentru înregistrare audio este obligatorie + Locație Media Repornește Am descărcat actualizarea. Repornește pentru a o aplica. Articol din fișier audio @@ -1788,7 +1792,7 @@ Language: ro Pentru a seta Prima pagină activează „Prima pagină statică” în Setări site Selectează o culoare Atinge de două ori pentru a merge la setări culori - Află mai mult + Află mai multe Care sunt noutățile în %s Inserează %d decupează diff --git a/WordPress/src/main/res/values-ru/strings.xml b/WordPress/src/main/res/values-ru/strings.xml index 047c726aaa32..3672f6e41961 100644 --- a/WordPress/src/main/res/values-ru/strings.xml +++ b/WordPress/src/main/res/values-ru/strings.xml @@ -1,11 +1,15 @@ + Коснитесь, чтобы внести изменения + Чтобы делать аудиозаписи, приложению необходимо разрешение на доступ к микрофону. Ранее вы отказались дать такое разрешение. Дайте разрешение на доступ к микрофону в настройках приложения, чтобы пользоваться этой функцией. + Требуется разрешение на аудиозапись + Местоположение медиафайлов Перезапуск Обновите загруженное. Выполните перезагрузку, чтобы обновления вступили в силу. Публикация из аудио diff --git a/WordPress/src/main/res/values-sv/strings.xml b/WordPress/src/main/res/values-sv/strings.xml index a4ba1b338461..8590db7686c4 100644 --- a/WordPress/src/main/res/values-sv/strings.xml +++ b/WordPress/src/main/res/values-sv/strings.xml @@ -1,11 +1,15 @@ + Tryck här för att redigera + Den här appen behöver åtkomst till din mikrofon för att kunna spela in ljud. Du har tidigare nekat behörighet för detta. Aktivera mikrofonbehörighet i appinställningarna om du vill använda den här funktionen. + Tillåtelse för ljudinspelning krävs + Mediaplats Starta om Uppdatering nedladdad. Starta om för att tillämpa. Inlägg via ljud diff --git a/WordPress/src/main/res/values-tr/strings.xml b/WordPress/src/main/res/values-tr/strings.xml index 1b62546dfc9d..1fbec4d2d5c2 100644 --- a/WordPress/src/main/res/values-tr/strings.xml +++ b/WordPress/src/main/res/values-tr/strings.xml @@ -1,11 +1,15 @@ + Düzenlemek için dokunun + Ses kaydetmek için bu uygulamanın mikrofonunuza erişim izni olması gerekir. Daha önce bu izni reddetmiştiniz. Bu özelliği kullanmak için lütfen uygulama ayarlarından mikrofon iznini etkinleştirin. + Ses Kaydı İzni Gerekli + Ortamın Konumu Yeniden Başla Güncelleme indirildi. Uygulamak için yeniden başlayın. Sesten gönderi oluştur diff --git a/WordPress/src/main/res/values-zh-rCN/strings.xml b/WordPress/src/main/res/values-zh-rCN/strings.xml index 9cea2010fc4b..362d2bce4f56 100644 --- a/WordPress/src/main/res/values-zh-rCN/strings.xml +++ b/WordPress/src/main/res/values-zh-rCN/strings.xml @@ -1,11 +1,15 @@ + 轻点以编辑 + 要录制音频,此应用程序需要获得您麦克风的使用权限。 您之前已拒绝授予这项权限。 请在应用程序设置中启用麦克风权限,以使用此功能。 + 需要音频录制权限 + 媒体位置 重新启动 更新内容已下载。 重新启动以应用修改。 从音频创建的文章 diff --git a/WordPress/src/main/res/values-zh-rHK/strings.xml b/WordPress/src/main/res/values-zh-rHK/strings.xml index e785f45a7d65..5d3265c67dea 100644 --- a/WordPress/src/main/res/values-zh-rHK/strings.xml +++ b/WordPress/src/main/res/values-zh-rHK/strings.xml @@ -1,11 +1,15 @@ + 點選以編輯 + 若你想要錄製音訊,請將麥克風的存取權限授予給這個應用程式。 你先前曾拒絕授予這項權限。 若想使用這項功能,請在應用程式設定中啟用麥克風權限。 + 需授予音訊錄製權限 + 媒體位置 重新開始 已下載更新。 重新啟動以套用。 從音訊張貼 diff --git a/WordPress/src/main/res/values-zh-rTW/strings.xml b/WordPress/src/main/res/values-zh-rTW/strings.xml index e785f45a7d65..5d3265c67dea 100644 --- a/WordPress/src/main/res/values-zh-rTW/strings.xml +++ b/WordPress/src/main/res/values-zh-rTW/strings.xml @@ -1,11 +1,15 @@ + 點選以編輯 + 若你想要錄製音訊,請將麥克風的存取權限授予給這個應用程式。 你先前曾拒絕授予這項權限。 若想使用這項功能,請在應用程式設定中啟用麥克風權限。 + 需授予音訊錄製權限 + 媒體位置 重新開始 已下載更新。 重新啟動以套用。 從音訊張貼 diff --git a/build.gradle b/build.gradle index 26d8c4a7e88d..17fd7b7e7541 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,12 @@ -import com.automattic.android.measure.MeasureBuildsExtension +import com.automattic.android.measure.reporters.InternalA8cCiReporter +import com.automattic.android.measure.reporters.SlowSlowTasksMetricsReporter import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id "io.gitlab.arturbosch.detekt" id 'com.automattic.android.measure-builds' id "org.jetbrains.kotlinx.kover" + id "com.autonomousapps.dependency-analysis" id "androidx.navigation.safeargs.kotlin" apply false id "com.android.library" apply false id 'com.google.gms.google-services' apply false @@ -15,7 +17,7 @@ plugins { ext { minSdkVersion = 24 compileSdkVersion = 34 - targetSdkVersion = 33 + targetSdkVersion = 34 } ext { @@ -23,9 +25,9 @@ ext { automatticAboutVersion = '1.4.0' automatticRestVersion = '1.0.8' automatticTracksVersion = '5.1.0' - gutenbergMobileVersion = 'v1.120.0' + gutenbergMobileVersion = 'v1.121.0-alpha1' wordPressAztecVersion = 'v2.1.3' - wordPressFluxCVersion = 'trunk-0fe67fa241426afeaaa66bc3970ba46634efa5c8' + wordPressFluxCVersion = '3045-5fc175e4780dec098cfd04bf5eb9da7f3cce4076' wordPressLoginVersion = '1.16.0' wordPressPersistentEditTextVersion = '1.0.2' wordPressUtilsVersion = '3.14.0' @@ -42,7 +44,7 @@ ext { androidxAnnotationVersion = '1.6.0' androidxAppcompatVersion = '1.6.1' androidxArchCoreVersion = '2.2.0' - androidxCameraVersion = '1.2.3' + androidxCameraVersion = '1.3.4' androidxComposeBomVersion = '2023.10.00' androidxComposeCompilerVersion = '1.5.9' androidxComposeNavigationVersion = '2.7.6' @@ -118,8 +120,14 @@ ext { measureBuilds { enable = findProperty('measureBuildsEnabled')?.toBoolean() ?: false - automatticProject = MeasureBuildsExtension.AutomatticProject.WordPress - authToken = findProperty('appsMetricsToken') + onBuildMetricsReadyListener { report -> + SlowSlowTasksMetricsReporter.report(report) + InternalA8cCiReporter.reportBlocking( + report, + "wordpress", + findProperty('appsMetricsToken') + ) + } attachGradleScanId = System.getenv('CI')?.toBoolean() ?: false } diff --git a/docs/coding-style.md b/docs/coding-style.md index 27e04260c6e5..e9af04022ec7 100644 --- a/docs/coding-style.md +++ b/docs/coding-style.md @@ -1,11 +1,11 @@ # Coding Style -Our code style guidelines are based on the [Android Code Style Guidelines for Contributors](https://source.android.com/source/code-style.html). We only changed a few rules: +Our code style guidelines are based on the [Android Code Style Guidelines for Contributors](https://source.android.com/docs/setup/contribute/code-style). We only changed a few rules: * Line length is 120 characters * FIXME must not be committed in the repository use TODO instead. FIXME can be used in your own local repository only. -On top of the Android linter rules (best run for this project using `./gradlew lintWordPressVanillaRelease`), we use two linters: [Checkstyle](http://checkstyle.sourceforge.net/) (for Java and some language-independent custom project rules), and [detekt](https://detekt.github.io/detekt/) (for Kotlin). +On top of the Android linter rules (best run for this project using `./gradlew lintWordPressVanillaRelease`), we use two linters: [Checkstyle](https://checkstyle.sourceforge.io/) (for Java and some language-independent custom project rules), and [detekt](https://detekt.dev/) (for Kotlin). ## Checkstyle You can run checkstyle via a gradle command: diff --git a/fastlane/jetpack_metadata/android/ar/changelogs/1435.txt b/fastlane/jetpack_metadata/android/ar/changelogs/1435.txt deleted file mode 100644 index b54a9a483a7a..000000000000 --- a/fastlane/jetpack_metadata/android/ar/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -أصبح موجز الوسوم مباشرًا! يمكنك الآن الاطلاع على المحتوى الذي يتضمن وسومًا معينة، وكل ذلك في مكان واحد. وسم، أنت هو. - -لقد أصلحنا أعطالاً متنوعة في شاشتَي تسجيل الدخول وقائمة التدوينات، إضافة إلى الإجراءات المرتبطة بتذكيرات التدوين والصور المميزة وإزالة المستخدمين. هل ترغب في أعطال أقل؟ كيفية القضاء عليها. diff --git a/fastlane/jetpack_metadata/android/ar/changelogs/1440.txt b/fastlane/jetpack_metadata/android/ar/changelogs/1440.txt new file mode 100644 index 000000000000..11f966d8bd71 --- /dev/null +++ b/fastlane/jetpack_metadata/android/ar/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +لا توجد لدينا تحديثات متوفرة. +لا توجد لدينا تحديثات من خلال الماوس. +لا توجد لدينا تحديثات على الإطلاق. +لا توجد لدينا تحديثات في أي مكان. +لا توجد لدينا تحديثات للإبلاغ بها. +إذا احتجت إلى مساعدة، فاطلب الدعم الفني. diff --git a/fastlane/jetpack_metadata/android/de-DE/changelogs/1435.txt b/fastlane/jetpack_metadata/android/de-DE/changelogs/1435.txt deleted file mode 100644 index 8a7e0828a8ee..000000000000 --- a/fastlane/jetpack_metadata/android/de-DE/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -Der Schlagwort-Feed ist live! Jetzt kannst du Inhalte mit spezifischen Schlagwörtern an einem zentralen Ort sehen. Viel Spaß damit! - -Wir haben verschiedene Abstürze auf den Anmelde- und Beitragslistenbildschirmen sowie Aktionen, die mit Blog-Erinnerungen, Beitragsbildern und Benutzerentfernung zu tun hatten, behoben. Weniger Abstürze? Klingt super, oder? diff --git a/fastlane/jetpack_metadata/android/de-DE/changelogs/1440.txt b/fastlane/jetpack_metadata/android/de-DE/changelogs/1440.txt new file mode 100644 index 000000000000..2f8b52478cfd --- /dev/null +++ b/fastlane/jetpack_metadata/android/de-DE/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Keine Updates weit und breit, +noch ist es nicht soweit. +Wir haben nichts Neues zu berichten, +also musst du vorerst verzichten. +Doch wenn du Unterstützung brauchst, das ist klar, +ist der technische Support stets für dich da. diff --git a/fastlane/jetpack_metadata/android/en-US/changelogs/1435.txt b/fastlane/jetpack_metadata/android/en-US/changelogs/1435.txt deleted file mode 100644 index 928c57d6d98a..000000000000 --- a/fastlane/jetpack_metadata/android/en-US/changelogs/1435.txt +++ /dev/null @@ -1,3 +0,0 @@ -The Tags feed is live! You can now see content with specific tags, all in one place. Tag, you’re it. - -We fixed assorted crashes on the login and Posts List screens, as well as actions associated with blogging reminders, feature images, and user removal. Less crashing? How smashing. diff --git a/fastlane/jetpack_metadata/android/en-US/changelogs/1440.txt b/fastlane/jetpack_metadata/android/en-US/changelogs/1440.txt new file mode 100644 index 000000000000..49c9b48be074 --- /dev/null +++ b/fastlane/jetpack_metadata/android/en-US/changelogs/1440.txt @@ -0,0 +1,6 @@ +We have no updates in a house. +We have no updates with a mouse. +We have no updates here or there. +We have no updates anywhere. +We have no updates to report. +If you need help, ask tech support. diff --git a/fastlane/jetpack_metadata/android/es-ES/changelogs/1435.txt b/fastlane/jetpack_metadata/android/es-ES/changelogs/1435.txt deleted file mode 100644 index fb470f318a44..000000000000 --- a/fastlane/jetpack_metadata/android/es-ES/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -¡El feed de etiquetas ya está disponible! Ahora puedes ver el contenido con etiquetas específicas, todo en un solo lugar. Las etiquetas lo son todo. - -Hemos corregido varios fallos en las pantallas de acceso y de lista de entradas, así como en las acciones asociadas a los recordatorios de blogs, las imágenes destacadas y la eliminación de usuarios. ¿Menos caídas? Estupendo. diff --git a/fastlane/jetpack_metadata/android/es-ES/changelogs/1440.txt b/fastlane/jetpack_metadata/android/es-ES/changelogs/1440.txt new file mode 100644 index 000000000000..269a47123429 --- /dev/null +++ b/fastlane/jetpack_metadata/android/es-ES/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +No tenemos actualizaciones en la cartera. +No tenemos actualizaciones, ni una pequeña. +No tenemos actualizaciones, ni aquí ni allá. +No tenemos actualizaciones en ningún lugar. +No tenemos actualizaciones de las que informar. +Pregunta al soporte técnico, ellos te van a ayudar. diff --git a/fastlane/jetpack_metadata/android/fr-FR/changelogs/1435.txt b/fastlane/jetpack_metadata/android/fr-FR/changelogs/1435.txt deleted file mode 100644 index f4a6b682ed77..000000000000 --- a/fastlane/jetpack_metadata/android/fr-FR/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0 : -Le flux Étiquettes est lancé ! Vous pouvez désormais voir le contenu avec des étiquettes spécifiques dans un seul et même endroit. Étiqueté, c’est pesé. - -Nous avons corrigé des plantages sur les écrans de connexion et de liste d’articles, ainsi qu’avec les actions associées aux rappels de blog, les images mises en avant et la suppression d’utilisateur. Moins de plantages ? Tout à votre avantage. diff --git a/fastlane/jetpack_metadata/android/fr-FR/changelogs/1440.txt b/fastlane/jetpack_metadata/android/fr-FR/changelogs/1440.txt new file mode 100644 index 000000000000..f21193f529a1 --- /dev/null +++ b/fastlane/jetpack_metadata/android/fr-FR/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1 : +Pas de mise à jour à la maison. +Pas de mise à jour à l’horizon. +Pas de mise à jour par ici. +Pas de mise à jour par là aussi. +Pas de mise à jour à noter. +Si besoin, l’assistance technique est à vos côtés. diff --git a/fastlane/jetpack_metadata/android/id/changelogs/1435.txt b/fastlane/jetpack_metadata/android/id/changelogs/1435.txt deleted file mode 100644 index 704a5304d4da..000000000000 --- a/fastlane/jetpack_metadata/android/id/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -Feed Tag sudah aktif! Konten dengan tag tertentu sekarang terkumpul rapi di satu lokasi. Tag, giliran kamu sekarang. - -Crash pada layar login dan Daftar Pos telah diperbaiki, sama halnya dengan aksi-aksi terkait pengingat blogging, gambar andalan, dan penghapusan pengguna. Crash berkurang? Performa kian cemerlang. diff --git a/fastlane/jetpack_metadata/android/id/changelogs/1440.txt b/fastlane/jetpack_metadata/android/id/changelogs/1440.txt new file mode 100644 index 000000000000..99da9ae8dd84 --- /dev/null +++ b/fastlane/jetpack_metadata/android/id/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Tidak ada pembaruan di sini. +Tidak ada pembaruan di sana. +Tidak ada pembaruan di mana-mana. +Tidak ada pembaruan sama sekali. +Tidak ada laporan pembaruan. +Jika butuh bantuan, hubungi dukungan teknologi. diff --git a/fastlane/jetpack_metadata/android/it-IT/changelogs/1435.txt b/fastlane/jetpack_metadata/android/it-IT/changelogs/1435.txt deleted file mode 100644 index 5858d225c781..000000000000 --- a/fastlane/jetpack_metadata/android/it-IT/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -Il feed dei tag è finalmente attivo. Ora puoi vedere tutti i contenuti con tag specifici in un unico posto. Così è tutto molto più semplice! - -Abbiamo risolto diversi arresti anomali nella schermata di accesso e in quella dell'elenco degli articoli e corretto alcune azioni associate ai promemoria relativi al blog, alle immagini in evidenza e alla rimozione di utenti. Arresti anomali? Ormai sono solo un ricordo. diff --git a/fastlane/jetpack_metadata/android/it-IT/changelogs/1440.txt b/fastlane/jetpack_metadata/android/it-IT/changelogs/1440.txt new file mode 100644 index 000000000000..17ec9fd59a63 --- /dev/null +++ b/fastlane/jetpack_metadata/android/it-IT/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Nessun aggiornamento in vista, +nessuna revisione prevista. +Nessun aggiornamento qua e là, +nessuna novità. +Non abbiamo aggiornamenti da segnalare +ma se hai bisogno di aiuto il nostro supporto tecnico puoi sempre contattare. diff --git a/fastlane/jetpack_metadata/android/iw-IL/changelogs/1435.txt b/fastlane/jetpack_metadata/android/iw-IL/changelogs/1435.txt deleted file mode 100644 index 840e9ecdc3d0..000000000000 --- a/fastlane/jetpack_metadata/android/iw-IL/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -פיד התגיות הושק! כעת אפשר לראות תוכן עם תגיות מסוימות במקום מרוכז אחד. תגיות או לא להיות. - -תיקנו כמה קריסות במסכים של ההתחברות ו'רשימת פוסטים'. תיקנו גם קריסות בפעולות שקשורות לתזכורות לכתיבה בבלוג, לתמונות ראשיות ולהסרת משתמשים. פחות קריסות, יותר טוב! diff --git a/fastlane/jetpack_metadata/android/iw-IL/changelogs/1440.txt b/fastlane/jetpack_metadata/android/iw-IL/changelogs/1440.txt new file mode 100644 index 000000000000..c5bda12b4652 --- /dev/null +++ b/fastlane/jetpack_metadata/android/iw-IL/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +אין עדכונים, כמה נחמד. +אין עדכונים, האח, הידד. +אין עדכונים, אין מה לספר. +אין עדכונים בשום מקום אחר. +אין עדכונים שצריך למסור. +נדרש סיוע? התמיכה הטכנית תשמח לעזור. diff --git a/fastlane/jetpack_metadata/android/ja-JP/changelogs/1435.txt b/fastlane/jetpack_metadata/android/ja-JP/changelogs/1435.txt deleted file mode 100644 index fc44a8075463..000000000000 --- a/fastlane/jetpack_metadata/android/ja-JP/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -タグフィードが利用可能になりました ! 特定のタグが付いたコンテンツをすべて1か所で表示できるようになりました。 ぜひご活用ください。 - -ログイン画面や投稿一覧画面でのさまざまなクラッシュのほか、ブログのリマインダー、アイキャッチ画像、ユーザーの削除に関連するアクションを修正しました。 クラッシュが減り、 より快適にご利用いただけます。 diff --git a/fastlane/jetpack_metadata/android/ja-JP/changelogs/1440.txt b/fastlane/jetpack_metadata/android/ja-JP/changelogs/1440.txt new file mode 100644 index 000000000000..af4ea1cd7ecd --- /dev/null +++ b/fastlane/jetpack_metadata/android/ja-JP/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +更新はありません。 +ここに更新はありません。 +あそこにも更新はありません。 +どこにも更新はありません。 +お知らせする更新はありません。 +お困りの際は技術サポートにお尋ねください。 diff --git a/fastlane/jetpack_metadata/android/ko-KR/changelogs/1435.txt b/fastlane/jetpack_metadata/android/ko-KR/changelogs/1435.txt deleted file mode 100644 index 35fedbbce29b..000000000000 --- a/fastlane/jetpack_metadata/android/ko-KR/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -태그 피드가 출시되었습니다! 이제 특정 태그가 적용된 콘텐츠를 한곳에서 볼 수 있습니다. 태그를 마음껏 활용해 보세요. - -로그인 및 글 목록 화면과 블로그 알림, 특성 이미지 및 사용자 제거와 관련된 작업에서 발생하는 갖가지 충돌이 해결되었습니다. 충돌이 줄어들다니, 정말 좋은 일 아닌가요? diff --git a/fastlane/jetpack_metadata/android/ko-KR/changelogs/1440.txt b/fastlane/jetpack_metadata/android/ko-KR/changelogs/1440.txt new file mode 100644 index 000000000000..8a97ff04fed5 --- /dev/null +++ b/fastlane/jetpack_metadata/android/ko-KR/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +업데이트가 있나 봤더니 집안에는 없고 +쥐에게 물어봐도 없대요. +여기저기 살펴봐도 없어요. +아무 데도 없어요. +보고할 업데이트가 없습니다. +도움이 필요하시면 기술 지원팀에 문의하세요. diff --git a/fastlane/jetpack_metadata/android/nl-NL/changelogs/1435.txt b/fastlane/jetpack_metadata/android/nl-NL/changelogs/1435.txt deleted file mode 100644 index cdf3d28b0a81..000000000000 --- a/fastlane/jetpack_metadata/android/nl-NL/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -+25.0 -The Tags feed is live! You can now see content with specific tags, all in one place. Tag, you’re it. - -We fixed assorted crashes on the login and Posts List screens, as well as actions associated with blogging reminders, feature images, and user removal. Less crashing? How smashing. diff --git a/fastlane/jetpack_metadata/android/nl-NL/changelogs/1440.txt b/fastlane/jetpack_metadata/android/nl-NL/changelogs/1440.txt new file mode 100644 index 000000000000..ccd40a529525 --- /dev/null +++ b/fastlane/jetpack_metadata/android/nl-NL/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Er zijn geen updates in ons huis. +En ook geen updates met een muis. +Geen updates hier, geen updates daar. +Nergens updates, raar maar waar. +En heb je nu alsnog een vraag? +Kom dan naar ons, we helpen graag. diff --git a/fastlane/jetpack_metadata/android/pt-BR/changelogs/1435.txt b/fastlane/jetpack_metadata/android/pt-BR/changelogs/1435.txt deleted file mode 100644 index 59595d25db47..000000000000 --- a/fastlane/jetpack_metadata/android/pt-BR/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -O feed de tags está no ar! Agora você pode ver o conteúdo com tags específicas, tudo em um só lugar. É a sua vez de aproveitar as tags. - -Corrigimos diferentes falhas nas telas de login e listas de posts, bem como ações associadas aos lembretes de publicação, imagens destacadas e remoção de usuário. Menos falhas? Que incrível. diff --git a/fastlane/jetpack_metadata/android/pt-BR/changelogs/1440.txt b/fastlane/jetpack_metadata/android/pt-BR/changelogs/1440.txt new file mode 100644 index 000000000000..dde0a3ac9a4b --- /dev/null +++ b/fastlane/jetpack_metadata/android/pt-BR/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Agradeça por não ter nenhuma atualização esperando por você na rua, +na chuva, +na fazenda, +nem numa casinha de sapê. +Não temos atualizações para relatar. +Em caso de dúvida, a equipe técnica pode ajudar. diff --git a/fastlane/jetpack_metadata/android/ru-RU/changelogs/1435.txt b/fastlane/jetpack_metadata/android/ru-RU/changelogs/1435.txt deleted file mode 100644 index afbe0a3a6a53..000000000000 --- a/fastlane/jetpack_metadata/android/ru-RU/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -Представляем живую ленту тегов! Теперь вы можете просматривать контент по определённым тегам из одной точки. Все теги под рукой! - -Мы устранили целый ряд сбоев на экранах входа в систему и списка записей, а также исправили ошибки в действиях, связанных с напоминаниями для блогеров, избранными изображениями и удалением пользователей. Ничего не падает, и работа радует. diff --git a/fastlane/jetpack_metadata/android/ru-RU/changelogs/1440.txt b/fastlane/jetpack_metadata/android/ru-RU/changelogs/1440.txt new file mode 100644 index 000000000000..2d6f82290583 --- /dev/null +++ b/fastlane/jetpack_metadata/android/ru-RU/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Обновлений нет в программе. +Обновлений нет в рекламе. +Обновлений нет в письме. +Ни в отчёте, ни в уме. +Просим прощения за задержку. +Если что, обращайтесь в поддержку. diff --git a/fastlane/jetpack_metadata/android/sv-SE/changelogs/1435.txt b/fastlane/jetpack_metadata/android/sv-SE/changelogs/1435.txt deleted file mode 100644 index f2b6e94ddcac..000000000000 --- a/fastlane/jetpack_metadata/android/sv-SE/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -Etikettflödet är live. Du kan nu se innehåll med specifika etiketter, allt på en och samma plats. Det är praktiskt med etiketter. - -Vi har åtgärdat diverse krascher som uppstod på inloggnings- och inläggslisteskärmarna samt i samband med bloggpåminnelser, funktionsbilder och borttagning av användare. Mindre krascher? Fantastiskt. diff --git a/fastlane/jetpack_metadata/android/sv-SE/changelogs/1440.txt b/fastlane/jetpack_metadata/android/sv-SE/changelogs/1440.txt new file mode 100644 index 000000000000..78fb62ce611d --- /dev/null +++ b/fastlane/jetpack_metadata/android/sv-SE/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Vi har inga uppdateringar i ett hus. +Vi har inga uppdateringar med en mus. +Vi har inga uppdateringar varken här eller där. +Vi har inga uppdateringar någonstans. +Vi har inga uppdateringar att rapportera. +Om du behöver hjälp, fråga vår tekniska support. diff --git a/fastlane/jetpack_metadata/android/tr-TR/changelogs/1435.txt b/fastlane/jetpack_metadata/android/tr-TR/changelogs/1435.txt deleted file mode 100644 index 78fbd79071b8..000000000000 --- a/fastlane/jetpack_metadata/android/tr-TR/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -Etiketler şeridi yayında! Artık belirli etiketler içeren içeriklerin hepsini bir yerde görebilirsiniz. Etiketleme zamanı geldi. - -Blog hatırlatıcıları, öne çıkan görseller ve kullanıcı kaldırmayla ilişkili işlemlerin yanı sıra oturum açma ve Gönderi Listesi ekranlarındaki çeşitli çökme sorunlarını düzelttik. Daha az çökme mi? Ne kadar etkileyici. diff --git a/fastlane/jetpack_metadata/android/tr-TR/changelogs/1440.txt b/fastlane/jetpack_metadata/android/tr-TR/changelogs/1440.txt new file mode 100644 index 000000000000..1dbd69f9cc65 --- /dev/null +++ b/fastlane/jetpack_metadata/android/tr-TR/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Hiç güncelleme yok. +Yeni güncelleme yok. +Herhangi bir yerde güncelleme yok. +Hiçbir yerde güncelleme yok. +Bildirilecek güncelleme yok. +Yardıma ihtiyacınız varsa teknik destek ekibine başvurun. diff --git a/fastlane/jetpack_metadata/android/zh-CN/changelogs/1435.txt b/fastlane/jetpack_metadata/android/zh-CN/changelogs/1435.txt deleted file mode 100644 index d58f6399cc2f..000000000000 --- a/fastlane/jetpack_metadata/android/zh-CN/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -标签源已上线! 现在,您可以在同一位置查看带有特定标签的所有内容。 您可以自行设置标签。 - -我们修复了登录和“文章列表”屏幕上的各种崩溃问题,以及与博客提醒、特色图片和用户删除相关的操作。 崩溃问题更少了? 多棒啊。 diff --git a/fastlane/jetpack_metadata/android/zh-CN/changelogs/1440.txt b/fastlane/jetpack_metadata/android/zh-CN/changelogs/1440.txt new file mode 100644 index 000000000000..f5e280eea439 --- /dev/null +++ b/fastlane/jetpack_metadata/android/zh-CN/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +我们未进行全面更新。 +我们未更新鼠标功能。 +我们未进行任何相关更新。 +我们未进行任何更新。 +我们尚无可报告的更新。 +如需帮助,请咨询技术支持人员。 diff --git a/fastlane/jetpack_metadata/android/zh-TW/changelogs/1435.txt b/fastlane/jetpack_metadata/android/zh-TW/changelogs/1435.txt deleted file mode 100644 index 03219b841daf..000000000000 --- a/fastlane/jetpack_metadata/android/zh-TW/changelogs/1435.txt +++ /dev/null @@ -1,4 +0,0 @@ -25.0: -標籤摘要已上線! 你現在可在同一處查看附有特定標籤的內容。 標籤,抓到你了。 - -我們修正了登入和文章清單畫面的各類當機狀況,以及與網誌提醒、精選圖片和使用者移除相關的動作。 當機狀況變少了嗎? 太棒了。 diff --git a/fastlane/jetpack_metadata/android/zh-TW/changelogs/1440.txt b/fastlane/jetpack_metadata/android/zh-TW/changelogs/1440.txt new file mode 100644 index 000000000000..c106061911d6 --- /dev/null +++ b/fastlane/jetpack_metadata/android/zh-TW/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +我們目前沒有更新事項。 +滑鼠沒有更新事項。 +我們目前沒有任何更新。 +沒有任何更新事項。 +目前沒有更新需要回報。 +如果需要協助,請聯絡技術支援中心。 diff --git a/fastlane/metadata/android/ar/changelogs/1435.txt b/fastlane/metadata/android/ar/changelogs/1435.txt deleted file mode 100644 index fea8d733c15a..000000000000 --- a/fastlane/metadata/android/ar/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -لقد أصلحنا أعطالاً متنوعة في شاشتَي تسجيل الدخول وقائمة التدوينات، إضافة إلى الإجراءات المرتبطة بتذكيرات التدوين والصور المميزة وإزالة المستخدمين. هل ترغب في أعطال أقل؟ كيفية القضاء عليها. diff --git a/fastlane/metadata/android/ar/changelogs/1440.txt b/fastlane/metadata/android/ar/changelogs/1440.txt new file mode 100644 index 000000000000..11f966d8bd71 --- /dev/null +++ b/fastlane/metadata/android/ar/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +لا توجد لدينا تحديثات متوفرة. +لا توجد لدينا تحديثات من خلال الماوس. +لا توجد لدينا تحديثات على الإطلاق. +لا توجد لدينا تحديثات في أي مكان. +لا توجد لدينا تحديثات للإبلاغ بها. +إذا احتجت إلى مساعدة، فاطلب الدعم الفني. diff --git a/fastlane/metadata/android/de-DE/changelogs/1435.txt b/fastlane/metadata/android/de-DE/changelogs/1435.txt deleted file mode 100644 index 3bb3d67886d5..000000000000 --- a/fastlane/metadata/android/de-DE/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -Wir haben verschiedene Abstürze in den Ansichten für die Anmeldung und die Beitragsliste sowie Aktionen im Zusammenhang mit Blogging-Erinnerungen, Vorschaubildern und dem Entfernen von Benutzern behoben. Weniger Abstürze? Wie toll. diff --git a/fastlane/metadata/android/de-DE/changelogs/1440.txt b/fastlane/metadata/android/de-DE/changelogs/1440.txt new file mode 100644 index 000000000000..0d70c1c291b7 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Wir haben keine Updates in einem Haus. +Wir haben keine Updates mit einer Maus. +Wir haben keine Updates hier oder dort. +Wir haben keine Updates an keinem Ort. +Wir haben keine Updates zu übertragen. +Wenn du Hilfe brauchst, kannst du den technischen Support fragen. diff --git a/fastlane/metadata/android/en-US/changelogs/1435.txt b/fastlane/metadata/android/en-US/changelogs/1435.txt deleted file mode 100644 index 257e18b25fcd..000000000000 --- a/fastlane/metadata/android/en-US/changelogs/1435.txt +++ /dev/null @@ -1 +0,0 @@ -We fixed assorted crashes on the login and Posts List screens, as well as actions associated with blogging reminders, feature images, and user removal. Less crashing? How smashing. diff --git a/fastlane/metadata/android/en-US/changelogs/1440.txt b/fastlane/metadata/android/en-US/changelogs/1440.txt new file mode 100644 index 000000000000..49c9b48be074 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/1440.txt @@ -0,0 +1,6 @@ +We have no updates in a house. +We have no updates with a mouse. +We have no updates here or there. +We have no updates anywhere. +We have no updates to report. +If you need help, ask tech support. diff --git a/fastlane/metadata/android/es-ES/changelogs/1435.txt b/fastlane/metadata/android/es-ES/changelogs/1435.txt deleted file mode 100644 index d98a7a32b9bc..000000000000 --- a/fastlane/metadata/android/es-ES/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -Hemos corregido varios fallos en las pantallas de acceso y de lista de entradas, así como en las acciones asociadas a los recordatorios de blogs, las imágenes destacadas y la eliminación de usuarios. ¿Menos caídas? Estupendo. diff --git a/fastlane/metadata/android/es-ES/changelogs/1440.txt b/fastlane/metadata/android/es-ES/changelogs/1440.txt new file mode 100644 index 000000000000..caa50c7ffcc6 --- /dev/null +++ b/fastlane/metadata/android/es-ES/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +No tenemos actualizaciones en una casa. +No tenemos actualizaciones con un ratón. +No tenemos actualizaciones aquí ni allá. +No tenemos actualizaciones en ninguna parte. +No tenemos actualizaciones de las que informar. +Si necesitas ayuda, pregunta al servicio técnico. diff --git a/fastlane/metadata/android/fr-CA/changelogs/1435.txt b/fastlane/metadata/android/fr-CA/changelogs/1435.txt deleted file mode 100644 index b4192dff08c5..000000000000 --- a/fastlane/metadata/android/fr-CA/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0 : -Nous avons corrigé des plantages sur les écrans de connexion et de liste d’articles, ainsi qu’avec les actions associées aux rappels de blog, les images mises en avant et la suppression d’utilisateur. Moins de plantages ? Tout à votre avantage. diff --git a/fastlane/metadata/android/fr-CA/changelogs/1440.txt b/fastlane/metadata/android/fr-CA/changelogs/1440.txt new file mode 100644 index 000000000000..f21193f529a1 --- /dev/null +++ b/fastlane/metadata/android/fr-CA/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1 : +Pas de mise à jour à la maison. +Pas de mise à jour à l’horizon. +Pas de mise à jour par ici. +Pas de mise à jour par là aussi. +Pas de mise à jour à noter. +Si besoin, l’assistance technique est à vos côtés. diff --git a/fastlane/metadata/android/fr-FR/changelogs/1435.txt b/fastlane/metadata/android/fr-FR/changelogs/1435.txt deleted file mode 100644 index b4192dff08c5..000000000000 --- a/fastlane/metadata/android/fr-FR/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0 : -Nous avons corrigé des plantages sur les écrans de connexion et de liste d’articles, ainsi qu’avec les actions associées aux rappels de blog, les images mises en avant et la suppression d’utilisateur. Moins de plantages ? Tout à votre avantage. diff --git a/fastlane/metadata/android/fr-FR/changelogs/1440.txt b/fastlane/metadata/android/fr-FR/changelogs/1440.txt new file mode 100644 index 000000000000..f21193f529a1 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1 : +Pas de mise à jour à la maison. +Pas de mise à jour à l’horizon. +Pas de mise à jour par ici. +Pas de mise à jour par là aussi. +Pas de mise à jour à noter. +Si besoin, l’assistance technique est à vos côtés. diff --git a/fastlane/metadata/android/id/changelogs/1435.txt b/fastlane/metadata/android/id/changelogs/1435.txt deleted file mode 100644 index 06eda42f9a81..000000000000 --- a/fastlane/metadata/android/id/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -Crash pada layar login dan Daftar Pos telah diperbaiki, sama halnya dengan aksi-aksi terkait pengingat blogging, gambar andalan, dan penghapusan pengguna. Crash berkurang? Performa kian cemerlang. diff --git a/fastlane/metadata/android/id/changelogs/1440.txt b/fastlane/metadata/android/id/changelogs/1440.txt new file mode 100644 index 000000000000..52f895046283 --- /dev/null +++ b/fastlane/metadata/android/id/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Kami tak punya pembaruan di rumah ini. +Kami tak punya pembaruan dengan tikus ini. +Kami tak punya pembaruan di sini atau di sana. +Kami tak punya pembaruan di mana saja. +Kami tak punya pembaruan untuk dilaporkan. +Untuk bantuan, hubungi tim dukungan. diff --git a/fastlane/metadata/android/it-IT/changelogs/1435.txt b/fastlane/metadata/android/it-IT/changelogs/1435.txt deleted file mode 100644 index 5945c8b41a11..000000000000 --- a/fastlane/metadata/android/it-IT/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -Abbiamo risolto diversi arresti anomali nella schermata di accesso e in quella dell'elenco degli articoli e corretto alcune azioni associate ai promemoria relativi al blog, alle immagini in evidenza e alla rimozione di utenti. Arresti anomali? Ormai sono solo un ricordo. diff --git a/fastlane/metadata/android/it-IT/changelogs/1440.txt b/fastlane/metadata/android/it-IT/changelogs/1440.txt new file mode 100644 index 000000000000..17ec9fd59a63 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Nessun aggiornamento in vista, +nessuna revisione prevista. +Nessun aggiornamento qua e là, +nessuna novità. +Non abbiamo aggiornamenti da segnalare +ma se hai bisogno di aiuto il nostro supporto tecnico puoi sempre contattare. diff --git a/fastlane/metadata/android/iw-IL/changelogs/1435.txt b/fastlane/metadata/android/iw-IL/changelogs/1435.txt deleted file mode 100644 index f558d30e4067..000000000000 --- a/fastlane/metadata/android/iw-IL/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -תיקנו כמה קריסות במסכים של ההתחברות ו'רשימת פוסטים'. תיקנו גם קריסות בפעולות שקשורות לתזכורות לכתיבה בבלוג, לתמונות ראשיות ולהסרת משתמשים. פחות קריסות, יותר טוב! diff --git a/fastlane/metadata/android/iw-IL/changelogs/1440.txt b/fastlane/metadata/android/iw-IL/changelogs/1440.txt new file mode 100644 index 000000000000..c5bda12b4652 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +אין עדכונים, כמה נחמד. +אין עדכונים, האח, הידד. +אין עדכונים, אין מה לספר. +אין עדכונים בשום מקום אחר. +אין עדכונים שצריך למסור. +נדרש סיוע? התמיכה הטכנית תשמח לעזור. diff --git a/fastlane/metadata/android/ja-JP/changelogs/1435.txt b/fastlane/metadata/android/ja-JP/changelogs/1435.txt deleted file mode 100644 index 3d47cdf7f51a..000000000000 --- a/fastlane/metadata/android/ja-JP/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -ログイン画面や投稿一覧画面でのさまざまなクラッシュのほか、ブログのリマインダー、アイキャッチ画像、ユーザーの削除に関連するアクションを修正しました。 クラッシュが減り、 より快適にご利用いただけます。 diff --git a/fastlane/metadata/android/ja-JP/changelogs/1440.txt b/fastlane/metadata/android/ja-JP/changelogs/1440.txt new file mode 100644 index 000000000000..af4ea1cd7ecd --- /dev/null +++ b/fastlane/metadata/android/ja-JP/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +更新はありません。 +ここに更新はありません。 +あそこにも更新はありません。 +どこにも更新はありません。 +お知らせする更新はありません。 +お困りの際は技術サポートにお尋ねください。 diff --git a/fastlane/metadata/android/ko-KR/changelogs/1435.txt b/fastlane/metadata/android/ko-KR/changelogs/1435.txt deleted file mode 100644 index e069218b033a..000000000000 --- a/fastlane/metadata/android/ko-KR/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -로그인 및 글 목록 화면과 블로그 알림, 특성 이미지 및 사용자 제거와 관련된 작업에서 발생하는 갖가지 충돌이 해결되었습니다. 충돌이 줄어들다니, 정말 좋은 일 아닌가요? diff --git a/fastlane/metadata/android/ko-KR/changelogs/1440.txt b/fastlane/metadata/android/ko-KR/changelogs/1440.txt new file mode 100644 index 000000000000..764b91ba7c43 --- /dev/null +++ b/fastlane/metadata/android/ko-KR/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +집에는 업데이트가 없습니다. +마우스로는 업데이트가 없습니다. +여기저기서 업데이트가 없습니다. +어디에도 업데이트가 없습니다. +보고할 업데이트가 없습니다. +도움이 필요하면 기술 지원팀에 문의하세요. diff --git a/fastlane/metadata/android/nl-NL/changelogs/1435.txt b/fastlane/metadata/android/nl-NL/changelogs/1435.txt deleted file mode 100644 index bbbfeb0ea056..000000000000 --- a/fastlane/metadata/android/nl-NL/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -We hebben verschillende crashes op het login en berichtenvermelding scherm opgelost, evenals acties die verband houden met blog herinneringen, uitgelichte afbeeldingen en het verwijderen van gebruikers. Minder crashes? Hoe geweldig. diff --git a/fastlane/metadata/android/nl-NL/changelogs/1440.txt b/fastlane/metadata/android/nl-NL/changelogs/1440.txt new file mode 100644 index 000000000000..bc9f9f620606 --- /dev/null +++ b/fastlane/metadata/android/nl-NL/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +We hebben geen updates in een huis. +We hebben geen updates met een muis. +We hebben geen updates hier of daar. +We hebben nergens updates. +We hebben geen updates te rapporteren. +Als je hulp nodig hebt, vraag technische ondersteuning. diff --git a/fastlane/metadata/android/ru-RU/changelogs/1435.txt b/fastlane/metadata/android/ru-RU/changelogs/1435.txt deleted file mode 100644 index 7f5134d02f75..000000000000 --- a/fastlane/metadata/android/ru-RU/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -Мы устранили целый ряд сбоев на экранах входа в систему и списка записей, а также исправили ошибки в действиях, связанных с напоминаниями для блогеров, избранными изображениями и удалением пользователей. Ничего не падает, и работа радует. diff --git a/fastlane/metadata/android/ru-RU/changelogs/1440.txt b/fastlane/metadata/android/ru-RU/changelogs/1440.txt new file mode 100644 index 000000000000..2d6f82290583 --- /dev/null +++ b/fastlane/metadata/android/ru-RU/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Обновлений нет в программе. +Обновлений нет в рекламе. +Обновлений нет в письме. +Ни в отчёте, ни в уме. +Просим прощения за задержку. +Если что, обращайтесь в поддержку. diff --git a/fastlane/metadata/android/sv-SE/changelogs/1435.txt b/fastlane/metadata/android/sv-SE/changelogs/1435.txt deleted file mode 100644 index dc4fbb8de362..000000000000 --- a/fastlane/metadata/android/sv-SE/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -+25.0 -We fixed assorted crashes on the login and Posts List screens, as well as actions associated with blogging reminders, feature images, and user removal. Less crashing? How smashing. diff --git a/fastlane/metadata/android/sv-SE/changelogs/1440.txt b/fastlane/metadata/android/sv-SE/changelogs/1440.txt new file mode 100644 index 000000000000..78fb62ce611d --- /dev/null +++ b/fastlane/metadata/android/sv-SE/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Vi har inga uppdateringar i ett hus. +Vi har inga uppdateringar med en mus. +Vi har inga uppdateringar varken här eller där. +Vi har inga uppdateringar någonstans. +Vi har inga uppdateringar att rapportera. +Om du behöver hjälp, fråga vår tekniska support. diff --git a/fastlane/metadata/android/tr-TR/changelogs/1435.txt b/fastlane/metadata/android/tr-TR/changelogs/1435.txt deleted file mode 100644 index 8b251de52626..000000000000 --- a/fastlane/metadata/android/tr-TR/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -Giriş ve Yazı Listesi ekranlarındaki çeşitli çökmelerin yanı sıra blog hatırlatıcıları, öne çıkarılmış resimler ve kullanıcı kaldırma ile ilgili eylemleri düzelttik. Daha az çökme mi? Ne kadar harika. diff --git a/fastlane/metadata/android/tr-TR/changelogs/1440.txt b/fastlane/metadata/android/tr-TR/changelogs/1440.txt new file mode 100644 index 000000000000..1dbd69f9cc65 --- /dev/null +++ b/fastlane/metadata/android/tr-TR/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +Hiç güncelleme yok. +Yeni güncelleme yok. +Herhangi bir yerde güncelleme yok. +Hiçbir yerde güncelleme yok. +Bildirilecek güncelleme yok. +Yardıma ihtiyacınız varsa teknik destek ekibine başvurun. diff --git a/fastlane/metadata/android/zh-CN/changelogs/1435.txt b/fastlane/metadata/android/zh-CN/changelogs/1435.txt deleted file mode 100644 index 5d49971888cc..000000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -我们修复了登录和“文章列表”屏幕上的各种崩溃问题,以及与博客提醒、特色图片和用户删除相关的操作。 崩溃问题更少了? 多棒啊。 diff --git a/fastlane/metadata/android/zh-CN/changelogs/1440.txt b/fastlane/metadata/android/zh-CN/changelogs/1440.txt new file mode 100644 index 000000000000..f5e280eea439 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +我们未进行全面更新。 +我们未更新鼠标功能。 +我们未进行任何相关更新。 +我们未进行任何更新。 +我们尚无可报告的更新。 +如需帮助,请咨询技术支持人员。 diff --git a/fastlane/metadata/android/zh-TW/changelogs/1435.txt b/fastlane/metadata/android/zh-TW/changelogs/1435.txt deleted file mode 100644 index b5cef29bf852..000000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/1435.txt +++ /dev/null @@ -1,2 +0,0 @@ -25.0: -我們修正了登入和文章清單畫面的各類當機狀況,以及與網誌提醒、精選圖片和使用者移除相關的動作。 當機狀況變少了嗎? 太棒了。 diff --git a/fastlane/metadata/android/zh-TW/changelogs/1440.txt b/fastlane/metadata/android/zh-TW/changelogs/1440.txt new file mode 100644 index 000000000000..c106061911d6 --- /dev/null +++ b/fastlane/metadata/android/zh-TW/changelogs/1440.txt @@ -0,0 +1,7 @@ +25.1: +我們目前沒有更新事項。 +滑鼠沒有更新事項。 +我們目前沒有任何更新。 +沒有任何更新事項。 +目前沒有更新需要回報。 +如果需要協助,請聯絡技術支援中心。 diff --git a/gradle.properties-example b/gradle.properties-example index 8e52efd546b9..4fef2c46ec7b 100644 --- a/gradle.properties-example +++ b/gradle.properties-example @@ -48,3 +48,6 @@ wp.e2e.signup_email=e2eflowsignuptestingmobile@example.com wp.e2e.signup_username=e2eflowsignuptestingmobile wp.e2e.signup_display_name=e2eflowsignuptestingmobile wp.e2e.signup_password=mocked_password + +# Dependency Analysis Plugin +dependency.analysis.android.ignored.variants=release,wordpressVanillaDebug,wordpressVanillaRelease,wordpressWasabiDebug,wordpressWasabiRelease,wordpressJalapenoRelease,jetpackVanillaDebug,jetpackVanillaRelease,jetpackWasabiDebug,jetpackWasabiRelease,jetpackJalapenoRelease diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 033e24c4cdf4..e6441136f3d4 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index c747538fb38b..515ab9d5f182 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip +distributionSha256Sum=f8b4f4772d302c8ff580bc40d0f56e715de69b163546944f787c87abf209c961 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index fcb6fca147c0..b740cf13397a 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # Darwin, MinGW, and NonStop. # # (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt # within the Gradle project. # # You can find Gradle at https://github.com/gradle/gradle/. @@ -83,7 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -201,11 +202,11 @@ fi # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 93e3f59f135d..25da30dbdeee 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -43,11 +43,11 @@ set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if %ERRORLEVEL% equ 0 goto execute -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail @@ -57,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto execute -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 goto fail diff --git a/libs/editor/src/main/java/org/wordpress/android/editor/AztecEditorFragment.java b/libs/editor/src/main/java/org/wordpress/android/editor/AztecEditorFragment.java index 17537f28195d..ee028d2d8ebd 100644 --- a/libs/editor/src/main/java/org/wordpress/android/editor/AztecEditorFragment.java +++ b/libs/editor/src/main/java/org/wordpress/android/editor/AztecEditorFragment.java @@ -1690,6 +1690,11 @@ public void showNotice(String message) { @Override public void onRedoPressed() { } + @Override + public void updateContent(@Nullable CharSequence text) { + // not implemented for Aztec + } + private void onMediaTapped(@NonNull final AztecAttributes attrs, int naturalWidth, int naturalHeight, final MediaType mediaType) { if (mediaType == null || !isAdded()) { diff --git a/libs/editor/src/main/java/org/wordpress/android/editor/EditorFragmentAbstract.java b/libs/editor/src/main/java/org/wordpress/android/editor/EditorFragmentAbstract.java index 1a809ad11c6a..18255e7f90d3 100644 --- a/libs/editor/src/main/java/org/wordpress/android/editor/EditorFragmentAbstract.java +++ b/libs/editor/src/main/java/org/wordpress/android/editor/EditorFragmentAbstract.java @@ -57,6 +57,7 @@ public abstract Pair getTitleAndContent(CharSequence public abstract void onUndoPressed(); public abstract void onRedoPressed(); + public abstract void updateContent(CharSequence text); public enum MediaType { diff --git a/libs/editor/src/main/java/org/wordpress/android/editor/gutenberg/GutenbergEditorFragment.java b/libs/editor/src/main/java/org/wordpress/android/editor/gutenberg/GutenbergEditorFragment.java index 38504687b0d9..859dadef8272 100644 --- a/libs/editor/src/main/java/org/wordpress/android/editor/gutenberg/GutenbergEditorFragment.java +++ b/libs/editor/src/main/java/org/wordpress/android/editor/gutenberg/GutenbergEditorFragment.java @@ -1096,6 +1096,17 @@ public void setContent(CharSequence text) { getGutenbergContainerFragment().setContent(postContent); } + @Override + public void updateContent(@Nullable CharSequence text) { + if (text == null) { + text = ""; + } + + if (getGutenbergContainerFragment() != null) { + getGutenbergContainerFragment().onContentUpdate(text.toString()); + } + } + public void setJetpackSsoEnabled(boolean jetpackSsoEnabled) { mIsJetpackSsoEnabled = jetpackSsoEnabled; } diff --git a/settings.gradle b/settings.gradle index 1234677472b2..9d04e36d7c44 100644 --- a/settings.gradle +++ b/settings.gradle @@ -8,8 +8,9 @@ pluginManagement { gradle.ext.daggerVersion = "2.50" gradle.ext.detektVersion = '1.23.0' gradle.ext.violationCommentsVersion = '1.70.0' - gradle.ext.measureBuildsVersion = '2.1.2' + gradle.ext.measureBuildsVersion = '3.1.0' gradle.ext.koverVersion = '0.7.5' + gradle.ext.dependencyAnalysisVersion = '1.28.0' plugins { id "org.jetbrains.kotlin.android" version gradle.ext.kotlinVersion @@ -28,6 +29,7 @@ pluginManagement { id "org.jetbrains.kotlinx.kover" version gradle.ext.koverVersion id "com.google.dagger.hilt.android" version gradle.ext.daggerVersion id "com.google.devtools.ksp" version gradle.ext.kspVersion + id "com.autonomousapps.dependency-analysis" version gradle.ext.dependencyAnalysisVersion } repositories { maven { diff --git a/version.properties b/version.properties index eed4110780a6..b7cdf22f3a11 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ -versionName=25.1-rc-2 -versionCode=1437 \ No newline at end of file +versionName=25.1 +versionCode=1440 \ No newline at end of file