Skip to content

Commit 15bac4d

Browse files
committed
enh: Added support for French #54
enh: Fall back to English if translation fails ver: 2.2
1 parent 5d10afd commit 15bac4d

File tree

2 files changed

+78
-16
lines changed

2 files changed

+78
-16
lines changed

lang/fr-fr.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
language_ietf: fr-fr
2+
language_label: Français
3+
4+
movie: film
5+
series: séries
6+
season: saison
7+
title: titre
8+
title_here: titre ici
9+
password: mot de passe
10+
admin_password: mot de passe admin
11+
admin_auth_success: Authentification admin réussie. Utilisez {commands} pour les commandes.
12+
already_authenticated: Vous êtes déjà authentifié. Essayez {commands} pour obtenir des informations sur l'utilisation.
13+
auth_successful: Authentification réussie. Utilisez {commands} pour les commandes.
14+
incorrect_pw: Mot de passe incorrect. Imposteur.
15+
auth_required: Je n'ai pas l'impression de vous connaître... Veuillez vous authentifier avec {commands} et réessayer.
16+
admin_auth_required: Vous n'avez pas les droits d'administrateur... Veuillez vous authentifier avec {commands} et réessayer.
17+
radarr_disabled: Désolé, mais le support des films est désactivé.
18+
include_movie_title_in_cmd: "Veuillez inclure le titre du film dans la commande, par exemple : {commands}"
19+
no_matching_movies: Désolé, mais je n'ai pas trouvé de films correspondants.
20+
sonarr_disabled: Désolé, mais le support des séries est désactivé.
21+
include_series_title_in_cmd: "Veuillez inclure le titre de la série dans la commande, par exemple : {commands}"
22+
no_matching_series: Désolé, mais je n'ai pas trouvé de série correspondante.
23+
no_users_found: Désolé, mais je n'ai pas trouvé d'utilisateurs. Cela semble être une erreur...
24+
convo_not_found: J'ai reçu votre commande, mais je ne reconnais pas la conversation. Veuillez recommencer.
25+
search_canceled: Recherche annulée !
26+
no_root_folders: "Error adding {kind} : no root folders enabled for {app} ! Veuillez vérifier votre configuration Searcharr et réessayer."
27+
no_quality_profiles: "Error adding {kind} : no quality profiles enabled for {app} ! Veuillez vérifier votre configuration Searcharr et réessayer."
28+
all_seasons: Toutes saisons
29+
first_season: Première saison
30+
latest_season: Dernière saison
31+
added: On a réussi à ajouter {titre} !
32+
unknown_error_adding: Une erreur non spécifiée a été rencontrée lors de l'ajout de {kind} !
33+
removed_user: Tous les accès de l'utilisateur ID [{user}] ont été supprimés avec succès !
34+
unknown_error_removing_user: Erreur non spécifiée rencontrée lors de la suppression de l'identifiant de l'utilisateur [{user}] !
35+
added_admin_access: Ajout d'un accès administrateur pour l'utilisateur [{user}] !
36+
unknown_error_adding_admin: Erreur non spécifiée rencontrée lors de l'ajout d'un accès administrateur pour l'utilisateur [{user}] !
37+
removed_admin_access: Suppression de l'accès admin pour l'id utilisateur [{user}] !
38+
unknown_error_removing_admin: Erreur non spécifiée rencontrée lors de la suppression de l'accès administrateur pour l'id utilisateur [{user}] !
39+
prev_button: < Préc.
40+
next_button: Suiv. >
41+
add_tag_button: "Ajout Tag: {tag}"
42+
finished_tagging_button: Tag terminé
43+
monitor_button: Monitor {option}
44+
add_quality_button: "Qualité : {quality}"
45+
add_path_button: Chemin {path}
46+
add_button: ajouter {kind}!
47+
already_added_button: Déjà téléchargé!
48+
cancel_search_button: Annulation
49+
add_series_anime_button: Ajouter la série comme type animé
50+
unexpected_error: Quelque chose s'est mal passé !
51+
remove_user_button: Supprimer
52+
make_admin_button: rendre admin
53+
remove_admin_button: retirer l'admin
54+
done: Terminé
55+
listing_users_pagination: Liste des utilisateurs de Searcharr {page_info}.
56+
help_sonarr: Utilisez {series_commands} pour ajouter une série à Sonarr.
57+
help_radarr: Utilisez {movie_commands} pour ajouter un film à Radarr.
58+
no_features: Désolé, mais toutes mes fonctions sont actuellement désactivées.
59+
admin_help: Puisque vous êtes un administrateur, vous pouvez également utiliser les {commands} pour gérer les utilisateurs.

searcharr.py

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import sonarr
2323
import settings
2424

25-
__version__ = "2.1.5"
25+
__version__ = "2.2"
2626

2727
DBPATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data")
2828
DBFILE = "searcharr.db"
@@ -63,6 +63,8 @@ def __init__(self, token):
6363
self.token = token
6464
logger.info(f"Searcharr v{__version__} - Logging started!")
6565
self._lang = self._load_language()
66+
if self._lang.get("language_ietf") != "en-us":
67+
self._lang_default = self._load_language("en-us")
6668
self.sonarr = (
6769
sonarr.Sonarr(settings.sonarr_url, settings.sonarr_api_key, args.verbose)
6870
if settings.sonarr_enabled
@@ -1731,35 +1733,36 @@ def _init_db(self):
17311733
con.commit()
17321734
con.close()
17331735

1734-
def _load_language(self):
1735-
if not hasattr(settings, "searcharr_language"):
1736-
logger.warning(
1737-
"No language defined! Defaulting to en-us. Please add searcharr_language to settings.py if you want another language, where the value is a filename (without .yml) in the lang folder."
1738-
)
1739-
settings.searcharr_language = "en-us"
1740-
logger.debug(
1741-
f"Attempting to load language file: lang/{settings.searcharr_language}.yml..."
1742-
)
1736+
def _load_language(self, lang_ietf=None):
1737+
if not lang_ietf:
1738+
if not hasattr(settings, "searcharr_language"):
1739+
logger.warning(
1740+
"No language defined! Defaulting to en-us. Please add searcharr_language to settings.py if you want another language, where the value is a filename (without .yml) in the lang folder."
1741+
)
1742+
settings.searcharr_language = "en-us"
1743+
lang_ietf = settings.searcharr_language
1744+
logger.debug(f"Attempting to load language file: lang/{lang_ietf}.yml...")
17431745
try:
1744-
with open(
1745-
f"lang/{settings.searcharr_language}.yml", mode="r", encoding="utf-8"
1746-
) as y:
1746+
with open(f"lang/{lang_ietf}.yml", mode="r", encoding="utf-8") as y:
17471747
lang = yaml.load(y, Loader=yaml.SafeLoader)
17481748
except FileNotFoundError:
17491749
logger.error(
1750-
f"Error loading lang/{settings.searcharr_language}.yml. Confirm searcharr_language in settings.py has a corresponding yml file in the lang subdirectory. Using default (English) language file."
1750+
f"Error loading lang/{lang_ietf}.yml. Confirm searcharr_language in settings.py has a corresponding yml file in the lang subdirectory. Using default (English) language file."
17511751
)
17521752
with open("lang/en-us.yml", "r") as y:
17531753
lang = yaml.load(y, Loader=yaml.SafeLoader)
17541754
return lang
17551755

17561756
def _xlate(self, key, **kwargs):
1757-
pass
17581757
if t := self._lang.get(key):
17591758
return t.format(**kwargs)
17601759
else:
17611760
logger.error(f"No translation found for key [{key}]!")
1762-
return "(translation not found)"
1761+
if self._lang.get("language_ietf") != "en-us":
1762+
if t := self._lang_default.get(key):
1763+
logger.info(f"Using default language for key [{key}]...")
1764+
return t.format(**kwargs)
1765+
return "(translation not found)"
17631766

17641767
_bad_request_poster_error_messages = [
17651768
"Wrong type of the web page content",

0 commit comments

Comments
 (0)