Yoast SEO - Version 15.1.1

Version Description

Release Date: October 15th, 2020

Bugfixes:

  • Fixes a bug where the indexing button on the Tools page would keep showing up because certain objects would be detected as requiring indexing but would not actually be indexed during the indexing process.
Download this release

Release Info

Developer Yoast
Plugin Icon 128x128 Yoast SEO
Version 15.1.1
Comparing to
See all releases

Code changes from version 15.1 to 15.1.1

Files changed (89) hide show
  1. css/dist/{admin-global-1510-rtl.css → admin-global-1511-rtl.css} +0 -0
  2. css/dist/{admin-global-1510.css → admin-global-1511.css} +0 -0
  3. css/dist/{adminbar-1510-rtl.css → adminbar-1511-rtl.css} +0 -0
  4. css/dist/{adminbar-1510.css → adminbar-1511.css} +0 -0
  5. css/dist/{alerts-1510-rtl.css → alerts-1511-rtl.css} +0 -0
  6. css/dist/{alerts-1510.css → alerts-1511.css} +0 -0
  7. css/dist/{dashboard-1510-rtl.css → dashboard-1511-rtl.css} +0 -0
  8. css/dist/{dashboard-1510.css → dashboard-1511.css} +0 -0
  9. css/dist/{edit-page-1510-rtl.css → edit-page-1511-rtl.css} +0 -0
  10. css/dist/{edit-page-1510.css → edit-page-1511.css} +0 -0
  11. css/dist/{featured-image-1510-rtl.css → featured-image-1511-rtl.css} +0 -0
  12. css/dist/{featured-image-1510.css → featured-image-1511.css} +0 -0
  13. css/dist/{filter-explanation-1510-rtl.css → filter-explanation-1511-rtl.css} +0 -0
  14. css/dist/{filter-explanation-1510.css → filter-explanation-1511.css} +0 -0
  15. css/dist/{icons-1510-rtl.css → icons-1511-rtl.css} +0 -0
  16. css/dist/{icons-1510.css → icons-1511.css} +0 -0
  17. css/dist/{inside-editor-1510-rtl.css → inside-editor-1511-rtl.css} +0 -0
  18. css/dist/{inside-editor-1510.css → inside-editor-1511.css} +0 -0
  19. css/dist/{metabox-1510-rtl.css → metabox-1511-rtl.css} +0 -0
  20. css/dist/{metabox-1510.css → metabox-1511.css} +0 -0
  21. css/dist/{metabox-primary-category-1510-rtl.css → metabox-primary-category-1511-rtl.css} +0 -0
  22. css/dist/{metabox-primary-category-1510.css → metabox-primary-category-1511.css} +0 -0
  23. css/dist/{modal-1510-rtl.css → modal-1511-rtl.css} +0 -0
  24. css/dist/{modal-1510.css → modal-1511.css} +0 -0
  25. css/dist/{monorepo-1510-rtl.css → monorepo-1511-rtl.css} +0 -0
  26. css/dist/{monorepo-1510.css → monorepo-1511.css} +0 -0
  27. css/dist/{notifications-1510-rtl.css → notifications-1511-rtl.css} +0 -0
  28. css/dist/{notifications-1510.css → notifications-1511.css} +0 -0
  29. css/dist/{score_icon-1510-rtl.css → score_icon-1511-rtl.css} +0 -0
  30. css/dist/{score_icon-1510.css → score_icon-1511.css} +0 -0
  31. css/dist/{search-appearance-1510-rtl.css → search-appearance-1511-rtl.css} +0 -0
  32. css/dist/{search-appearance-1510.css → search-appearance-1511.css} +0 -0
  33. css/dist/{structured-data-blocks-1510-rtl.css → structured-data-blocks-1511-rtl.css} +0 -0
  34. css/dist/{structured-data-blocks-1510.css → structured-data-blocks-1511.css} +0 -0
  35. css/dist/{toggle-switch-1510-rtl.css → toggle-switch-1511-rtl.css} +0 -0
  36. css/dist/{toggle-switch-1510.css → toggle-switch-1511.css} +0 -0
  37. css/dist/{wpseo-dismissible-1510-rtl.css → wpseo-dismissible-1511-rtl.css} +0 -0
  38. css/dist/{wpseo-dismissible-1510.css → wpseo-dismissible-1511.css} +0 -0
  39. css/dist/{yoast-components-1510-rtl.css → yoast-components-1511-rtl.css} +0 -0
  40. css/dist/{yoast-components-1510.css → yoast-components-1511.css} +0 -0
  41. css/dist/{yoast-extensions-1510-rtl.css → yoast-extensions-1511-rtl.css} +0 -0
  42. css/dist/{yoast-extensions-1510.css → yoast-extensions-1511.css} +0 -0
  43. css/dist/{yst_plugin_tools-1510-rtl.css → yst_plugin_tools-1511-rtl.css} +0 -0
  44. css/dist/{yst_plugin_tools-1510.css → yst_plugin_tools-1511.css} +0 -0
  45. css/dist/{yst_seo_score-1510-rtl.css → yst_seo_score-1511-rtl.css} +0 -0
  46. css/dist/{yst_seo_score-1510.css → yst_seo_score-1511.css} +0 -0
  47. js/dist/{admin-global-1510.js → admin-global-1511.js} +0 -0
  48. js/dist/{analysis-1510.js → analysis-1511.js} +0 -0
  49. js/dist/{analysis-worker-1510.js → analysis-worker-1511.js} +0 -0
  50. js/dist/{api-client-1510.js → api-client-1511.js} +0 -0
  51. js/dist/{babel-polyfill-1510.js → babel-polyfill-1511.js} +0 -0
  52. js/dist/{block-editor-1510.js → block-editor-1511.js} +0 -0
  53. js/dist/{bulk-editor-1510.js → bulk-editor-1511.js} +0 -0
  54. js/dist/{classic-editor-1510.js → classic-editor-1511.js} +0 -0
  55. js/dist/{commons-1510.js → commons-1511.js} +0 -0
  56. js/dist/{components-1510.js → components-1511.js} +0 -0
  57. js/dist/{configuration-wizard-1510.js → configuration-wizard-1511.js} +0 -0
  58. js/dist/{dashboard-widget-1510.js → dashboard-widget-1511.js} +0 -0
  59. js/dist/{draft-js-1510.js → draft-js-1511.js} +0 -0
  60. js/dist/{edit-page-1510.js → edit-page-1511.js} +0 -0
  61. js/dist/{filter-explanation-1510.js → filter-explanation-1511.js} +0 -0
  62. js/dist/{help-scout-beacon-1510.js → help-scout-beacon-1511.js} +0 -0
  63. js/dist/{indexation-1510.js → indexation-1511.js} +0 -0
  64. js/dist/{jed-1510.js → jed-1511.js} +0 -0
  65. js/dist/{network-admin-1510.js → network-admin-1511.js} +0 -0
  66. js/dist/{post-edit-1510.js → post-edit-1511.js} +0 -0
  67. js/dist/{quick-edit-handler-1510.js → quick-edit-handler-1511.js} +0 -0
  68. js/dist/{redux-1510.js → redux-1511.js} +0 -0
  69. js/dist/{reindex-links-1510.js → reindex-links-1511.js} +0 -0
  70. js/dist/{settings-1510.js → settings-1511.js} +0 -0
  71. js/dist/{structured-data-blocks-1510.js → structured-data-blocks-1511.js} +0 -0
  72. js/dist/{styled-components-1510.js → styled-components-1511.js} +0 -0
  73. js/dist/{term-edit-1510.js → term-edit-1511.js} +0 -0
  74. js/dist/{used-keywords-assessment-1510.js → used-keywords-assessment-1511.js} +0 -0
  75. languages/wordpress-seo-fa_IR.json +1 -1
  76. languages/wordpress-seojs-fa_IR.json +1 -1
  77. languages/wordpress-seojs-sv_SE.json +1 -1
  78. readme.txt +8 -1
  79. src/actions/indexing/abstract-link-indexing-action.php +2 -6
  80. src/actions/indexing/post-link-indexing-action.php +1 -0
  81. vendor/autoload.php +1 -1
  82. vendor/composer/ClassLoader.php +5 -5
  83. vendor/composer/autoload_classmap.php +1 -0
  84. vendor/composer/autoload_real.php +7 -4
  85. vendor/composer/autoload_static.php +5 -4
  86. vendor_prefixed/symfony/polyfill-intl-idn/Idn.php +709 -0
  87. vendor_prefixed/symfony/polyfill-intl-idn/bootstrap.php +151 -0
  88. wp-seo-main.php +1 -1
  89. wp-seo.php +1 -1
css/dist/{admin-global-1510-rtl.css → admin-global-1511-rtl.css} RENAMED
File without changes
css/dist/{admin-global-1510.css → admin-global-1511.css} RENAMED
File without changes
css/dist/{adminbar-1510-rtl.css → adminbar-1511-rtl.css} RENAMED
File without changes
css/dist/{adminbar-1510.css → adminbar-1511.css} RENAMED
File without changes
css/dist/{alerts-1510-rtl.css → alerts-1511-rtl.css} RENAMED
File without changes
css/dist/{alerts-1510.css → alerts-1511.css} RENAMED
File without changes
css/dist/{dashboard-1510-rtl.css → dashboard-1511-rtl.css} RENAMED
File without changes
css/dist/{dashboard-1510.css → dashboard-1511.css} RENAMED
File without changes
css/dist/{edit-page-1510-rtl.css → edit-page-1511-rtl.css} RENAMED
File without changes
css/dist/{edit-page-1510.css → edit-page-1511.css} RENAMED
File without changes
css/dist/{featured-image-1510-rtl.css → featured-image-1511-rtl.css} RENAMED
File without changes
css/dist/{featured-image-1510.css → featured-image-1511.css} RENAMED
File without changes
css/dist/{filter-explanation-1510-rtl.css → filter-explanation-1511-rtl.css} RENAMED
File without changes
css/dist/{filter-explanation-1510.css → filter-explanation-1511.css} RENAMED
File without changes
css/dist/{icons-1510-rtl.css → icons-1511-rtl.css} RENAMED
File without changes
css/dist/{icons-1510.css → icons-1511.css} RENAMED
File without changes
css/dist/{inside-editor-1510-rtl.css → inside-editor-1511-rtl.css} RENAMED
File without changes
css/dist/{inside-editor-1510.css → inside-editor-1511.css} RENAMED
File without changes
css/dist/{metabox-1510-rtl.css → metabox-1511-rtl.css} RENAMED
File without changes
css/dist/{metabox-1510.css → metabox-1511.css} RENAMED
File without changes
css/dist/{metabox-primary-category-1510-rtl.css → metabox-primary-category-1511-rtl.css} RENAMED
File without changes
css/dist/{metabox-primary-category-1510.css → metabox-primary-category-1511.css} RENAMED
File without changes
css/dist/{modal-1510-rtl.css → modal-1511-rtl.css} RENAMED
File without changes
css/dist/{modal-1510.css → modal-1511.css} RENAMED
File without changes
css/dist/{monorepo-1510-rtl.css → monorepo-1511-rtl.css} RENAMED
File without changes
css/dist/{monorepo-1510.css → monorepo-1511.css} RENAMED
File without changes
css/dist/{notifications-1510-rtl.css → notifications-1511-rtl.css} RENAMED
File without changes
css/dist/{notifications-1510.css → notifications-1511.css} RENAMED
File without changes
css/dist/{score_icon-1510-rtl.css → score_icon-1511-rtl.css} RENAMED
File without changes
css/dist/{score_icon-1510.css → score_icon-1511.css} RENAMED
File without changes
css/dist/{search-appearance-1510-rtl.css → search-appearance-1511-rtl.css} RENAMED
File without changes
css/dist/{search-appearance-1510.css → search-appearance-1511.css} RENAMED
File without changes
css/dist/{structured-data-blocks-1510-rtl.css → structured-data-blocks-1511-rtl.css} RENAMED
File without changes
css/dist/{structured-data-blocks-1510.css → structured-data-blocks-1511.css} RENAMED
File without changes
css/dist/{toggle-switch-1510-rtl.css → toggle-switch-1511-rtl.css} RENAMED
File without changes
css/dist/{toggle-switch-1510.css → toggle-switch-1511.css} RENAMED
File without changes
css/dist/{wpseo-dismissible-1510-rtl.css → wpseo-dismissible-1511-rtl.css} RENAMED
File without changes
css/dist/{wpseo-dismissible-1510.css → wpseo-dismissible-1511.css} RENAMED
File without changes
css/dist/{yoast-components-1510-rtl.css → yoast-components-1511-rtl.css} RENAMED
File without changes
css/dist/{yoast-components-1510.css → yoast-components-1511.css} RENAMED
File without changes
css/dist/{yoast-extensions-1510-rtl.css → yoast-extensions-1511-rtl.css} RENAMED
File without changes
css/dist/{yoast-extensions-1510.css → yoast-extensions-1511.css} RENAMED
File without changes
css/dist/{yst_plugin_tools-1510-rtl.css → yst_plugin_tools-1511-rtl.css} RENAMED
File without changes
css/dist/{yst_plugin_tools-1510.css → yst_plugin_tools-1511.css} RENAMED
File without changes
css/dist/{yst_seo_score-1510-rtl.css → yst_seo_score-1511-rtl.css} RENAMED
File without changes
css/dist/{yst_seo_score-1510.css → yst_seo_score-1511.css} RENAMED
File without changes
js/dist/{admin-global-1510.js → admin-global-1511.js} RENAMED
File without changes
js/dist/{analysis-1510.js → analysis-1511.js} RENAMED
File without changes
js/dist/{analysis-worker-1510.js → analysis-worker-1511.js} RENAMED
File without changes
js/dist/{api-client-1510.js → api-client-1511.js} RENAMED
File without changes
js/dist/{babel-polyfill-1510.js → babel-polyfill-1511.js} RENAMED
File without changes
js/dist/{block-editor-1510.js → block-editor-1511.js} RENAMED
File without changes
js/dist/{bulk-editor-1510.js → bulk-editor-1511.js} RENAMED
File without changes
js/dist/{classic-editor-1510.js → classic-editor-1511.js} RENAMED
File without changes
js/dist/{commons-1510.js → commons-1511.js} RENAMED
File without changes
js/dist/{components-1510.js → components-1511.js} RENAMED
File without changes
js/dist/{configuration-wizard-1510.js → configuration-wizard-1511.js} RENAMED
File without changes
js/dist/{dashboard-widget-1510.js → dashboard-widget-1511.js} RENAMED
File without changes
js/dist/{draft-js-1510.js → draft-js-1511.js} RENAMED
File without changes
js/dist/{edit-page-1510.js → edit-page-1511.js} RENAMED
File without changes
js/dist/{filter-explanation-1510.js → filter-explanation-1511.js} RENAMED
File without changes
js/dist/{help-scout-beacon-1510.js → help-scout-beacon-1511.js} RENAMED
File without changes
js/dist/{indexation-1510.js → indexation-1511.js} RENAMED
File without changes
js/dist/{jed-1510.js → jed-1511.js} RENAMED
File without changes
js/dist/{network-admin-1510.js → network-admin-1511.js} RENAMED
File without changes
js/dist/{post-edit-1510.js → post-edit-1511.js} RENAMED
File without changes
js/dist/{quick-edit-handler-1510.js → quick-edit-handler-1511.js} RENAMED
File without changes
js/dist/{redux-1510.js → redux-1511.js} RENAMED
File without changes
js/dist/{reindex-links-1510.js → reindex-links-1511.js} RENAMED
File without changes
js/dist/{settings-1510.js → settings-1511.js} RENAMED
File without changes
js/dist/{structured-data-blocks-1510.js → structured-data-blocks-1511.js} RENAMED
File without changes
js/dist/{styled-components-1510.js → styled-components-1511.js} RENAMED
File without changes
js/dist/{term-edit-1510.js → term-edit-1511.js} RENAMED
File without changes
js/dist/{used-keywords-assessment-1510.js → used-keywords-assessment-1511.js} RENAMED
File without changes
languages/wordpress-seo-fa_IR.json CHANGED
@@ -1 +1 @@
1
- {"domain":"wordpress-seo","locale_data":{"wordpress-seo":{"":{"domain":"wordpress-seo","plural-forms":"nplurals=1; plural=0;","lang":"fa"},"%1$sKeyphrase in title%3$s: Not all the words from your keyphrase \"%4$s\" appear in the SEO title. %2$sFor the best SEO results write the exact match of your keyphrase in the SEO title, and put the keyphrase at the beginning of the title%3$s.":["%1$sکلیدواژه در عنوان%3$s: همه واژه‌ها در کلیدواژه \"%4$s\" عنوان سئو نیست. %2$s برای نتیجه سئوی بهتر دقیقا کلیدواژه را در ابتدای عنوان سئو بنویسید %3$s."],"%1$sKeyphrase in title%3$s: Does not contain the exact match. %2$sTry to write the exact match of your keyphrase in the SEO title and put it at the beginning of the title%3$s.":["%1$s کلیدواژه در عنوان%3$s: هم‌خوانی دقیقی یافت نشد. %2$s سعی کنید کلیدواژه را در عنوان سئو و در ابتدای آن استفاده کنید%3$s."],"%1$sKeyphrase in title%3$s: The exact match of the focus keyphrase appears in the SEO title, but not at the beginning. %2$sMove it to the beginning for the best results%3$s.":["%1$sکلیدواژه در عنوان%3$s: هم‌خوانی کلیدواژه کانونی دقیقا در عنوان سئو ظاهر شده، اما در ابتدای آن نیست.%2$s برای نتیجه بهتر آن‌را به ابتدای عنوان سئو منتقل کنید%3$s."],"Google preview":["پیش‌نمایش گوگل"],"Has feedback":["بازخورد دارد"],"Content optimization:":["بهینه‌سازی محتوا:"],"%1$sFlesch Reading Ease%2$s: The copy scores %3$s in the test, which is considered %4$s to read. %5$s":["%1$sفلش خواندن آسان%2$s: سورس را%3$s در این تست کپی نمایید، که در نظر گرفته می شود %4$s به عنوان خوانده شده%5$s"],"%3$sImage alt attributes%5$s: Out of %2$d images on this page, %1$d have alt attributes with words from your keyphrase or synonyms. That's a bit much. %4$sOnly include the keyphrase or its synonyms when it really fits the image%5$s.":["%3$s ویژگی متن جایگزین تصویر %5$s: از بین %2$d تصویر موجود در این صفحه, تنها %1$d تصویر دارای متن جایگزین تصویر با کلیدواژه یا مترادف خود هستند ، این کم است. و فقط %4$s کلیدواژه یا مترادف هستند که واقعا مطابق با تصویری هستند که در آن استفاده شده اند %5$s."],"%1$sImage alt attributes%2$s: Good job!":["%1$s متن جایگزین برای تصویر %2$s: عالیه!"],"%3$sImage alt attributes%5$s: Out of %2$d images on this page, only %1$d has an alt attribute that reflects the topic of your text. %4$sAdd your keyphrase or synonyms to the alt tags of more relevant images%5$s!":["%3$sویژگی alt تصویر%5$s: از %2$d تصاویر در این صفحه، تنها %1$d ویژگی alt دارد که موضوع متن شما را بازتاب می دهد. %4$sعبارات کلیدی یا مترادفهای خود را به برچسب های Alt از تصاویر مرتبط تر اضافه کنید%5$s!"],"%1$sImage alt attributes%3$s: Images on this page do not have alt attributes that reflect the topic of your text. %2$sAdd your keyphrase or synonyms to the alt tags of relevant images%3$s!":["%1$sویژگی متن جایگزین تصویر %3$s: تصاویر موجود در این صفحه متن جایگزین تصویر را ندارند که موضوع مطلب را بازگو کنند . %2$sعبارات کلیدی یا مترادف های آن ها را به تصاویر مربوطه و در قسمت متن جایگزین تصویر اضافه کنید .%3$s!"],"%1$sImage alt attributes%3$s: Images on this page have alt attributes, but you have not set your keyphrase. %2$sFix that%3$s!":["%1$s ویژگی متن جایگزین تصویر %3$s: تصاویر موجود در این صفحه دارای متن جایگزین تصویر هستند ، اما شما کلیدواژه را در انتخاب نکرده اید . %2$sمشکل را حل کنید %3$s!"],"%1$sKeyphrase in subheading%2$s: %3$s of your H2 and H3 subheadings reflects the topic of your copy. Good job!":["%1$s کلید واژه در زیرنویس%2$s: %3$s از زیرعنوان های H2 و H3 شما موضوع نسخه شما را منعکس می کند. آفرین!"],"%1$sKeyphrase in subheading%2$s: Your H2 or H3 subheading reflects the topic of your copy. Good job!":["%1$s کلید واژه در زیرنویس%2$s: از زیرعنوان های H2 و H3 شما موضوع نسخه شما را منعکس می کند. آفرین!"],"%1$sKeyphrase in subheading%3$s: %2$sUse more keyphrases or synonyms in your H2 and H3 subheadings%3$s!":["%1$s عبارات کلیدی در زیرنویس%3$s : %2$s از عبارات کلیدی یا مترادف بیشتر در زیر عنوان های H2 و H3٪ %3$s استفاده کنید!"],"%1$sSingle title%3$s: H1s should only be used as your main title. Find all H1s in your text that aren't your main title and %2$schange them to a lower heading level%3$s!":["%1$sعنوان تک%3$s: H1 فقط باید به عنوان عنوان اصلی شما مورد استفاده قرار گیرد. همه عنوانهای H1 ها را در متن خود که عنوان اصلی شما نیستند را پیدا کنید و %2$sآنها را به نوع هدینگ پایین تر مانند h2, h3 تغییر بدید%3$s!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d time. That's way more than the recommended maximum of %3$d times for a text of this length. %4$sDon't overoptimize%2$s!":["%1$sتراکم کلیدواژه%2$s: کلیدواژه کانونی %5$d دفعه پیدا شد. این بیشتر از حداکثر توصیه شده %3$d بار برای یک متن از این طول است. %4$sبیش از اندازه استفاده نکنید%2$s!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d time. That's more than the recommended maximum of %3$d times for a text of this length. %4$sDon't overoptimize%2$s!":["%1$sتراکم کلیدواژه %2$s: کلیدواژه کانونی %5$d دفعه پیدا شد. این بیشتر از حداکثر توصیه شده %3$d بار برای یک متن از این طول است. %4$sبیش از اندازه استفاده نکنید%2$s!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found %3$d time. This is great!":["%1$sتراکم کلیدواژه%2$s: کلیدواژه کانونی %3$d بار پیدا شد. این عالیه!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d time. That's less than the recommended minimum of %3$d times for a text of this length. %4$sFocus on your keyphrase%2$s!":["%1$sتراکم کلیدواژه%2$s: کلیدواژه کانونی %5$d بار پیدا شد. این کمتر از حداقل توصیه شده %3$d بار برای یک متن از این طول است. %4$sتمرکز بر روی کلیدواژه شما%2$s!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found 0 times. That's less than the recommended minimum of %3$d times for a text of this length. %4$sFocus on your keyphrase%2$s!":["%1$sتراکم کلیدواژه%2$s: کلیدواژه کانونی 0 بار پیدا شد. این کمتر از حداقل توصیه شده %3$d بار برای یک متن از این طول است. %4$sتمرکز بر روی کلیدواژه شما%2$s!"],"%1$sFunction words in keyphrase%3$s: Your keyphrase \"%4$s\" contains function words only. %2$sLearn more about what makes a good keyphrase.%3$s":["%1$sنقش کلمات دستوری در کلیدواژه %3$s: کلیدواژه \"%4$s\" فقط شامل کلمات دستوری مانند : کم ، این ، باید ، با ، آن ها ... و در کل دارای مواردی مثل صفت و فعل و ... می باشد . %2$sبرای فهمیدن نحوه ساخت بهتر کلیدواژه به این قسمت مراجعه کنید .%3$s"],"%1$sKeyphrase length%3$s: %2$sSet a keyphrase in order to calculate your SEO score%3$s.":["%1$s کلیدواژه %3$s: %2$sیک کلمه کلیدی به منظور بررسی امتیاز سئو خودتان وارد کنید .%3$s."],"%1$sKeyphrase in slug%2$s: More than half of your keyphrase appears in the slug. That's great!":["%1$sکلیدواژه در نامک %2$s: بیش از نیمی از کلیدواژه را که تعیین کرده اید در قسمت نامک دیده می شود ! خیلی عالی !"],"%1$sKeyphrase in slug%3$s: (Part of) your keyphrase does not appear in the slug. %2$sChange that%3$s!":["%1$sکلیدواژه در نامک %3$s: (بخشی از) کلیدواژه شما در نامک دیده نمی شود . %2$sآن را تغییر دهید %3$s!"],"%1$sKeyphrase in slug%2$s: Great work!":["%1$sکلیدواژه در نامک %2$s: عالی !"],"%1$sKeyphrase in title%2$s: The exact match of the focus keyphrase appears at the beginning of the SEO title. Good job!":["%1$sکلیدواژه در عنوان%2$s:هم‌خوانی دقیق کلیدواژه کانونی در ابتدای عنوان سئو ظاهر شد. کارت خوبه!"],"%1$sKeyphrase distribution%2$s: Good job!":["%1$sتوزیع کلمات کلیدی در متن %2$s: عالی است !"],"%1$sKeyphrase distribution%3$s: Uneven. Some parts of your text do not contain the keyphrase or its synonyms. %2$sDistribute them more evenly%3$s.":["%1$sتوزیع کلیدواژه در متن %3$s: نابرابر است . در برخی از قسمت های متن شما کلیدواژه یا مترادف آن وجود ندارد . %2$sسعی کنید توزیع و پراکندگی آن ها را در متن به صورت مساوی تری انجام دهید %3$s."],"%1$sKeyphrase distribution%3$s: Very uneven. Large parts of your text do not contain the keyphrase or its synonyms. %2$sDistribute them more evenly%3$s.":["%1$sتوزیع کلیدواژه در متن %3$s: خیلی نابرابر است . در قسمت های زیادی از متن شما کلیدواژه یا مترادف آن وجود ندارد . %2$sسعی کنید توزیع و پراکندگی آن ها را در متن به صورت مساوی تری انجام دهید %3$s."],"%1$sKeyphrase distribution%3$s: %2$sInclude your keyphrase or its synonyms in the text so that we can check keyphrase distribution%3$s.":["%1$sتوزیع کلیدواژه در متن %3$s: %2$sکلیدواژه یا مترادف آن را در متن بنویسید تا ما بتوانیم مقدار توزیع آن را در متن بررسی کنیم . %3$s."],"%4$sPreviously used keyphrase%6$s: You've used this keyphrase %1$s%2$d times before%3$s. %5$sDo not use your keyphrase more than once%6$s.":["%4$sتعداد دفعات استفاده از کلمه کلیدی %6$s: شما قبلا از این کلمه کلیدی %1$s%2$d بار استفاده کرده اید %3$s. %5$sاز یک کلمه کلیدی بیشتر از یک بار استفاده نکنید %6$s."],"%3$sPreviously used keyphrase%5$s: You've used this keyphrase %1$sonce before%2$s. %4$sDo not use your keyphrase more than once%5$s.":["%3$sتعداد دفعات استفاده از کلمه کلیدی %5$s: شما قبلا از این کلمه کلیدی %1$sیک بار استفاده کرده اید . %2$s. %4$sاز یک کلمه کلیدی بیشتر از یک بار استفاده نکنید %5$s."],"%1$sPreviously used keyphrase%2$s: You've not used this keyphrase before, very good.":["%1$sتعداد دفعات استفاده از کلمه کلیدی %2$s: شما قبلا از این کلمه کلیدی استفاده نکرده اید ! خیلی عالی ! ."],"%1$sSlug stopwords%3$s: The slug for this page contains a stop word. %2$sRemove it%3$s!":["%1$sکلمات زائد پیوند یکتا%3$s: پیوند یکتا برای صفحه حاوی یک کلمه زئد هست. %2$sآن را حذف کنید%3$s!"],"%1$sSlug too long%3$s: the slug for this page is a bit long. %2$sShorten it%3$s!":["%1$sنامک بلند است %3$s: نامک این صفحه کمی بلند است . %2$sآن را کوتاه تر بنویسید %3$s!"],"%1$sImage alt attributes%3$s: No images appear on this page. %2$sAdd some%3$s!":["%1$s عدم وجود تصویر %3$s: هیچ تصویری در صفحه شما وجود ندارد . %2$s تصویر اضافه کنید %3$s!"],"%1$sLink keyphrase%3$s: You're linking to another page with the words you want this page to rank for. %2$sDon't do that%3$s!":["%1$sلینک به کلمه کلیدی %3$s: شما لینکی را برای یکی از کلمات کلیدی این صفحه به صفحه دیگری ایجاد کرده اید که آن صفحه نیز داری همین کلمه کلیدی می باشد . %2$sاین کار را انجام ندهید %3$s!"],"This is far below the recommended minimum of %5$d word. %3$sAdd more content%4$s.":["این به مراتب کمتر از حداقل %5$dکلمات توصیه شده است. %3$sافزودن محتوای بیشتر%4$s."],"This is below the recommended minimum of %5$d word. %3$sAdd more content%4$s.":["این کمتر از %5$d کلمات توصیه شده است. %3$sافزودن محتوای بیشتر%4$s."],"%2$sText length%4$s: The text contains %1$d word.":["%2$s اندازه متن %4$s: متن حاوی %1$d کلمه است."],"%2$sText length%3$s: The text contains %1$d word. Good job!":["%2$sطول متن%3$s: متن حاوی %1$d کلمه است. کارت عالیه!"],"%1$sKeyphrase in subheading%3$s: More than 75%% of your H2 and H3 subheadings reflect the topic of your copy. That's too much. %2$sDon't over-optimize%3$s!":["%1$s کلید واژه در زیرعنوان%3$s: بیش از 75 ٪ از زیرعنوانهای H2 و H3 موضوع کپی شما را منعکس می کند. اون خیلی زیاده. %2$s بهینه سازی بیش از حد نکنید%3$s"],"%1$sSEO title width%3$s: %2$sPlease create an SEO title%3$s.":["%1$sعنوان سئو %3$s: %2$sعنوان سئو شما خالی می باشد لطفا عنوانی را برای سئو صحفه خودتان وارد کنید %3$s."],"%1$sSEO title width%3$s: The SEO title is wider than the viewable limit. %2$sTry to make it shorter%3$s.":["%1$s طول عنوان سئو%3$s: عنوان سئو بیشتر از محدوده قابل نمایش است.%2$s سعی کنید کوتاهتر کنید%3$s."],"%1$sSEO title width%2$s: Good job!":["%1$sعنوان سئو %2$s: خیلی عالی !"],"%1$sSEO title width%3$s: The SEO title is too short. %2$sUse the space to add keyphrase variations or create compelling call-to-action copy%3$s.":["%1$sعنوان سئو %3$s: عنوان سئو شما خیلی کوتاه است . %2$sاز عنوان بلندتری استفاده کنید %3$s."],"%1$sOutbound links%2$s: There are both nofollowed and normal outbound links on this page. Good job!":["%1$sلینک‌های خروجی %2$s: در این صفحه هر دو نوع لینک‌های خروجی معمولی و نوفالو وجود دارند. خیلی هم عالی!"],"%1$sOutbound links%2$s: Good job!":["%1$sلینک های خروجی%2$s: کارت خوب!"],"%1$sOutbound links%3$s: All outbound links on this page are nofollowed. %2$sAdd some normal links%3$s.":["%1$sلینک های خروجی%3$s: تمامی لینک های خرجی این صفحه دنبال نمی شوند.%2$sتعدادی لینک های صحیح انتخاب نمایید%3$s."],"%1$sOutbound links%3$s: No outbound links appear in this page. %2$sAdd some%3$s!":["%1$sلینک های خروجی%3$s: هیچ لینک خروجی برای نمایش وجود ندارد.%2$sچند لینک انتخاب نمایید%3$s!"],"%1$sMeta description length%2$s: Well done!":["%1$sتعداد کارکترهای توضیحات متا%2$s: افرین!"],"%1$sMeta description length%3$s: The meta description is over %4$d characters. To ensure the entire description will be visible, %2$syou should reduce the length%3$s!":["%1$sتعداد کارکترهای توضیحات متا%3$s: تعداد کارکترهای توضیحات متا شما بیشتر از%4$d می باشد.برای اطمینان از اینکه کل توضیحات شما قابل نمایش باشد، %2$sشما باید تعداد کارکتر های خود را %3$s کاهش دهید"],"%1$sMeta description length%3$s: The meta description is too short (under %4$d characters). Up to %5$d characters are available. %2$sUse the space%3$s!":["%1$sتعداد کارکترهای توضیحات متا%3$s: تعداد کارکترهای مجاز توضیحات متا می تواند کوتاه باشد(پاین تر از%4$d کارکتر) . زیاد باشد تا %5$d کارکتر . %2$sفضای خالی هم کارکتر محسوب می شود%3$s."],"%1$sMeta description length%3$s: No meta description has been specified. Search engines will display copy from the page instead. %2$sMake sure to write one%3$s!":["%1$sتعداد کارکترهای توضیحات متا%3$s: هیچ توضیح متایی مشخص نشده است.در عوض موتورهای جستجو کپی را از صفحه نمایش می دهند. %2$sحتما برای آن توضیحی بنویسید%3$s!"],"%1$sKeyphrase in meta description%2$s: The meta description has been specified, but it does not contain the keyphrase. %3$sFix that%4$s!":["%1$sکلمات کلیدی در توضیحات متا%2$s: توضیحات متا مشخص شده است ، اما شامل عبارت کلیدی نیست. %3$s آن را تصحیح نمایید%4$s!"],"%1$sKeyphrase in meta description%2$s: The meta description contains the keyphrase %3$s times, which is over the advised maximum of 2 times. %4$sLimit that%5$s!":["%1$sکلمات کلیدی در توضیحات متا%2$s: در حال حاضر توضیحات متا حاوی %3$s عبارت کلیدی است که بیشتر از حد توصیه شده 2 برابری است. %4$sاز تعداد آن کم کنید%5$s!"],"%1$sKeyphrase in meta description%2$s: Keyphrase or synonym appear in the meta description. Well done!":["%1$sکلمه‌کلیدی در توضیحات متا %2$s: کلمه‌کلیدی یا مترادف آن در توضیحات متا وجود دارد! خیلی هم عالی!"],"%3$sKeyphrase length%5$s: The keyphrase is %1$d words long. That's way more than the recommended maximum of %2$d words. %4$sMake it shorter%5$s!":["%3$sطول کلیدواژه %5$s: کلیدواژه شما %1$d کلمه طول دارد . این طول خیلی بیشتر از مقدار توصیه شده %2$d کلمه می باشد . %4$s آن را کوتاه تر کنید %5$s!"],"%3$sKeyphrase length%5$s: The keyphrase is %1$d words long. That's more than the recommended maximum of %2$d words. %4$sMake it shorter%5$s!":["%3$sطول کلیدواژه %5$s: کلیدواژه شما %1$d کلمه طول دارد . این طول بیشتر از مقدار توصیه شده %2$d کلمه می باشد . %4$s آن را کوتاه تر کنید %5$s!"],"%1$sKeyphrase length%2$s: Good job!":["%1$sطول کلیدواژه %2$s: خیلی عالی است !"],"%1$sKeyphrase length%3$s: No focus keyphrase was set for this page. %2$sSet a keyphrase in order to calculate your SEO score%3$s.":["%1$sطول %3$s: No focus keyphrase was set for this page. %2$sSet a keyphrase in order to calculate your SEO score%3$s."],"%1$sKeyphrase in introduction%3$s: Your keyphrase or its synonyms do not appear in the first paragraph. %2$sMake sure the topic is clear immediately%3$s.":["%1$sکلمه کلیدی در پاراگراف اول %3$s: کلمه کلیدی یا مترادف آن در پاراگراف اول متن نمایش داده نمی شود . %2$sبا استفاده کردن از کلمه کلیدی در پاراگراف اول شما اطمینان خواهید یافت که کاربر با خواندن این قسمت پی به موضوع متن شما خواهد برد %3$s."],"%1$sKeyphrase in introduction%3$s:Your keyphrase or its synonyms appear in the first paragraph of the copy, but not within one sentence. %2$sFix that%3$s!":["%1$sکلمه کلیدی در پاراگراف اول %3$s:کلمه کلیدی یا مترادف آن در پاراگراف اول متن نمایش داده می شود ، اما نه در یک جمله . %2$sآن را اصلاح کنید %3$s!"],"%1$sKeyphrase in introduction%2$s: Well done!":["%1$sکلمه کلیدی در پاراگراف اول %2$s: خیلی عالی !"],"%1$sInternal links%2$s: There are both nofollowed and normal internal links on this page. Good job!":["%1$sلینک های داخلی %2$s: در این صفحه هر دو نوع لینک های داخلی معمولی و نوفالو وجود دارند . خیلی عالی!"],"%1$sInternal links%2$s: You have enough internal links. Good job!":["%1$sلینک های داخلی%2$s: شما به تعداد کافی لینک های داخلی دارید. کارت خوب!"],"%1$sInternal links%3$s: The internal links in this page are all nofollowed. %2$sAdd some good internal links%3$s.":["%1$sلینک های داخلی %3$s:لینک های داخلی در این صفحه همه از نوع نوفالو هستند . %2$sتعدادی لینک داخلی معمولی هم اضافه کنید %3$s."],"%1$sInternal links%3$s: No internal links appear in this page, %2$smake sure to add some%3$s!":["%1$sلینک های داخلی %3$s: هیچ لینک داخلی در این صفحه وجود ندارد , %2$sچند مورد لینک داخلی اضافه کنید %3$s!"],"%1$sTransition words%2$s: Well done!":["%1$sانتقال کلمات%2$s: آفرین!"],"%1$sTransition words%2$s: Only %3$s of the sentences contain transition words, which is not enough. %4$sUse more of them%2$s.":["%1$sکلمات گذار %2$s: تنها %3$s جمله حاوی کلمات گذار است که کافی نیست. %4$sاز این نوع جمله بیشتر استفاده کنید%2$s."],"%1$sTransition words%2$s: None of the sentences contain transition words. %3$sUse some%2$s.":["%1$sکلمات گذار %2$s: هیچ یک از جملات حاوی کلمات گذار نیست . %3$sچند مورد را اضافه کنید %2$s."],"%1$sNot enough content%2$s: %3$sPlease add some content to enable a good analysis%2$s.":["%1$s محتوای شما کم است %2$s: %3$sلطفا محتوای بیشتری را اضافه کنید تا تحلیل بهتری انجام شود %2$s."],"%1$sSubheading distribution%2$s: You are not using any subheadings, but your text is short enough and probably doesn't need them.":["%1$sتوزیع تیر در متن %2$s: شما از هیچ تیتری مثل (h2 , h1 , … ) در متن خود استفاده نکرده اید ، با بررسی های انجام شده مشخص شد که متن شما کوتاه است و احتمالا به آن ها نیاز نداشته باشید ."],"%1$sSubheading distribution%2$s: You are not using any subheadings, although your text is rather long. %3$sTry and add some subheadings%2$s.":["%1$sتوزیع تیتر در متن %2$s: با وجود طولانی بودن متن ، اما شما از هیچ تیتری مثل (h2 , h1 , … ) در متن خود استفاده نکرده اید . %3$sسعی کنید چند تیتر به متن خود اضافه کنید %2$s."],"%1$sSubheading distribution%2$s: %3$d section of your text is longer than %4$d words and is not separated by any subheadings. %5$sAdd subheadings to improve readability%2$s.":["%1$sتوزیع زیرعنوان%2$s: %3$d بخش متن شما بیش از %4$d واژه است و با هیچ یک از زیرعنوان ها جدا نمی شود. %5$sزیرعنوان ها را برای بهبود خوانایی اضافه کنید%2$s."],"%1$sSubheading distribution%2$s: Great job!":["%1$sزیرنویس عناوین%2$s: کارت عالی بود!"],"%1$sSentence length%2$s: %3$s of the sentences contain more than %4$s words, which is more than the recommended maximum of %5$s. %6$sTry to shorten the sentences%2$s.":["%1$sطول جمله %2$s: %3$s از جملاتی که در متن استفاده کرده اید بیشتر از %4$s کلمه دارند , که بیشتر از حداکثر توصیه شده %5$s است . %6$sسعی کنید جملات خود را کوتاه تر کنید %2$s."],"%1$sSentence length%2$s: Great!":["%1$sتعداد کارکترهای جمله%2$s: عالی!"],"%1$sConsecutive sentences%2$s: There is enough variety in your sentences. That's great!":["%1$sجملات متوالی %2$s: تنوع کافی در جملات شما وجود دارد. خیلی عالیه!"],"%1$sConsecutive sentences%2$s: The text contains %3$d consecutive sentences starting with the same word. %5$sTry to mix things up%2$s!":["%1$sجملات پیوسته%2$s: متن حاوی %4$d مواردی است که %3$d یا بیشتر جملات متوالی با کلمه مشابه شروع می شود. %5$sسعی کنید همه چیز را مخلوط کنید%2$s!"],"%1$sPassive voice%2$s: %3$s of the sentences contain passive voice, which is more than the recommended maximum of %4$s. %5$sTry to use their active counterparts%2$s.":["%1$sPassive voice%2$s: %3$s of the sentences contain passive voice, which is more than the recommended maximum of %4$s. %5$sTry to use their active counterparts%2$s."],"%1$sPassive voice%2$s: You're using enough active voice. That's great!":["%1$sصدای مجهول%2$s: شما از صدای فعال کافی استفاده می کنید. بسیار عالی!"],"%1$sParagraph length%2$s: %3$d of the paragraphs contains more than the recommended maximum of %4$d words. %5$sShorten your paragraphs%2$s!":["%1$sطول پاراگراف %2$s: %3$dاز پاراگراف ها حاوی بیش از حداکثر پیشنهادی %4$d کلمه است. %5$sپاراگرافهای خود را کوتاه کنید%2$s!"],"%1$sParagraph length%2$s: None of the paragraphs are too long. Great job!":["%1$sطول پاراگراف %2$s:هیچ یک از پاراگراف های شما بیش از حد طولانی نیستند. خیلی عالی !"],"Good job!":["آفرین!"],"%1$sFlesch Reading Ease%2$s: The copy scores %3$s in the test, which is considered %4$s to read. %5$s%6$s%7$s":["%1$sسهولت خواندن فلاش%2$s: کپی نمرات %3$s در آزمون، که %4$s برای خواندن در نظر گرفته شده است. %5$s%6$s%7$s"],"Scroll to see the preview content.":["برای دیدن پیشنمایش محتوا اسکرول کنید."],"An error occurred in the '%1$s' assessment":["خطایی در ارزیابی '%1$s' رخ داده است"],"%1$s of the words contain %2$sover %3$s syllables%4$s, which is more than the recommended maximum of %5$s.":["%1$s از کلمات حاوی %2$s روی %3$s سیلاب %4$s، که بیش از حداکثر توصیه شده از %5$s است."],"%1$s of the words contain %2$sover %3$s syllables%4$s, which is less than or equal to the recommended maximum of %5$s.":["%1$s از کلمات حاوی %2$s روی %3$s سیلاب %4$s، که کمتر از یا برابر حداکثر توصیه شده از %5$s است."],"This is slightly below the recommended minimum of %5$d word. %3$sAdd a bit more copy%4$s.":["این کمی کمتر از حداقلل توصیه شده %5$d کلمه است.%3$s کمی بیشتر اضافه کنید%4$s."],"The meta description contains %1$d sentence %2$sover %3$s words%4$s. Try to shorten this sentence.":["توضیحات متا حاوی %1$d جمله %2$s بیش از %3$s کلمه %4$s است. سعی کنید جملات را کوتاه‌تر کنید."],"The meta description contains no sentences %1$sover %2$s words%3$s.":["توضیحات متا شامل هیچ جمله %1$s بیش از %2$s کلمه %3$s نیست."],"Mobile preview":["پیش نمایش موبایل"],"Desktop preview":["پیش نمایش دسکتاپ"],"Please provide an SEO title by editing the snippet below.":["لطفا یک عنوان سئو با ویرایش متن زیرارائه دهید."],"Meta description preview:":["پیش نمایش متای توضیحات:"],"Slug preview:":["پیش نمایش نامک:"],"SEO title preview:":["پیش نمایش عنوان سئو:"],"Close snippet editor":["بستن ویرایشگر اسنیپت"],"Slug":["نامک"],"Remove marks in the text":["علامات را در نوشته پاک کنید"],"Mark this result in the text":["علامت زدن این نتیجه در متن"],"Marks are disabled in current view":["علائم در نمای جاری غیرفعال هستند"],"Good SEO score":["نمره خوب سئو"],"OK SEO score":["امتیاز سئوی قابل قبول"],"Feedback":["بازخورد"],"ok":["تأیید"],"Please provide a meta description by editing the snippet below.":["لطفا با ویرایش متن زیر توضیحات متا را ارائه دهید."],"Edit snippet":["ویرایش اسنیپت"],"You can click on each element in the preview to jump to the Snippet Editor.":["شما می توانید برای ورود به ویرایشگر محدوده، روی هر پارامتر در پیش نمایش کلیک کنید."],"SEO title":["عنوان سئو"],"Needs improvement":["به بهبود نیاز دارد"],"Good":["خوب"],"very difficult":["خیلی سخت"],"Try to make shorter sentences, using less difficult words to improve readability":["سعی کنید برای خوانایی بیشتر جمله ها رو کوتاه تر، از کلمه های با سختی کمتر استفاده کنید"],"difficult":["سخت"],"Try to make shorter sentences to improve readability":["تلاش کنید جملات کوتاه‌تر برای بهبود خوانایی بسازید"],"fairly difficult":["واقعا سخت"],"OK":["تایید"],"fairly easy":["واقعا آسان"],"easy":["آسان"],"very easy":["خیلی راحت"],"Meta description":["توضیح متا"]}}}
1
+ {"domain":"wordpress-seo","locale_data":{"wordpress-seo":{"":{"domain":"wordpress-seo","plural-forms":"nplurals=1; plural=0;","lang":"fa"},"%1$sKeyphrase in title%3$s: Not all the words from your keyphrase \"%4$s\" appear in the SEO title. %2$sFor the best SEO results write the exact match of your keyphrase in the SEO title, and put the keyphrase at the beginning of the title%3$s.":["%1$sکلیدواژه در عنوان%3$s: همه واژه‌ها در کلیدواژه \"%4$s\" عنوان سئو نیست. %2$s برای نتیجه سئوی بهتر دقیقا کلیدواژه را در ابتدای عنوان سئو بنویسید %3$s."],"%1$sKeyphrase in title%3$s: Does not contain the exact match. %2$sTry to write the exact match of your keyphrase in the SEO title and put it at the beginning of the title%3$s.":["%1$s کلیدواژه در عنوان%3$s: هم‌خوانی دقیقی یافت نشد. %2$s سعی کنید کلیدواژه را در عنوان سئو و در ابتدای آن استفاده کنید%3$s."],"%1$sKeyphrase in title%3$s: The exact match of the focus keyphrase appears in the SEO title, but not at the beginning. %2$sMove it to the beginning for the best results%3$s.":["%1$sکلیدواژه در عنوان%3$s: هم‌خوانی کلیدواژه کانونی دقیقا در عنوان سئو ظاهر شده، اما در ابتدای آن نیست.%2$s برای نتیجه بهتر آن‌را به ابتدای عنوان سئو منتقل کنید%3$s."],"Google preview":["پیش‌نمایش گوگل"],"Has feedback":["بازخورد دارد"],"Content optimization:":["بهینه‌سازی محتوا:"],"%1$sFlesch Reading Ease%2$s: The copy scores %3$s in the test, which is considered %4$s to read. %5$s":["%1$sفلش خواندن آسان%2$s: سورس را%3$s در این تست کپی نمایید، که در نظر گرفته می شود %4$s به عنوان خوانده شده%5$s"],"%3$sImage alt attributes%5$s: Out of %2$d images on this page, %1$d have alt attributes with words from your keyphrase or synonyms. That's a bit much. %4$sOnly include the keyphrase or its synonyms when it really fits the image%5$s.":["%3$s ویژگی متن جایگزین تصویر %5$s: از بین %2$d تصویر موجود در این صفحه, تنها %1$d تصویر دارای متن جایگزین تصویر با کلیدواژه یا مترادف خود هستند ، این کم است. و فقط %4$s کلیدواژه یا مترادف هستند که واقعا مطابق با تصویری هستند که در آن استفاده شده اند %5$s."],"%1$sImage alt attributes%2$s: Good job!":["%1$s متن جایگزین برای تصویر %2$s: عالیه!"],"%3$sImage alt attributes%5$s: Out of %2$d images on this page, only %1$d has an alt attribute that reflects the topic of your text. %4$sAdd your keyphrase or synonyms to the alt tags of more relevant images%5$s!":["%3$sویژگی alt تصویر%5$s: از %2$d تصاویر در این صفحه، تنها %1$d ویژگی alt دارد که موضوع متن شما را بازتاب می دهد. %4$sعبارات کلیدی یا مترادفهای خود را به برچسب های Alt از تصاویر مرتبط تر اضافه کنید%5$s!"],"%1$sImage alt attributes%3$s: Images on this page do not have alt attributes that reflect the topic of your text. %2$sAdd your keyphrase or synonyms to the alt tags of relevant images%3$s!":["%1$sویژگی متن جایگزین تصویر %3$s: تصاویر موجود در این صفحه متن جایگزین تصویر را ندارند که موضوع مطلب را بازگو کنند . %2$sعبارات کلیدی یا مترادف های آن ها را به تصاویر مربوطه و در قسمت متن جایگزین تصویر اضافه کنید .%3$s!"],"%1$sImage alt attributes%3$s: Images on this page have alt attributes, but you have not set your keyphrase. %2$sFix that%3$s!":["%1$s ویژگی متن جایگزین تصویر %3$s: تصاویر موجود در این صفحه دارای متن جایگزین تصویر هستند ، اما شما کلیدواژه را در انتخاب نکرده اید . %2$sمشکل را حل کنید %3$s!"],"%1$sKeyphrase in subheading%2$s: %3$s of your H2 and H3 subheadings reflects the topic of your copy. Good job!":["%1$s کلید واژه در زیرنویس%2$s: %3$s از زیرعنوان های H2 و H3 شما موضوع نسخه شما را منعکس می کند. آفرین!"],"%1$sKeyphrase in subheading%2$s: Your H2 or H3 subheading reflects the topic of your copy. Good job!":["%1$s کلید واژه در زیرنویس%2$s: از زیرعنوان های H2 و H3 شما موضوع نسخه شما را منعکس می کند. آفرین!"],"%1$sKeyphrase in subheading%3$s: %2$sUse more keyphrases or synonyms in your H2 and H3 subheadings%3$s!":["%1$s عبارات کلیدی در زیرنویس%3$s : %2$s از عبارات کلیدی یا مترادف بیشتر در زیر عنوان های H2 و H3٪ %3$s استفاده کنید!"],"%1$sSingle title%3$s: H1s should only be used as your main title. Find all H1s in your text that aren't your main title and %2$schange them to a lower heading level%3$s!":["%1$sعنوان تک%3$s: H1 فقط باید به عنوان عنوان اصلی شما مورد استفاده قرار گیرد. همه عنوانهای H1 ها را در متن خود که عنوان اصلی شما نیستند را پیدا کنید و %2$sآنها را به نوع هدینگ پایین تر مانند h2, h3 تغییر بدید%3$s!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d time. That's way more than the recommended maximum of %3$d times for a text of this length. %4$sDon't overoptimize%2$s!":["%1$sتراکم کلیدواژه%2$s: کلیدواژه کانونی %5$d دفعه پیدا شد. این بیشتر از حداکثر توصیه شده %3$d بار برای یک متن از این طول است. %4$sبیش از اندازه استفاده نکنید%2$s!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d time. That's more than the recommended maximum of %3$d times for a text of this length. %4$sDon't overoptimize%2$s!":["%1$sتراکم کلیدواژه %2$s: کلیدواژه کانونی %5$d دفعه پیدا شد. این بیشتر از حداکثر توصیه شده %3$d بار برای یک متن از این طول است. %4$sبیش از اندازه استفاده نکنید%2$s!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found %3$d time. This is great!":["%1$sتراکم کلیدواژه%2$s: کلیدواژه کانونی %3$d بار پیدا شد. این عالیه!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found %5$d time. That's less than the recommended minimum of %3$d times for a text of this length. %4$sFocus on your keyphrase%2$s!":["%1$sتراکم کلیدواژه%2$s: کلیدواژه کانونی %5$d بار پیدا شد. این کمتر از حداقل توصیه شده %3$d بار برای یک متن از این طول است. %4$sتمرکز بر روی کلیدواژه شما%2$s!"],"%1$sKeyphrase density%2$s: The focus keyphrase was found 0 times. That's less than the recommended minimum of %3$d times for a text of this length. %4$sFocus on your keyphrase%2$s!":["%1$sتراکم کلیدواژه%2$s: کلیدواژه کانونی 0 بار پیدا شد. این کمتر از حداقل توصیه شده %3$d بار برای یک متن از این طول است. %4$sتمرکز بر روی کلیدواژه شما%2$s!"],"%1$sFunction words in keyphrase%3$s: Your keyphrase \"%4$s\" contains function words only. %2$sLearn more about what makes a good keyphrase.%3$s":["%1$sنقش کلمات دستوری در کلیدواژه %3$s: کلیدواژه \"%4$s\" فقط شامل کلمات دستوری مانند : کم ، این ، باید ، با ، آن ها ... و در کل دارای مواردی مثل صفت و فعل و ... می باشد . %2$sبرای فهمیدن نحوه ساخت بهتر کلیدواژه به این قسمت مراجعه کنید .%3$s"],"%1$sKeyphrase length%3$s: %2$sSet a keyphrase in order to calculate your SEO score%3$s.":["%1$s کلیدواژه %3$s: %2$sیک کلمه کلیدی به منظور بررسی امتیاز سئو خودتان وارد کنید .%3$s."],"%1$sKeyphrase in slug%2$s: More than half of your keyphrase appears in the slug. That's great!":["%1$sکلیدواژه در نامک %2$s: بیش از نیمی از کلیدواژه را که تعیین کرده اید در قسمت نامک دیده می شود ! خیلی عالی !"],"%1$sKeyphrase in slug%3$s: (Part of) your keyphrase does not appear in the slug. %2$sChange that%3$s!":["%1$sکلیدواژه در نامک %3$s: (بخشی از) کلیدواژه شما در نامک دیده نمی شود . %2$sآن را تغییر دهید %3$s!"],"%1$sKeyphrase in slug%2$s: Great work!":["%1$sکلیدواژه در نامک %2$s: عالی !"],"%1$sKeyphrase in title%2$s: The exact match of the focus keyphrase appears at the beginning of the SEO title. Good job!":["%1$sکلیدواژه در عنوان%2$s:هم‌خوانی دقیق کلیدواژه کانونی در ابتدای عنوان سئو ظاهر شد. کارت خوبه!"],"%1$sKeyphrase distribution%2$s: Good job!":["%1$sتوزیع کلمات کلیدی در متن %2$s: عالی است !"],"%1$sKeyphrase distribution%3$s: Uneven. Some parts of your text do not contain the keyphrase or its synonyms. %2$sDistribute them more evenly%3$s.":["%1$sتوزیع کلیدواژه در متن %3$s: نابرابر است . در برخی از قسمت های متن شما کلیدواژه یا مترادف آن وجود ندارد . %2$sسعی کنید توزیع و پراکندگی آن ها را در متن به صورت مساوی تری انجام دهید %3$s."],"%1$sKeyphrase distribution%3$s: Very uneven. Large parts of your text do not contain the keyphrase or its synonyms. %2$sDistribute them more evenly%3$s.":["%1$sتوزیع کلیدواژه در متن %3$s: خیلی نابرابر است . در قسمت های زیادی از متن شما کلیدواژه یا مترادف آن وجود ندارد . %2$sسعی کنید توزیع و پراکندگی آن ها را در متن به صورت مساوی تری انجام دهید %3$s."],"%1$sKeyphrase distribution%3$s: %2$sInclude your keyphrase or its synonyms in the text so that we can check keyphrase distribution%3$s.":["%1$sتوزیع کلیدواژه در متن %3$s: %2$sکلیدواژه یا مترادف آن را در متن بنویسید تا ما بتوانیم مقدار توزیع آن را در متن بررسی کنیم . %3$s."],"%4$sPreviously used keyphrase%6$s: You've used this keyphrase %1$s%2$d times before%3$s. %5$sDo not use your keyphrase more than once%6$s.":["%4$sتعداد دفعات استفاده از کلمه کلیدی %6$s: شما قبلا از این کلمه کلیدی %1$s%2$d بار استفاده کرده اید %3$s. %5$sاز یک کلمه کلیدی بیشتر از یک بار استفاده نکنید %6$s."],"%3$sPreviously used keyphrase%5$s: You've used this keyphrase %1$sonce before%2$s. %4$sDo not use your keyphrase more than once%5$s.":["%3$sتعداد دفعات استفاده از کلمه کلیدی %5$s: شما قبلا از این کلمه کلیدی %1$sیک بار استفاده کرده اید . %2$s. %4$sاز یک کلمه کلیدی بیشتر از یک بار استفاده نکنید %5$s."],"%1$sPreviously used keyphrase%2$s: You've not used this keyphrase before, very good.":["%1$sتعداد دفعات استفاده از کلمه کلیدی %2$s: شما قبلا از این کلمه کلیدی استفاده نکرده اید ! خیلی عالی ! ."],"%1$sSlug stopwords%3$s: The slug for this page contains a stop word. %2$sRemove it%3$s!":["%1$sکلمات زائد پیوند یکتا%3$s: پیوند یکتا برای صفحه حاوی یک کلمه زئد هست. %2$sآن را حذف کنید%3$s!"],"%1$sSlug too long%3$s: the slug for this page is a bit long. %2$sShorten it%3$s!":["%1$sنامک بلند است %3$s: نامک این صفحه کمی بلند است . %2$sآن را کوتاه تر بنویسید %3$s!"],"%1$sImage alt attributes%3$s: No images appear on this page. %2$sAdd some%3$s!":["%1$s عدم وجود تصویر %3$s: هیچ تصویری در صفحه شما وجود ندارد . %2$s تصویر اضافه کنید %3$s!"],"%1$sLink keyphrase%3$s: You're linking to another page with the words you want this page to rank for. %2$sDon't do that%3$s!":["%1$sلینک به کلمه کلیدی %3$s: شما لینکی را برای یکی از کلمات کلیدی این صفحه به صفحه دیگری ایجاد کرده اید که آن صفحه نیز داری همین کلمه کلیدی می باشد . %2$sاین کار را انجام ندهید %3$s!"],"This is far below the recommended minimum of %5$d word. %3$sAdd more content%4$s.":["این به مراتب کمتر از حداقل %5$dکلمات توصیه شده است. %3$sافزودن محتوای بیشتر%4$s."],"This is below the recommended minimum of %5$d word. %3$sAdd more content%4$s.":["این کمتر از %5$d کلمات توصیه شده است. %3$sافزودن محتوای بیشتر%4$s."],"%2$sText length%4$s: The text contains %1$d word.":["%2$s اندازه متن %4$s: متن حاوی %1$d کلمه است."],"%2$sText length%3$s: The text contains %1$d word. Good job!":["%2$sطول متن%3$s: متن حاوی %1$d کلمه است. کارت عالیه!"],"%1$sKeyphrase in subheading%3$s: More than 75%% of your H2 and H3 subheadings reflect the topic of your copy. That's too much. %2$sDon't over-optimize%3$s!":["%1$s کلید واژه در زیرعنوان%3$s: بیش از 75 ٪ از زیرعنوانهای H2 و H3 موضوع کپی شما را منعکس می کند. اون خیلی زیاده. %2$s بهینه سازی بیش از حد نکنید%3$s"],"%1$sSEO title width%3$s: %2$sPlease create an SEO title%3$s.":["%1$sعنوان سئو %3$s: %2$sعنوان سئو شما خالی می باشد لطفا عنوانی را برای سئو صحفه خودتان وارد کنید %3$s."],"%1$sSEO title width%3$s: The SEO title is wider than the viewable limit. %2$sTry to make it shorter%3$s.":["%1$s طول عنوان سئو%3$s: عنوان سئو بیشتر از محدوده قابل نمایش است.%2$s سعی کنید کوتاهتر کنید%3$s."],"%1$sSEO title width%2$s: Good job!":["%1$sعنوان سئو %2$s: خیلی عالی !"],"%1$sSEO title width%3$s: The SEO title is too short. %2$sUse the space to add keyphrase variations or create compelling call-to-action copy%3$s.":["%1$sعنوان سئو %3$s: عنوان سئو شما خیلی کوتاه است . %2$sاز عنوان بلندتری استفاده کنید %3$s."],"%1$sOutbound links%2$s: There are both nofollowed and normal outbound links on this page. Good job!":["%1$sلینک‌های خروجی %2$s: در این صفحه هر دو نوع لینک‌های خروجی معمولی و نوفالو وجود دارند. خیلی هم عالی!"],"%1$sOutbound links%2$s: Good job!":["%1$sلینک های خروجی%2$s: کارت خوب!"],"%1$sOutbound links%3$s: All outbound links on this page are nofollowed. %2$sAdd some normal links%3$s.":["%1$sلینک های خروجی%3$s: تمامی لینک های خرجی این صفحه دنبال نمی شوند.%2$sتعدادی لینک های صحیح انتخاب نمایید%3$s."],"%1$sOutbound links%3$s: No outbound links appear in this page. %2$sAdd some%3$s!":["%1$sلینک های خروجی%3$s: هیچ لینک خروجی برای نمایش وجود ندارد.%2$sچند لینک انتخاب نمایید%3$s!"],"%1$sMeta description length%2$s: Well done!":["%1$sتعداد کارکترهای توضیحات متا%2$s: افرین!"],"%1$sMeta description length%3$s: The meta description is over %4$d characters. To ensure the entire description will be visible, %2$syou should reduce the length%3$s!":["%1$sتعداد کارکترهای توضیحات متا%3$s: تعداد کارکترهای توضیحات متا شما بیشتر از%4$d می باشد.برای اطمینان از اینکه کل توضیحات شما قابل نمایش باشد، %2$sشما باید تعداد کارکتر های خود را %3$s کاهش دهید"],"%1$sMeta description length%3$s: The meta description is too short (under %4$d characters). Up to %5$d characters are available. %2$sUse the space%3$s!":["%1$sتعداد کارکترهای توضیحات متا%3$s: تعداد کارکترهای مجاز توضیحات متا می تواند کوتاه باشد(پاین تر از%4$d کارکتر) . زیاد باشد تا %5$d کارکتر . %2$sفضای خالی هم کارکتر محسوب می شود%3$s."],"%1$sMeta description length%3$s: No meta description has been specified. Search engines will display copy from the page instead. %2$sMake sure to write one%3$s!":["%1$sتعداد کارکترهای توضیحات متا%3$s: هیچ توضیح متایی مشخص نشده است.در عوض موتورهای جستجو کپی را از صفحه نمایش می دهند. %2$sحتما برای آن توضیحی بنویسید%3$s!"],"%1$sKeyphrase in meta description%2$s: The meta description has been specified, but it does not contain the keyphrase. %3$sFix that%4$s!":["%1$sکلمات کلیدی در توضیحات متا%2$s: توضیحات متا مشخص شده است ، اما شامل عبارت کلیدی نیست. %3$s آن را تصحیح نمایید%4$s!"],"%1$sKeyphrase in meta description%2$s: The meta description contains the keyphrase %3$s times, which is over the advised maximum of 2 times. %4$sLimit that%5$s!":["%1$sکلمات کلیدی در توضیحات متا%2$s: در حال حاضر توضیحات متا حاوی %3$s عبارت کلیدی است که بیشتر از حد توصیه شده 2 برابری است. %4$sاز تعداد آن کم کنید%5$s!"],"%1$sKeyphrase in meta description%2$s: Keyphrase or synonym appear in the meta description. Well done!":["%1$sکلمه‌کلیدی در توضیحات متا %2$s: کلمه‌کلیدی یا مترادف آن در توضیحات متا وجود دارد! خیلی هم عالی!"],"%3$sKeyphrase length%5$s: The keyphrase is %1$d words long. That's way more than the recommended maximum of %2$d words. %4$sMake it shorter%5$s!":["%3$sطول کلیدواژه %5$s: کلیدواژه شما %1$d کلمه طول دارد . این طول خیلی بیشتر از مقدار توصیه شده %2$d کلمه می باشد . %4$s آن را کوتاه تر کنید %5$s!"],"%3$sKeyphrase length%5$s: The keyphrase is %1$d words long. That's more than the recommended maximum of %2$d words. %4$sMake it shorter%5$s!":["%3$sطول کلیدواژه %5$s: کلیدواژه شما %1$d کلمه طول دارد . این طول بیشتر از مقدار توصیه شده %2$d کلمه می باشد . %4$s آن را کوتاه تر کنید %5$s!"],"%1$sKeyphrase length%2$s: Good job!":["%1$sطول کلیدواژه%2$s: خیلی خوبه!"],"%1$sKeyphrase length%3$s: No focus keyphrase was set for this page. %2$sSet a keyphrase in order to calculate your SEO score%3$s.":["%1$sطول %3$s: No focus keyphrase was set for this page. %2$sSet a keyphrase in order to calculate your SEO score%3$s."],"%1$sKeyphrase in introduction%3$s: Your keyphrase or its synonyms do not appear in the first paragraph. %2$sMake sure the topic is clear immediately%3$s.":["%1$sکلمه کلیدی در پاراگراف اول %3$s: کلمه کلیدی یا مترادف آن در پاراگراف اول متن نمایش داده نمی شود . %2$sبا استفاده کردن از کلمه کلیدی در پاراگراف اول شما اطمینان خواهید یافت که کاربر با خواندن این قسمت پی به موضوع متن شما خواهد برد %3$s."],"%1$sKeyphrase in introduction%3$s:Your keyphrase or its synonyms appear in the first paragraph of the copy, but not within one sentence. %2$sFix that%3$s!":["%1$sکلمه کلیدی در پاراگراف اول %3$s:کلمه کلیدی یا مترادف آن در پاراگراف اول متن نمایش داده می شود ، اما نه در یک جمله . %2$sآن را اصلاح کنید %3$s!"],"%1$sKeyphrase in introduction%2$s: Well done!":["%1$sکلمه کلیدی در پاراگراف اول %2$s: خیلی عالی !"],"%1$sInternal links%2$s: There are both nofollowed and normal internal links on this page. Good job!":["%1$sلینک های داخلی %2$s: در این صفحه هر دو نوع لینک های داخلی معمولی و نوفالو وجود دارند . خیلی عالی!"],"%1$sInternal links%2$s: You have enough internal links. Good job!":["%1$sلینک های داخلی%2$s: شما به تعداد کافی لینک های داخلی دارید. کارت خوب!"],"%1$sInternal links%3$s: The internal links in this page are all nofollowed. %2$sAdd some good internal links%3$s.":["%1$sلینک های داخلی %3$s:لینک های داخلی در این صفحه همه از نوع نوفالو هستند . %2$sتعدادی لینک داخلی معمولی هم اضافه کنید %3$s."],"%1$sInternal links%3$s: No internal links appear in this page, %2$smake sure to add some%3$s!":["%1$sلینک های داخلی %3$s: هیچ لینک داخلی در این صفحه وجود ندارد , %2$sچند مورد لینک داخلی اضافه کنید %3$s!"],"%1$sTransition words%2$s: Well done!":["%1$sانتقال کلمات%2$s: آفرین!"],"%1$sTransition words%2$s: Only %3$s of the sentences contain transition words, which is not enough. %4$sUse more of them%2$s.":["%1$sکلمات گذار %2$s: تنها %3$s جمله حاوی کلمات گذار است که کافی نیست. %4$sاز این نوع جمله بیشتر استفاده کنید%2$s."],"%1$sTransition words%2$s: None of the sentences contain transition words. %3$sUse some%2$s.":["%1$sکلمات گذار %2$s: هیچ یک از جملات حاوی کلمات گذار نیست . %3$sچند مورد را اضافه کنید %2$s."],"%1$sNot enough content%2$s: %3$sPlease add some content to enable a good analysis%2$s.":["%1$s محتوای شما کم است %2$s: %3$sلطفا محتوای بیشتری را اضافه کنید تا تحلیل بهتری انجام شود %2$s."],"%1$sSubheading distribution%2$s: You are not using any subheadings, but your text is short enough and probably doesn't need them.":["%1$sتوزیع تیر در متن %2$s: شما از هیچ تیتری مثل (h2 , h1 , … ) در متن خود استفاده نکرده اید ، با بررسی های انجام شده مشخص شد که متن شما کوتاه است و احتمالا به آن ها نیاز نداشته باشید ."],"%1$sSubheading distribution%2$s: You are not using any subheadings, although your text is rather long. %3$sTry and add some subheadings%2$s.":["%1$sتوزیع تیتر در متن %2$s: با وجود طولانی بودن متن ، اما شما از هیچ تیتری مثل (h2 , h1 , … ) در متن خود استفاده نکرده اید . %3$sسعی کنید چند تیتر به متن خود اضافه کنید %2$s."],"%1$sSubheading distribution%2$s: %3$d section of your text is longer than %4$d words and is not separated by any subheadings. %5$sAdd subheadings to improve readability%2$s.":["%1$sتوزیع زیرعنوان%2$s: %3$d بخش متن شما بیش از %4$d واژه است و با هیچ یک از زیرعنوان ها جدا نمی شود. %5$sزیرعنوان ها را برای بهبود خوانایی اضافه کنید%2$s."],"%1$sSubheading distribution%2$s: Great job!":["%1$sزیرنویس عناوین%2$s: کارت عالی بود!"],"%1$sSentence length%2$s: %3$s of the sentences contain more than %4$s words, which is more than the recommended maximum of %5$s. %6$sTry to shorten the sentences%2$s.":["%1$sطول جمله %2$s: %3$s از جملاتی که در متن استفاده کرده اید بیشتر از %4$s کلمه دارند , که بیشتر از حداکثر توصیه شده %5$s است . %6$sسعی کنید جملات خود را کوتاه تر کنید %2$s."],"%1$sSentence length%2$s: Great!":["%1$sتعداد کارکترهای جمله%2$s: عالی!"],"%1$sConsecutive sentences%2$s: There is enough variety in your sentences. That's great!":["%1$sجملات متوالی %2$s: تنوع کافی در جملات شما وجود دارد. خیلی عالیه!"],"%1$sConsecutive sentences%2$s: The text contains %3$d consecutive sentences starting with the same word. %5$sTry to mix things up%2$s!":["%1$sجملات پیوسته%2$s: متن حاوی %4$d مواردی است که %3$d یا بیشتر جملات متوالی با کلمه مشابه شروع می شود. %5$sسعی کنید همه چیز را مخلوط کنید%2$s!"],"%1$sPassive voice%2$s: %3$s of the sentences contain passive voice, which is more than the recommended maximum of %4$s. %5$sTry to use their active counterparts%2$s.":["%1$sPassive voice%2$s: %3$s of the sentences contain passive voice, which is more than the recommended maximum of %4$s. %5$sTry to use their active counterparts%2$s."],"%1$sPassive voice%2$s: You're using enough active voice. That's great!":["%1$sصدای مجهول%2$s: شما از صدای فعال کافی استفاده می کنید. بسیار عالی!"],"%1$sParagraph length%2$s: %3$d of the paragraphs contains more than the recommended maximum of %4$d words. %5$sShorten your paragraphs%2$s!":["%1$sطول پاراگراف %2$s: %3$dاز پاراگراف ها حاوی بیش از حداکثر پیشنهادی %4$d کلمه است. %5$sپاراگرافهای خود را کوتاه کنید%2$s!"],"%1$sParagraph length%2$s: None of the paragraphs are too long. Great job!":["%1$sطول پاراگراف %2$s:هیچ یک از پاراگراف های شما بیش از حد طولانی نیستند. خیلی عالی !"],"Good job!":["آفرین!"],"%1$sFlesch Reading Ease%2$s: The copy scores %3$s in the test, which is considered %4$s to read. %5$s%6$s%7$s":["%1$sسهولت خواندن فلاش%2$s: کپی نمرات %3$s در آزمون، که %4$s برای خواندن در نظر گرفته شده است. %5$s%6$s%7$s"],"Scroll to see the preview content.":["برای دیدن پیشنمایش محتوا اسکرول کنید."],"An error occurred in the '%1$s' assessment":["خطایی در ارزیابی '%1$s' رخ داده است"],"%1$s of the words contain %2$sover %3$s syllables%4$s, which is more than the recommended maximum of %5$s.":["%1$s از کلمات حاوی %2$s روی %3$s سیلاب %4$s، که بیش از حداکثر توصیه شده از %5$s است."],"%1$s of the words contain %2$sover %3$s syllables%4$s, which is less than or equal to the recommended maximum of %5$s.":["%1$s از کلمات حاوی %2$s روی %3$s سیلاب %4$s، که کمتر از یا برابر حداکثر توصیه شده از %5$s است."],"This is slightly below the recommended minimum of %5$d word. %3$sAdd a bit more copy%4$s.":["این کمی کمتر از حداقلل توصیه شده %5$d کلمه است.%3$s کمی بیشتر اضافه کنید%4$s."],"The meta description contains %1$d sentence %2$sover %3$s words%4$s. Try to shorten this sentence.":["توضیحات متا حاوی %1$d جمله %2$s بیش از %3$s کلمه %4$s است. سعی کنید جملات را کوتاه‌تر کنید."],"The meta description contains no sentences %1$sover %2$s words%3$s.":["توضیحات متا شامل هیچ جمله %1$s بیش از %2$s کلمه %3$s نیست."],"Mobile preview":["پیش نمایش موبایل"],"Desktop preview":["پیش نمایش دسکتاپ"],"Please provide an SEO title by editing the snippet below.":["لطفا یک عنوان سئو با ویرایش متن زیرارائه دهید."],"Meta description preview:":["پیش نمایش متای توضیحات:"],"Slug preview:":["پیش نمایش نامک:"],"SEO title preview:":["پیش نمایش عنوان سئو:"],"Close snippet editor":["بستن ویرایشگر اسنیپت"],"Slug":["نامک"],"Remove marks in the text":["علامات را در نوشته پاک کنید"],"Mark this result in the text":["علامت زدن این نتیجه در متن"],"Marks are disabled in current view":["علائم در نمای جاری غیرفعال هستند"],"Good SEO score":["نمره خوب سئو"],"OK SEO score":["امتیاز سئوی قابل قبول"],"Feedback":["بازخورد"],"ok":["تأیید"],"Please provide a meta description by editing the snippet below.":["لطفا با ویرایش متن زیر توضیحات متا را ارائه دهید."],"Edit snippet":["ویرایش اسنیپت"],"You can click on each element in the preview to jump to the Snippet Editor.":["شما می توانید برای ورود به ویرایشگر محدوده، روی هر پارامتر در پیش نمایش کلیک کنید."],"SEO title":["عنوان سئو"],"Needs improvement":["به بهبود نیاز دارد"],"Good":["خوب"],"very difficult":["خیلی سخت"],"Try to make shorter sentences, using less difficult words to improve readability":["سعی کنید برای خوانایی بیشتر جمله ها رو کوتاه تر، از کلمه های با سختی کمتر استفاده کنید"],"difficult":["سخت"],"Try to make shorter sentences to improve readability":["تلاش کنید جملات کوتاه‌تر برای بهبود خوانایی بسازید"],"fairly difficult":["واقعا سخت"],"OK":["تایید"],"fairly easy":["واقعا آسان"],"easy":["آسان"],"very easy":["خیلی راحت"],"Meta description":["توضیح متا"]}}}
languages/wordpress-seojs-fa_IR.json CHANGED
@@ -1 +1 @@
1
- {"domain":"wordpress-seo","locale_data":{"wordpress-seo":{"":{"domain":"wordpress-seo","plural-forms":"nplurals=1; plural=0;","lang":"fa"},"SEO data optimization is disabled for non-production environments.":[],"This feature includes and replaces the Text Link Counter and Internal Linking Analysis":[],"Stop SEO data optimization":["متوقف کردن بهینه سازی اطلاعات"],"Oops, something has gone wrong and we couldn't complete the optimization of your SEO data. Please click the button again to re-start the process.":[],"Optimizing SEO data... This may take a while.":[],"SEO data optimization complete":["بهینه سازی اطلاعات تکمیل گردید"],"Start SEO data optimization":["شروع بهینه سازی اطلاعات"],"Check out %s!":["بررسی خروجی %s !"],"Would you like to be able to add these related keyphrases to the %s analysis so you can optimize your content even further?":[],"We've encountered a problem trying to get related keyphrases. Please try again later.":[],"You've reached the maximum amount of 4 related keyphrases. You can change or remove related keyphrases in the %s metabox or sidebar.":[],"Please wait while %1$s connects to %2$s to get related keyphrases...":[],"Upgrade your %s plan":["ارتقا %s "],"You've reached your request limit for today. Check back tomorrow or upgrade your plan over at %s.":[],"Last month":["ماه گذشته"],"Two months ago":["دو ماه گذشته"],"Three months ago":["سه ماه گذشته"],"Four months ago":["چهار ماه گذشته"],"Five months ago":["پنج ماه گذشته"],"Six months ago":["شش ماه گذشته"],"Seven months ago":["هفت ماه گذشته"],"Eight months ago":["هشت ماه گذشته"],"Nine months ago":["نه ماه گذشته"],"Ten months ago":["ده ماه گذشته"],"Eleven months ago":["یازده ماه گذشته"],"Twelve months ago":["دوازده ماه گذشته"],"Get more insights at %s":["برای کسب اطلاعات بیشتر %s"],"Keyphrase volume in the last 12 months on a scale from 0 to 100.":[],"Learn more about the related keyphrases trend":[],"Trend":["روند"],"Learn more about the related keyphrases volume":[],"Volume":["مقدار"],"Related keyphrase":["عبارت کیلدی مرتبط"],"Select country":["انتخاب کشور"],"Show results for:":["نمایش نتایج برای :"],"Please enter a focus keyphrase first to get related keyphrases":[],"Sorry, there's no data available for that keyphrase/country combination.":[],"Get related keyphrases":["عبارات کلیدی مرتبط را دریافت کنید"],"Related keyphrases":["کلمات کلیدی مرتیط"],"The number of headers and header labels don't match.":[],"Twitter preview":["پیش نمایش تویتر"],"Facebook preview":["پیش نمایش فیسبوک"],"Return to your %s":["برگشت به %s"],"Make sure to save your %s for changes to take effect":["آیا اطمینان دارید این تغیرات %s ذخیره نمایید."],"Default for %1$s (%2$s)":["پیش فرض برای %1$s (%2$s)"],"This helps search engines understand your website and your content. You can change some of your settings for this page below.":["این به موتورهای جستجو کمک می کند وب سایت و محتوای شما را درک کنند. می توانید برخی از تنظیمات خود را برای این صفحه در زیر تغییر دهید."],"Yoast SEO automatically describes your pages using schema.org":["Yoast SEO به طور خودکار صفحات شما را با استفاده از schema.org توصیف می کند"],"default":["پیشفرض"],"Article type":["نوع مقاله"],"Page type":["نوع برگه"],"Learn more about page or content types":["درباره انواع برگه یا محتوا بیشتر بیاموزید"],"What type of page or content is this?":["این چه نوع برگه یا محتوایی است؟"],"Learn more about structured data with Schema.org":["با داده های ساخت یافته با Schema.org بیشتر بیاموزید"],"You can change the default type for %1$s in your %2$sSearch Appearance Settings%3$s.":["می توانید نوع پیش فرض را برای %1$s خود در%2$s تنظیمات ظاهر جستجو%3$s تغییر دهید."],"Default Article type":["نوع مقاله پیش‌فرض"],"Default Page type":["نوع برگه پیش‌فرض"],"Upon saving, this setting will apply to all of your %1$s. %1$s that are manually configured will be left untouched.":["پس از ذخیره ، این تنظیمات برای همه %1$s شما اعمال می شود. %1$s که به صورت دستی پیکربندی شده باشد دست نخورده باقی می ماند."],"Choose how your %1$s should be described by default in your site's schema.org markup. You can change these settings for individual %1$s.":["نحوه توصیف %1$s خود را به طور پیش فرض در علامت گذاری سایت schema.org انتخاب کنید. می توانید این تنظیمات را برای %1$s فردی تغییر دهید."],"Learn more about the schema settings":["درباره تنظیمات طرحواره بیشتر بیاموزید"],"Schema settings":["تنظیمات اسکیما(Schema)"],"Structured Data":["ساختار داده"],"Yoast How-to":[" یواست چگونه به "],"Yoast FAQ":["سوالات متداول یوست"],"Modify your %s description by editing it right here...":["تغییر دادن %s توضیح توسط ویرایش آن در این‌جا..."],"Modify your %s title by editing it right here...":["عنوان %s را در اینجا تغییر دهید..."],"%s preview":["%s پیش‌نمایش"],"Please upgrade your WordPress version or install the Gutenberg plugin to get this %1$s feature.":["لطفا نسخۀ وردپرس را ارتقاء دهید یا افزونۀ گوتنبرگ را برای دریافت این ویژگی %1$s نصب کنید."],"Marking links with nofollow/sponsored has been disabled for WordPress installs < 5.4.":["نشانه‌گذاری پیوندها با nofollow/sponsored در وردپرس قدیمی‌تر از 5.4 غیرفعال است."],"Open in new tab":["بازکردن در زبانه جدید"],"This is a sponsored link or advert (mark as %1$ssponsored%2$s)%3$s":["این یک پیوند sponsored یا تبلیغ است (نشانه‌دار به‌عنوان %1$ssponsored%2$s)%3$s"],"Search engines should ignore this link (mark as %1$snofollow%2$s)%3$s":["موتورهای جستجو باید این پیوند را نادیده بگیرند ( نشانه‌دار به‌عنوان%1$snofollow%2$s)%3$s"],"Learn more about marking a link as nofollow or sponsored.":["یادگیری بیشتر درباره نشانه‌دار کردن پیوند به‌عنوان nofollow یا sponsored."],"Link inserted.":["لینک درج شد."],"Link edited.":["لینک ویرایش شد."],"Warning: the link has been inserted but may have errors. Please test it.":["هشدار: پیوند وارد شده است، اما ممکن است خطاهایی داشته باشد. لطفا آن را امتحان کنید."],"Unlink":["حذف لینک"],"Link removed.":["پیوند پاک شد."],"Link":["پیوند"],"We've analyzed your post. There is still room for improvement!":["نوشته شما را آنالیز کردیم. هنوز راهی برای بهبود هست!"],"We've analyzed your post. Everything looks good. Well done!":["نوشته‌ی شما رو آنالیز کردیم. همه‌چیز به‌نظر می‌رسه که خوبه. آفرین!"],"No focus keyword was entered":["هیچ کلمه‌کلیدی کانونی، وارد نشده است"],"Share your post!":["اشتراک نوشته شما!"],"Improve your post with Yoast SEO":["نوشته خود را با افزونه سئو یواست بهبود ببخشید"],"SEO analysis:":["آنالیز سئو:"],"Your keyphrase is too long. It can be a maximum of 191 characters.":["کلیدواژه شما بسیار طولانی است. بیشترین حد آن می تواند 191 کاراکتر باشد."],"Learn more about the no-index setting on our help page.":["برای کسب اطلاعات بیشتر در مورد تنظیمات no index به صفحه ی راهنمای ما مراجعه کنید"],"Even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect.":["حتی اگر می توانید تنظیمات روبات های متا را در اینجا تنظیم کنید ، کل سایت روی noindex در تنظیمات حریم خصوصی یک صفحه تنظیم شده است ، بنابراین این تنظیمات تاثیری نخواهد داشت."],"Learn more about canonical URLs on our help page.":["برای کسب اطلاعات بیشتر در مورد url های کنونیکال به صفحه ی راهنما مراجعه کنید"],"Learn more about the breadcrumbs title setting on our help page.":["درباره تنظیمات عنوان ریزآدرس در برگه آموزش مطالعه کنید."],"Learn more about advanced meta robots settings on our help page.":["درباره تنظیمات پیشرفته روبات های متا در صفحه راهنمای ما اطلاعات بیشتری کسب کنید."],"Learn more about the no-follow setting on our help page.":["برای کسب اطلاعات بیشتر در مورد تنظیمات نوفالو به صفحه ی راهنمای ما مراجعه کنید"],"Should search engines follow links on this %s":["آیا موتورهای جستجو مجبور هستند لینک‌‌های این %s را دنبال کنند"],"Google preview":["پیش‌نمایش گوگل"],"When you click OK we will open our HelpScout beacon where you can find answers to your questions. This beacon will load our support data and also potentially set cookies.":["وقتی روی اوکی کلیک می کنید ما HelpScout beacon باز می کنیم جایی که بتوانید جواب سوال خود را بیابید. این beacon داده پشتیبانی را بارگداری می کند و همچنین کوکی تنظیم می کند."],"Schema":["اسکیما"],"Get the %s plugin now":["اکنون افزونه‌ی %s را تهیه کنید"],"Truly optimize your site for a local audience with our %s plugin! Optimized address details, opening hours, store locator and pickup option!":["با افزونه %s سایت خود را به درستی برای مخاطبین محلی بهینه کنید! جزئیات آدرس، ساعات کار، محل فروشگاه و موارد دیگر!"],"Serving local customers?":["به مشتریان محلی خدمت می‌رسانید؟"],"You can edit the details shown in meta data, like the social profiles, the name and the description of this user on their %1$s profile page.":["شما می توانید جزئیات نشان داده شده در متا داده مانند پروفایل های شبکه های اجتماعی, نام و توضیحات این کاربر را در صفحه پروفایل %1$s خودش مورد ویرایش قرار دهید."],"You have selected the user %1$s as the person this site represents. Their user profile information will now be used in search results. %2$sUpdate their profile to make sure the information is correct.%3$s":["شما کاربر %1$s بعنوان شخصی که در سایت معرفی میشود انتخاب کرده اید.اطلاعات حساب کاربری او بعنوان نتایج موتورهای جستجو قرار میگیرد. %2$s حساب کاربری را بروزرسانی کنید تا از صحت اطلاعات اطمینان حاصل کنید.%3$s"],"Please select a user below to make your site's meta data complete.":["لطفا از بین کاربران زیر یکی را برای تکمیل داده متای سایت انتخاب کنید."],"Select a user...":["انتخاب یک کاربر ..."],"New step added":["گام جدید اضافه شد"],"New question added":["سوال جدید اضافه شد"],"Did you know %s also analyzes the different word forms of your keyphrase, like plurals and past tenses?":["آیا می دانید %s نیز فرم های مختلف کلمه ای از کلیدواژه شما را، مانند چندگانگی و زمان های گذشته، تحلیل می کند؟"],"Help on choosing the perfect focus keyphrase":["راهنمایی در مورد انتخاب بهترین کلیدواژه کانونی"],"Would you like to add a related keyphrase?":["آیا می خواهید یک کلیدواژه مرتبط اضافه کنید؟"],"Go %s!":["برو به %s!"],"Rank better with synonyms & related keyphrases":["رتبه بهتر با کلمات مترادف و عبارات کلیدی مرتبط است"],"Add related keyphrase":["افزودن کلیدواژه مرتبط"],"Get %s":["گرفتن %s"],"Focus keyphrase":["کلیدواژه کانونی"],"Optional. Customize how you want to describe the duration of the instruction":["اختیاری. سفارشی‌سازی چگونگی مدت زمان آموزش را شرح دهید"],"Describe the duration of the instruction:":["مدت زمان آموزش را شرح دهید:"],"Learn more about the readability analysis":["یادگیری بیشتر راجع به آنالیز خوانایی"],"Readability analysis:":["آنالایز خوانایی"],"%s, %s and %s":["%s, %s و %s"],"%s and %s":["%s و %s"],"%d minute":["%d دقیقه"],"%d hour":["%d ساعت"],"%d day":["%d روز"],"Enter a step title":["عنوان قدم را وارد کنید"],"Optional. This can give you better control over the styling of the steps.":["اختیاری. این می تواند به شما برای بهبود کنترل استایل قدم ها کمک کند."],"CSS class(es) to apply to the steps":["کلاس های css می تواند به قدم‌ها اضافه شود"],"minutes":["دقیقه"],"hours":["ساعت"],"days":["روز"],"Create a How-to guide in an SEO-friendly way. You can only use one How-to block per post.":["ایجاد به گونه ای که دوستدار سئو باشد. شما تنها می توانید استفاده کنید یک چگونگی بلوک در هر نوشته."],"List your Frequently Asked Questions in an SEO-friendly way. You can only use one FAQ block per post.":["لیست سوالات متداول درباره روش های دوستدار سئو. شما تنها می توانید از یک بلوک FAQ برای هر نوشته استفاده کنید."],"Copy error":["کپی کردن خطا"],"An error occurred loading the %s primary taxonomy picker.":["خطایی در هنگام بارگذاری %s طبقه بندی اولیه طبقه بندی شده رخ داد."],"Time needed:":["زمان مورد نیاز:"],"Move question down":["انتقال سوال به پایین"],"Move question up":["انتقال سوال به بالا"],"Insert question":["درج سوال"],"Delete question":["حذف سوال"],"Enter the answer to the question":["افزودن پاسخ برای سوال"],"Enter a question":["یک سوال وارد کنید"],"Add question":["سوالی اضافه کنید"],"Frequently Asked Questions":["سوالات متداول"],"Great news: you can, with %s!":["خبر عالی: شما با %s می‌توانید"],"(Opens in a new browser window)":["(در یک پنجره جدید مرورگر باز شود)"],"Select the primary %s":["اولویت %s را انتخاب کنید"],"Are you trying to use multiple keyphrases? You should add them separately below.":["آیا می‌خواهید از چندین کلیدواژه استفاده کنید؟ شما باید آنها را جداگانه در زیر اضافه کنید."],"Mark as cornerstone content":["نشانه گذاری بعنوان محتوای مهم"],"Move step down":["حرکت گام به پایین"],"Move step up":["حرکت گام به بالا"],"Insert step":["گام را وارد کنید"],"Delete step":["گام را حذف کنید"],"Add image":["افزودن تصویر"],"Enter a step description":["توضیحات مرحله را وارد کنید"],"Enter a description":["ورود توضیحات"],"Unordered list":["لیست مرتبط نشده"],"Showing step items as an ordered list.":["نمایش گام موارد بعنوان لیست مرتب شده."],"Showing step items as an unordered list":["نمایش گام موارد بعنوان لیست مرتبط نشده"],"Add step":["گام را اضافه کنید"],"Delete total time":["کل زمان را حذف کنید"],"Add total time":["مجموع زمان را اضافه کنید"],"How to":["چگونه"],"How-to":["چگونه"],"Analysis results":["نتایج آنالیز"],"Enter a focus keyphrase to calculate the SEO score":["کلیدواژه کانونی را برای محاسبه نمره سئو وارد کنید"],"Learn more about Cornerstone Content.":["یادگیری بیشتر درباره محتوای مهم."],"Cornerstone content should be the most important and extensive articles on your site.":["محتوای مهم باید مهمترین و گسترده ترین مقالات سایت شما باشد."],"Add synonyms":["افزودن مترادف"],"Would you like to add keyphrase synonyms?":["آیا میخواهید مترادف‌های کلیدی را اضافه کنید؟"],"Current year":["سال جاری"],"Page":["برگه"],"Tagline":["شعار"],"Modify your meta description by editing it right here":["توضیحات متا را با ویرایش آن درست در اینجا اصلاح کنید"],"ID":["شناسه"],"Separator":["جداکننده"],"Search phrase":["عبارت جستجو"],"Term description":["توضیح شرایط"],"Tag description":["توضیح برچسب"],"Category description":["توضیح دسته"],"Primary category":["دسته اصلی"],"Category":["دسته"],"Excerpt only":["فقط خلاصه"],"Excerpt":["خلاصه"],"Site title":["عنوان سایت"],"Parent title":["عنوان والد"],"Date":["تاریخ"],"24/7 email support":["پشتیبانی ایمیلی 24/7"],"%s (current default for %s)":["%s (پیشفرض فعلی برای %s)"],"Allow search engines to show this %s in search results?":["به موتورهای جستجو اجازه نمایش این %s را می دهید؟"],"SEO analysis":["آنلایز سئو"],"Find out why you should upgrade to %s":["دلیل اینکه باید ارتقاء پیدا کنید به %s بفهمید"],"Do you want to preview what it will look like if people share this post on %s? You can, with %s.":["آیا می‌خواهید پیش‌نمایش اینکه چطور می‌شود اگر افراد این نوشته را در %s به اشتراک بگذارند را ببینید؟ شما می‌توانید با %s."],"Other benefits of %s for you:":["دیگر مزایای %s برای شما:"],"Cornerstone content":["محتوای شاخص"],"Superfast internal linking suggestions":["پیشنهادات پیوند‌دهی داخلی فوق العاده سریع"],"Great news: you can, with %1$s!":["خبر خوب: شما می توانید، با %1$s !"],"1 year free support and updates included!":["شامل 1 سال بروز رسانی و ارتقاء رایگان!"],"%1$sSocial media preview%2$s: Facebook & Twitter":["%1$sپیش نمایش شبکه های اجتماعی%2$s: فیسبوک و توئیتر"],"%1$sNo more dead links%2$s: easy redirect manager":["%1$sبدون پیوند شکسته%2$s: مدیریت آسان تغییر مسیر"],"No ads!":["بدون تبلیغات!"],"Name":["نام"],"Please provide a meta description by editing the snippet below.":["لطفا با ویرایش متن زیر توضیحات متا را ارائه دهید."],"The name of the person":["نام شخص"],"No":["خیر"],"Yes":["بله"],"Readability analysis":["تجزیه و تحلیل خوانایی"],"Open":["بازکردن"],"Yoast SEO":["سئو Yoast"],"Title":["عنوان"],"Close":["بستن"],"Canonical URL":["نشانی قانونی (Canonical)"],"Breadcrumbs Title":["عنوان مسیر راهنما"],"No Snippet":["بدون سربرگ"],"No Archive":["بدون بایگانی"],"No Image Index":["بدون ایندکس تصویر"],"Meta robots advanced":["متا روبات های پیشرفته"],"FAQ":["سوالات متداول"],"Settings":["تنظیمات"],"Advanced":["پیشرفته"],"SEO":["سئو"]}}}
1
+ {"domain":"wordpress-seo","locale_data":{"wordpress-seo":{"":{"domain":"wordpress-seo","plural-forms":"nplurals=1; plural=0;","lang":"fa"},"SEO data optimization is disabled for non-production environments.":[],"This feature includes and replaces the Text Link Counter and Internal Linking Analysis":[],"Stop SEO data optimization":["متوقف کردن بهینه سازی اطلاعات"],"Oops, something has gone wrong and we couldn't complete the optimization of your SEO data. Please click the button again to re-start the process.":["اوه ، مشکلی پیش آمده است و ما نتوانستیم بهینه سازی داده های شما را انجام دهیم. لطفاً مجدداً دکمه را کلیک کنید تا مراحل مجدد شروع شود."],"Optimizing SEO data... This may take a while.":["بهینه سازی داده ها ... این ممکن است مدتی طول بکشد"],"SEO data optimization complete":["بهینه سازی اطلاعات تکمیل گردید"],"Start SEO data optimization":["شروع بهینه سازی اطلاعات"],"Check out %s!":["بررسی خروجی %s !"],"Would you like to be able to add these related keyphrases to the %s analysis so you can optimize your content even further?":["آیا می خواهید این عبارات کلیدی مرتبط را به تجزیه و تحلیل%s اضافه کنید تا بتوانید محتوای خود را حتی بیشتر بهینه کنید؟"],"We've encountered a problem trying to get related keyphrases. Please try again later.":["ما برای بدست آوردن کلمات مرتبط دچار مشکل شده ایم. لطفا دوباره تلاش نمایید."],"You've reached the maximum amount of 4 related keyphrases. You can change or remove related keyphrases in the %s metabox or sidebar.":["شما به حداکثر 4 عبارت کلیدی مرتبط رسیده اید. شما می توانید کلمات کلیدی مرتبط در این %s متاباکس یا سایدربار راتغییر دهید یا پاک نمایید."],"Please wait while %1$s connects to %2$s to get related keyphrases...":["لطفا صبر کنید زیرا %1$s در حال ارتباط با %2$s برای دریافت کلمات کلیدی مرتبط می باشد."],"Upgrade your %s plan":["ارتقا %s "],"You've reached your request limit for today. Check back tomorrow or upgrade your plan over at %s.":["شما برای امروز به حد مجاز خود رسیده اید. فردا دوباره بررسی کنید یا برنامه خود را به %s ارتقا دهید"],"Last month":["ماه گذشته"],"Two months ago":["دو ماه گذشته"],"Three months ago":["سه ماه گذشته"],"Four months ago":["چهار ماه گذشته"],"Five months ago":["پنج ماه گذشته"],"Six months ago":["شش ماه گذشته"],"Seven months ago":["هفت ماه گذشته"],"Eight months ago":["هشت ماه گذشته"],"Nine months ago":["نه ماه گذشته"],"Ten months ago":["ده ماه گذشته"],"Eleven months ago":["یازده ماه گذشته"],"Twelve months ago":["دوازده ماه گذشته"],"Get more insights at %s":["برای کسب اطلاعات بیشتر %s"],"Keyphrase volume in the last 12 months on a scale from 0 to 100.":["مقدار کلمات کلیدی در 12 ماه گذشته در مقیاس 0 تا 100"],"Learn more about the related keyphrases trend":["درباره روند عبارات کلیدی مرتبط بیشتر بیاموزید"],"Trend":["روند"],"Learn more about the related keyphrases volume":["درباره مقدار عبارات کلیدی مرتبط بیشتر بیاموزید"],"Volume":["مقدار"],"Related keyphrase":["عبارت کیلدی مرتبط"],"Select country":["انتخاب کشور"],"Show results for:":["نمایش نتایج برای :"],"Please enter a focus keyphrase first to get related keyphrases":["لطفاً ابتدا یک کلمه کلیدی وارد کنید تا عبارتهای مرتبط را بدست آورید"],"Sorry, there's no data available for that keyphrase/country combination.":["با عرض پوزش ، هیچ داده ای برای آن عبارت کلیدی / ترکیب کشور موجود نیست"],"Get related keyphrases":["عبارات کلیدی مرتبط را دریافت کنید"],"Related keyphrases":["کلمات کلیدی مرتیط"],"The number of headers and header labels don't match.":["مقدار هدرها و برچسب های سرصفحه مطابقت ندارند."],"Twitter preview":["پیش نمایش تویتر"],"Facebook preview":["پیش نمایش فیسبوک"],"Return to your %s":["برگشت به %s"],"Make sure to save your %s for changes to take effect":["آیا اطمینان دارید این تغیرات %s ذخیره نمایید."],"Default for %1$s (%2$s)":["پیش فرض برای %1$s (%2$s)"],"This helps search engines understand your website and your content. You can change some of your settings for this page below.":["این به موتورهای جستجو کمک می کند وب سایت و محتوای شما را درک کنند. می توانید برخی از تنظیمات خود را برای این صفحه در زیر تغییر دهید."],"Yoast SEO automatically describes your pages using schema.org":["Yoast SEO به طور خودکار صفحات شما را با استفاده از schema.org توصیف می کند"],"default":["پیشفرض"],"Article type":["نوع مقاله"],"Page type":["نوع برگه"],"Learn more about page or content types":["درباره انواع برگه یا محتوا بیشتر بیاموزید"],"What type of page or content is this?":["این چه نوع برگه یا محتوایی است؟"],"Learn more about structured data with Schema.org":["با داده های ساخت یافته با Schema.org بیشتر بیاموزید"],"You can change the default type for %1$s in your %2$sSearch Appearance Settings%3$s.":["می توانید نوع پیش فرض را برای %1$s خود در%2$s تنظیمات ظاهر جستجو%3$s تغییر دهید."],"Default Article type":["نوع مقاله پیش‌فرض"],"Default Page type":["نوع برگه پیش‌فرض"],"Upon saving, this setting will apply to all of your %1$s. %1$s that are manually configured will be left untouched.":["پس از ذخیره ، این تنظیمات برای همه %1$s شما اعمال می شود. %1$s که به صورت دستی پیکربندی شده باشد دست نخورده باقی می ماند."],"Choose how your %1$s should be described by default in your site's schema.org markup. You can change these settings for individual %1$s.":["نحوه توصیف %1$s خود را به طور پیش فرض در علامت گذاری سایت schema.org انتخاب کنید. می توانید این تنظیمات را برای %1$s فردی تغییر دهید."],"Learn more about the schema settings":["درباره تنظیمات طرحواره بیشتر بیاموزید"],"Schema settings":["تنظیمات اسکیما(Schema)"],"Structured Data":["ساختار داده"],"Yoast How-to":[" یواست چگونه به "],"Yoast FAQ":["سوالات متداول یوست"],"Modify your %s description by editing it right here...":["تغییر دادن %s توضیح توسط ویرایش آن در این‌جا..."],"Modify your %s title by editing it right here...":["عنوان %s را در اینجا تغییر دهید..."],"%s preview":["%s پیش‌نمایش"],"Please upgrade your WordPress version or install the Gutenberg plugin to get this %1$s feature.":["لطفا نسخۀ وردپرس را ارتقاء دهید یا افزونۀ گوتنبرگ را برای دریافت این ویژگی %1$s نصب کنید."],"Marking links with nofollow/sponsored has been disabled for WordPress installs < 5.4.":["نشانه‌گذاری پیوندها با nofollow/sponsored در وردپرس قدیمی‌تر از 5.4 غیرفعال است."],"Open in new tab":["بازکردن در زبانه جدید"],"This is a sponsored link or advert (mark as %1$ssponsored%2$s)%3$s":["این یک پیوند sponsored یا تبلیغ است (نشانه‌دار به‌عنوان %1$ssponsored%2$s)%3$s"],"Search engines should ignore this link (mark as %1$snofollow%2$s)%3$s":["موتورهای جستجو باید این پیوند را نادیده بگیرند ( نشانه‌دار به‌عنوان%1$snofollow%2$s)%3$s"],"Learn more about marking a link as nofollow or sponsored.":["یادگیری بیشتر درباره نشانه‌دار کردن پیوند به‌عنوان nofollow یا sponsored."],"Link inserted.":["لینک درج شد."],"Link edited.":["لینک ویرایش شد."],"Warning: the link has been inserted but may have errors. Please test it.":["هشدار: پیوند وارد شده است، اما ممکن است خطاهایی داشته باشد. لطفا آن را امتحان کنید."],"Unlink":["حذف لینک"],"Link removed.":["پیوند پاک شد."],"Link":["پیوند"],"We've analyzed your post. There is still room for improvement!":["نوشته شما را آنالیز کردیم. هنوز راهی برای بهبود هست!"],"We've analyzed your post. Everything looks good. Well done!":["نوشته‌ی شما رو آنالیز کردیم. همه‌چیز به‌نظر می‌رسه که خوبه. آفرین!"],"No focus keyword was entered":["هیچ کلمه‌کلیدی کانونی، وارد نشده است"],"Share your post!":["اشتراک نوشته شما!"],"Improve your post with Yoast SEO":["نوشته خود را با افزونه سئو یواست بهبود ببخشید"],"SEO analysis:":["آنالیز سئو:"],"Your keyphrase is too long. It can be a maximum of 191 characters.":["کلیدواژه شما بسیار طولانی است. بیشترین حد آن می تواند 191 کاراکتر باشد."],"Learn more about the no-index setting on our help page.":["برای کسب اطلاعات بیشتر در مورد تنظیمات no index به صفحه ی راهنمای ما مراجعه کنید"],"Even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect.":["حتی اگر می توانید تنظیمات روبات های متا را در اینجا تنظیم کنید ، کل سایت روی noindex در تنظیمات حریم خصوصی یک صفحه تنظیم شده است ، بنابراین این تنظیمات تاثیری نخواهد داشت."],"Learn more about canonical URLs on our help page.":["برای کسب اطلاعات بیشتر در مورد url های کنونیکال به صفحه ی راهنما مراجعه کنید"],"Learn more about the breadcrumbs title setting on our help page.":["درباره تنظیمات عنوان ریزآدرس در برگه آموزش مطالعه کنید."],"Learn more about advanced meta robots settings on our help page.":["درباره تنظیمات پیشرفته روبات های متا در صفحه راهنمای ما اطلاعات بیشتری کسب کنید."],"Learn more about the no-follow setting on our help page.":["برای کسب اطلاعات بیشتر در مورد تنظیمات نوفالو به صفحه ی راهنمای ما مراجعه کنید"],"Should search engines follow links on this %s":["آیا موتورهای جستجو مجبور هستند لینک‌‌های این %s را دنبال کنند"],"Google preview":["پیش‌نمایش گوگل"],"When you click OK we will open our HelpScout beacon where you can find answers to your questions. This beacon will load our support data and also potentially set cookies.":["وقتی روی اوکی کلیک می کنید ما HelpScout beacon باز می کنیم جایی که بتوانید جواب سوال خود را بیابید. این beacon داده پشتیبانی را بارگداری می کند و همچنین کوکی تنظیم می کند."],"Schema":["اسکیما"],"Get the %s plugin now":["اکنون افزونه‌ی %s را تهیه کنید"],"Truly optimize your site for a local audience with our %s plugin! Optimized address details, opening hours, store locator and pickup option!":["با افزونه %s سایت خود را به درستی برای مخاطبین محلی بهینه کنید! جزئیات آدرس، ساعات کار، محل فروشگاه و موارد دیگر!"],"Serving local customers?":["به مشتریان محلی خدمت می‌رسانید؟"],"You can edit the details shown in meta data, like the social profiles, the name and the description of this user on their %1$s profile page.":["شما می توانید جزئیات نشان داده شده در متا داده مانند پروفایل های شبکه های اجتماعی, نام و توضیحات این کاربر را در صفحه پروفایل %1$s خودش مورد ویرایش قرار دهید."],"You have selected the user %1$s as the person this site represents. Their user profile information will now be used in search results. %2$sUpdate their profile to make sure the information is correct.%3$s":["شما کاربر %1$s بعنوان شخصی که در سایت معرفی میشود انتخاب کرده اید.اطلاعات حساب کاربری او بعنوان نتایج موتورهای جستجو قرار میگیرد. %2$s حساب کاربری را بروزرسانی کنید تا از صحت اطلاعات اطمینان حاصل کنید.%3$s"],"Please select a user below to make your site's meta data complete.":["لطفا از بین کاربران زیر یکی را برای تکمیل داده متای سایت انتخاب کنید."],"Select a user...":["انتخاب یک کاربر ..."],"New step added":["گام جدید اضافه شد"],"New question added":["سوال جدید اضافه شد"],"Did you know %s also analyzes the different word forms of your keyphrase, like plurals and past tenses?":["آیا می دانید %s نیز فرم های مختلف کلمه ای از کلیدواژه شما را، مانند چندگانگی و زمان های گذشته، تحلیل می کند؟"],"Help on choosing the perfect focus keyphrase":["راهنمایی در مورد انتخاب بهترین کلیدواژه کانونی"],"Would you like to add a related keyphrase?":["آیا می خواهید یک کلیدواژه مرتبط اضافه کنید؟"],"Go %s!":["برو به %s!"],"Rank better with synonyms & related keyphrases":["رتبه بهتر با کلمات مترادف و عبارات کلیدی مرتبط است"],"Add related keyphrase":["افزودن کلیدواژه مرتبط"],"Get %s":["گرفتن %s"],"Focus keyphrase":["کلیدواژه کانونی"],"Optional. Customize how you want to describe the duration of the instruction":["اختیاری. سفارشی‌سازی چگونگی مدت زمان آموزش را شرح دهید"],"Describe the duration of the instruction:":["مدت زمان آموزش را شرح دهید:"],"Learn more about the readability analysis":["یادگیری بیشتر راجع به آنالیز خوانایی"],"Readability analysis:":["آنالایز خوانایی"],"%s, %s and %s":["%s, %s و %s"],"%s and %s":["%s و %s"],"%d minute":["%d دقیقه"],"%d hour":["%d ساعت"],"%d day":["%d روز"],"Enter a step title":["عنوان قدم را وارد کنید"],"Optional. This can give you better control over the styling of the steps.":["اختیاری. این می تواند به شما برای بهبود کنترل استایل قدم ها کمک کند."],"CSS class(es) to apply to the steps":["کلاس های css می تواند به قدم‌ها اضافه شود"],"minutes":["دقیقه"],"hours":["ساعت"],"days":["روز"],"Create a How-to guide in an SEO-friendly way. You can only use one How-to block per post.":["ایجاد به گونه ای که دوستدار سئو باشد. شما تنها می توانید استفاده کنید یک چگونگی بلوک در هر نوشته."],"List your Frequently Asked Questions in an SEO-friendly way. You can only use one FAQ block per post.":["لیست سوالات متداول درباره روش های دوستدار سئو. شما تنها می توانید از یک بلوک FAQ برای هر نوشته استفاده کنید."],"Copy error":["کپی کردن خطا"],"An error occurred loading the %s primary taxonomy picker.":["خطایی در هنگام بارگذاری %s طبقه بندی اولیه طبقه بندی شده رخ داد."],"Time needed:":["زمان مورد نیاز:"],"Move question down":["انتقال سوال به پایین"],"Move question up":["انتقال سوال به بالا"],"Insert question":["درج سوال"],"Delete question":["حذف سوال"],"Enter the answer to the question":["افزودن پاسخ برای سوال"],"Enter a question":["یک سوال وارد کنید"],"Add question":["سوالی اضافه کنید"],"Frequently Asked Questions":["سوالات متداول"],"Great news: you can, with %s!":["خبر عالی: شما با %s می‌توانید"],"(Opens in a new browser window)":["(در یک پنجره جدید مرورگر باز شود)"],"Select the primary %s":["اولویت %s را انتخاب کنید"],"Are you trying to use multiple keyphrases? You should add them separately below.":["آیا می‌خواهید از چندین کلیدواژه استفاده کنید؟ شما باید آنها را جداگانه در زیر اضافه کنید."],"Mark as cornerstone content":["نشانه گذاری بعنوان محتوای مهم"],"Move step down":["حرکت گام به پایین"],"Move step up":["حرکت گام به بالا"],"Insert step":["گام را وارد کنید"],"Delete step":["گام را حذف کنید"],"Add image":["افزودن تصویر"],"Enter a step description":["توضیحات مرحله را وارد کنید"],"Enter a description":["ورود توضیحات"],"Unordered list":["لیست مرتبط نشده"],"Showing step items as an ordered list.":["نمایش گام موارد بعنوان لیست مرتب شده."],"Showing step items as an unordered list":["نمایش گام موارد بعنوان لیست مرتبط نشده"],"Add step":["گام را اضافه کنید"],"Delete total time":["کل زمان را حذف کنید"],"Add total time":["مجموع زمان را اضافه کنید"],"How to":["چگونه"],"How-to":["چگونه"],"Analysis results":["نتایج آنالیز"],"Enter a focus keyphrase to calculate the SEO score":["کلیدواژه کانونی را برای محاسبه نمره سئو وارد کنید"],"Learn more about Cornerstone Content.":["یادگیری بیشتر درباره محتوای مهم."],"Cornerstone content should be the most important and extensive articles on your site.":["محتوای مهم باید مهمترین و گسترده ترین مقالات سایت شما باشد."],"Add synonyms":["افزودن مترادف"],"Would you like to add keyphrase synonyms?":["آیا میخواهید مترادف‌های کلیدی را اضافه کنید؟"],"Current year":["سال جاری"],"Page":["برگه"],"Tagline":["شعار"],"Modify your meta description by editing it right here":["توضیحات متا را با ویرایش آن درست در اینجا اصلاح کنید"],"ID":["شناسه"],"Separator":["جداکننده"],"Search phrase":["عبارت جستجو"],"Term description":["توضیح شرایط"],"Tag description":["توضیح برچسب"],"Category description":["توضیح دسته"],"Primary category":["دسته اصلی"],"Category":["دسته"],"Excerpt only":["فقط خلاصه"],"Excerpt":["خلاصه"],"Site title":["عنوان سایت"],"Parent title":["عنوان والد"],"Date":["تاریخ"],"24/7 email support":["پشتیبانی ایمیلی 24/7"],"%s (current default for %s)":["%s (پیشفرض فعلی برای %s)"],"Allow search engines to show this %s in search results?":["به موتورهای جستجو اجازه نمایش این %s را می دهید؟"],"SEO analysis":["آنلایز سئو"],"Find out why you should upgrade to %s":["دلیل اینکه باید ارتقاء پیدا کنید به %s بفهمید"],"Do you want to preview what it will look like if people share this post on %s? You can, with %s.":["آیا می‌خواهید پیش‌نمایش اینکه چطور می‌شود اگر افراد این نوشته را در %s به اشتراک بگذارند را ببینید؟ شما می‌توانید با %s."],"Other benefits of %s for you:":["دیگر مزایای %s برای شما:"],"Cornerstone content":["محتوای شاخص"],"Superfast internal linking suggestions":["پیشنهادات پیوند‌دهی داخلی فوق العاده سریع"],"Great news: you can, with %1$s!":["خبر خوب: شما می توانید، با %1$s !"],"1 year free support and updates included!":["شامل 1 سال بروز رسانی و ارتقاء رایگان!"],"%1$sSocial media preview%2$s: Facebook & Twitter":["%1$sپیش نمایش شبکه های اجتماعی%2$s: فیسبوک و توئیتر"],"%1$sNo more dead links%2$s: easy redirect manager":["%1$sبدون پیوند شکسته%2$s: مدیریت آسان تغییر مسیر"],"No ads!":["بدون تبلیغات!"],"Name":["نام"],"Please provide a meta description by editing the snippet below.":["لطفا با ویرایش متن زیر توضیحات متا را ارائه دهید."],"The name of the person":["نام شخص"],"No":["خیر"],"Yes":["بله"],"Readability analysis":["تجزیه و تحلیل خوانایی"],"Open":["بازکردن"],"Yoast SEO":["سئو Yoast"],"Title":["عنوان"],"Close":["بستن"],"Canonical URL":["نشانی قانونی (Canonical)"],"Breadcrumbs Title":["عنوان مسیر راهنما"],"No Snippet":["بدون سربرگ"],"No Archive":["بدون بایگانی"],"No Image Index":["بدون ایندکس تصویر"],"Meta robots advanced":["متا روبات های پیشرفته"],"FAQ":["سوالات متداول"],"Settings":["تنظیمات"],"Advanced":["پیشرفته"],"SEO":["سئو"]}}}
languages/wordpress-seojs-sv_SE.json CHANGED
@@ -1 +1 @@
1
- {"domain":"wordpress-seo","locale_data":{"wordpress-seo":{"":{"domain":"wordpress-seo","plural-forms":"nplurals=2; plural=n != 1;","lang":"sv_SE"},"SEO data optimization is disabled for non-production environments.":[],"This feature includes and replaces the Text Link Counter and Internal Linking Analysis":[],"Stop SEO data optimization":[],"Oops, something has gone wrong and we couldn't complete the optimization of your SEO data. Please click the button again to re-start the process.":[],"Optimizing SEO data... This may take a while.":[],"SEO data optimization complete":[],"Start SEO data optimization":[],"Check out %s!":[],"Would you like to be able to add these related keyphrases to the %s analysis so you can optimize your content even further?":[],"We've encountered a problem trying to get related keyphrases. Please try again later.":[],"You've reached the maximum amount of 4 related keyphrases. You can change or remove related keyphrases in the %s metabox or sidebar.":[],"Please wait while %1$s connects to %2$s to get related keyphrases...":[],"Upgrade your %s plan":[],"You've reached your request limit for today. Check back tomorrow or upgrade your plan over at %s.":[],"Last month":["Förra månaden"],"Two months ago":["Två månader sedan"],"Three months ago":["Tre månader sedan"],"Four months ago":["Fyra månader sedan"],"Five months ago":["Fem månader sedan"],"Six months ago":["Sex månader sedan"],"Seven months ago":["Sju månader sedan"],"Eight months ago":["Åtta månader sedan"],"Nine months ago":["Nio månader sedan"],"Ten months ago":["Tio månader sedan"],"Eleven months ago":["Elva månader sedan"],"Twelve months ago":["Tolv månader sedan"],"Get more insights at %s":[],"Keyphrase volume in the last 12 months on a scale from 0 to 100.":[],"Learn more about the related keyphrases trend":[],"Trend":[],"Learn more about the related keyphrases volume":[],"Volume":["Volym"],"Related keyphrase":[],"Select country":["Välj land"],"Show results for:":["Visa resultat för:"],"Please enter a focus keyphrase first to get related keyphrases":[],"Sorry, there's no data available for that keyphrase/country combination.":[],"Get related keyphrases":[],"Related keyphrases":[],"The number of headers and header labels don't match.":[],"Twitter preview":["Förhandsgranskning för Twitter"],"Facebook preview":["Förhandsgranskning för Facebook"],"Return to your %s":["Gå tillbaka till ditt %s"],"Make sure to save your %s for changes to take effect":["Du måste spara denna/detta %s för att ändringarna ska ske"],"Default for %1$s (%2$s)":["Standard för %1$s (%2$s)"],"This helps search engines understand your website and your content. You can change some of your settings for this page below.":["Detta hjälper sökmotorer att förstå din webbplats och ditt innehåll. Du kan ändra några av dina inställningar för den här sidan nedan."],"Yoast SEO automatically describes your pages using schema.org":["Yoast SEO beskriver automatiskt dina sidor med schema.org"],"default":["standard"],"Article type":["Artikeltyp"],"Page type":["Sidtyp"],"Learn more about page or content types":["Läs mer om sidor eller innehållstyper"],"What type of page or content is this?":["Vilken typ av sida eller innehåll är det här?"],"Learn more about structured data with Schema.org":["Läs mer om strukturerade data med Schema.org"],"You can change the default type for %1$s in your %2$sSearch Appearance Settings%3$s.":["Du kan ändra standardtypen för %1$s i dina %2$sinställningar för sökutseende%3$s."],"Default Article type":["Förvald artikeltyp"],"Default Page type":["Förvald sidtyp"],"Upon saving, this setting will apply to all of your %1$s. %1$s that are manually configured will be left untouched.":["När du sparar kommer denna inställning att tillämpas för %1$s. %1$s som konfigureras manuellt påverkas inte.","När du sparar kommer denna inställning att tillämpas för alla %1$s. %1$s som konfigureras manuellt påverkas inte."],"Choose how your %1$s should be described by default in your site's schema.org markup. You can change these settings for individual %1$s.":["Välj hur du vill att %1$s som standard ska beskrivas i schema.org-kodningen för din webbplats. Du kan ändra dessa inställningar för enstaka %1$s."],"Learn more about the schema settings":["Läs mer om schema-inställningarna"],"Schema settings":["Inställningar för Schema"],"Structured Data":["Strukturerad data"],"Yoast How-to":["Yoast-handledning"],"Yoast FAQ":["Vanliga frågor om Yoast"],"Modify your %s description by editing it right here...":["Ändra din %s-beskrivning genom att redigera den här…"],"Modify your %s title by editing it right here...":["Ändra din %s-rubrik genom att redigera den här…"],"%s preview":["Förhandsgranskning av %s"],"Please upgrade your WordPress version or install the Gutenberg plugin to get this %1$s feature.":["Uppgradera din WordPress-version eller installera tillägget Gutenberg för att få denna %1$s-funktion."],"Marking links with nofollow/sponsored has been disabled for WordPress installs < 5.4.":["Markering av länkar med nofollow/sponsrad har inaktiverats för WordPress-installationer < 5.4."],"Open in new tab":["Öppna i ny flik"],"This is a sponsored link or advert (mark as %1$ssponsored%2$s)%3$s":["Detta är en sponsrad länk eller reklam (märk som %1$ssponsrad%2$s)%3$s"],"Search engines should ignore this link (mark as %1$snofollow%2$s)%3$s":["Sökmotorer bör ignorera denna länk (märk som %1$snofollow%2$s)%3$s"],"Learn more about marking a link as nofollow or sponsored.":["Lär dig mer om att markera en länk som nofollow eller sponsrad."],"Link inserted.":["Länk infogad."],"Link edited.":["Länk redigerad."],"Warning: the link has been inserted but may have errors. Please test it.":["Varning: länken har infogats men kan innehålla fel. Testa den."],"Unlink":["Avlänka"],"Link removed.":["Länk borttagen."],"Link":["Länk"],"We've analyzed your post. There is still room for improvement!":["Vi har analyserat ditt inlägg. Det finns fortfarande rum för förbättringar!"],"We've analyzed your post. Everything looks good. Well done!":["Vi har analyserat ditt inlägg. Allt ser fint ut, bra jobbat!"],"No focus keyword was entered":["Inget fokusnyckelord angavs"],"Share your post!":["Dela ditt inlägg!"],"Improve your post with Yoast SEO":["Förbättra ditt inlägg med Yoast SEO"],"SEO analysis:":["SEO-analys:"],"Your keyphrase is too long. It can be a maximum of 191 characters.":["Din nyckelfras är för lång. Den får maximalt vara 191 tecken."],"Learn more about the no-index setting on our help page.":["Läs mer om inställningen no-index på vår hjälpsida."],"Even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect.":["Även om du kan ändra meta-inställningarna för robotar här, så är hela webbplatsen inställd på noindex i de övergripande sekretessinställningarna, så dessa inställningar har ingen effekt."],"Learn more about canonical URLs on our help page.":["Läs mer om kanoniska URL:er på vår hjälpsida."],"Learn more about the breadcrumbs title setting on our help page.":["Läs mer om inställningarna för synliga sökvägar i rubriken på vår hjälpsida."],"Learn more about advanced meta robots settings on our help page.":["Läs mer om avancerade metainställningar för robotar på vår hjälpsida."],"Learn more about the no-follow setting on our help page.":["Läs mer om inställningen no-follow på vår hjälpsida."],"Should search engines follow links on this %s":["Ska sökmotorer följa länkar på denna %s"],"Google preview":["Google förhandsgranskning"],"When you click OK we will open our HelpScout beacon where you can find answers to your questions. This beacon will load our support data and also potentially set cookies.":["När du klickar på OK öppnar vi vår HelpScout Beacon där du hittar svar på dina frågor. Denna hjälpnavigatör laddar vår support-information och kommer eventuellt också att skapa några cookies."],"Schema":["Schema"],"Get the %s plugin now":["Skaffa tillägget %s nu"],"Truly optimize your site for a local audience with our %s plugin! Optimized address details, opening hours, store locator and pickup option!":["Optimera din webbplats för lokala besökare med vårt tillägg %s! Optimerade adressuppgifter, öppettider, butikssökare och val för avhämtning!"],"Serving local customers?":["Betjänar du lokala kunder?"],"You can edit the details shown in meta data, like the social profiles, the name and the description of this user on their %1$s profile page.":["Du kan redigera detaljerna som visas i metadata, som social profil, namnet och beskrivningen av denna användare på dess %1$s profilsida."],"You have selected the user %1$s as the person this site represents. Their user profile information will now be used in search results. %2$sUpdate their profile to make sure the information is correct.%3$s":["Du har valt användaren %1$s som den person denna webbplats representerar. Deras användarprofilinformation kommer nu att användas i sökresultaten. %2$sUppdatera dennes profil för att säkerställa att informationen är korrekt.%3$s"],"Please select a user below to make your site's meta data complete.":["Välj en användare nedan för att göra din webbplats metadata komplett."],"Select a user...":["Välj en användare…"],"New step added":["Nytt steg tillagd"],"New question added":["Ny fråga tillagd"],"Did you know %s also analyzes the different word forms of your keyphrase, like plurals and past tenses?":["Visste du att %s också analyserar olika versioner av ord i din nyckelordsfras, till exempel plural och olika tempus?"],"Help on choosing the perfect focus keyphrase":["Hjälp att välja den perfekta fokusnyckelordsfrasen"],"Would you like to add a related keyphrase?":["Vill du lägga till en relaterad nyckelordsfras?"],"Go %s!":["Kör %s!"],"Rank better with synonyms & related keyphrases":["Ranka högre med synonymer och relaterade nyckelordsfraser"],"Add related keyphrase":["Lägg till relaterad nyckelordsfras"],"Get %s":["Skaffa %s"],"Focus keyphrase":["Fokusnyckelordsfras"],"Optional. Customize how you want to describe the duration of the instruction":["Valfritt. Anpassa hur du vill beskriva varaktigheten av instruktionen"],"Describe the duration of the instruction:":["Beskriv varaktigheten av instruktionen:"],"Learn more about the readability analysis":["Lär dig mer om läsbarhetsanalysen"],"Readability analysis:":["Läsbarhetsanalys:"],"%s, %s and %s":["%s, %s och %s"],"%s and %s":["%s och %s"],"%d minute":["%d minut","%d minuter"],"%d hour":["%d timme","%d timmar"],"%d day":["%d dag","%d dagar"],"Enter a step title":["Ange en stegrubrik"],"Optional. This can give you better control over the styling of the steps.":["Valfritt. Detta kan ge dig bättre kontroll över utseendet på stegen."],"CSS class(es) to apply to the steps":["CSS-klass(er) som ska tillämpas på steget"],"minutes":["minuter"],"hours":["timmar"],"days":["dagar"],"Create a How-to guide in an SEO-friendly way. You can only use one How-to block per post.":["Skapa en Hur-gör-man-guide på ett SEO-vänligt sätt. Du kan endast använda ett Hur-gör-man-block per inlägg."],"List your Frequently Asked Questions in an SEO-friendly way. You can only use one FAQ block per post.":["Lista dina vanliga frågor på ett SEO-vänligt sätt. Du kan endast använda ett block för vanliga frågor per inlägg."],"Copy error":["Kopieringsfel"],"An error occurred loading the %s primary taxonomy picker.":["Ett fel uppstod under hämtning av %s primära taxonomi-väljaren."],"Time needed:":["Tid som behövs:"],"Move question down":["Flytta fråga ner"],"Move question up":["Flytta fråga upp"],"Insert question":["Infoga fråga"],"Delete question":["Ta bort fråga"],"Enter the answer to the question":["Ange svaret på frågan"],"Enter a question":["Ange en fråga"],"Add question":["Lägg till fråga"],"Frequently Asked Questions":["Vanliga frågor"],"Great news: you can, with %s!":["Bra nyheter: du kan, med %s!"],"(Opens in a new browser window)":["(Öppnas i ett nytt webbläsarfönster)"],"Select the primary %s":["Välj den primära %s"],"Are you trying to use multiple keyphrases? You should add them separately below.":["Försöker du använda flera nyckelordsfraser? Du borde lägga till dem separat nedan."],"Mark as cornerstone content":["Markera som grundstensinnehåll"],"Move step down":["Flytta steg ner"],"Move step up":["Flytta steg upp"],"Insert step":["Infoga steg"],"Delete step":["Ta bort steg"],"Add image":["Lägg till bild"],"Enter a step description":["Ange en stegbeskrivning"],"Enter a description":["Ange en beskrivning"],"Unordered list":["Osorterad lista"],"Showing step items as an ordered list.":["Visar stegobjekt i en sorterad lista."],"Showing step items as an unordered list":["Visar stegobjekt i en osorterad lista"],"Add step":["Lägg till steg"],"Delete total time":["Ta bort total tid"],"Add total time":["Lägg till total tid"],"How to":["Hur man gör"],"How-to":["Hur-man-gör"],"Analysis results":["Analysresultat"],"Enter a focus keyphrase to calculate the SEO score":["Ange en fokus-nyckelordsfras för att beräkna SEO-poängen"],"Learn more about Cornerstone Content.":["Lär dig mer om grundstensinnehåll."],"Cornerstone content should be the most important and extensive articles on your site.":["Grundstensinnehåll ska vara de viktigaste och mest omfattande artiklarna på din webbplats."],"Add synonyms":["Lägg till synonymer"],"Would you like to add keyphrase synonyms?":["Vill du lägga till nyckelordsfras-synonymer?"],"Current year":["Nuvarande år"],"Page":["Sida"],"Tagline":["Slogan"],"Modify your meta description by editing it right here":["Redigera din metabeskrivning genom att ändra den här"],"ID":["ID"],"Separator":["Avgränsare"],"Search phrase":["Sökfras"],"Term description":["Termbeskrivning"],"Tag description":["Etikettbeskrivning"],"Category description":["Kategoribeskrivning"],"Primary category":["Huvudkategori"],"Category":["Kategori"],"Excerpt only":["Endast utdrag"],"Excerpt":["Utdrag"],"Site title":["Sidrubrik"],"Parent title":["Överordnad rubrik"],"Date":["Datum"],"24/7 email support":["E-postsupport dygnet runt"],"%s (current default for %s)":["%s (nuvarande standard för %s)"],"Allow search engines to show this %s in search results?":["Tillåt sökmotorer att visa denna/detta %s i sökresultat?"],"SEO analysis":["SEO-analys"],"Find out why you should upgrade to %s":["Ta reda på varför du borde uppgradera till %s"],"Do you want to preview what it will look like if people share this post on %s? You can, with %s.":["Vill du förhandsgranska hur det kommer att se ut om människor delar detta inlägg på %s? Det kan du med %s."],"Other benefits of %s for you:":["Fler fördelar för dig med %s:"],"Cornerstone content":["Grundstensinnehåll"],"Superfast internal linking suggestions":["Supersnabba interna länkningsförslag"],"Great news: you can, with %1$s!":["Goda nyheter: du kan, med %1$s!"],"1 year free support and updates included!":["1 års fri support och uppdateringar ingår!"],"%1$sSocial media preview%2$s: Facebook & Twitter":["%1$sFörhandsgranskning för sociala medier%2$s: Facebook och Twitter"],"%1$sNo more dead links%2$s: easy redirect manager":["%1$sGör dig av med döda länkar%2$s: easy redirect manager"],"No ads!":["Ingen reklam!"],"Name":["Namn"],"Please provide a meta description by editing the snippet below.":["Ange en metabeskrivning genom att redigera förhandsvisningstexten nedan."],"The name of the person":["Personens namn"],"No":["Nej"],"Yes":["Ja"],"Readability analysis":["Läsbarhetsanalys"],"Open":["Öppna"],"Yoast SEO":["Yoast SEO"],"Title":["Rubrik"],"Close":["Stäng"],"Canonical URL":["Kanonisk URL"],"Breadcrumbs Title":["Rubrik för synlig sökväg"],"No Snippet":["Ingen förhandsvisningstext"],"No Archive":["Inget arkiv"],"No Image Index":["Inget bild-index"],"Meta robots advanced":["Meta-robotar avancerat"],"FAQ":["Vanliga frågor"],"Settings":["Inställningar"],"Advanced":["Avancerat"],"SEO":["SEO"]}}}
1
+ {"domain":"wordpress-seo","locale_data":{"wordpress-seo":{"":{"domain":"wordpress-seo","plural-forms":"nplurals=2; plural=n != 1;","lang":"sv_SE"},"SEO data optimization is disabled for non-production environments.":[],"This feature includes and replaces the Text Link Counter and Internal Linking Analysis":[],"Stop SEO data optimization":[],"Oops, something has gone wrong and we couldn't complete the optimization of your SEO data. Please click the button again to re-start the process.":[],"Optimizing SEO data... This may take a while.":[],"SEO data optimization complete":[],"Start SEO data optimization":[],"Check out %s!":["Kolla in %s!"],"Would you like to be able to add these related keyphrases to the %s analysis so you can optimize your content even further?":[],"We've encountered a problem trying to get related keyphrases. Please try again later.":[],"You've reached the maximum amount of 4 related keyphrases. You can change or remove related keyphrases in the %s metabox or sidebar.":[],"Please wait while %1$s connects to %2$s to get related keyphrases...":[],"Upgrade your %s plan":[],"You've reached your request limit for today. Check back tomorrow or upgrade your plan over at %s.":[],"Last month":["Förra månaden"],"Two months ago":["Två månader sedan"],"Three months ago":["Tre månader sedan"],"Four months ago":["Fyra månader sedan"],"Five months ago":["Fem månader sedan"],"Six months ago":["Sex månader sedan"],"Seven months ago":["Sju månader sedan"],"Eight months ago":["Åtta månader sedan"],"Nine months ago":["Nio månader sedan"],"Ten months ago":["Tio månader sedan"],"Eleven months ago":["Elva månader sedan"],"Twelve months ago":["Tolv månader sedan"],"Get more insights at %s":[],"Keyphrase volume in the last 12 months on a scale from 0 to 100.":[],"Learn more about the related keyphrases trend":[],"Trend":["Trend"],"Learn more about the related keyphrases volume":[],"Volume":["Volym"],"Related keyphrase":["Relaterad nyckelordsfras"],"Select country":["Välj land"],"Show results for:":["Visa resultat för:"],"Please enter a focus keyphrase first to get related keyphrases":[],"Sorry, there's no data available for that keyphrase/country combination.":[],"Get related keyphrases":["Hämta relaterade nyckelordsfraser"],"Related keyphrases":["Relaterade nyckelordsfraser"],"The number of headers and header labels don't match.":[],"Twitter preview":["Förhandsgranskning för Twitter"],"Facebook preview":["Förhandsgranskning för Facebook"],"Return to your %s":["Gå tillbaka till ditt %s"],"Make sure to save your %s for changes to take effect":["Du måste spara denna/detta %s för att ändringarna ska ske"],"Default for %1$s (%2$s)":["Standard för %1$s (%2$s)"],"This helps search engines understand your website and your content. You can change some of your settings for this page below.":["Detta hjälper sökmotorer att förstå din webbplats och ditt innehåll. Du kan ändra några av dina inställningar för den här sidan nedan."],"Yoast SEO automatically describes your pages using schema.org":["Yoast SEO beskriver automatiskt dina sidor med schema.org"],"default":["standard"],"Article type":["Artikeltyp"],"Page type":["Sidtyp"],"Learn more about page or content types":["Läs mer om sidor eller innehållstyper"],"What type of page or content is this?":["Vilken typ av sida eller innehåll är det här?"],"Learn more about structured data with Schema.org":["Läs mer om strukturerade data med Schema.org"],"You can change the default type for %1$s in your %2$sSearch Appearance Settings%3$s.":["Du kan ändra standardtypen för %1$s i dina %2$sinställningar för sökutseende%3$s."],"Default Article type":["Förvald artikeltyp"],"Default Page type":["Förvald sidtyp"],"Upon saving, this setting will apply to all of your %1$s. %1$s that are manually configured will be left untouched.":["När du sparar kommer denna inställning att tillämpas för %1$s. %1$s som konfigureras manuellt påverkas inte.","När du sparar kommer denna inställning att tillämpas för alla %1$s. %1$s som konfigureras manuellt påverkas inte."],"Choose how your %1$s should be described by default in your site's schema.org markup. You can change these settings for individual %1$s.":["Välj hur du vill att %1$s som standard ska beskrivas i schema.org-kodningen för din webbplats. Du kan ändra dessa inställningar för enstaka %1$s."],"Learn more about the schema settings":["Läs mer om schema-inställningarna"],"Schema settings":["Inställningar för Schema"],"Structured Data":["Strukturerad data"],"Yoast How-to":["Yoast-handledning"],"Yoast FAQ":["Vanliga frågor om Yoast"],"Modify your %s description by editing it right here...":["Ändra din %s-beskrivning genom att redigera den här…"],"Modify your %s title by editing it right here...":["Ändra din %s-rubrik genom att redigera den här…"],"%s preview":["Förhandsgranskning av %s"],"Please upgrade your WordPress version or install the Gutenberg plugin to get this %1$s feature.":["Uppgradera din WordPress-version eller installera tillägget Gutenberg för att få denna %1$s-funktion."],"Marking links with nofollow/sponsored has been disabled for WordPress installs < 5.4.":["Markering av länkar med nofollow/sponsrad har inaktiverats för WordPress-installationer < 5.4."],"Open in new tab":["Öppna i ny flik"],"This is a sponsored link or advert (mark as %1$ssponsored%2$s)%3$s":["Detta är en sponsrad länk eller reklam (märk som %1$ssponsrad%2$s)%3$s"],"Search engines should ignore this link (mark as %1$snofollow%2$s)%3$s":["Sökmotorer bör ignorera denna länk (märk som %1$snofollow%2$s)%3$s"],"Learn more about marking a link as nofollow or sponsored.":["Lär dig mer om att markera en länk som nofollow eller sponsrad."],"Link inserted.":["Länk infogad."],"Link edited.":["Länk redigerad."],"Warning: the link has been inserted but may have errors. Please test it.":["Varning: länken har infogats men kan innehålla fel. Testa den."],"Unlink":["Avlänka"],"Link removed.":["Länk borttagen."],"Link":["Länk"],"We've analyzed your post. There is still room for improvement!":["Vi har analyserat ditt inlägg. Det finns fortfarande rum för förbättringar!"],"We've analyzed your post. Everything looks good. Well done!":["Vi har analyserat ditt inlägg. Allt ser fint ut, bra jobbat!"],"No focus keyword was entered":["Inget fokusnyckelord angavs"],"Share your post!":["Dela ditt inlägg!"],"Improve your post with Yoast SEO":["Förbättra ditt inlägg med Yoast SEO"],"SEO analysis:":["SEO-analys:"],"Your keyphrase is too long. It can be a maximum of 191 characters.":["Din nyckelfras är för lång. Den får maximalt vara 191 tecken."],"Learn more about the no-index setting on our help page.":["Läs mer om inställningen no-index på vår hjälpsida."],"Even though you can set the meta robots setting here, the entire site is set to noindex in the sitewide privacy settings, so these settings won't have an effect.":["Även om du kan ändra meta-inställningarna för robotar här, så är hela webbplatsen inställd på noindex i de övergripande sekretessinställningarna, så dessa inställningar har ingen effekt."],"Learn more about canonical URLs on our help page.":["Läs mer om kanoniska URL:er på vår hjälpsida."],"Learn more about the breadcrumbs title setting on our help page.":["Läs mer om inställningarna för synliga sökvägar i rubriken på vår hjälpsida."],"Learn more about advanced meta robots settings on our help page.":["Läs mer om avancerade metainställningar för robotar på vår hjälpsida."],"Learn more about the no-follow setting on our help page.":["Läs mer om inställningen no-follow på vår hjälpsida."],"Should search engines follow links on this %s":["Ska sökmotorer följa länkar på denna %s"],"Google preview":["Google förhandsgranskning"],"When you click OK we will open our HelpScout beacon where you can find answers to your questions. This beacon will load our support data and also potentially set cookies.":["När du klickar på OK öppnar vi vår HelpScout Beacon där du hittar svar på dina frågor. Denna hjälpnavigatör laddar vår support-information och kommer eventuellt också att skapa några cookies."],"Schema":["Schema"],"Get the %s plugin now":["Skaffa tillägget %s nu"],"Truly optimize your site for a local audience with our %s plugin! Optimized address details, opening hours, store locator and pickup option!":["Optimera din webbplats för lokala besökare med vårt tillägg %s! Optimerade adressuppgifter, öppettider, butikssökare och val för avhämtning!"],"Serving local customers?":["Betjänar du lokala kunder?"],"You can edit the details shown in meta data, like the social profiles, the name and the description of this user on their %1$s profile page.":["Du kan redigera detaljerna som visas i metadata, som social profil, namnet och beskrivningen av denna användare på dess %1$s profilsida."],"You have selected the user %1$s as the person this site represents. Their user profile information will now be used in search results. %2$sUpdate their profile to make sure the information is correct.%3$s":["Du har valt användaren %1$s som den person denna webbplats representerar. Deras användarprofilinformation kommer nu att användas i sökresultaten. %2$sUppdatera dennes profil för att säkerställa att informationen är korrekt.%3$s"],"Please select a user below to make your site's meta data complete.":["Välj en användare nedan för att göra din webbplats metadata komplett."],"Select a user...":["Välj en användare…"],"New step added":["Nytt steg tillagd"],"New question added":["Ny fråga tillagd"],"Did you know %s also analyzes the different word forms of your keyphrase, like plurals and past tenses?":["Visste du att %s också analyserar olika versioner av ord i din nyckelordsfras, till exempel plural och olika tempus?"],"Help on choosing the perfect focus keyphrase":["Hjälp att välja den perfekta fokusnyckelordsfrasen"],"Would you like to add a related keyphrase?":["Vill du lägga till en relaterad nyckelordsfras?"],"Go %s!":["Kör %s!"],"Rank better with synonyms & related keyphrases":["Ranka högre med synonymer och relaterade nyckelordsfraser"],"Add related keyphrase":["Lägg till relaterad nyckelordsfras"],"Get %s":["Skaffa %s"],"Focus keyphrase":["Fokusnyckelordsfras"],"Optional. Customize how you want to describe the duration of the instruction":["Valfritt. Anpassa hur du vill beskriva varaktigheten av instruktionen"],"Describe the duration of the instruction:":["Beskriv varaktigheten av instruktionen:"],"Learn more about the readability analysis":["Lär dig mer om läsbarhetsanalysen"],"Readability analysis:":["Läsbarhetsanalys:"],"%s, %s and %s":["%s, %s och %s"],"%s and %s":["%s och %s"],"%d minute":["%d minut","%d minuter"],"%d hour":["%d timme","%d timmar"],"%d day":["%d dag","%d dagar"],"Enter a step title":["Ange en stegrubrik"],"Optional. This can give you better control over the styling of the steps.":["Valfritt. Detta kan ge dig bättre kontroll över utseendet på stegen."],"CSS class(es) to apply to the steps":["CSS-klass(er) som ska tillämpas på steget"],"minutes":["minuter"],"hours":["timmar"],"days":["dagar"],"Create a How-to guide in an SEO-friendly way. You can only use one How-to block per post.":["Skapa en Hur-gör-man-guide på ett SEO-vänligt sätt. Du kan endast använda ett Hur-gör-man-block per inlägg."],"List your Frequently Asked Questions in an SEO-friendly way. You can only use one FAQ block per post.":["Lista dina vanliga frågor på ett SEO-vänligt sätt. Du kan endast använda ett block för vanliga frågor per inlägg."],"Copy error":["Kopieringsfel"],"An error occurred loading the %s primary taxonomy picker.":["Ett fel uppstod under hämtning av %s primära taxonomi-väljaren."],"Time needed:":["Tid som behövs:"],"Move question down":["Flytta fråga ner"],"Move question up":["Flytta fråga upp"],"Insert question":["Infoga fråga"],"Delete question":["Ta bort fråga"],"Enter the answer to the question":["Ange svaret på frågan"],"Enter a question":["Ange en fråga"],"Add question":["Lägg till fråga"],"Frequently Asked Questions":["Vanliga frågor"],"Great news: you can, with %s!":["Bra nyheter: du kan, med %s!"],"(Opens in a new browser window)":["(Öppnas i ett nytt webbläsarfönster)"],"Select the primary %s":["Välj den primära %s"],"Are you trying to use multiple keyphrases? You should add them separately below.":["Försöker du använda flera nyckelordsfraser? Du borde lägga till dem separat nedan."],"Mark as cornerstone content":["Markera som grundstensinnehåll"],"Move step down":["Flytta steg ner"],"Move step up":["Flytta steg upp"],"Insert step":["Infoga steg"],"Delete step":["Ta bort steg"],"Add image":["Lägg till bild"],"Enter a step description":["Ange en stegbeskrivning"],"Enter a description":["Ange en beskrivning"],"Unordered list":["Osorterad lista"],"Showing step items as an ordered list.":["Visar stegobjekt i en sorterad lista."],"Showing step items as an unordered list":["Visar stegobjekt i en osorterad lista"],"Add step":["Lägg till steg"],"Delete total time":["Ta bort total tid"],"Add total time":["Lägg till total tid"],"How to":["Hur man gör"],"How-to":["Hur-man-gör"],"Analysis results":["Analysresultat"],"Enter a focus keyphrase to calculate the SEO score":["Ange en fokus-nyckelordsfras för att beräkna SEO-poängen"],"Learn more about Cornerstone Content.":["Lär dig mer om grundstensinnehåll."],"Cornerstone content should be the most important and extensive articles on your site.":["Grundstensinnehåll ska vara de viktigaste och mest omfattande artiklarna på din webbplats."],"Add synonyms":["Lägg till synonymer"],"Would you like to add keyphrase synonyms?":["Vill du lägga till nyckelordsfras-synonymer?"],"Current year":["Nuvarande år"],"Page":["Sida"],"Tagline":["Slogan"],"Modify your meta description by editing it right here":["Redigera din metabeskrivning genom att ändra den här"],"ID":["ID"],"Separator":["Avgränsare"],"Search phrase":["Sökfras"],"Term description":["Termbeskrivning"],"Tag description":["Etikettbeskrivning"],"Category description":["Kategoribeskrivning"],"Primary category":["Huvudkategori"],"Category":["Kategori"],"Excerpt only":["Endast utdrag"],"Excerpt":["Utdrag"],"Site title":["Sidrubrik"],"Parent title":["Överordnad rubrik"],"Date":["Datum"],"24/7 email support":["E-postsupport dygnet runt"],"%s (current default for %s)":["%s (nuvarande standard för %s)"],"Allow search engines to show this %s in search results?":["Tillåt sökmotorer att visa denna/detta %s i sökresultat?"],"SEO analysis":["SEO-analys"],"Find out why you should upgrade to %s":["Ta reda på varför du borde uppgradera till %s"],"Do you want to preview what it will look like if people share this post on %s? You can, with %s.":["Vill du förhandsgranska hur det kommer att se ut om människor delar detta inlägg på %s? Det kan du med %s."],"Other benefits of %s for you:":["Fler fördelar för dig med %s:"],"Cornerstone content":["Grundstensinnehåll"],"Superfast internal linking suggestions":["Supersnabba interna länkningsförslag"],"Great news: you can, with %1$s!":["Goda nyheter: du kan, med %1$s!"],"1 year free support and updates included!":["1 års fri support och uppdateringar ingår!"],"%1$sSocial media preview%2$s: Facebook & Twitter":["%1$sFörhandsgranskning för sociala medier%2$s: Facebook och Twitter"],"%1$sNo more dead links%2$s: easy redirect manager":["%1$sGör dig av med döda länkar%2$s: easy redirect manager"],"No ads!":["Ingen reklam!"],"Name":["Namn"],"Please provide a meta description by editing the snippet below.":["Ange en metabeskrivning genom att redigera förhandsvisningstexten nedan."],"The name of the person":["Personens namn"],"No":["Nej"],"Yes":["Ja"],"Readability analysis":["Läsbarhetsanalys"],"Open":["Öppna"],"Yoast SEO":["Yoast SEO"],"Title":["Rubrik"],"Close":["Stäng"],"Canonical URL":["Kanonisk URL"],"Breadcrumbs Title":["Rubrik för synlig sökväg"],"No Snippet":["Ingen förhandsvisningstext"],"No Archive":["Inget arkiv"],"No Image Index":["Inget bild-index"],"Meta robots advanced":["Meta-robotar avancerat"],"FAQ":["Vanliga frågor"],"Settings":["Inställningar"],"Advanced":["Avancerat"],"SEO":["SEO"]}}}
readme.txt CHANGED
@@ -5,7 +5,7 @@ License: GPLv3
5
  License URI: http://www.gnu.org/licenses/gpl.html
6
  Tags: SEO, XML sitemap, Content analysis, Readability, Schema
7
  Tested up to: 5.5.1
8
- Stable tag: 15.1
9
  Requires PHP: 5.6.20
10
 
11
  Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.
@@ -208,6 +208,13 @@ Your question has most likely been answered on our knowledge base: [kb.yoast.com
208
 
209
  == Changelog ==
210
 
 
 
 
 
 
 
 
211
  = 15.1 =
212
  Release Date: October 14th, 2020
213
 
5
  License URI: http://www.gnu.org/licenses/gpl.html
6
  Tags: SEO, XML sitemap, Content analysis, Readability, Schema
7
  Tested up to: 5.5.1
8
+ Stable tag: 15.1.1
9
  Requires PHP: 5.6.20
10
 
11
  Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the Yoast SEO plugin.
208
 
209
  == Changelog ==
210
 
211
+ = 15.1.1 =
212
+ Release Date: October 15th, 2020
213
+
214
+ Bugfixes:
215
+
216
+ * Fixes a bug where the indexing button on the Tools page would keep showing up because certain objects would be detected as requiring indexing but would not actually be indexed during the indexing process.
217
+
218
  = 15.1 =
219
  Release Date: October 14th, 2020
220
 
src/actions/indexing/abstract-link-indexing-action.php CHANGED
@@ -93,12 +93,8 @@ abstract class Abstract_Link_Indexing_Action implements Indexation_Action_Interf
93
  $indexables = [];
94
  foreach ( $objects as $object ) {
95
  $indexable = $this->repository->find_by_id_and_type( $object->id, $object->type );
96
-
97
- // It's possible the indexable was created without having its links indexed.
98
- if ( $indexable->link_count === null ) {
99
- $this->link_builder->build( $indexable, $object->content );
100
- $indexable->save();
101
- }
102
 
103
  $indexables[] = $indexable;
104
  }
93
  $indexables = [];
94
  foreach ( $objects as $object ) {
95
  $indexable = $this->repository->find_by_id_and_type( $object->id, $object->type );
96
+ $this->link_builder->build( $indexable, $object->content );
97
+ $indexable->save();
 
 
 
 
98
 
99
  $indexables[] = $indexable;
100
  }
src/actions/indexing/post-link-indexing-action.php CHANGED
@@ -104,6 +104,7 @@ class Post_Link_Indexing_Action extends Abstract_Link_Indexing_Action {
104
  target_indexable_id IS NULL
105
  AND `type` = 'internal'
106
  AND target_post_id IS NOT NULL
 
107
  )
108
  )
109
  AND post_status = 'publish'
104
  target_indexable_id IS NULL
105
  AND `type` = 'internal'
106
  AND target_post_id IS NOT NULL
107
+ AND target_post_id != 0
108
  )
109
  )
110
  AND post_status = 'publish'
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInit4dcfb807f7b8795c3a2d8c1268571821::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitf1e55b6cb407c1dcf1d6812e88662150::getLoader();
vendor/composer/ClassLoader.php CHANGED
@@ -60,7 +60,7 @@ class ClassLoader
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
- return call_user_func_array('array_merge', $this->prefixesPsr0);
64
  }
65
 
66
  return array();
@@ -279,7 +279,7 @@ class ClassLoader
279
  */
280
  public function setApcuPrefix($apcuPrefix)
281
  {
282
- $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
283
  }
284
 
285
  /**
@@ -377,11 +377,11 @@ class ClassLoader
377
  $subPath = $class;
378
  while (false !== $lastPos = strrpos($subPath, '\\')) {
379
  $subPath = substr($subPath, 0, $lastPos);
380
- $search = $subPath.'\\';
381
  if (isset($this->prefixDirsPsr4[$search])) {
 
382
  foreach ($this->prefixDirsPsr4[$search] as $dir) {
383
- $length = $this->prefixLengthsPsr4[$first][$search];
384
- if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
385
  return $file;
386
  }
387
  }
60
  public function getPrefixes()
61
  {
62
  if (!empty($this->prefixesPsr0)) {
63
+ return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
64
  }
65
 
66
  return array();
279
  */
280
  public function setApcuPrefix($apcuPrefix)
281
  {
282
+ $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
283
  }
284
 
285
  /**
377
  $subPath = $class;
378
  while (false !== $lastPos = strrpos($subPath, '\\')) {
379
  $subPath = substr($subPath, 0, $lastPos);
380
+ $search = $subPath . '\\';
381
  if (isset($this->prefixDirsPsr4[$search])) {
382
+ $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
383
  foreach ($this->prefixDirsPsr4[$search] as $dir) {
384
+ if (file_exists($file = $dir . $pathEnd)) {
 
385
  return $file;
386
  }
387
  }
vendor/composer/autoload_classmap.php CHANGED
@@ -530,6 +530,7 @@ return array(
530
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBag' => $baseDir . '/vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBag.php',
531
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBagInterface' => $baseDir . '/vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php',
532
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ResettableContainerInterface' => $baseDir . '/vendor_prefixed/symfony/dependency-injection/ResettableContainerInterface.php',
 
533
  'Yoast\\WP\\Lib\\Migrations\\Adapter' => $baseDir . '/lib/migrations/adapter.php',
534
  'Yoast\\WP\\Lib\\Migrations\\Column' => $baseDir . '/lib/migrations/column.php',
535
  'Yoast\\WP\\Lib\\Migrations\\Constants' => $baseDir . '/lib/migrations/constants.php',
530
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBag' => $baseDir . '/vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBag.php',
531
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBagInterface' => $baseDir . '/vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php',
532
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ResettableContainerInterface' => $baseDir . '/vendor_prefixed/symfony/dependency-injection/ResettableContainerInterface.php',
533
+ 'YoastSEO_Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Idn' => $baseDir . '/vendor_prefixed/symfony/polyfill-intl-idn/Idn.php',
534
  'Yoast\\WP\\Lib\\Migrations\\Adapter' => $baseDir . '/lib/migrations/adapter.php',
535
  'Yoast\\WP\\Lib\\Migrations\\Column' => $baseDir . '/lib/migrations/column.php',
536
  'Yoast\\WP\\Lib\\Migrations\\Constants' => $baseDir . '/lib/migrations/constants.php',
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInit4dcfb807f7b8795c3a2d8c1268571821
6
  {
7
  private static $loader;
8
 
@@ -13,21 +13,24 @@ class ComposerAutoloaderInit4dcfb807f7b8795c3a2d8c1268571821
13
  }
14
  }
15
 
 
 
 
16
  public static function getLoader()
17
  {
18
  if (null !== self::$loader) {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit4dcfb807f7b8795c3a2d8c1268571821', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit4dcfb807f7b8795c3a2d8c1268571821', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInit4dcfb807f7b8795c3a2d8c1268571821::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitf1e55b6cb407c1dcf1d6812e88662150
6
  {
7
  private static $loader;
8
 
13
  }
14
  }
15
 
16
+ /**
17
+ * @return \Composer\Autoload\ClassLoader
18
+ */
19
  public static function getLoader()
20
  {
21
  if (null !== self::$loader) {
22
  return self::$loader;
23
  }
24
 
25
+ spl_autoload_register(array('ComposerAutoloaderInitf1e55b6cb407c1dcf1d6812e88662150', 'loadClassLoader'), true, true);
26
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
27
+ spl_autoload_unregister(array('ComposerAutoloaderInitf1e55b6cb407c1dcf1d6812e88662150', 'loadClassLoader'));
28
 
29
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
30
  if ($useStaticLoader) {
31
  require_once __DIR__ . '/autoload_static.php';
32
 
33
+ call_user_func(\Composer\Autoload\ComposerStaticInitf1e55b6cb407c1dcf1d6812e88662150::getInitializer($loader));
34
  } else {
35
  $map = require __DIR__ . '/autoload_namespaces.php';
36
  foreach ($map as $namespace => $path) {
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInit4dcfb807f7b8795c3a2d8c1268571821
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'C' =>
@@ -545,6 +545,7 @@ class ComposerStaticInit4dcfb807f7b8795c3a2d8c1268571821
545
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBag' => __DIR__ . '/../..' . '/vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBag.php',
546
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBagInterface' => __DIR__ . '/../..' . '/vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php',
547
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ResettableContainerInterface' => __DIR__ . '/../..' . '/vendor_prefixed/symfony/dependency-injection/ResettableContainerInterface.php',
 
548
  'Yoast\\WP\\Lib\\Migrations\\Adapter' => __DIR__ . '/../..' . '/lib/migrations/adapter.php',
549
  'Yoast\\WP\\Lib\\Migrations\\Column' => __DIR__ . '/../..' . '/lib/migrations/column.php',
550
  'Yoast\\WP\\Lib\\Migrations\\Constants' => __DIR__ . '/../..' . '/lib/migrations/constants.php',
@@ -873,9 +874,9 @@ class ComposerStaticInit4dcfb807f7b8795c3a2d8c1268571821
873
  public static function getInitializer(ClassLoader $loader)
874
  {
875
  return \Closure::bind(function () use ($loader) {
876
- $loader->prefixLengthsPsr4 = ComposerStaticInit4dcfb807f7b8795c3a2d8c1268571821::$prefixLengthsPsr4;
877
- $loader->prefixDirsPsr4 = ComposerStaticInit4dcfb807f7b8795c3a2d8c1268571821::$prefixDirsPsr4;
878
- $loader->classMap = ComposerStaticInit4dcfb807f7b8795c3a2d8c1268571821::$classMap;
879
 
880
  }, null, ClassLoader::class);
881
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitf1e55b6cb407c1dcf1d6812e88662150
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'C' =>
545
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBag' => __DIR__ . '/../..' . '/vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBag.php',
546
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ParameterBag\\ParameterBagInterface' => __DIR__ . '/../..' . '/vendor_prefixed/symfony/dependency-injection/ParameterBag/ParameterBagInterface.php',
547
  'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection\\ResettableContainerInterface' => __DIR__ . '/../..' . '/vendor_prefixed/symfony/dependency-injection/ResettableContainerInterface.php',
548
+ 'YoastSEO_Vendor\\Symfony\\Polyfill\\Intl\\Idn\\Idn' => __DIR__ . '/../..' . '/vendor_prefixed/symfony/polyfill-intl-idn/Idn.php',
549
  'Yoast\\WP\\Lib\\Migrations\\Adapter' => __DIR__ . '/../..' . '/lib/migrations/adapter.php',
550
  'Yoast\\WP\\Lib\\Migrations\\Column' => __DIR__ . '/../..' . '/lib/migrations/column.php',
551
  'Yoast\\WP\\Lib\\Migrations\\Constants' => __DIR__ . '/../..' . '/lib/migrations/constants.php',
874
  public static function getInitializer(ClassLoader $loader)
875
  {
876
  return \Closure::bind(function () use ($loader) {
877
+ $loader->prefixLengthsPsr4 = ComposerStaticInitf1e55b6cb407c1dcf1d6812e88662150::$prefixLengthsPsr4;
878
+ $loader->prefixDirsPsr4 = ComposerStaticInitf1e55b6cb407c1dcf1d6812e88662150::$prefixDirsPsr4;
879
+ $loader->classMap = ComposerStaticInitf1e55b6cb407c1dcf1d6812e88662150::$classMap;
880
 
881
  }, null, ClassLoader::class);
882
  }
vendor_prefixed/symfony/polyfill-intl-idn/Idn.php ADDED
@@ -0,0 +1,709 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Symfony package.
5
+ *
6
+ * (c) Fabien Potencier <fabien@symfony.com> and Trevor Rowbotham <trevor.rowbotham@pm.me>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+ namespace YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn;
12
+
13
+ use Exception;
14
+ use Normalizer;
15
+ use YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges;
16
+ use YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex;
17
+ /**
18
+ * @see https://www.unicode.org/reports/tr46/
19
+ *
20
+ * @internal
21
+ */
22
+ final class Idn
23
+ {
24
+ const ERROR_EMPTY_LABEL = 1;
25
+ const ERROR_LABEL_TOO_LONG = 2;
26
+ const ERROR_DOMAIN_NAME_TOO_LONG = 4;
27
+ const ERROR_LEADING_HYPHEN = 8;
28
+ const ERROR_TRAILING_HYPHEN = 0x10;
29
+ const ERROR_HYPHEN_3_4 = 0x20;
30
+ const ERROR_LEADING_COMBINING_MARK = 0x40;
31
+ const ERROR_DISALLOWED = 0x80;
32
+ const ERROR_PUNYCODE = 0x100;
33
+ const ERROR_LABEL_HAS_DOT = 0x200;
34
+ const ERROR_INVALID_ACE_LABEL = 0x400;
35
+ const ERROR_BIDI = 0x800;
36
+ const ERROR_CONTEXTJ = 0x1000;
37
+ const ERROR_CONTEXTO_PUNCTUATION = 0x2000;
38
+ const ERROR_CONTEXTO_DIGITS = 0x4000;
39
+ const INTL_IDNA_VARIANT_2003 = 0;
40
+ const INTL_IDNA_VARIANT_UTS46 = 1;
41
+ const MAX_DOMAIN_SIZE = 253;
42
+ const MAX_LABEL_SIZE = 63;
43
+ const BASE = 36;
44
+ const TMIN = 1;
45
+ const TMAX = 26;
46
+ const SKEW = 38;
47
+ const DAMP = 700;
48
+ const INITIAL_BIAS = 72;
49
+ const INITIAL_N = 128;
50
+ const DELIMITER = '-';
51
+ const MAX_INT = 2147483647;
52
+ /**
53
+ * Contains the numeric value of a basic code point (for use in representing integers) in the
54
+ * range 0 to BASE-1, or -1 if b is does not represent a value.
55
+ *
56
+ * @var array<int, int>
57
+ */
58
+ private static $basicToDigit = array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
59
+ /**
60
+ * @var array<int, int>
61
+ */
62
+ private static $virama;
63
+ /**
64
+ * @var array<int, string>
65
+ */
66
+ private static $mapped;
67
+ /**
68
+ * @var array<int, bool>
69
+ */
70
+ private static $ignored;
71
+ /**
72
+ * @var array<int, string>
73
+ */
74
+ private static $deviation;
75
+ /**
76
+ * @var array<int, bool>
77
+ */
78
+ private static $disallowed;
79
+ /**
80
+ * @var array<int, string>
81
+ */
82
+ private static $disallowed_STD3_mapped;
83
+ /**
84
+ * @var array<int, bool>
85
+ */
86
+ private static $disallowed_STD3_valid;
87
+ /**
88
+ * @var bool
89
+ */
90
+ private static $mappingTableLoaded = \false;
91
+ /**
92
+ * @see https://www.unicode.org/reports/tr46/#ToASCII
93
+ *
94
+ * @param string $domainName
95
+ * @param int $options
96
+ * @param int $variant
97
+ * @param array $idna_info
98
+ *
99
+ * @return string|false
100
+ */
101
+ public static function idn_to_ascii($domainName, $options = \IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
102
+ {
103
+ if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
104
+ @\trigger_error('idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
105
+ }
106
+ $options = array('CheckHyphens' => \true, 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & \IDNA_CHECK_BIDI), 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & \IDNA_CHECK_CONTEXTJ), 'UseSTD3ASCIIRules' => 0 !== ($options & \IDNA_USE_STD3_RULES), 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & \IDNA_NONTRANSITIONAL_TO_ASCII), 'VerifyDnsLength' => \true);
107
+ $info = new \YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Info();
108
+ $labels = self::process((string) $domainName, $options, $info);
109
+ foreach ($labels as $i => $label) {
110
+ // Only convert labels to punycode that contain non-ASCII code points
111
+ if (1 === \preg_match('/[^\\x00-\\x7F]/', $label)) {
112
+ try {
113
+ $label = 'xn--' . self::punycodeEncode($label);
114
+ } catch (\Exception $e) {
115
+ $info->errors |= self::ERROR_PUNYCODE;
116
+ }
117
+ $labels[$i] = $label;
118
+ }
119
+ }
120
+ if ($options['VerifyDnsLength']) {
121
+ self::validateDomainAndLabelLength($labels, $info);
122
+ }
123
+ $idna_info = array('result' => \implode('.', $labels), 'isTransitionalDifferent' => $info->transitionalDifferent, 'errors' => $info->errors);
124
+ return 0 === $info->errors ? $idna_info['result'] : \false;
125
+ }
126
+ /**
127
+ * @see https://www.unicode.org/reports/tr46/#ToUnicode
128
+ *
129
+ * @param string $domainName
130
+ * @param int $options
131
+ * @param int $variant
132
+ * @param array $idna_info
133
+ *
134
+ * @return string|false
135
+ */
136
+ public static function idn_to_utf8($domainName, $options = \IDNA_DEFAULT, $variant = self::INTL_IDNA_VARIANT_UTS46, &$idna_info = array())
137
+ {
138
+ if (\PHP_VERSION_ID >= 70200 && self::INTL_IDNA_VARIANT_2003 === $variant) {
139
+ @\trigger_error('idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated', \E_USER_DEPRECATED);
140
+ }
141
+ $info = new \YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Info();
142
+ $labels = self::process((string) $domainName, array('CheckHyphens' => \true, 'CheckBidi' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 !== ($options & \IDNA_CHECK_BIDI), 'CheckJoiners' => self::INTL_IDNA_VARIANT_UTS46 === $variant && 0 !== ($options & \IDNA_CHECK_CONTEXTJ), 'UseSTD3ASCIIRules' => 0 !== ($options & \IDNA_USE_STD3_RULES), 'Transitional_Processing' => self::INTL_IDNA_VARIANT_2003 === $variant || 0 === ($options & \IDNA_NONTRANSITIONAL_TO_UNICODE)), $info);
143
+ $idna_info = array('result' => \implode('.', $labels), 'isTransitionalDifferent' => $info->transitionalDifferent, 'errors' => $info->errors);
144
+ return 0 === $info->errors ? $idna_info['result'] : \false;
145
+ }
146
+ /**
147
+ * @param string $label
148
+ *
149
+ * @return bool
150
+ */
151
+ private static function isValidContextJ(array $codePoints, $label)
152
+ {
153
+ if (!isset(self::$virama)) {
154
+ self::$virama = (require __DIR__ . \DIRECTORY_SEPARATOR . 'Resources' . \DIRECTORY_SEPARATOR . 'unidata' . \DIRECTORY_SEPARATOR . 'virama.php');
155
+ }
156
+ $offset = 0;
157
+ foreach ($codePoints as $i => $codePoint) {
158
+ if (0x200c !== $codePoint && 0x200d !== $codePoint) {
159
+ continue;
160
+ }
161
+ if (!isset($codePoints[$i - 1])) {
162
+ return \false;
163
+ }
164
+ // If Canonical_Combining_Class(Before(cp)) .eq. Virama Then True;
165
+ if (isset(self::$virama[$codePoints[$i - 1]])) {
166
+ continue;
167
+ }
168
+ // If RegExpMatch((Joining_Type:{L,D})(Joining_Type:T)*\u200C(Joining_Type:T)*(Joining_Type:{R,D})) Then
169
+ // True;
170
+ // Generated RegExp = ([Joining_Type:{L,D}][Joining_Type:T]*\u200C[Joining_Type:T]*)[Joining_Type:{R,D}]
171
+ if (0x200c === $codePoint && 1 === \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::ZWNJ, $label, $matches, \PREG_OFFSET_CAPTURE, $offset)) {
172
+ $offset += \strlen($matches[1][0]);
173
+ continue;
174
+ }
175
+ return \false;
176
+ }
177
+ return \true;
178
+ }
179
+ /**
180
+ * @see https://www.unicode.org/reports/tr46/#ProcessingStepMap
181
+ *
182
+ * @param string $input
183
+ * @param array<string, bool> $options
184
+ *
185
+ * @return string
186
+ */
187
+ private static function mapCodePoints($input, array $options, \YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Info $info)
188
+ {
189
+ $str = '';
190
+ $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
191
+ $transitional = $options['Transitional_Processing'];
192
+ foreach (self::utf8Decode($input) as $codePoint) {
193
+ $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
194
+ switch ($data['status']) {
195
+ case 'disallowed':
196
+ $info->errors |= self::ERROR_DISALLOWED;
197
+ // no break.
198
+ case 'valid':
199
+ $str .= \mb_chr($codePoint, 'utf-8');
200
+ break;
201
+ case 'ignored':
202
+ // Do nothing.
203
+ break;
204
+ case 'mapped':
205
+ $str .= $data['mapping'];
206
+ break;
207
+ case 'deviation':
208
+ $info->transitionalDifferent = \true;
209
+ $str .= $transitional ? $data['mapping'] : \mb_chr($codePoint, 'utf-8');
210
+ break;
211
+ }
212
+ }
213
+ return $str;
214
+ }
215
+ /**
216
+ * @see https://www.unicode.org/reports/tr46/#Processing
217
+ *
218
+ * @param string $domain
219
+ * @param array<string, bool> $options
220
+ *
221
+ * @return array<int, string>
222
+ */
223
+ private static function process($domain, array $options, \YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Info $info)
224
+ {
225
+ // If VerifyDnsLength is not set, we are doing ToUnicode otherwise we are doing ToASCII and
226
+ // we need to respect the VerifyDnsLength option.
227
+ $checkForEmptyLabels = !isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'];
228
+ if ($checkForEmptyLabels && '' === $domain) {
229
+ $info->errors |= self::ERROR_EMPTY_LABEL;
230
+ return array($domain);
231
+ }
232
+ // Step 1. Map each code point in the domain name string
233
+ $domain = self::mapCodePoints($domain, $options, $info);
234
+ // Step 2. Normalize the domain name string to Unicode Normalization Form C.
235
+ if (!\Normalizer::isNormalized($domain, \Normalizer::FORM_C)) {
236
+ $domain = \Normalizer::normalize($domain, \Normalizer::FORM_C);
237
+ }
238
+ // Step 3. Break the string into labels at U+002E (.) FULL STOP.
239
+ $labels = \explode('.', $domain);
240
+ $lastLabelIndex = \count($labels) - 1;
241
+ // Step 4. Convert and validate each label in the domain name string.
242
+ foreach ($labels as $i => $label) {
243
+ $validationOptions = $options;
244
+ if ('xn--' === \substr($label, 0, 4)) {
245
+ try {
246
+ $label = self::punycodeDecode(\substr($label, 4));
247
+ } catch (\Exception $e) {
248
+ $info->errors |= self::ERROR_PUNYCODE;
249
+ continue;
250
+ }
251
+ $validationOptions['Transitional_Processing'] = \false;
252
+ $labels[$i] = $label;
253
+ }
254
+ self::validateLabel($label, $info, $validationOptions, $i > 0 && $i === $lastLabelIndex);
255
+ }
256
+ if ($info->bidiDomain && !$info->validBidiDomain) {
257
+ $info->errors |= self::ERROR_BIDI;
258
+ }
259
+ // Any input domain name string that does not record an error has been successfully
260
+ // processed according to this specification. Conversely, if an input domain_name string
261
+ // causes an error, then the processing of the input domain_name string fails. Determining
262
+ // what to do with error input is up to the caller, and not in the scope of this document.
263
+ return $labels;
264
+ }
265
+ /**
266
+ * @see https://tools.ietf.org/html/rfc5893#section-2
267
+ *
268
+ * @param string $label
269
+ */
270
+ private static function validateBidiLabel($label, \YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Info $info)
271
+ {
272
+ if (1 === \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::RTL_LABEL, $label)) {
273
+ $info->bidiDomain = \true;
274
+ // Step 1. The first character must be a character with Bidi property L, R, or AL.
275
+ // If it has the R or AL property, it is an RTL label
276
+ if (1 !== \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::BIDI_STEP_1_RTL, $label)) {
277
+ $info->validBidiDomain = \false;
278
+ return;
279
+ }
280
+ // Step 2. In an RTL label, only characters with the Bidi properties R, AL, AN, EN, ES,
281
+ // CS, ET, ON, BN, or NSM are allowed.
282
+ if (1 === \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::BIDI_STEP_2, $label)) {
283
+ $info->validBidiDomain = \false;
284
+ return;
285
+ }
286
+ // Step 3. In an RTL label, the end of the label must be a character with Bidi property
287
+ // R, AL, EN, or AN, followed by zero or more characters with Bidi property NSM.
288
+ if (1 !== \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::BIDI_STEP_3, $label)) {
289
+ $info->validBidiDomain = \false;
290
+ return;
291
+ }
292
+ // Step 4. In an RTL label, if an EN is present, no AN may be present, and vice versa.
293
+ if (1 === \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::BIDI_STEP_4_AN, $label) && 1 === \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::BIDI_STEP_4_EN, $label)) {
294
+ $info->validBidiDomain = \false;
295
+ return;
296
+ }
297
+ return;
298
+ }
299
+ // We are a LTR label
300
+ // Step 1. The first character must be a character with Bidi property L, R, or AL.
301
+ // If it has the L property, it is an LTR label.
302
+ if (1 !== \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::BIDI_STEP_1_LTR, $label)) {
303
+ $info->validBidiDomain = \false;
304
+ return;
305
+ }
306
+ // Step 5. In an LTR label, only characters with the Bidi properties L, EN,
307
+ // ES, CS, ET, ON, BN, or NSM are allowed.
308
+ if (1 === \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::BIDI_STEP_5, $label)) {
309
+ $info->validBidiDomain = \false;
310
+ return;
311
+ }
312
+ // Step 6.In an LTR label, the end of the label must be a character with Bidi property L or
313
+ // EN, followed by zero or more characters with Bidi property NSM.
314
+ if (1 !== \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::BIDI_STEP_6, $label)) {
315
+ $info->validBidiDomain = \false;
316
+ return;
317
+ }
318
+ }
319
+ /**
320
+ * @param array<int, string> $labels
321
+ */
322
+ private static function validateDomainAndLabelLength(array $labels, \YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Info $info)
323
+ {
324
+ $maxDomainSize = self::MAX_DOMAIN_SIZE;
325
+ $length = \count($labels);
326
+ // Number of "." delimiters.
327
+ $domainLength = $length - 1;
328
+ // If the last label is empty and it is not the first label, then it is the root label.
329
+ // Increase the max size by 1, making it 254, to account for the root label's "."
330
+ // delimiter. This also means we don't need to check the last label's length for being too
331
+ // long.
332
+ if ($length > 1 && '' === $labels[$length - 1]) {
333
+ ++$maxDomainSize;
334
+ --$length;
335
+ }
336
+ for ($i = 0; $i < $length; ++$i) {
337
+ $bytes = \strlen($labels[$i]);
338
+ $domainLength += $bytes;
339
+ if ($bytes > self::MAX_LABEL_SIZE) {
340
+ $info->errors |= self::ERROR_LABEL_TOO_LONG;
341
+ }
342
+ }
343
+ if ($domainLength > $maxDomainSize) {
344
+ $info->errors |= self::ERROR_DOMAIN_NAME_TOO_LONG;
345
+ }
346
+ }
347
+ /**
348
+ * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
349
+ *
350
+ * @param string $label
351
+ * @param array<string, bool> $options
352
+ * @param bool $canBeEmpty
353
+ */
354
+ private static function validateLabel($label, \YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Info $info, array $options, $canBeEmpty)
355
+ {
356
+ if ('' === $label) {
357
+ if (!$canBeEmpty && (!isset($options['VerifyDnsLength']) || $options['VerifyDnsLength'])) {
358
+ $info->errors |= self::ERROR_EMPTY_LABEL;
359
+ }
360
+ return;
361
+ }
362
+ // Step 1. The label must be in Unicode Normalization Form C.
363
+ if (!\Normalizer::isNormalized($label, \Normalizer::FORM_C)) {
364
+ $info->errors |= self::ERROR_INVALID_ACE_LABEL;
365
+ }
366
+ $codePoints = self::utf8Decode($label);
367
+ if ($options['CheckHyphens']) {
368
+ // Step 2. If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
369
+ // in both the thrid and fourth positions.
370
+ if (isset($codePoints[2], $codePoints[3]) && 0x2d === $codePoints[2] && 0x2d === $codePoints[3]) {
371
+ $info->errors |= self::ERROR_HYPHEN_3_4;
372
+ }
373
+ // Step 3. If CheckHyphens, the label must neither begin nor end with a U+002D
374
+ // HYPHEN-MINUS character.
375
+ if ('-' === \substr($label, 0, 1)) {
376
+ $info->errors |= self::ERROR_LEADING_HYPHEN;
377
+ }
378
+ if ('-' === \substr($label, -1, 1)) {
379
+ $info->errors |= self::ERROR_TRAILING_HYPHEN;
380
+ }
381
+ }
382
+ // Step 4. The label must not contain a U+002E (.) FULL STOP.
383
+ if (\false !== \strpos($label, '.')) {
384
+ $info->errors |= self::ERROR_LABEL_HAS_DOT;
385
+ }
386
+ // Step 5. The label must not begin with a combining mark, that is: General_Category=Mark.
387
+ if (1 === \preg_match(\YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\Regex::COMBINING_MARK, $label)) {
388
+ $info->errors |= self::ERROR_LEADING_COMBINING_MARK;
389
+ }
390
+ // Step 6. Each code point in the label must only have certain status values according to
391
+ // Section 5, IDNA Mapping Table:
392
+ $transitional = $options['Transitional_Processing'];
393
+ $useSTD3ASCIIRules = $options['UseSTD3ASCIIRules'];
394
+ foreach ($codePoints as $codePoint) {
395
+ $data = self::lookupCodePointStatus($codePoint, $useSTD3ASCIIRules);
396
+ $status = $data['status'];
397
+ if ('valid' === $status || !$transitional && 'deviation' === $status) {
398
+ continue;
399
+ }
400
+ $info->errors |= self::ERROR_DISALLOWED;
401
+ break;
402
+ }
403
+ // Step 7. If CheckJoiners, the label must satisify the ContextJ rules from Appendix A, in
404
+ // The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)
405
+ // [IDNA2008].
406
+ if ($options['CheckJoiners'] && !self::isValidContextJ($codePoints, $label)) {
407
+ $info->errors |= self::ERROR_CONTEXTJ;
408
+ }
409
+ // Step 8. If CheckBidi, and if the domain name is a Bidi domain name, then the label must
410
+ // satisfy all six of the numbered conditions in [IDNA2008] RFC 5893, Section 2.
411
+ if ($options['CheckBidi'] && (!$info->bidiDomain || $info->validBidiDomain)) {
412
+ self::validateBidiLabel($label, $info);
413
+ }
414
+ }
415
+ /**
416
+ * @see https://tools.ietf.org/html/rfc3492#section-6.2
417
+ *
418
+ * @param string $input
419
+ *
420
+ * @return string
421
+ */
422
+ private static function punycodeDecode($input)
423
+ {
424
+ $n = self::INITIAL_N;
425
+ $out = 0;
426
+ $i = 0;
427
+ $bias = self::INITIAL_BIAS;
428
+ $lastDelimIndex = \strrpos($input, self::DELIMITER);
429
+ $b = \false === $lastDelimIndex ? 0 : $lastDelimIndex;
430
+ $inputLength = \strlen($input);
431
+ $output = array();
432
+ $bytes = \array_map('ord', \str_split($input));
433
+ for ($j = 0; $j < $b; ++$j) {
434
+ if ($bytes[$j] > 0x7f) {
435
+ throw new \Exception('Invalid input');
436
+ }
437
+ $output[$out++] = $input[$j];
438
+ }
439
+ if ($b > 0) {
440
+ ++$b;
441
+ }
442
+ for ($in = $b; $in < $inputLength; ++$out) {
443
+ $oldi = $i;
444
+ $w = 1;
445
+ for ($k = self::BASE;; $k += self::BASE) {
446
+ if ($in >= $inputLength) {
447
+ throw new \Exception('Invalid input');
448
+ }
449
+ $digit = self::$basicToDigit[$bytes[$in++] & 0xff];
450
+ if ($digit < 0) {
451
+ throw new \Exception('Invalid input');
452
+ }
453
+ if ($digit > \intdiv(self::MAX_INT - $i, $w)) {
454
+ throw new \Exception('Integer overflow');
455
+ }
456
+ $i += $digit * $w;
457
+ if ($k <= $bias) {
458
+ $t = self::TMIN;
459
+ } elseif ($k >= $bias + self::TMAX) {
460
+ $t = self::TMAX;
461
+ } else {
462
+ $t = $k - $bias;
463
+ }
464
+ if ($digit < $t) {
465
+ break;
466
+ }
467
+ $baseMinusT = self::BASE - $t;
468
+ if ($w > \intdiv(self::MAX_INT, $baseMinusT)) {
469
+ throw new \Exception('Integer overflow');
470
+ }
471
+ $w *= $baseMinusT;
472
+ }
473
+ $outPlusOne = $out + 1;
474
+ $bias = self::adaptBias($i - $oldi, $outPlusOne, 0 === $oldi);
475
+ if (\intdiv($i, $outPlusOne) > self::MAX_INT - $n) {
476
+ throw new \Exception('Integer overflow');
477
+ }
478
+ $n += \intdiv($i, $outPlusOne);
479
+ $i %= $outPlusOne;
480
+ \array_splice($output, $i++, 0, array(\mb_chr($n, 'utf-8')));
481
+ }
482
+ return \implode('', $output);
483
+ }
484
+ /**
485
+ * @see https://tools.ietf.org/html/rfc3492#section-6.3
486
+ *
487
+ * @param string $input
488
+ *
489
+ * @return string
490
+ */
491
+ private static function punycodeEncode($input)
492
+ {
493
+ $n = self::INITIAL_N;
494
+ $delta = 0;
495
+ $out = 0;
496
+ $bias = self::INITIAL_BIAS;
497
+ $inputLength = 0;
498
+ $output = '';
499
+ $iter = self::utf8Decode($input);
500
+ foreach ($iter as $codePoint) {
501
+ ++$inputLength;
502
+ if ($codePoint < 0x80) {
503
+ $output .= \chr($codePoint);
504
+ ++$out;
505
+ }
506
+ }
507
+ $h = $out;
508
+ $b = $out;
509
+ if ($b > 0) {
510
+ $output .= self::DELIMITER;
511
+ ++$out;
512
+ }
513
+ while ($h < $inputLength) {
514
+ $m = self::MAX_INT;
515
+ foreach ($iter as $codePoint) {
516
+ if ($codePoint >= $n && $codePoint < $m) {
517
+ $m = $codePoint;
518
+ }
519
+ }
520
+ if ($m - $n > \intdiv(self::MAX_INT - $delta, $h + 1)) {
521
+ throw new \Exception('Integer overflow');
522
+ }
523
+ $delta += ($m - $n) * ($h + 1);
524
+ $n = $m;
525
+ foreach ($iter as $codePoint) {
526
+ if ($codePoint < $n && 0 === ++$delta) {
527
+ throw new \Exception('Integer overflow');
528
+ } elseif ($codePoint === $n) {
529
+ $q = $delta;
530
+ for ($k = self::BASE;; $k += self::BASE) {
531
+ if ($k <= $bias) {
532
+ $t = self::TMIN;
533
+ } elseif ($k >= $bias + self::TMAX) {
534
+ $t = self::TMAX;
535
+ } else {
536
+ $t = $k - $bias;
537
+ }
538
+ if ($q < $t) {
539
+ break;
540
+ }
541
+ $qMinusT = $q - $t;
542
+ $baseMinusT = self::BASE - $t;
543
+ $output .= self::encodeDigit($t + $qMinusT % $baseMinusT, \false);
544
+ ++$out;
545
+ $q = \intdiv($qMinusT, $baseMinusT);
546
+ }
547
+ $output .= self::encodeDigit($q, \false);
548
+ ++$out;
549
+ $bias = self::adaptBias($delta, $h + 1, $h === $b);
550
+ $delta = 0;
551
+ ++$h;
552
+ }
553
+ }
554
+ ++$delta;
555
+ ++$n;
556
+ }
557
+ return $output;
558
+ }
559
+ /**
560
+ * @see https://tools.ietf.org/html/rfc3492#section-6.1
561
+ *
562
+ * @param int $delta
563
+ * @param int $numPoints
564
+ * @param bool $firstTime
565
+ *
566
+ * @return int
567
+ */
568
+ private static function adaptBias($delta, $numPoints, $firstTime)
569
+ {
570
+ // xxx >> 1 is a faster way of doing intdiv(xxx, 2)
571
+ $delta = $firstTime ? \intdiv($delta, self::DAMP) : $delta >> 1;
572
+ $delta += \intdiv($delta, $numPoints);
573
+ $k = 0;
574
+ while ($delta > (self::BASE - self::TMIN) * self::TMAX >> 1) {
575
+ $delta = \intdiv($delta, self::BASE - self::TMIN);
576
+ $k += self::BASE;
577
+ }
578
+ return $k + \intdiv((self::BASE - self::TMIN + 1) * $delta, $delta + self::SKEW);
579
+ }
580
+ /**
581
+ * @param int $d
582
+ * @param bool $flag
583
+ *
584
+ * @return string
585
+ */
586
+ private static function encodeDigit($d, $flag)
587
+ {
588
+ return \chr($d + 22 + 75 * ($d < 26 ? 1 : 0) - (($flag ? 1 : 0) << 5));
589
+ }
590
+ /**
591
+ * Takes a UTF-8 encoded string and converts it into a series of integer code points. Any
592
+ * invalid byte sequences will be replaced by a U+FFFD replacement code point.
593
+ *
594
+ * @see https://encoding.spec.whatwg.org/#utf-8-decoder
595
+ *
596
+ * @param string $input
597
+ *
598
+ * @return array<int, int>
599
+ */
600
+ private static function utf8Decode($input)
601
+ {
602
+ $bytesSeen = 0;
603
+ $bytesNeeded = 0;
604
+ $lowerBoundary = 0x80;
605
+ $upperBoundary = 0xbf;
606
+ $codePoint = 0;
607
+ $codePoints = array();
608
+ $length = \strlen($input);
609
+ for ($i = 0; $i < $length; ++$i) {
610
+ $byte = \ord($input[$i]);
611
+ if (0 === $bytesNeeded) {
612
+ if ($byte >= 0x0 && $byte <= 0x7f) {
613
+ $codePoints[] = $byte;
614
+ continue;
615
+ }
616
+ if ($byte >= 0xc2 && $byte <= 0xdf) {
617
+ $bytesNeeded = 1;
618
+ $codePoint = $byte & 0x1f;
619
+ } elseif ($byte >= 0xe0 && $byte <= 0xef) {
620
+ if (0xe0 === $byte) {
621
+ $lowerBoundary = 0xa0;
622
+ } elseif (0xed === $byte) {
623
+ $upperBoundary = 0x9f;
624
+ }
625
+ $bytesNeeded = 2;
626
+ $codePoint = $byte & 0xf;
627
+ } elseif ($byte >= 0xf0 && $byte <= 0xf4) {
628
+ if (0xf0 === $byte) {
629
+ $lowerBoundary = 0x90;
630
+ } elseif (0xf4 === $byte) {
631
+ $upperBoundary = 0x8f;
632
+ }
633
+ $bytesNeeded = 3;
634
+ $codePoint = $byte & 0x7;
635
+ } else {
636
+ $codePoints[] = 0xfffd;
637
+ }
638
+ continue;
639
+ }
640
+ if ($byte < $lowerBoundary || $byte > $upperBoundary) {
641
+ $codePoint = 0;
642
+ $bytesNeeded = 0;
643
+ $bytesSeen = 0;
644
+ $lowerBoundary = 0x80;
645
+ $upperBoundary = 0xbf;
646
+ --$i;
647
+ $codePoints[] = 0xfffd;
648
+ continue;
649
+ }
650
+ $lowerBoundary = 0x80;
651
+ $upperBoundary = 0xbf;
652
+ $codePoint = $codePoint << 6 | $byte & 0x3f;
653
+ if (++$bytesSeen !== $bytesNeeded) {
654
+ continue;
655
+ }
656
+ $codePoints[] = $codePoint;
657
+ $codePoint = 0;
658
+ $bytesNeeded = 0;
659
+ $bytesSeen = 0;
660
+ }
661
+ // String unexpectedly ended, so append a U+FFFD code point.
662
+ if (0 !== $bytesNeeded) {
663
+ $codePoints[] = 0xfffd;
664
+ }
665
+ return $codePoints;
666
+ }
667
+ /**
668
+ * @param int $codePoint
669
+ * @param bool $useSTD3ASCIIRules
670
+ *
671
+ * @return array{status: string, mapping?: string}
672
+ */
673
+ private static function lookupCodePointStatus($codePoint, $useSTD3ASCIIRules)
674
+ {
675
+ if (!self::$mappingTableLoaded) {
676
+ self::$mappingTableLoaded = \true;
677
+ self::$mapped = (require __DIR__ . '/Resources/unidata/mapped.php');
678
+ self::$ignored = (require __DIR__ . '/Resources/unidata/ignored.php');
679
+ self::$deviation = (require __DIR__ . '/Resources/unidata/deviation.php');
680
+ self::$disallowed = (require __DIR__ . '/Resources/unidata/disallowed.php');
681
+ self::$disallowed_STD3_mapped = (require __DIR__ . '/Resources/unidata/disallowed_STD3_mapped.php');
682
+ self::$disallowed_STD3_valid = (require __DIR__ . '/Resources/unidata/disallowed_STD3_valid.php');
683
+ }
684
+ if (isset(self::$mapped[$codePoint])) {
685
+ return array('status' => 'mapped', 'mapping' => self::$mapped[$codePoint]);
686
+ }
687
+ if (isset(self::$ignored[$codePoint])) {
688
+ return array('status' => 'ignored');
689
+ }
690
+ if (isset(self::$deviation[$codePoint])) {
691
+ return array('status' => 'deviation', 'mapping' => self::$deviation[$codePoint]);
692
+ }
693
+ if (isset(self::$disallowed[$codePoint]) || \YoastSEO_Vendor\Symfony\Polyfill\Intl\Idn\Resources\unidata\DisallowedRanges::inRange($codePoint)) {
694
+ return array('status' => 'disallowed');
695
+ }
696
+ $isDisallowedMapped = isset(self::$disallowed_STD3_mapped[$codePoint]);
697
+ if ($isDisallowedMapped || isset(self::$disallowed_STD3_valid[$codePoint])) {
698
+ $status = 'disallowed';
699
+ if (!$useSTD3ASCIIRules) {
700
+ $status = $isDisallowedMapped ? 'mapped' : 'valid';
701
+ }
702
+ if ($isDisallowedMapped) {
703
+ return array('status' => $status, 'mapping' => self::$disallowed_STD3_mapped[$codePoint]);
704
+ }
705
+ return array('status' => $status);
706
+ }
707
+ return array('status' => 'valid');
708
+ }
709
+ }
vendor_prefixed/symfony/polyfill-intl-idn/bootstrap.php ADDED
@@ -0,0 +1,151 @@