diff options
| author | Marco Rodolfi <marco.rodolfi@tuta.io> | 2023-05-27 13:55:26 +0200 |
|---|---|---|
| committer | Marco Rodolfi <marco.rodolfi@tuta.io> | 2023-05-27 13:55:26 +0200 |
| commit | 6e6f8caca807979be4889a5c1292aa15309a6a3a (patch) | |
| tree | db240b8b4851045308b26ebf7d7382625ecf2ff6 /frontend/src/utils | |
| parent | 3a83062438e2e86dbaaf459f8af7a2fd5a8df215 (diff) | |
| download | decky-loader-6e6f8caca807979be4889a5c1292aa15309a6a3a.tar.gz decky-loader-6e6f8caca807979be4889a5c1292aa15309a6a3a.zip | |
Unified translation classes, fixed missing toaster translation and improved the error styling report.
Diffstat (limited to 'frontend/src/utils')
| -rw-r--r-- | frontend/src/utils/TranslationHelper.tsx | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/frontend/src/utils/TranslationHelper.tsx b/frontend/src/utils/TranslationHelper.tsx new file mode 100644 index 00000000..457a3159 --- /dev/null +++ b/frontend/src/utils/TranslationHelper.tsx @@ -0,0 +1,59 @@ +import { FC } from 'react'; +import { Translation } from 'react-i18next'; + +import Logger from '../logger'; +import { InstallType } from '../plugin'; + +export enum TranslationClass { + PLUGIN_LOADER = 'PluginLoader', + PLUGIN_INSTALL_MODAL = 'PluginInstallModal', +} + +interface TranslationHelperProps { + trans_class: TranslationClass; + trans_text: string; + i18n_args?: {}; + install_type?: number; +} + +const logger = new Logger('TranslationHelper'); + +const TranslationHelper: FC<TranslationHelperProps> = ({ + trans_class, + trans_text, + i18n_args = null, + install_type = 0, +}) => { + return ( + <Translation> + {(t, {}) => { + switch (trans_class) { + case TranslationClass.PLUGIN_LOADER: + return i18n_args + ? t(TranslationClass.PLUGIN_LOADER + '.' + trans_text, i18n_args) + : t(TranslationClass.PLUGIN_LOADER + '.' + trans_text); + case TranslationClass.PLUGIN_INSTALL_MODAL: + switch (install_type) { + case InstallType.INSTALL: + return i18n_args + ? t(TranslationClass.PLUGIN_INSTALL_MODAL + '.install.' + trans_text, i18n_args) + : t(TranslationClass.PLUGIN_INSTALL_MODAL + '.install.' + trans_text); + case InstallType.REINSTALL: + return i18n_args + ? t(TranslationClass.PLUGIN_INSTALL_MODAL + '.reinstall.' + trans_text, i18n_args) + : t(TranslationClass.PLUGIN_INSTALL_MODAL + '.reinstall.' + trans_text); + case InstallType.UPDATE: + return i18n_args + ? t(TranslationClass.PLUGIN_INSTALL_MODAL + '.update.' + trans_text, i18n_args) + : t(TranslationClass.PLUGIN_INSTALL_MODAL + '.update.' + trans_text); + } + default: + logger.error('We should never fall in the default case!'); + return ''; + } + }} + </Translation> + ); +}; + +export default TranslationHelper; |
