Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I detect text language with flutter

I need a package that detects and returns the text language. Do you have a flutter package recommendation for this? If you know of any other method besides the packages, I'd be happy to hear it.

like image 789
MuhammedYesilmen Avatar asked Oct 21 '25 13:10

MuhammedYesilmen


2 Answers

You can use a solution without packages using RegExp. Returns 'en' by default or a string representing the detected language code (you can also add country/region subtag).

String detectLanguage({required String string}) {

String languageCodes = 'en';

final RegExp persian = RegExp(r'^[\u0600-\u06FF]+');
final RegExp english = RegExp(r'^[a-zA-Z]+');
final RegExp arabic = RegExp(r'^[\u0621-\u064A]+');
final RegExp chinese = RegExp(r'^[\u4E00-\u9FFF]+');
final RegExp japanese = RegExp(r'^[\u3040-\u30FF]+');
final RegExp korean = RegExp(r'^[\uAC00-\uD7AF]+');
final RegExp ukrainian = RegExp(r'^[\u0400-\u04FF\u0500-\u052F]+');
final RegExp russian = RegExp(r'^[\u0400-\u04FF]+');
final RegExp italian = RegExp(r'^[\u00C0-\u017F]+');
final RegExp french = RegExp(r'^[\u00C0-\u017F]+');
final RegExp spanish = RegExp(r'[\u00C0-\u024F\u1E00-\u1EFF\u2C60-\u2C7F\uA720-\uA7FF\u1D00-\u1D7F]+');

if (persian.hasMatch(string)) languageCodes = 'fa';
if (english.hasMatch(string)) languageCodes = 'en';
if (arabic.hasMatch(string)) languageCodes = 'ar';
if (chinese.hasMatch(string)) languageCodes = 'zh';
if (japanese.hasMatch(string)) languageCodes = 'ja';
if (korean.hasMatch(string)) languageCodes = 'ko';
if (russian.hasMatch(string)) languageCodes = 'ru';
if (ukrainian.hasMatch(string)) languageCodes = 'uk';
if (italian.hasMatch(string)) languageCodes = 'it';
if (french.hasMatch(string)) languageCodes = 'fr';
if (spanish.hasMatch(string)) languageCodes = 'es';

return languageCode;
}
like image 197
Ivan Avatar answered Oct 23 '25 02:10

Ivan


You can check string lang like this:

  var persian = RegExp(r'[\u0600-\u06FF]');
  var english = RegExp(r'[a-zA-Z]');
  var arabic = RegExp(r'[\u0750-\u077F]');
  var chinese = RegExp(r'[\u4E00-\u9FFF]');
  var japanese = RegExp(r'[\u3040-\u309F]');
  var korean = RegExp(r'[\uAC00-\uD7AF]');
  
  if (persian.hasMatch(str)) {
    logger.d('persian');
  } else if (english.hasMatch(str)) {
    logger.d('english');
  } else if (arabic.hasMatch(str)) {
    logger.d('arabic');
  } else if (chinese.hasMatch(str)) {
    logger.d('chinese');
  } else if (japanese.hasMatch(str)) {
    logger.d('japanese');
  } else if (korean.hasMatch(str)) {
    logger.d('korean');
  } else {
    logger.d('other');
  }
like image 34
Faiz Ahmad Dae Avatar answered Oct 23 '25 04:10

Faiz Ahmad Dae



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!