Testing
Testing your translations with WPZylos I18n.
Unit Testing
Mock Translator
use PHPUnit\Framework\TestCase;
class TranslatorTest extends TestCase
{
public function testTranslateReturnsOriginalWhenNoTranslation(): void
{
$translator = new Translator($this->createContext());
$result = $translator->__('Hello World');
$this->assertEquals('Hello World', $result);
}
public function testPluralizationReturnsCorrectForm(): void
{
$translator = new Translator($this->createContext());
$single = $translator->_n('%d item', '%d items', 1);
$plural = $translator->_n('%d item', '%d items', 5);
$this->assertEquals('%d item', $single);
$this->assertEquals('%d items', $plural);
}
}
Testing Translatable Components
class SettingsPageTest extends TestCase
{
public function testPageContainsTranslatedTitle(): void
{
$translator = $this->createMock(Translator::class);
$translator->method('__')
->with('Plugin Settings')
->willReturn('Plugin Einstellungen');
$page = new SettingsPage($translator);
ob_start();
$page->render();
$output = ob_get_clean();
$this->assertStringContainsString('Plugin Einstellungen', $output);
}
}
POT File Generation
Generate translatable strings:
# Using WP-CLI
wp i18n make-pot . languages/your-plugin.pot
# Using makepot.php
php makepot.php wp-plugin your-plugin languages/your-plugin.pot
Running Tests
composer run test