#!/bin/bash
# Multi-Language Sitemap Generator for Odoo Expertos
# Generates sitemaps with hreflang annotations for ES (default), EN, DE, FR
DOMAIN="https://www.odoo-expertos.com"
TODAY=$(date +%Y-%m-%d)
LANGUAGES=("" "en" "de" "fr" "pt" "ar")
HREFLANGS=("es" "en" "de" "fr" "pt" "ar")
# Generate main sitemap index
cat << 'SITEMAP_INDEX_START' > sitemap.xml
https://www.odoo-expertos.com/sitemap-es.xml
https://www.odoo-expertos.com/sitemap-en.xml
https://www.odoo-expertos.com/sitemap-de.xml
https://www.odoo-expertos.com/sitemap-fr.xml
https://www.odoo-expertos.com/sitemap-pt.xml
https://www.odoo-expertos.com/sitemap-ar.xml
SITEMAP_INDEX_START
# Function to generate hreflang entries for a given path
generate_hreflang() {
local base_path="$1"
echo " "
echo " "
echo " "
echo " "
echo " "
echo " "
echo " "
}
# Function to generate sitemap for a specific language
generate_lang_sitemap() {
local lang="$1"
local lang_prefix="$2"
local sitemap_file="sitemap-${lang}.xml"
cat << SITEMAP_HEADER > "$sitemap_file"
SITEMAP_HEADER
# Homepage
cat << HOMEPAGE >> "$sitemap_file"
${DOMAIN}${lang_prefix}/
${TODAY}
daily
1.0
$(generate_hreflang "/")
HOMEPAGE
# Main category pages
for category in "odoo" "odoo-hosting" "odoo-ia"; do
cat << CATEGORY >> "$sitemap_file"
${DOMAIN}${lang_prefix}/${category}/
${TODAY}
weekly
0.9
$(generate_hreflang "/${category}/")
CATEGORY
done
# Content pages for this language
if [ -z "$lang_prefix" ]; then
# Spanish (root) - scan existing content
find . -name "*.html" -type f | grep -E "^./odoo|^./odoo-hosting|^./odoo-ia" | grep -v test-files | grep -v "^./en" | grep -v "^./de" | grep -v "^./fr" | while read file; do
path=$(echo "$file" | sed 's|^\./||' | sed 's|/index\.html$|/|' | sed 's|\.html$|.html|')
# Skip category index pages (already added above)
if [[ "$path" == "odoo/" || "$path" == "odoo-hosting/" || "$path" == "odoo-ia/" ]]; then
continue
fi
depth=$(echo "$path" | tr -cd '/' | wc -c)
if [ $depth -le 2 ]; then
priority="0.8"
else
priority="0.7"
fi
cat << URL >> "$sitemap_file"
${DOMAIN}/${path}
${TODAY}
monthly
${priority}
$(generate_hreflang "/${path}")
URL
done
else
# Other languages - scan their directories
if [ -d ".${lang_prefix}" ]; then
find ".${lang_prefix}" -name "*.html" -type f | while read file; do
# Get path relative to language directory
rel_path=$(echo "$file" | sed "s|^\.${lang_prefix}/||" | sed 's|/index\.html$|/|' | sed 's|\.html$|.html|')
base_path="/${rel_path}"
depth=$(echo "$rel_path" | tr -cd '/' | wc -c)
if [ $depth -le 2 ]; then
priority="0.8"
else
priority="0.7"
fi
cat << URL >> "$sitemap_file"
${DOMAIN}${lang_prefix}/${rel_path}
${TODAY}
monthly
${priority}
$(generate_hreflang "${base_path}")
URL
done
fi
fi
# Legal pages (only for main Spanish sitemap)
if [ -z "$lang_prefix" ]; then
for page in "cookie-policy" "legal-notice" "privacy-policy" "terms-of-use"; do
cat << LEGAL >> "$sitemap_file"
${DOMAIN}/${page}.html
${TODAY}
yearly
0.3
LEGAL
done
fi
# Close sitemap
echo "" >> "$sitemap_file"
url_count=$(grep -c '' "$sitemap_file")
echo "Generated $sitemap_file with $url_count URLs"
}
# Generate sitemaps for each language
generate_lang_sitemap "es" ""
generate_lang_sitemap "en" "/en"
generate_lang_sitemap "de" "/de"
generate_lang_sitemap "fr" "/fr"
generate_lang_sitemap "pt" "/pt"
generate_lang_sitemap "ar" "/ar"
# Summary
echo ""
echo "=== Sitemap Generation Complete ==="
echo "Main sitemap index: sitemap.xml"
for lang in "es" "en" "de" "fr" "pt" "ar"; do
echo " - sitemap-${lang}.xml: $(grep -c '' sitemap-${lang}.xml) URLs"
done