Создание виртуальных языков не является хорошим выбором, это создаст путаницу и проблемы с другими переводами. Если вы хотите предоставить 2 версии переводов, вам лучше использовать категории для этого:
$mode = 'formal';
Yii::t('modules/MyModule/' . $mode, 'This is your message');
Вы можете справиться с этим на уровне модуля:
class MyModule extends \yii\base\Module {
const TRANSLATION_MODE_FORMAL = 'formal';
const TRANSLATION_MODE_UNFORMAL = 'unformal';
public $translationMode = self::TRANSLATION_MODE_UNFORMAL;
public function init() {
parent::init();
$this->registerTranslations();
}
public function registerTranslations() {
Yii::$app->i18n->translations['modules/MyModule/*'] = [
'class' => \yii\i18n\PhpMessageSource::class,
'sourceLanguage' => 'en-US',
'basePath' => __DIR__ . '/messages/' . $this->translationMode,
];
}
public static function t($category, $message, $params = [], $language = null) {
return Yii::t('modules/MyModule/' . $category, $message, $params, $language);
}
}
Режим настройки на уровне конфигурации приложения:
'modules' => [
'mymodule' => [
'class' => MyModule::class,
'translationMode' => 'formal',
],
],
И использовать модуль помощник для переводов:
MyModule::t('category', 'This is your message');