簡體   English   中英

Yii2德國的語言代碼

[英]Yii2 language codes for Germany

在Yii2語言中,本教程介紹了翻譯。 在ICU項目文檔中進一步說明了語言環境。

對於德語翻譯,有幾種可用的定義:

  • 德國de-DE
  • 瑞士de-CH
  • 奧地利的de-AT

但是每種語言都有額外的復雜性:“您”有兩種不同的翻譯:“ Sie”和“ Du”。 實際上,許多文本消息是不同的,例如,“這是您的消息”翻譯為“ Das ist Ihre Nachricht”和“ Das ist Deine Nachricht”。

在Web應用程序中,使用兩種翻譯版本:Facebook轉換為“ Du”,Amazon轉換為“ Sie”。

如何處理這些不同的語言版本?

我們是否需要其他德語“ de-DU”? 是否有最佳做法?

編輯:

我希望兩種語言分開保存。 編寫模塊時,該模塊必須在“ Du”和“ Sie”環境中工作。 這是兩種不同的語言。

“ Sie”和“ Du”都屬於完全相同的語言環境。

從ICU的角度來看,它們不是變體,而是您是否要以正式或非正式方式與用戶打交道的問題。

您將使用西班牙語或日語等許多其他語言來面對該問題。

創建虛擬語言不是一個不錯的選擇,它會給其他翻譯帶來混亂和問題。 如果要提供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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM