SrvSVXLink/Configuration/fr_FR/events.d/locale.tcl

278 lines
8.1 KiB
Tcl
Raw Normal View History

2022-08-24 08:18:01 +02:00
###############################################################################
#
# Locale specific functions for playing back time, numbers and spelling words.
# Often, the functions in this file are the only ones that have to be
# reimplemented for a new language pack.
#
###############################################################################
#
# 25/06/2011 F1SMF modif for fr_FR
# 04/04/2016 F8ASB Add playTemp read temperature datas for fr_FR
# Spell the specified word using a phonetic alphabet
#
proc spellWord {word} {
set word [string tolower $word];
for {set i 0} {$i < [string length $word]} {set i [expr $i + 1]} {
set char [string index $word $i];
if {$char == "*"} {
playMsg "Default" "star";
} elseif {$char == "/"} {
playMsg "Default" "slash";
} elseif {$char == "-"} {
playMsg "Default" "dash";
} elseif {[regexp {[a-z0-9]} $char]} {
playMsg "Default" "phonetic_$char";
}
}
}
#
# Spell the specified number digit for digit
#
proc spellNumber {number} {
for {set i 0} {$i < [string length $number]} {set i [expr $i + 1]} {
set ch [string index $number $i];
if {$ch == "."} {
playMsg "Default" "decimal";
} else {
playMsg "Default" "$ch";
}
}
}
#
# Say the specified two digit number (00 - 99)
#
proc playTwoDigitNumber {number} {
if {[string length $number] != 2} {
puts "*** WARNING: Function playTwoDigitNumber received a non two digit number: $number";
return;
}
set first [string index $number 0];
if {($first == "0") || ($first == "O")} {
playMsg "Default" $first;
playMsg "Default" [string index $number 1];
} elseif {$first == "1"} {
playMsg "Default" $number;
} elseif {$first == "7"} {
playMsg "Default" "6X";
if {[string index $number 1] == "1"} {
playMsg "Default" "and";
}
playMsg "Default" [expr $number - 60];
} elseif {$first == "9"} {
playMsg "Default" "8X";
playMsg "Default" [expr $number - 80];
} else {
playMsg "Default" "[string index $number 0]X";
if {[string index $number 1] == "1"} {
playMsg "Default" "and";
}
if {[string index $number 1] != "0"} {
playMsg "Default" "[string index $number 1]";
}
}
}
#
# Say the specified three digit number (000 - 999)
#
proc playThreeDigitNumber {number} {
if {[string length $number] != 3} {
puts "*** WARNING: Function playThreeDigitNumber received a non three digit number: $number";
return;
}
set first [string index $number 0];
if {($first == "0") || ($first == "O")} {
spellNumber $number
} else {
append first "00";
playMsg "Default" $first;
if {[string index $number 1] != "0"} {
playTwoDigitNumber [string range $number 1 2];
} elseif {[string index $number 2] != "0"} {
playMsg "Default" [string index $number 2];
}
}
}
#Say Wind Direction as as intelligent as posible.
proc playWindDir {windDir} {
if { 0 < $windDir && $windDir < 22.5} {
puts " Direction N"
playMsg "WeatherStation" "North";
} elseif {$windDir >= 22.5 && $windDir < 45 } {
puts " Direction N NE"
playMsg "WeatherStation" "North";
playMsg "WeatherStation" "North-East";
} elseif {$windDir >= 45 && $windDir < 67.5 } {
puts " Direction NE"
playMsg "WeatherStation" "North-East";
} elseif {$windDir >= 67.5 && $windDir < 90 } {
puts " Direction NE E"
playMsg "WeatherStation" "North-East";
playMsg "WeatherStation" "East";
} elseif {$windDir >= 90 && $windDir < 112.5 } {
puts " Direction E"
playMsg "WeatherStation" "East";
} elseif {$windDir >= 112.5 && $windDir < 135 } {
puts " Direction E SE"
playMsg "WeatherStation" "East";
} elseif {$windDir >= 135 && $windDir < 157.5 } {
puts " Direction SE"
playMsg "WeatherStation" "South-East";
} elseif {$windDir >= 157.5 && $windDir < 180 } {
puts " Direction SE S"
playMsg "WeatherStation" "South-East";
playMsg "WeatherStation" "South";
} elseif {$windDir >= 180 && $windDir < 202.5} {
puts " Direction S"
playMsg "WeatherStation" "South";
} elseif {$windDir >= 202.5 && $windDir < 225 } {
puts " Direction S SW"
playMsg "WeatherStation" "South";
playMsg "WeatherStation" "South-West";
} elseif {$windDir >= 225 && $windDir < 247.5} {
puts " Direction SW"
playMsg "WeatherStation" "South-West";
} elseif {$windDir >= 247.5 && $windDir < 270 } {
puts " Direction SW W"
playMsg "WeatherStation" "South-West";
playMsg "WeatherStation" "West";
} elseif {$windDir >= 270 && $windDir < 292.5} {
puts " Direction W"
playMsg "WeatherStation" "West";
} elseif {$windDir >= 292.5 && $windDir < 315 } {
puts " Direction W NW"
playMsg "WeatherStation" "West";
playMsg "WeatherStation" "North-West";
} elseif {$windDir >= 315 && $windDir < 337.5} {
puts " Direction NW"
playMsg "WeatherStation" "North-West";
} elseif {$windDir >= 337.5 && $windDir < 359 } {
puts " Direction NW N"
playMsg "WeatherStation" "North-West";
playMsg "WeatherStation" "North";
} else {
puts " Non disponible"
}
}
#
# Say a number as intelligent as posible. Examples:
#
# 1 - one
# 24 - twentyfour
# 245 - twohundred and fourtyfive
# 1234 - twelve thirtyfour
# 12345 - onehundred and twentythree fourtyfive
# 136.5 - onehundred and thirtysix point five
#
proc playNumber {number} {
if {[regexp {(\d+)\.(\d+)?} $number -> integer fraction]} {
playNumber $integer;
# No say 0 if decimal = 0
if {$fraction != 0} {
playMsg "Default" "decimal";
spellNumber $fraction;
}
return;
}
while {[string length $number] > 0} {
set len [string length $number];
if {$len == 1} {
playMsg "Default" $number;
set number "";
} elseif {$len % 2 == 0} {
playTwoDigitNumber [string range $number 0 1];
set number [string range $number 2 end];
} else {
playThreeDigitNumber [string range $number 0 2];
set number [string range $number 3 end];
}
}
}
#
# Say temperature as intelligent as posible. Examples:
#
# 1 - one
# 24 - twentyfour
# 245 - twohundred and fourtyfive
# 1234 - twelve thirtyfour
# 12345 - onehundred and twentythree fourtyfive
# 136.5 - onehundred and thirtysix point five
#
proc playTemp {number} {
if {[regexp {(\d+)\.(\d+)?} $number -> integer fraction]} {
playNumber $integer;
playMsg "WeatherStation" "degree";
# No say 0 if decimal = 0
if {$fraction != 0} {
spellNumber $fraction;
}
return;
}
while {[string length $number] > 0} {
set len [string length $number];
if {$len == 1} {
playMsg "Default" $number;
set number "";
} elseif {$len % 2 == 0} {
playTwoDigitNumber [string range $number 0 1];
set number [string range $number 2 end];
} else {
playThreeDigitNumber [string range $number 0 2];
set number [string range $number 3 end];
}
}
}
#
# Say the time specified by function arguments "hour" and "minute".
#
proc playTime {hour minute} {
# Strip white space and leading zeros. Check ranges.
if {[scan $hour "%d" hour] != 1 || $hour < 0 || $hour > 23} {
error "playTime: Non digit hour or value out of range: $hour"
}
if {[scan $minute "%d" minute] != 1 || $minute < 0 || $minute > 59} {
error "playTime: Non digit minute or value out of range: $hour"
}
if {[string length $hour] == 1} {
playMsg "Default" [expr $hour];
} else {
playTwoDigitNumber $hour;
}
# playSilence 250
playMsg "Core" "time";
if {$minute == 0} {
return;
}
if {[string length $minute] == 1} {
playMsg "Default" [expr $minute];
} else {
playTwoDigitNumber $minute;
}
}
#
# This file has not been truncated
#