我用英语创建了一个应用程序,但我有一个庞大的西班牙语和法语用户群,所以我想到用法语和西班牙语翻译该应用程序,现在有两个问题,我遇到的第一个问题是有超过 3000 个字符串翻译,我不是母语人士,所以我必须复制每个字符串,将其粘贴到谷歌翻译中,然后将其放入android studio的语言编辑器中,这非常耗时,令人沮丧和累人,第二个问题是一些字符串会重复,例如“使用 facebook 注册”或“返回”或“打开”,这些字符串会在语言编辑器中多次出现,因此我必须一次又一次地重做它们。所以我想知道是否有一种快速的方法可以节省时间并以更少的努力完成工作。
我尝试使用本地化包将Flutter中的字符串本地化。问题是需要翻译的位置。它与UI无关,而是在模型的深处,我无法访问BuildContext。还有其他可能性可以继续使用翻译功能吗?
// I don't have a context variable here
MyLocalizations.of(context).trans("foo")
Run Code Online (Sandbox Code Playgroud) 我发现使用官方 Flutter 本地化插件的本地化过程很麻烦。要显示我必须调用的本地化字符串Localization.of(context).myAppTitle- 在具有大量本地化字符串的巨大嵌套 Widget 树中并不完全光滑或易于浏览。更不用说它看起来很丑。
有没有办法让使用更好?例如,我可以使用全局变量或带有Localization实例成员的静态类来使访问更容易吗?例如声明一个顶级Localization变量
// Somewhere in the global scope
Localization l;
// main.dart
class _MyAppState extends State<MyApp>{
@override
void initState() {
super.initState();
getLocaleSomehow().then((locale){
l = Localization(locale);
setState((){});
});
}
}
Run Code Online (Sandbox Code Playgroud)
然后我可以简单地打电话
Text(l.myAppTitle)
Run Code Online (Sandbox Code Playgroud)
所以从本质上讲,我要问的是“不打电话有Localization.of(context)什么危险和/或缺点?”
如果我真的需要使用该.of(BuildContext)方法来访问Localization实例 - 我至少可以将它存储在我的StatefulWidget? 我在想像
class DetailsPage extends StatefulWidget{
Localization _l;
@override
Widget build(BuildContext context) {
_l = Localization.of(context);
// ... build widgets ...
}
}
Run Code Online (Sandbox Code Playgroud)
或者有没有其他方法可以让本地化不那么麻烦?