summaryrefslogtreecommitdiff
path: root/frontend/src/utils
diff options
context:
space:
mode:
authorMarco Rodolfi <marco.rodolfi@tuta.io>2023-05-27 13:55:26 +0200
committerMarco Rodolfi <marco.rodolfi@tuta.io>2023-05-27 13:55:26 +0200
commit6e6f8caca807979be4889a5c1292aa15309a6a3a (patch)
treedb240b8b4851045308b26ebf7d7382625ecf2ff6 /frontend/src/utils
parent3a83062438e2e86dbaaf459f8af7a2fd5a8df215 (diff)
downloaddecky-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.tsx59
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;