У меня есть файл JSON, который содержит следующие переводы:
{
"copy" : {
"v1" : "copy"
},
"receive" : {
"v3" : "received"
},
"message" : "message",
"received_message" : "@:receive.v3 @:message",
"copy_received_message" : "@:copy.v1 @:received_message"
}
Когда я получу перевод copy_received_message, выполнив это:
"copy_received_message".tr();
Я ожидаю получить строку "copy received message"
Но я получаю строку "copy @:receive.v3 @:message"
Сноска
Я знаю, что могу написать этот перевод в файле JSON:
{
...
"copy_received_message" : "@:copy.v1 @:receive.v3 @:message"
}
На английском это кажется простым, но на другом языке received_message может быть не так просто, как "@:receive.v3 @:message"
Для справки: доступ к веб-сайту пакета можно получить по адресу easy_localization.





Аналогичный открытый вопрос существует с 8 февраля 2023 г.: https://github.com/aissat/easy_localization/issues/553
Если вы не можете дождаться исправления, вы можете использовать следующий фрагмент, но, пожалуйста, не критикуйте решение:
extension StringExtension on String {
String trHack() {
return tr(tr(tr(tr(tr(tr(tr(tr(tr(this)))))))));
}
}
И используйте его так:
"copy_received_message".trHack(); // "copy received message"
Повторяю, это хак, и во время отладки консоль будет показывать предупреждения!