Skip to content

Commit

Permalink
Fr timers (#2208)
Browse files Browse the repository at this point in the history
* sentences

* responses

* typo

* Test v1 (copy from English)

* Test v2

* TEst v3

* fix test

* Fix test

* errors
  • Loading branch information
jlpouffier committed Jun 5, 2024
1 parent 071494b commit b1bb1d5
Show file tree
Hide file tree
Showing 23 changed files with 956 additions and 2 deletions.
6 changes: 6 additions & 0 deletions responses/fr/HassCancelTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
language: fr
responses:
intents:
HassCancelTimer:
default: "Minuteur supprimé"
6 changes: 6 additions & 0 deletions responses/fr/HassDecreaseTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
language: fr
responses:
intents:
HassDecreaseTimer:
default: "Minuteur mis à jour"
6 changes: 6 additions & 0 deletions responses/fr/HassIncreaseTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
language: fr
responses:
intents:
HassIncreaseTimer:
default: "Minuteur mis à jour"
6 changes: 6 additions & 0 deletions responses/fr/HassPauseTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
language: fr
responses:
intents:
HassPauseTimer:
default: "Minuteur mis en pause"
6 changes: 6 additions & 0 deletions responses/fr/HassStartTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
language: fr
responses:
intents:
HassStartTimer:
default: "Minuteur lancé"
89 changes: 89 additions & 0 deletions responses/fr/HassTimerStatus.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
language: fr
responses:
intents:
HassTimerStatus:
default: |
{% set num_timers = slots.timers | length %}
{% set active_timers = slots.timers | selectattr('is_active') | list %}
{% set num_active_timers = active_timers | length %}
{% set paused_timers = slots.timers | rejectattr('is_active') | list %}
{% set num_paused_timers = paused_timers | length %}
{% set next_timer = None %}
{% if num_timers == 0: %}
Il n'y a auncun minuteur.
{% elif num_active_timers == 0: %}
{# No active timers #}
{% if num_paused_timers == 1: %}
{% set next_timer = paused_timers[0] %}
Le minuteur est en pause.
{% else: %}
{{ num_paused_timers }} minuteurs sont en pause.
{% endif %}
{% else: %}
{# At least one active timer #}
{% if num_active_timers == 1: %}
{% set next_timer = active_timers[0] %}
{% else: %}
{# Get active timer that will finish soonest #}
{% set sorted_timers = active_timers | sort(attribute='total_seconds_left') %}
{% set next_timer = sorted_timers[0] %}
{{ num_active_timers }} minuteurs sont actifs.
{% endif %}
{% if num_paused_timers == 1: %}
1 minuteur est en pause.
{% elif num_paused_timers > 0: %}
{{ num_paused_timers }} minuteurs sont en pause.
{% endif %}
{% endif %}
{% if next_timer: %}
{# At least one active timer #}
{% if (next_timer.rounded_hours_left == 1) and (next_timer.rounded_minutes_left > 0): %}
1 heure et {{ next_timer.rounded_minutes_left }} minutes
{% elif (next_timer.rounded_hours_left == 1): %}
1 heure
{% elif (next_timer.rounded_hours_left > 1) and (next_timer.rounded_minutes_left > 0): %}
{{ next_timer.rounded_hours_left }} heures et {{ next_timer.rounded_minutes_left }} minutes
{% elif (next_timer.rounded_hours_left > 1): %}
{{ next_timer.rounded_hours_left }} heures
{% elif (next_timer.rounded_minutes_left == 1) and (next_timer.rounded_seconds_left > 0): %}
1 minute et {{ next_timer.rounded_seconds_left }} secondes
{% elif (next_timer.rounded_minutes_left == 1): %}
1 minute
{% elif (next_timer.rounded_minutes_left > 1) and (next_timer.rounded_seconds_left > 0): %}
{{ next_timer.rounded_minutes_left }} minutes et {{ next_timer.rounded_seconds_left }} secondes
{% elif (next_timer.rounded_minutes_left > 1): %}
{{ next_timer.rounded_minutes_left }} minutes
{% elif (next_timer.rounded_seconds_left == 1): %}
1 seconde
{% elif (next_timer.rounded_seconds_left > 1): %}
{{ next_timer.rounded_seconds_left }} secondes
{% endif %}
{% if num_timers > 1: %}
{# Give some extra information to disambiguate #}
restante sur le minuteur
{% if (next_timer.start_hours > 0) and (next_timer.start_minutes > 0): %}
de {{ next_timer.start_hours }} heures et {{ next_timer.start_minutes }} minutes
{% elif (next_timer.start_hours > 0): %}
de {{ next_timer.start_hours }} heures
{% elif (next_timer.start_minutes > 0) and (next_timer.start_seconds > 0): %}
de {{ next_timer.start_minutes }} minutes et {{ next_timer.start_seconds }} secondes
{% elif (next_timer.start_minutes > 0): %}
de {{ next_timer.start_minutes }} minutes
{% elif (next_timer.start_seconds > 0): %}
de {{ next_timer.start_seconds }} secondes
{% endif %}
{% if next_timer.name: %}
appelé {{ next_timer.name }}
{% elif next_timer.area: %}
dans {{ next_timer.area }}
{% endif %}
{% else: %}
restante.
{% endif %}
{% endif %}
6 changes: 6 additions & 0 deletions responses/fr/HassUnpauseTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
language: fr
responses:
intents:
HassUnpauseTimer:
default: "Minuteur relancé"
56 changes: 54 additions & 2 deletions sentences/fr/_common.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,17 @@ responses:
Désolé, je n'ai rien trouvé de correspondant dans cet étage
{%- endif %}
no_entity_in_floor: "Désolé, je ne connais pas l'appareil {{ entity }}"
entity_wrong_state: |
{% set translations = {
"paused": "en pause",
"playing": "en cours de lecture",
} %}
{% if device_class in translations -%}
Désolé, je n'ai pas trouvé d'appareil {{ translations[state] }}
{%- else -%}
Désolé, je n'ai rien trouvé de correspondant
{%- endif %}
feature_not_supported: Désolé, je n'ai pas trouvé d'appareil qui supporte cette fonctionnalité
# Errors for when user is logged in and we can give more information
no_entity_exposed: "Désolé, l'appareil {{ entity }} n'est pas exposé"
no_entity_in_area_exposed: "Désolé, l'appareil {{ entity }} n'est pas exposé"
Expand Down Expand Up @@ -297,6 +308,11 @@ responses:
duplicate_entities_in_area: "Désolé, plusieurs appareils de cette pièce sont nommés {{entity}}"
duplicate_entities_in_floor: "Désolé, plusieurs appareils de cet étage sont nommés {{entity}}"

# Errors for timers
timer_not_found: Désole, je n'ai pas trouvé ce minuteur
multiple_timers_matched: Désole, je ne peux pas cibler plusieurs minutuers
no_timer_support: Désolé, cet appareil ne supporte pas les fonctions lié aux minuteurs.

lists:
color:
values:
Expand Down Expand Up @@ -604,6 +620,23 @@ lists:
from: 0
to: 100

timer_seconds:
range:
from: 1
to: 100
timer_minutes:
range:
from: 1
to: 100
timer_hours:
range:
from: 1
to: 100
timer_name:
wildcard: true
timer_command:
wildcard: true

expansion_rules:
#Common rules
pourcent: "(%| %| pourcent| pour cent)"
Expand Down Expand Up @@ -633,10 +666,17 @@ expansion_rules:
regle: "(règle|régler|met|mets|mettre|ajuste|ajuster|change|changer|mets_dirty)"
renvoie: "(renvoie|renvoyer|arrête|arrêter|stop[pe]|stopper)"
reprends: "(remets|remettre|reprends|reprend|reprendre|reprise|relance|relancer)"
# We have some heavy STT limitations today. "Éteins" is often misunderstood as a different word. Because it's such a commun action, we're willing to support this hack for now. Ideally this should be removed once we have a better STT engine. Hence the fact that we decided to put it on a different expansion rules. The goal of this expansion rule is to be removed in the future.
cree: "(créer|crée)"
supprime: "(supprime|supprimer)"
enleve: "(enlève|enlever|soustrais|soustrait|soustraire|retranche|retrancher)"
ajoute: "(ajoute|ajouter|rajoute|rajotuer)"

# Dirty Verbs. We have some heavy STT limitations today. We're willing to support this hack for now. Ideally this should be removed once we have a better STT engine. Hence the fact that we decided to put it on a different expansion rules. The goal of this expansion rule is to be removed in the future.
# Éteins
eteins_dirty: "(étant|étends|étend|étendre|état|et tant|et teins|et teint|et teints|et t'as|été|étais|était)"
# We have some heavy STT limitations today. "mets|met|mettre" is often misunderstood as a different word. Because it's such a commun action, we're willing to support this hack for now. Ideally this should be removed once we have a better STT engine. Hence the fact that we decided to put it on a different expansion rules. The goal of this expansion rule is to be removed in the future.
# Mets
mets_dirty: "(mais|maître)"

# Domains and Things
lumiere: "(lumière|lampe|ampoule)"
lumieres: "(lumières|lampes|ampoules)"
Expand All @@ -648,6 +688,18 @@ expansion_rules:
media: "(morceau|chanson|musique|son|élément|podcast|film|vidéo|épisode|radio|média)"
lecture: "(lecture|visionnage)"
volume: "(volume|son|watt[s])"
minuteur: "(compte a rebours)|(compte à rebours)|(minuteur)|(décompte)"

# Timers
timer_duration_seconds: "{timer_seconds:seconds} seconde[s]"
timer_duration_minutes: "{timer_minutes:minutes} minute[s][ [et ]{timer_seconds:seconds} seconde[s]]"
timer_duration_hours: "{timer_hours:hours} heure[s][ [et ]{timer_minutes:minutes} minute[s]][ [et ]{timer_seconds:seconds} seconde[s]]"
timer_duration: "<timer_duration_seconds>|<timer_duration_minutes>|<timer_duration_hours>"

timer_start_seconds: "{timer_seconds:start_seconds} seconde[s]"
timer_start_minutes: "{timer_minutes:start_minutes} minute[s][ [et ]{timer_seconds:start_seconds} seconde[s]]"
timer_start_hours: "{timer_hours:start_hours} heure[s][ [et ]{timer_minutes:start_minutes} minute[s]][ [et ]{timer_seconds:start_seconds} seconde[s]]"
timer_start: "<timer_start_seconds>|<timer_start_minutes>|<timer_start_hours>"

# Others
en_route: (en route)|(en marche)
Expand Down
34 changes: 34 additions & 0 deletions sentences/fr/homeassistant_HassCancelTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
language: "fr"
intents:
HassCancelTimer:
data:
# No name
- sentences:
# Supprime le minuteur
- "<supprime> [<le>] <minuteur>"
# Arrête le minuteur
- "<eteins> [<le>] <minuteur>"

# area
- sentences:
# Supprime le minuteur de la cuisine
- "<supprime> [<le>] <minuteur> [<de>] [<le>]{area}"
# Arrête le minuteur de la cuisine
- "<eteins> [<le>] <minuteur> [<de>] [<le>]{area}"

# duration
- sentences:
# Supprime le minuteur de 2 minutes
- "<supprime> [<le>] <minuteur> [de] <timer_start>"
# Arrête le minuteur de 2 minutes
- "<eteins> [<le>] <minuteur> [de] <timer_start>"

# name
- sentences:
# Supprime le minuteur appelé Pizza
- "<supprime> [<le>] <minuteur> [<appele>] {timer_name:name}"
# Arrête le minuteur appelé Pizza
- "<eteins> [<le>] <minuteur> [<appele>] {timer_name:name}"
expansion_rules:
appele: "(appelé|nommé|surnomé)"
42 changes: 42 additions & 0 deletions sentences/fr/homeassistant_HassDecreaseTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
language: "fr"
intents:
HassDecreaseTimer:
data:
# No name
- sentences:
# Enleve 2 minute du minuteur
- "<enleve> <timer_duration> du <minuteur>"
# Enleve 2 minute au minuteur
- "<enleve> <timer_duration> au <minuteur>"
# Enleve 2 minute sur le minuteur
- "<enleve> <timer_duration> sur le <minuteur>"

# area
- sentences:
# Enleve 2 minute du minuteur de la cuisine
- "<enleve> <timer_duration> du <minuteur> [<de>] [<le>]{area}"
# Enleve 2 minute au minuteur de la cuisine
- "<enleve> <timer_duration> au <minuteur> [<de>] [<le>]{area}"
# Enleve 2 minute sur le minuteur de la cuisine
- "<enleve> <timer_duration> sur le <minuteur> [<de>] [<le>]{area}"

# duration
- sentences:
# Enleve 2 minute du minuteur de 5 minutes
- "<enleve> <timer_duration> du <minuteur> [de] <timer_start>"
# Enleve 2 minute au minuteur de 5 minutes
- "<enleve> <timer_duration> au <minuteur> [de] <timer_start>"
# Enleve 2 minute sur le minuteur de 5 minutes
- "<enleve> <timer_duration> sur le <minuteur> [de] <timer_start>"

# name
- sentences:
# Enleve 2 minute du minuteur Pizza
- "<enleve> <timer_duration> du <minuteur> [<appele>] {timer_name:name}"
# Enleve 2 minute au minuteur Pizza
- "<enleve> <timer_duration> au <minuteur> [<appele>] {timer_name:name}"
# Enleve 2 minute sur le minuteur Pizza
- "<enleve> <timer_duration> sur le <minuteur> [<appele>] {timer_name:name}"
expansion_rules:
appele: "(appelé|nommé|surnomé)"
42 changes: 42 additions & 0 deletions sentences/fr/homeassistant_HassIncreaseTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
language: "fr"
intents:
HassIncreaseTimer:
data:
# No name
- sentences:
# Ajoute 2 minute du minuteur
- "<ajoute> <timer_duration> du <minuteur>"
# Ajoute 2 minute au minuteur
- "<ajoute> <timer_duration> au <minuteur>"
# Ajoute 2 minute sur le minuteur
- "<ajoute> <timer_duration> sur le <minuteur>"

# area
- sentences:
# Ajoute 2 minute du minuteur de la cuisine
- "<ajoute> <timer_duration> du <minuteur> [<de>] [<le>]{area}"
# Ajoute 2 minute au minuteur de la cuisine
- "<ajoute> <timer_duration> au <minuteur> [<de>] [<le>]{area}"
# Ajoute 2 minute sur le minuteur de la cuisine
- "<ajoute> <timer_duration> sur le <minuteur> [<de>] [<le>]{area}"

# duration
- sentences:
# Ajoute 2 minute du minuteur de 5 minutes
- "<ajoute> <timer_duration> du <minuteur> [de] <timer_start>"
# Ajoute 2 minute au minuteur de 5 minutes
- "<ajoute> <timer_duration> au <minuteur> [de] <timer_start>"
# Ajoute 2 minute sur le minuteur de 5 minutes
- "<ajoute> <timer_duration> sur le <minuteur> [de] <timer_start>"

# name
- sentences:
# Ajoute 2 minute du minuteur Pizza
- "<ajoute> <timer_duration> du <minuteur> [<appele>] {timer_name:name}"
# Ajoute 2 minute au minuteur Pizza
- "<ajoute> <timer_duration> au <minuteur> [<appele>] {timer_name:name}"
# Ajoute 2 minute sur le minuteur Pizza
- "<ajoute> <timer_duration> sur le <minuteur> [<appele>] {timer_name:name}"
expansion_rules:
appele: "(appelé|nommé|surnomé)"
50 changes: 50 additions & 0 deletions sentences/fr/homeassistant_HassPauseTimer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
language: "fr"
intents:
HassPauseTimer:
data:
# No name
- sentences:
# Mets le minuteur en pause
- "<mets> [<le>] <minuteur> en pause"
# Mets le minuteur sur pause
- "<mets> [<le>] <minuteur> sur pause"
# Mets en pause le minuteur
- "<mets> en pause [<le>] <minuteur>"
# Mets sur pause le minuteur
- "<mets> sur pause [<le>] <minuteur>"

# area
- sentences:
# Mets le minuteur de la cuisine en pause
- "<mets> [<le>] <minuteur> [<de>] [<le>]{area} en pause"
# Mets le minuteur de la cuisine sur pause
- "<mets> [<le>] <minuteur> [<de>] [<le>]{area} sur pause"
# Mets en pause le minuteur de la cuisine
- "<mets> en pause [<le>] <minuteur> [<de>] [<le>]{area}"
# Mets sur pause le minuteur de la cuisine
- "<mets> sur pause [<le>] <minuteur> [<de>] [<le>]{area}"

# duration
- sentences:
# Mets le minuteur de 2 minutes en pause
- "<mets> [<le>] <minuteur> [de] <timer_start> en pause"
# Mets le minuteur de 2 minutes sur pause
- "<mets> [<le>] <minuteur> [de] <timer_start> sur pause"
# Mets en pause le minuteur de 2 minutes
- "<mets> en pause [<le>] <minuteur> [de] <timer_start>"
# Mets sur pause le minuteur de 2 minutes
- "<mets> sur pause [<le>] <minuteur> [de] <timer_start>"

# name
- sentences:
# Mets le minuteur appelé Pizza en pause
- "<mets> [<le>] <minuteur> [<appele>] {timer_name:name} en pause"
# Mets le minuteur appelé Pizza sur pause
- "<mets> [<le>] <minuteur> [<appele>] {timer_name:name} sur pause"
# Mets en pause le minuteur appelé Pizza
- "<mets> en pause [<le>] <minuteur> [<appele>] {timer_name:name}"
# Mets sur pause le minuteur appelé Pizza
- "<mets> sur pause [<le>] <minuteur> [<appele>] {timer_name:name}"
expansion_rules:
appele: "(appelé|nommé|surnomé)"
Loading

0 comments on commit b1bb1d5

Please sign in to comment.