danhper / danhper/python-i18n

YAML arrays not supported

Offen
#22 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
246
Forks
46
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Hello!
Either I didn't understand something, or it looks like that package doesn't support translations arrays.
I tried to put an array in my yaml file, which is correctly parsed and all, but it looks like trying to get it with `i18n.t()` raises a nice TypeError, when trying to format a string-which-is-actually-a-list.

Here's the YAML content I put :
```yaml
fr:
time:
months:
- janvier
- février
- mars
- avril
- mai
- juin
- juillet
- août
- septembre
- octobre
- novembre
- décembre
```
And the error output:
```
Traceback (most recent call last):
File "/Users/.../languages.py", line 32, in tr
return i18n.t(key, locale=lang)
File "/usr/local/lib/python3.8/site-packages/i18n/translator.py", line 28, in t
return translate(key, locale=locale, **kwargs)
File "/usr/local/lib/python3.8/site-packages/i18n/translator.py", line 44, in translate
return TranslationFormatter(translation).format(**kwargs)
File "/usr/local/lib/python3.8/site-packages/i18n/translator.py", line 18, in format
return self.safe_substitute(**kwargs)
File "/usr/local/Cellar/python@3.8/3.8.6/Frameworks/Python.framework/Versions/3.8/lib/python3.8/string.py", line 147, in safe_substitute
return self.pattern.sub(convert, self.template)
TypeError: expected string or bytes-like object
```

I guess detecting the variable type before trying to apply a substitution would be enough to fix it, ~~but to be honest I didn't really look at the internal code, so I let you handle that part.~~
EDIT: Just created a PR for you, let me know if I did something wrong!

**Python version:** Python 3.8.6
**Package version:** 0.3.9

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne mit translator.py, insbesondere mit TranslationFormatter und dem im Traceback gezeigten translate-Pfad. Reproduziere den Fehler mit dem bereitgestellten YAML-months-Array und überprüfe das Verhalten von i18n.t(); abgeschlossen ist die Aufgabe, wenn Übersetzungen mit Array-Werten keinen TypeError bei der String-Formatierung mehr auslösen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
internationalization
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.