نسخة كاملة من مستودع سيرو عند ecfe7568 لتكون أساس تطبيق «انطلق». نُسخ المتعقَّب في git فقط (12,509 ملفاً / 302 م.ب) بـ git archive، لا `cp -r` — فاستُثنيت تلقائياً مخلفات البناء (build · node_modules · .dart_tool · .gradle · Pods ≈ 10.7 غ.ب) وكل ما يستثنيه .gitignore. هذا الكوميت **بلا أي تعديل عمداً** حتى يكون كل ما يليه فرقاً مقروءاً مقابل سيرو الأصلي. سيرو نفسه لم يُمسّ. ⚠️ لا يبني بعد: `.env` و`lib/env/env.g.dart` غير متعقَّبين في سيرو (وهذا صحيح — أسرار لكل مستأجر). كل تطبيق فلاتر هنا يحتاج .env خاصاً بانطلق ثم توليد env.g.dart عبر build_runner. لا تُنسخ أسرار سيرو. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
31 lines
993 B
Dart
31 lines
993 B
Dart
import 'dart:convert';
|
|
import 'package:http/http.dart' as http;
|
|
|
|
class TranslateHelper {
|
|
static Future<String> translateText(String text, String targetLang) async {
|
|
if (text.isEmpty) return text;
|
|
try {
|
|
final url = Uri.parse(
|
|
'https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=$targetLang&dt=t&q=${Uri.encodeComponent(text)}'
|
|
);
|
|
final response = await http.get(url);
|
|
if (response.statusCode == 200) {
|
|
final decoded = jsonDecode(response.body);
|
|
if (decoded != null && decoded is List && decoded.isNotEmpty && decoded[0] is List) {
|
|
final List parts = decoded[0];
|
|
String translated = '';
|
|
for (var part in parts) {
|
|
if (part is List && part.isNotEmpty) {
|
|
translated += part[0].toString();
|
|
}
|
|
}
|
|
return translated;
|
|
}
|
|
}
|
|
} catch (e) {
|
|
// Fallback to original text on any exception
|
|
}
|
|
return text;
|
|
}
|
|
}
|