Hi Kumar
Before writing the code, I want to know if there is already a solution to this problem in one of the modules, so that I won't reinvent the wheel.
US numbers are fixed lenght 11 digits? What is the usual representation of a 'local' US number? Does it start with a 0?
I do this (to translate Swiss local numbers to e164):
$var(check_number) = "012 345 67 89" # local number example, use $rU or $fU or whatever you want to translate. route(TRANSLATE_TO_e164); $rU = $var(result);
route[TRANSLATE_TO_e164] { $var(result) = 'invalid'; $var(check_number) = $(var(check_number){s.rmws}); # Remove spaces if ($var(check_number) =~ "^+") { $var($result) = $var(check_number); # Already e164 } else if ($var(check_number) =~ "^00") { # international number in local notation replace 00 by + $var(result) = "+" + $(var(check_number){s.substr,2,0}); } else if ($var(check_number) =~ "^0") { # Swiss number in local notation replace 0 by +41 $var(result) = "+41" + $(var(check_number){s.substr,1,0}); } }
And of course I have a corresponding TRANSLATE_TO_LOCAL to display numbers to the customer in a format they are used to in Switzerland.