Ahoj chcu se zeptat na nejlepší způsob jak ukladat nastavení do yaml
momentalně je tak když uložím pomocí funkce yaml_saver() a soubor existuje
tak mi vyhodí OSError vyjímku a já se chcu zeptat existuje něco
elegantějšího než před uložením vymazat .settings.yaml a pak uložit jde
to nějak nahradit.
Dotaz číslo 2:
při ukladaní nastavení uloží takto já se chcu zeptat jak udělat aby se to
ukladalo normalně čítelně jako division: "dělení" a ne jako division:
"d\u011Blen\xED a ano ukladam utf-8:
language:
cz:
addition: "s\u010D\xEDt\xE1n\xED"
angular: "\xDAhlov\xE1 konverze"
author: 'Autor:'
cosine: Kosinus
division: "d\u011Blen\xED"
exponentiation: "umoc\u0148ov\xE1n\xED"
first_number: "Zadej prvn\xED \u010D\xEDslo:"
hyp_f: "Hyperbolick\xE9 funkce"
is_not: "nen\xED"
licence_agree: "Souhlas\xEDte s licenc\xED: y/n"
multiplication: "n\xE1soben\xED"
num_th: "\u010C\xEDseln\xE9 a teoretick\xE9 funkce"
p_log: "V\xFDkonov\xE9 a logaritmick\xE9 funkces"
result: "V\xFDsledek "
rooting: "odmoc\u0148ov\xE1n\xED"
s_help: "Program osahuje tyto v\xFDpo\u010Detn\xED oprace \n Napov\u011Bda: Zadajte\
\ \u010Dislo operace \nDesetin\xE1 \u010D\xEDsla zadavejte s te\u010Dkou jako\
\ nap\u0159: 4.5\nPro se\u017Eten\xED \u010Disel pomoci sum do prvn\xEDho \u010D\
isla zadejte ve formatu: 4,5.6,4 \u010D\xEDsla jsou od\u011Blen\xE1 \u010Darkami"
second_number: "Zadej druh\xE9 \u010D\xEDslo:"
sine: Sinus
spec_f: "Speci\xE1ln\xED funkce"
subtraction: "od\u010D\xEDt\xE1n\xED"
tan: Tangens
trigo_f: "Goniometrick\xE1 funkce"
zero_division_error: "D\u011Blen\xED nulou"
en:
addition: "s\u010D\xEDt\xE1n\xED"
angular: Angular conversion
author: 'Author:'
cosine: Cosine
division: "d\u011Blen\xED"
exponentiation: "umoc\u0148ov\xE1n\xED"
first_number: 'Enter first number:'
hyp_f: Hyperbolic functions
is_not: isnot
licence_agree: 'Licence agreement: y/n'
multiplication: "n\xE1soben\xED"
num_th: Number-theoretic and representation functions
p_log: Power and logarithmic functions
result: Result
rooting: "odmoc\u0148ov\xE1n\xED"
s_help: "Program osahuje tyto v\xFDpo\u010Detn\xED oprace \n Napov\u011Bda: Zadajte\
\ \u010Dislo operace \nDesetin\xE1 \u010D\xEDsla zadavejte s te\u010Dkou jako\
\ nap\u0159: 4.5\nPro se\u017Eten\xED \u010Disel pomoci sum do prvn\xEDho \u010D\
isla zadejte ve formatu: 4,5.6,4 \u010D\xEDsla jsou od\u011Blen\xE1 \u010Darkami"
second_number: 'Enter second number:'
sine: Sine
spec_f: Special functions
subtraction: "od\u010D\xEDt\xE1n\xED"
tan: Tan
trigo_f: Trigonometric functions
zero_division_error: Zero Division Error
settings:
first_run: false
language: cz
printlog: true
Dotaz číslo 3:
Existuje nějaké lepší načítaní hlašek
než do globalní proměné uložit hlašky
jinak do yamlu ukladam hla3ky v češtině angličnoně a ostatní jazyky
def lang_loader():
"""
lang loader
"""global author
global licence_agree
global first_number
global second_number
global is_not
global result
global s_help
global num_th
global p_log
global trigo_f
global angular
global hyp_f
global spec_f
global addition
global subtraction
global multiplication
global division
global exponentiation
global rooting
global sine
global cosine
global tan
global zero_division_error
# loading mesages cz or en or otherif setti["settings"]["language"] == "cz":
lang = setti["language"]["cz"]
author = lang["author"]
licence_agree = lang["licence_agree"]
first_number = lang["first_number"]
second_number = lang["second_number"]
is_not = lang["is_not"]
result = lang["result"]
s_help = lang["s_help"]
num_th = lang["num_th"]
p_log = lang["p_log"]
trigo_f = lang["trigo_f"]
angular = lang["angular"]
hyp_f = lang["hyp_f"]
spec_f = lang["spec_f"]
addition = lang["addition"]
subtraction = lang["subtraction"]
multiplication = lang["multiplication"]
division = lang["division"]
exponentiation = lang["exponentiation"]
rooting = lang["rooting"]
sine = lang["sine"]
cosine = lang["cosine"]
tan = lang["tan"]
zero_division_error = lang["zero_division_error"]
elif setti["settings"]["language"] == "en":
lang = setti["language"]["en"]
author = lang["author"]
licence_agree = lang["licence_agree"]
first_number = lang["first_number"]
second_number = lang["second_number"]
is_not = lang["is_not"]
result = lang["result"]
s_help = lang["s_help"]
num_th = lang["num_th"]
p_log = lang["p_log"]
trigo_f = lang["trigo_f"]
angular = lang["angular"]
hyp_f = lang["hyp_f"]
spec_f = lang["spec_f"]
addition = lang["addition"]
subtraction = lang["subtraction"]
multiplication = lang["multiplication"]
division = lang["division"]
exponentiation = lang["exponentiation"]
rooting = lang["rooting"]
sine = lang["sine"]
cosine = lang["cosine"]
tan = lang["tan"]
zero_division_error = lang["zero_division_error"]
else:
print("lang error")
Zkusil jsem:
moje funkce na načítaní ukladaní
import pyaml
def yaml_loader(yaml_to_load):
"""
nacita yaml soubory
save yaml file
"""try:
withopen(yaml_to_load, "r", encoding="utf-8") as yaml_conf:
yaml_file = yaml.safe_load(yaml_conf)
yaml_conf.close
return yaml_file
exceptOSError:
print("Can't load setting")
setti = {"settings": {"first_run": "error"}}
return setti
def yaml_saver(yaml_to_save, data_to_save):
"""
uklada data do yaml
load yaml file
"""try:
withopen(yaml_to_save, "w", encoding="utf-8") as yaml_conf:
yaml.safe_dump(data_to_save, yaml_conf)
exceptOSError:
print("Can't safe setting")
Chtěl bych aby mohl aktualizovat soubor .settings.yaml bez vymazaní.
2.Chtěl abych se nastavení ukladalo do yamlu v čitelnem formatu
3.nejaké lepší řešení pro multijazyčné programy
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.