Sure. prefix:0088912345, prepend:1888626969, match pattern:(leave blank)
My system is similar to yours. We decided on a number format starting with the country code but without the leading +. On incoming calls, both caller ID and DID are converted to this format (with a custom context if needed for each trunk). On outgoing, if the provider doesn’t accept the format for the destination number, the dialed number manipulation rules for the trunk convert it to what they require. Likewise, if necessary the outbound caller ID is converted with a ‘dialout trunk hook’.
This ensures that incoming calls can be returned from device history, that forwarded calls show the correct number of the original caller, and that CDRs show a given number in the same format, regardless of what trunk the call came in or went out on.
However, you can add additional routes to accommodate dialing preferences, calls made from external contact lists and CRM systems, and numbers pasted from websites, etc. You should allow a + before the country code. Since no country code starts with 0, you could also allow 00 as an international prefix and 0[1-9]X. for dialing to the country the extension is in (provided that the country uses 0 as a trunk access code).
You should take care that emergency calls always call the local authorities. If your users often travel between the sites, you might map multiple emergency numbers. For example, a panicked American might forget he’s in South Korea and call 911, which the system would map to 112 and send over a local trunk that supports emergency calling.