#!/usr/bin/ruby

require 'digest/md5'
require 'rexml/document'

include REXML
include Digest

locmap = {
    "zh-Hans" => "chs",
    "zh-Hant" => "cht",
    "cs" => "csy",
    "da" => "dan",
    "de" => "deu",
    "el" => "ell",
    "en" => "eng",
    "es-419" => "esm",
    "es" => "esn",
    "et" => "eti",
    "fi" => "fin",
    "fr" => "fra",
    "fr-CA" => "frc",
    "hu" => "hun",
    "hr" => "hrv",
    "it" => "ita",
    "ja" => "jpn",
    "ja-JP" => "jpn",
    "nl" => "nld",
    "nb" => "nor",
    "pl" => "plk",
    "pt" => "ptb",
    "pt-PT" => "ptg",
    "ro" => "rom",
    "ru" => "rus",
    "sl" => "slv",
    "sv" => "sve",
    "tr" => "trk",
    "zh-HK" => "zhh"
}


lang = ENV['LANG']
if !lang
  lang = `defaults read NSGlobalDomain AppleLanguages 2> /dev/null | awk -F, 'NR==2 { print $1;}' | tr -d ' '`
  lang.chomp!
end
if lang.eql? ''
  lang = 'en'
end
lang = lang.split(".")[0]
lang.gsub!("\"", "")
lang.gsub!("_", "-")

extension = 'eng'

if locmap.has_key? lang
    extension = locmap[lang]
else
    lang = lang.split("-")[0]
    if locmap.has_key? lang
        extension = locmap[lang]
    end
end

# TODO: should eventually be enhanced to support localized product names
def get_product_name()
    begin
        doc = Document.new(File.open('/Library/F-Secure/fsmac/gui/available_languages.xml'))
        return doc.root.elements['/available_languages/default/bundlename'].text
    rescue
        return 'the product'
    end
end


begin
    md5 = MD5.hexdigest(ARGV[1])
    # "/usr/local/f-secure/fssp/etc/fsdiag-strings/mac_fsdiag"
    file = File.open(ARGV[0] + ".#{extension}.xml")
    doc = Document.new(file)
    if ARGV[1].index('loctext_') == 0
        output = doc.root.elements["string[@id='#{ARGV[1]}']"].text
    else
        output = doc.root.elements["string[@id='#{md5}']"].text
    end
    output.sub!('{@product_info:product_name}', get_product_name())
    output.sub!(/<p>/, "\n")
    puts output
rescue
    $stderr.puts "Unlocalized string for #{extension} (#{ARGV[1]})"
    puts ARGV[1]
end

