如果文本中有参数,如何使用 Getx 进行本地化

mat*_*ter 2 flutter flutter-getx

如果文本是这样的:

           Text(
              'Put something ${widget.profileA} might like'.tr,        
            ),
Run Code Online (Sandbox Code Playgroud)

这是翻译示例的代码:

class Language extends Translations {
  @override
  Map<String, Map<String, String>> get keys => {
        'en_US': {
          'Put something ${widget.profileA} might like': 'some translation', 
        };
      };
}
Run Code Online (Sandbox Code Playgroud)

${widget.profileA}我的问题是,既然文本中有一个参数,有没有一个好的解决方案可以用这个参数翻译整个句子?谢谢你!

Ivo*_*ers 12

GetX 的文档很好地解释了如何在此处执行此操作: https: //pub.dev/packages/get#internationalization

\n
\n

使用带参数的翻译

\n
\n\nMap<String, Map<String, String>> get keys => {\n    \'en_US\': {\n        \'logged_in\': \'logged in as @name with email @email\',\n    },\n    \'es_ES\': {\n       \'logged_in\': \'iniciado sesi\xc3\xb3n como @name con e-mail @email\',\n    } };\n\nText(\'logged_in\'.trParams({   \n  \'name\': \'Jhon\',\n  \'email\':\'jhon@example.com\'\n}));\n
Run Code Online (Sandbox Code Playgroud)\n
\n

所以对于你的例子:

\n
class Language extends Translations {\n  @override\n  Map<String, Map<String, String>> get keys => {\n        \'en_US\': {\n          \'Put something @profile might like\': \'some translation with @profile\', \n        };\n      };\n}\n
Run Code Online (Sandbox Code Playgroud)\n

进而

\n
Text(\'Put something @profile might like\'.trParams({\n  \'profile\': widget.profileA,\n}));\n
Run Code Online (Sandbox Code Playgroud)\n