Языковые коды Yii2 для Германии - PullRequest
0 голосов
/ 28 апреля 2018

В языке Yii2 переводы описаны в учебнике . Локали дополнительно указаны в документации проекта ICU .

Для переводов на немецкий язык доступно несколько определений.

  • de-DE для Германии
  • de-CH для Швейцарии
  • de-AT для Австрии

Но в каждом из этих языков есть дополнительная сложность: есть два разных перевода для "вы": "Sie" и "Du". На самом деле многие текстовые сообщения разные, например, «Это ваше сообщение» переводится как «Das ist Ihre Nachricht» и «Das ist Deine Nachricht».

В веб-приложениях используются обе версии перевода: Facebook переводится как «Du», Amazon переводится как «Sie».

Как работать с этими версиями на разных языках?

Нужен ли нам дополнительный немецкий язык "de-DU"? Есть ли лучшие практики?

EDIT:

Я хочу, чтобы оба языка были сохранены отдельно. При написании модуля он должен работать в средах "Du" и "Sie". Так что это два разных языка.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Создание виртуальных языков не является хорошим выбором, это создаст путаницу и проблемы с другими переводами. Если вы хотите предоставить 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');
0 голосов
/ 28 апреля 2018

И "Sie", и "Du" являются частью одной и той же локали.

Они не являются вариантами в смысле ICU, скорее это вопрос того, хотите ли вы обратиться к своим пользователям формальным или неформальным образом.

Вы столкнетесь с проблемой на многих других языках, таких как испанский или японский.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...