Match target translation to site's locale

This commit is contained in:
Piero Toffanin 2023-01-15 12:07:51 -05:00
parent 5bf7a80932
commit 9fe372f58f
3 changed files with 34 additions and 18 deletions

View file

@ -183,8 +183,8 @@ docker-compose -f docker-compose.cuda.yml up -d --build
| --ga-id | Enable Google Analytics on the API client page by providing an ID | `No tracking` | LT_GA_ID |
| --debug | Enable debug environment | `False` | LT_DEBUG |
| --ssl | Whether to enable SSL | `False` | LT_SSL |
| --frontend-language-source | Set frontend default language - source | `en` | LT_FRONTEND_LANGUAGE_SOURCE |
| --frontend-language-target | Set frontend default language - target | `es` | LT_FRONTEND_LANGUAGE_TARGET |
| --frontend-language-source | Set frontend default language - source | `auto` | LT_FRONTEND_LANGUAGE_SOURCE |
| --frontend-language-target | Set frontend default language - target | `locale` (match site's locale) | LT_FRONTEND_LANGUAGE_TARGET |
| --frontend-timeout | Set frontend translation timeout | `500` | LT_FRONTEND_TIMEOUT |
| --api-keys | Enable API keys database for per-user rate limits lookup | `Don't use API keys` | LT_API_KEYS |
| --api-keys-db-path | Use a specific path inside the container for the local database. Can be absolute or relative | `db/api_keys.db` | LT_API_KEYS_DB_PATH |

View file

@ -132,10 +132,33 @@ def create_app(args):
iter([l for l in languages if l.code == args.frontend_language_source]),
None,
)
if frontend_argos_language_source is None:
frontend_argos_language_source = languages[0]
frontend_argos_language_target = next(
iter([l for l in languages if l.code == args.frontend_language_target]), None
)
if len(languages) >= 2:
language_target_fallback = languages[1]
else:
language_target_fallback = languages[0]
if args.frontend_language_target == "locale":
def resolve_language_locale():
loc = get_locale()
language_target = next(
iter([l for l in languages if l.code == loc]), None
)
if language_target is None:
language_target = language_target_fallback
return language_target
frontend_argos_language_target = resolve_language_locale
else:
language_target = next(
iter([l for l in languages if l.code == args.frontend_language_target]), None
)
if language_target is None:
language_target = language_target_fallback
frontend_argos_language_target = lambda: language_target
frontend_argos_supported_files_format = []
@ -143,15 +166,6 @@ def create_app(args):
for ff in file_format.supported_file_extensions:
frontend_argos_supported_files_format.append(ff)
# Raise AttributeError to prevent app startup if user input is not valid.
if frontend_argos_language_source is None:
frontend_argos_language_source = languages[0]
if frontend_argos_language_target is None:
if len(languages) >= 2:
frontend_argos_language_target = languages[1]
else:
frontend_argos_language_target = languages[0]
api_keys_db = None
if args.req_limit > 0 or args.api_keys or args.daily_req_limit > 0:
@ -896,6 +910,8 @@ def create_app(args):
type: string
description: Human-readable language name (in English)
"""
target_lang = frontend_argos_language_target()
return jsonify(
{
"charLimit": args.char_limit,
@ -911,8 +927,8 @@ def create_app(args):
"name": _lazy(frontend_argos_language_source.name),
},
"target": {
"code": frontend_argos_language_target.code,
"name": _lazy(frontend_argos_language_target.name),
"code": target_lang.code,
"name": _lazy(target_lang.name),
},
},
}

View file

@ -93,12 +93,12 @@ _default_options_objects = [
},
{
'name': 'FRONTEND_LANGUAGE_SOURCE',
'default_value': 'en',
'default_value': 'auto',
'value_type': 'str'
},
{
'name': 'FRONTEND_LANGUAGE_TARGET',
'default_value': 'es',
'default_value': 'locale',
'value_type': 'str'
},
{