TeamVault follows the standard WordPress.org translation workflow so translators can collaborate in GlotPress instead of editing PHP.
-
All user-facing strings use the
mikesoft-teamvaulttext domain (__(),esc_html__(),esc_attr__(),esc_html_e()…). -
MSTV_I18n::init()(runs oninitviaMSTV_Bootstrap::init_services()) loads community language packs with the standard call:load_plugin_textdomain('mikesoft-teamvault', false, dirname(plugin_basename(__FILE__), 2) . '/languages');
(
__FILE__isincludes/class-mstv-i18n.php, hence dirname level 2.) -
languages/mikesoft-teamvault.potis the translatable-string template shipped for GlotPress import. -
The hardcoded it/fr/es/de maps in
includes/class-mstv-i18n.phpstay as a runtime fallback (via thegettextfilter) so the bundled interface languages keep working when no language pack is installed. They are not the translation source of truth — GlotPress is.
Preferred (requires wp-cli):
wp i18n make-pot . languages/mikesoft-teamvault.pot --domain=mikesoft-teamvaultThe committed POT was produced with an equivalent extractor (same function
set and mikesoft-teamvault domain filter, #: file:line references,
Plural-Forms: nplurals=2; plural=(n != 1);) because wp-cli was unavailable;
re-running wp i18n make-pot is welcome to normalize it.
- Import the updated
.potinto the WordPress.org plugin GlotPress project on release. - Approved translations ship automatically as WordPress.org language packs
into
wp-content/languages/plugins/— no bundled.po/.mofiles needed. - Keep the fallback maps in sync only until GlotPress coverage for a locale
is complete; the maps must always cover every
mikesoft-teamvaultstring (guarded bytests/PdmI18nCoverageTest.php).