Here’s how to format Brazilian addresses in BbdbMode.
home: ...
Ipanema, Rio de Janeiro
22411-0010, RJ.
BrasilCode:
(defun my-format-address-brazil (addr &optional indent)
"Insert formated Brazilian address ADDR in current buffer.
This function is a possible formatting function for
`bbdb-address-formatting-alist'.
The result looks like this:
location: ...
city
zip, state.
country
Here is such an example. Note that the city field contains
the city quarter as well as the city.
home: ...
Ipanema, Rio de Janeiro
22411-010, RJ.
Brasil"
(setq indent (or indent 14))
(let ((fmt (format " %%%ds: " indent))
(indent (+ 3 indent)))
(insert (format fmt (bbdb-address-location addr)))
(bbdb-format-streets addr indent)
(let* ((c (bbdb-address-city addr))
(c-p (> (length c) 0))
(s (bbdb-address-state addr))
(s-p (> (length s) 0))
(z (bbdb-address-zip addr))
(z-p (> (length z) 0)))
(when c-p
(indent-to indent)
(insert c "\n"))
(when (or z-p s-p)
(indent-to indent)
(insert z)
(when (and s-p z-p)
(insert ", "))
(when s-p
(insert s "."))
(insert "\n")))
(let ((country (bbdb-address-country addr)))
(when (> (length country) 0)
(indent-to indent)
(insert country "\n")))))
Why is this option not included in the main bbdb?
As to the format for telephones. How about locales for phone numbers?