Created
May 7, 2019 09:14
-
-
Save AlexxIT/9235d8992cb38baa1ea74870f550baea to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from fluent.runtime import FluentBundle | |
def equal(val1, val2): | |
if isinstance(val1, str) and isinstance(val2, str): | |
return val1.lower() == val2.lower() | |
return val1 == val2 | |
bundle = FluentBundle(['ru'], use_isolating=False, | |
functions={'EQUAL': equal}) | |
bundle.add_messages(""" | |
weather = Сейчас {$facttemp}{ | |
EQUAL($facttemp, $feeltemp) -> | |
*[1] {""} | |
[0] , ощущуется как {$feeltemp} | |
}. {$factcond}. {$forecast}.{ | |
EQUAL($factcond, $maxcond) -> | |
[0] {" "}До конца дня ожидается {$maxcond}{ | |
EQUAL($facttemp, $maxtemp) -> | |
*[1] . | |
[0] {" "}и температура {$maxtemp}. | |
} | |
*[1] { | |
EQUAL($facttemp, $maxtemp) -> | |
*[1] {""} | |
[0] {" "}До конца дня ожидается температура {$maxtemp}. | |
} | |
} | |
""") | |
translated, _ = bundle.format('weather', { | |
'facttemp': '+21', | |
'feeltemp': '+19', | |
'factcond': 'Ясно', | |
'forecast': "В ближайшие два часа осадков не ожидается", | |
'maxcond': "небольшой дождь", | |
'maxtemp': '+25' | |
}) | |
print(translated) | |
# Сейчас +21. Ясно. В ближайшие два часа осадков не ожидается. До конца дня | |
# ожидается небольшой дождь и температура +25. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def as_text(facttemp, feeltemp, factcond, forecast, maxtemp, maxcond): | |
s = f"Сейчас {facttemp}" | |
if facttemp != feeltemp: | |
s += f", ощущается как {feeltemp}" | |
s += f". {factcond}. {forecast}." | |
if maxcond and factcond.lower() != maxcond and facttemp != maxtemp: | |
s += f" До конца дня ожидается {maxcond} и температура {maxtemp}." | |
elif maxcond and factcond.lower() != maxcond: | |
s += f" До конца дня ожидается {maxcond}." | |
elif facttemp != maxtemp: | |
s += f" До конца дня ожидается температура {maxtemp}." | |
return s | |
print(as_text(**{ | |
'facttemp': '+21', | |
'feeltemp': '+19', | |
'factcond': 'Ясно', | |
'forecast': "В ближайшие два часа осадков не ожидается", | |
'maxcond': "небольшой дождь", | |
'maxtemp': '+25' | |
})) | |
# Сейчас +21, ощущается как +19. Ясно. В ближайшие два часа осадков не | |
# ожидается. До конца дня ожидается небольшой дождь и температура +25. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment