Prepare for multi-lang support

pull/2506/head
Åke Forslund 2020-03-23 09:15:04 +01:00
parent 00c83c5139
commit 9fe158d841
1 changed files with 17 additions and 9 deletions

View File

@ -33,15 +33,15 @@ TIMEOUT = 10
SLEEP_LENGTH = 0.25
def find_dialog(skill_path, dialog):
def find_dialog(skill_path, dialog, lang):
"""Check the usual location for dialogs.
TODO: subfolders
"""
if exists(join(skill_path, 'dialog')):
return join(skill_path, 'dialog', 'en-us', dialog)
return join(skill_path, 'dialog', lang, dialog)
else:
return join(skill_path, 'locale', 'en-us', dialog)
return join(skill_path, 'locale', lang, dialog)
def load_dialog_file(dialog_path):
@ -68,9 +68,17 @@ def load_dialog_list(skill_path, dialog):
return load_dialog_file(dialog_path), debug
def dialog_from_sentence(sentence, skill_path):
"""Find dialog file from example sentence."""
dialog_paths = join(skill_path, 'dialog', 'en-us', '*.dialog')
def dialog_from_sentence(sentence, skill_path, lang):
"""Find dialog file from example sentence.
Arguments:
sentence (str): Text to match
skill_path (str): path to skill directory
lang (str): language code to use
Returns (str): Dialog file best matching the sentence.
"""
dialog_paths = join(skill_path, 'dialog', lang, '*.dialog')
best = (None, 0)
for path in glob(dialog_paths):
patterns = load_dialog_file(path)
@ -118,7 +126,7 @@ def given_english(context):
def when_user_says(context, text):
context.bus.emit(Message('recognizer_loop:utterance',
data={'utterances': [text],
'lang': 'en-us',
'lang': context.lang,
'session': '',
'ident': time.time()},
context={'client_name': 'mycroft_listener'}))
@ -141,7 +149,7 @@ def then_dialog(context, skill, dialog):
@then('"{skill}" should reply with "{example}"')
def then_example(context, skill, example):
skill_path = context.msm.find_skill(skill).path
dialog = dialog_from_sentence(example, skill_path)
dialog = dialog_from_sentence(example, skill_path, context.lang)
print('Matching with the dialog file: {}'.format(dialog))
assert dialog is not None, 'No matching dialog...'
then_dialog(context, skill, dialog)
@ -198,7 +206,7 @@ def then_user_follow_up(context, text):
wait_while_speaking()
context.bus.emit(Message('recognizer_loop:utterance',
data={'utterances': [text],
'lang': 'en-us',
'lang': context.lang,
'session': '',
'ident': time.time()},
context={'client_name': 'mycroft_listener'}))