We setup a new product list template via catalogsearch.xml called list-search.phtml We then made some modifications that look like the following:

// Display Country Availability Message 
$group_id = Mage::app()->getStore()->getGroupId(); 
$store_name = Mage::getModel('core/store_group')->load($group_id)->getName(); 
if($_product->getVisibility() == 3){ 
                
echo $this->__('No disponible en ').$store_name;
} elseif ($_product->getVisibility() == 4) {
echo $this->__('Disponible en ').$store_name;
}

Note*: Aheadworks blog strips out the php tags. So ensure you re-add them where applicable

  1. We get the group_id.
  2. We then get the Store Name (not the store view name) because in our case, a country is defined by a Store Name and a language is defined by a StoreView name. If we took the store view, it would output one of either English, Spanish or Portuguese
  3. We then check the visibility of the product - If it's only searchable (id = 3), we list it but explain it's not available for this country
  4. If the product is both searchable in Magento and listed in the catalog (id = 4), we then explain it's Available for that country

A better alternative would have been to have a Multiselect Attribute for the product with the country names selected for each product and then a small "Availability" chart popup that then allows you to view which countries the product is suitable for. Unfortunately, time and budget didn't permit this so the above solution was determined and implemented.