[英]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.