{"id":69126,"date":"2026-07-30T21:22:58","date_gmt":"2026-07-30T21:22:58","guid":{"rendered":"https:\/\/make.wordpress.org\/polyglots\/?p=69126"},"modified":"2026-08-06T19:06:46","modified_gmt":"2026-08-06T19:06:46","slug":"pte-request-for-lang-forge","status":"publish","type":"post","link":"https:\/\/make.wordpress.org\/polyglots\/2026\/07\/30\/pte-request-for-lang-forge\/","title":{"rendered":"PTE Request for Lang Forge"},"content":{"rendered":"<p>I am the <span tabindex='0' class='glossary-item-container'>plugin<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Plugin<\/span> <span class='glossary-item-description'>A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory <a href=\"https:\/\/wordpress.org\/plugins\/\">https:\/\/wordpress.org\/plugins\/<\/a> or can be cost-based plugin from a third-party.<\/span><\/span><\/span> author for Lang Forge and I would like to request <span tabindex='0' class='glossary-item-container'>PTE<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Project Translation Editor<\/span> <span class='glossary-item-description'>A Project Translation\u00a0Editor (often referred to as PTE) is a person, who has access to validate strings on a specific\u00a0project\u00a0(for example BuddyPress, WooCommerce or Twenty Fourteen) for one\u00a0specific locale. A\u00a0project translation editor can approve strings that are added by translation contributors. Per project translation, editors are appointed by a <a href=\"https:\/\/make.wordpress.org\/polyglots\/glossary\/#general-translation-editor\">general translation editor<\/a>\u00a0after a <a href=\"https:\/\/make.wordpress.org\/polyglots\/handbook\/rosetta\/theme-plugin-directories\/#requesting-new-translation-editors\">request by the project\u00a0author<\/a> or by the contributors themselves.<\/span><\/span><\/span> so I can maintain its translations properly.<\/p>\n<ul>\n<li>https:\/\/wordpress.org\/plugins\/langforge\/\n<\/li>\n<\/ul>\n<ul class=\"o2-tasks\">\n<li class=\"o2-task-item o2-task-sortable o2-task-completed\" data-item-hash=\"156c53e049b7f5e6b8dc7cfea506a525\" data-hash-instance=\"0\" data-item-text=\"#ru_RU \u2013 @avakodeforge (@tobifjellner)\"><input type=\"checkbox\" name=\"\" value=\"\" checked disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=ru_RU\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>ru_RU<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a> (<a href=\"https:\/\/profiles.wordpress.org\/tobifjellner\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>tobifjellner<\/a>)<\/span>\n<\/li>\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"93f57d26ecb1000a765ff82a0e070cc9\" data-hash-instance=\"0\" data-item-text=\"#ar \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=ar\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>ar<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"9417beae5fa826e89ba60e73910a861d\" data-hash-instance=\"0\" data-item-text=\"#de_DE \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=de_DE\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>de_DE<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"a107d2bd8543ee5d1460498817ce68c4\" data-hash-instance=\"0\" data-item-text=\"#es_ES \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=es_ES\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>es_ES<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"fbefe97af780237b890f1c32e7b094ca\" data-hash-instance=\"0\" data-item-text=\"#fr_FR \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=fr_FR\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>fr_FR<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"7e64776631a336f0b62642cd1e841f67\" data-hash-instance=\"0\" data-item-text=\"#hi_IN \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=hi_IN\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>hi_IN<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"8077dd2520e4ba743abb1b3836c1aa9f\" data-hash-instance=\"0\" data-item-text=\"#it_IT \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=it_IT\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>it_IT<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<\/ul>\n<p>\u2014 ja \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/p>\n<ul class=\"o2-tasks\">\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"3bdf9930b25a31574c957d6fb467aaa3\" data-hash-instance=\"0\" data-item-text=\"#ko_KR \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=ko_KR\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>ko_KR<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<\/ul>\n<p>\u2014 nl_NL \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><br>\n\u2014 pl_PL \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/p>\n<ul class=\"o2-tasks\">\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"f385d8abec858578d40691850ff78e43\" data-hash-instance=\"0\" data-item-text=\"#pt_BR \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=pt_BR\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>pt_BR<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"b38d7cfbfacb287467c2faba6781cb92\" data-hash-instance=\"0\" data-item-text=\"#tr_TR \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=tr_TR\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>tr_TR<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<li class=\"o2-task-item o2-task-sortable o2-task-completed\" data-item-hash=\"3d245cc574697e020901c2346b4dd6f4\" data-hash-instance=\"0\" data-item-text=\"#uk \u2013 @avakodeforge (@tobifjellner)\"><input type=\"checkbox\" name=\"\" value=\"\" checked disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=uk\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>uk<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a> (<a href=\"https:\/\/profiles.wordpress.org\/tobifjellner\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>tobifjellner<\/a>)<\/span>\n<\/li>\n<li class=\"o2-task-item o2-task-sortable \" data-item-hash=\"8e2144d50cf54b934d13f08c9a3ad28e\" data-hash-instance=\"0\" data-item-text=\"#zh_CN \u2013 @avakodeforge\"><input type=\"checkbox\" name=\"\" value=\"\" disabled> <span class=\"o2-task-item-text\"><a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/?locale=zh_CN\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>zh_CN<\/a> \u2013 <a href=\"https:\/\/profiles.wordpress.org\/avakodeforge\/\" class=\"mention\"><span class=\"mentions-prefix\">@<\/span>avakodeforge<\/a><\/span>\n<\/li>\n<\/ul>\n<p>I want to be upfront about where these translations come from, because I know this page says machine translation without human review by a speaker of the target language is not an acceptable source.<\/p>\n<p>We are a very small team and cannot hire translators for 15 languages. The catalogues were machine-generated. When the plugin was approved, the directory imported the bundled languages\/ folder into the project automatically \u2014 that is where the current Russian, Dutch, Czech and Swedish percentages came from, not from any contributor.<\/p>\n<p>Before posting I built the closest thing to review that I could. I downloaded WordPress <span tabindex='0' class='glossary-item-container'>core<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Core<\/span> <span class='glossary-item-description'>Core is the set of software required to run WordPress. The Core Development Team builds WordPress.<\/span><\/span><\/span>\u2019s own translations for each of these <span tabindex='0' class='glossary-item-container'>locales<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Locale<\/span> <span class='glossary-item-description'>Locale = language version, often a combination of a language code and a region code, for instance es_MX denotes Spanish as it\u2019s used in Mexico. A list of all locales supported by WordPress in <a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/\">https:\/\/make.wordpress.org\/polyglots\/teams\/<\/a><\/span><\/span><\/span> and compared every <span tabindex='0' class='glossary-item-container'>string<span class='glossary-item-hidden-content'><span class='glossary-item-header'>String<\/span> <span class='glossary-item-description'>A string is a translatable part of the software. A translation consists of a multitude of localized strings.<\/span><\/span><\/span> of ours whose English source is byte-identical to a core string \u2014 201 <span tabindex='0' class='glossary-item-container'>strings<span class='glossary-item-hidden-content'><span class='glossary-item-header'>String<\/span> <span class='glossary-item-description'>A string is a translatable part of the software. A translation consists of a multitude of localized strings.<\/span><\/span><\/span> per <span tabindex='0' class='glossary-item-container'>locale<span class='glossary-item-hidden-content'><span class='glossary-item-header'>Locale<\/span> <span class='glossary-item-description'>Locale = language version, often a combination of a language code and a region code, for instance es_MX denotes Spanish as it\u2019s used in Mexico. A list of all locales supported by WordPress in <a href=\"https:\/\/make.wordpress.org\/polyglots\/teams\/\">https:\/\/make.wordpress.org\/polyglots\/teams\/<\/a><\/span><\/span><\/span>. 975 diverged from core. Each divergence was reviewed individually and 692 were corrected, keeping 283 where core\u2019s string comes from an unrelated context. Divergence from core is now 299. That shipped in version 1.0.28.<\/p>\n<p>It found real errors, not just style preferences: two Hindi strings still in English and one that said the opposite of what it meant (\u201cDisconnect\u201d), an Italian false friend (\u201cEditore\u201d for Editor), French missing its non-breaking-space typography and WordPress\u2019s inclusive role forms, Russian using \u201c\u043f\u043e\u0441\u0442\u044b\u201d where core has said \u201c\u0437\u0430\u043f\u0438\u0441\u0438\u201d for twenty years.<\/p>\n<p>I understand that this is a process and not a native speaker, and that for 14 of these locales it does not meet the bar this page sets. I am asking anyway, because the alternative is imported strings sitting in your projects with nobody able to correct them.<\/p>\n<p>ru_RU is the one I can genuinely vouch for \u2014 I am a native speaker.<\/p>\n<p>For any locale where your team would rather not grant this, please just say so and I will remove the imported strings for that locale so they are not left there unreviewed. I would rather ship nothing than something wrong. I am also happy to publish the full per-string review with its reasoning if that would help you judge.<\/p>\n<p>If you have any questions, just comment here. Thank you!<\/p>\n<p><a href=\"https:\/\/make.wordpress.org\/polyglots\/tag\/editor-requests\/\" class=\"tag\"><span class=\"tag-prefix\">#<\/span>editor-requests<\/a><\/p>\n<nav class='o2-post-footer-actions'><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><a href=\"https:\/\/login.wordpress.org\/?redirect_to=https%3A%2F%2Fmake.wordpress.org%2Fpolyglots%2F2026%2F07%2F30%2Fpte-request-for-lang-forge%2F%23respond&#038;locale=en_US\" title=\"Login to Reply\"  class=\"genericon  genericon-reply\"  data-action=\"login-to-reply\"  data-actionstate=\"default\" >Login to Reply<\/a><\/li><\/ul><div class='o2-post-footer-action-likes'><\/div><ul class='o2-post-footer-action-row'><li class='o2-post-footer-action'><span class='o2-resolve-wrap'><a href=\"#\" title=\"Clear to-do\"  class=\"o2-resolve-link o2-disabled-action genericon  genericon-close\"  data-action=\"resolvedposts\"  data-actionstate=\"resolved\" >Clear to-do<\/a><ul><\/ul><\/span><\/li><\/ul><\/nav>","protected":false},"excerpt":{"rendered":"<p>I am the pluginPlugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in [&hellip;]<\/p>\n","protected":false},"author":23513346,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[5],"tags":[26,94,1453,111,123,1889,177,188,296,324,389,2889,442],"class_list":["post-69126","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ar","tag-de_de","tag-editor-requests","tag-es_es","tag-fr_fr","tag-hi_in","tag-it_it","tag-ko_kr","tag-pt_br","tag-ru_ru","tag-tr_tr","tag-uk","tag-zh_cn","p2_resolved-resolved","mentions-akira","mentions-atachibana","mentions-avakodeforge","mentions-fierevere","mentions-iworks","mentions-nukaga","mentions-psmits1567","mentions-sergeykovalets","mentions-tobifjellner","author-avakodeforge"],"revision_note":"","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/posts\/69126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/comments?post=69126"}],"version-history":[{"count":6,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/posts\/69126\/revisions"}],"predecessor-version":[{"id":69361,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/posts\/69126\/revisions\/69361"}],"author":[{"embeddable":true,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wporg\/v1\/users\/avakodeforge"}],"wp:attachment":[{"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/media?parent=69126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/categories?post=69126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/make.wordpress.org\/polyglots\/wp-json\/wp\/v2\/tags?post=69126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}