Final text revision and added a vscode tasks to automatically extract text from code.

This commit is contained in:
Marco Rodolfi
2023-02-02 14:58:10 +01:00
parent bc3d57c5a5
commit d90aafdf0f
12 changed files with 1726 additions and 130 deletions
+11
View File
@@ -41,6 +41,17 @@
"command": "rsync -azp --rsh='ssh -p ${config:deckport} ${config:deckkey}' requirements.txt deck@${config:deckip}:${config:deckdir}/homebrew/dev/pluginloader/requirements.txt && ssh deck@${config:deckip} -p ${config:deckport} ${config:deckkey} 'python -m ensurepip && python -m pip install --upgrade pip && python -m pip install --upgrade setuptools && python -m pip install -r ${config:deckdir}/homebrew/dev/pluginloader/requirements.txt'",
"problemMatcher": []
},
{
"label": "extracttext",
"type": "shell",
"group": "none",
"dependsOn":[
"pnpmsetup"
],
"detail": "Check for new strings in the frontend source code and extract it into the corresponding json language files",
"command": "cd frontend && ./node_modules/.bin/i18next --config ./i18next-parser.config.mjs",
"problemMatcher": []
},
// BUILD
{
"label": "pnpmsetup",
+125
View File
@@ -0,0 +1,125 @@
{
"BranchSelect": {
"update_channel": {
"label": ""
}
},
"Developer": {
"5secreload": "",
"disabling": "",
"enabling": ""
},
"DeveloperIndex": {
"react_devtools": {
"desc": "",
"label": ""
},
"valve_internal": {
"desc1": "",
"desc2": "",
"label": ""
}
},
"PluginCard": {
"plugin_full_access": "",
"plugin_install": "",
"plugin_no_desc": "",
"plugin_version_label": ""
},
"PluginInstallModal": {
"install": {
"button_idle": "",
"button_processing": "",
"desc": "",
"title": ""
}
},
"PluginListIndex": {
"list_no_plugin": "",
"list_plug_actions_label": "",
"list_update_to": "",
"reload": "",
"uninstall": ""
},
"PluginLoader": {
"decky_update_available": "",
"error": "",
"file_picker_cancel_text": "",
"plugin_error_uninstall": "",
"plugin_load_error": {
"message": "",
"toast": ""
},
"plugin_uninstall": {
"button": "",
"desc": "",
"title": ""
},
"plugin_update_one": "",
"plugin_update_other": ""
},
"RemoteDebugging": {
"remote_cef": {
"desc": "",
"label": ""
}
},
"SettingsGeneralIndex": {
"developer_mode": {
"desc": "",
"label": ""
},
"manual_plugin": {
"button": "",
"label": ""
}
},
"SettingsIndex": {
"developer_title": "",
"general_title": "",
"navbar_settings": "",
"plugins_title": ""
},
"Store": {
"store_contrib": {
"desc": "",
"label": ""
},
"store_search": {
"label": ""
},
"store_sort": {
"label": "",
"label_def": ""
},
"store_source": {
"desc": "",
"label": ""
},
"store_tabs": {
"about": "",
"alph_asce": "",
"alph_desc": "",
"title": ""
},
"store_testing_cta": ""
},
"StoreSelect": {
"custom_store_label": "",
"store_channel_label": ""
},
"Updater": {
"decky_updates": "",
"no_patch_notes_desc": "",
"updates": {
"check_button": "",
"checking": "",
"cur_version": "",
"install_button": "",
"label": "",
"lat_version": "",
"reloading": "",
"updating": ""
}
}
}
+59 -60
View File
@@ -5,123 +5,122 @@
}
},
"Developer": {
"enabling": "Enabling",
"5secreload": "Reloading in 5 seconds",
"disabling": "Disabling",
"5secreload": "Reloading in 5 seconds"
"enabling": "Enabling"
},
"DeveloperIndex": {
"valve_internal": {
"label": "Enable Valve Internal",
"desc1": "Enables the Valve internal developer menu.",
"desc2": "Do not touch anything in this menu unless you know what it does."
},
"react_devtools": {
"label": "Enable React DevTools",
"desc": "Enables connection to a computer running React DevTools. Changing this setting will reload Steam. Set the IP address before enabling."
"desc": "Enables connection to a computer running React DevTools. Changing this setting will reload Steam. Set the IP address before enabling.",
"label": "Enable React DevTools"
},
"valve_internal": {
"desc1": "Enables the Valve internal developer menu.",
"desc2": "Do not touch anything in this menu unless you know what it does.",
"label": "Enable Valve Internal"
}
},
"PluginCard": {
"plugin_version_label": "Plugin Version",
"plugin_full_access": "This plugin has full access to your Steam Deck.",
"plugin_install": "Install",
"plugin_no_desc": "No description provided."
"plugin_no_desc": "No description provided.",
"plugin_version_label": "Plugin Version"
},
"PluginInstallModal": {
"install": {
"title": "Install {{artifact}}",
"desc": "Are you sure you want to install {{artifact}} {{version}}?",
"button_idle": "Install",
"button_processing": "Installing"
"button_processing": "Installing",
"desc": "Are you sure you want to install {{artifact}} {{version}}?",
"title": "Install {{artifact}}"
}
},
"PluginListIndex": {
"list_no_plugin": "No plugins installed!",
"list_update_to": "Update to {{name}}",
"list_plug_actions_label": "Plugin Actions",
"list_update_to": "Update to {{name}}",
"reload": "Reload",
"uninstall": "Uninstall"
},
"PluginLoader": {
"decky_update_available": "Update to {{tag_name}} available!",
"plugin_update_one": "Updates available for 1 plugin!",
"plugin_update_other": "Updates available for {{count}} plugins!",
"plugin_uninstall": {
"title": "Uninstall {{name}}",
"desc": "Are you sure you want to uninstall {{name}}?",
"button": "Uninstall"
},
"error": "Error",
"file_picker_cancel_text": "User canceled",
"plugin_error_uninstall": "Please go to {{-icon}} in the Decky menu if you need to uninstall this plugin.",
"plugin_load_error": {
"message": "Error loading plugin {{name}}",
"toast": "Error loading {{name}}"
},
"error": "Error",
"plugin_error_uninstall": "Please go to {{-icon}} in the Decky menu if you need to uninstall this plugin.",
"file_picker_cancel_text": "User canceled"
"plugin_uninstall": {
"button": "Uninstall",
"desc": "Are you sure you want to uninstall {{name}}?",
"title": "Uninstall {{name}}"
},
"plugin_update_one": "Updates available for 1 plugin!",
"plugin_update_other": "Updates available for {{count}} plugins!"
},
"RemoteDebugging": {
"remote_cef": {
"label": "Allow Remote CEF Debugging",
"desc": "Allow unauthenticated access to the CEF debugger to anyone in your network"
"desc": "Allow unauthenticated access to the CEF debugger to anyone in your network",
"label": "Allow Remote CEF Debugging"
}
},
"SettingsGeneralIndex": {
"developer_mode": {
"label": "Developer mode",
"desc": "Enables Decky's developer settings."
"desc": "Enables Decky's developer settings.",
"label": "Developer mode"
},
"manual_plugin": {
"label": "Manual plugin install",
"button": "Install"
"button": "Install",
"label": "Manual plugin install"
}
},
"SettingsIndex": {
"general_title": "General",
"plugins_title": "Plugins",
"developer_title": "Developer",
"navbar_settings": "Decky Settings"
"general_title": "General",
"navbar_settings": "Decky Settings",
"plugins_title": "Plugins"
},
"Store": {
"store_tabs": {
"title": "Browse",
"about": "About",
"alph_desc": "Alphabetical (A to Z)",
"alph_asce": "Alphabetical (Z to A)"
"store_contrib": {
"desc": "If you would like to contribute to the Decky Plugin Store, check the SteamDeckHomebrew/decky-plugin-template repository on GitHub. Information on development and distribution is available in the README.",
"label": "Contributing"
},
"store_search": {
"label": "changeme"
},
"store_search_label": "Search",
"store_sort": {
"label": "Sort",
"label_def": "Last Updated (Newest)"
},
"store_filter": {
"label": "Filter",
"label_def": "All"
},
"store_search_label": "Search",
"store_testing_cta": "Please consider testing new plugins to help the Decky Loader team!",
"store_contrib": {
"label": "Contributing",
"desc": "If you would like to contribute to the Decky Plugin Store, check the SteamDeckHomebrew/decky-plugin-template repository on GitHub. Information on development and distribution is available in the README."
},
"store_source": {
"label": "Source Code",
"desc": "All plugin source code is available on SteamDeckHomebrew/decky-plugin-database repository on GitHub."
}
"desc": "All plugin source code is available on SteamDeckHomebrew/decky-plugin-database repository on GitHub.",
"label": "Source Code"
},
"store_tabs": {
"about": "About",
"alph_asce": "Alphabetical (Z to A)",
"alph_desc": "Alphabetical (A to Z)",
"title": "Browse"
},
"store_testing_cta": "Please consider testing new plugins to help the Decky Loader team!"
},
"StoreSelect": {
"store_channel_label": "Store Channel",
"custom_store_label": "Custom Store"
"custom_store_label": "Custom Store",
"store_channel_label": "Store Channel"
},
"Updater": {
"no_patch_notes_desc": "no patch notes for this version",
"decky_updates": "Decky Updates",
"no_patch_notes_desc": "no patch notes for this version",
"updates": {
"label": "Updates",
"cur_version": "Current version: {{ver}}",
"lat_version": "Latest version: {{ver}}",
"checking": "'Checking",
"check_button": "Check For Updates",
"checking": "'Checking",
"cur_version": "Current version: {{ver}}",
"install_button": "Install Update",
"label": "Updates",
"lat_version": "Latest version: {{ver}}",
"reloading": "Reloading",
"updating": "Updating"
}
}
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"Store": {
"store_filter": {
"label": "Filter",
"label_def": "All"
}
}
}
+126
View File
@@ -0,0 +1,126 @@
{
"BranchSelect": {
"update_channel": {
"label": ""
}
},
"Developer": {
"5secreload": "",
"disabling": "",
"enabling": ""
},
"DeveloperIndex": {
"react_devtools": {
"desc": "",
"label": ""
},
"valve_internal": {
"desc1": "",
"desc2": "",
"label": ""
}
},
"PluginCard": {
"plugin_full_access": "",
"plugin_install": "",
"plugin_no_desc": "",
"plugin_version_label": ""
},
"PluginInstallModal": {
"install": {
"button_idle": "",
"button_processing": "",
"desc": "",
"title": ""
}
},
"PluginListIndex": {
"list_no_plugin": "",
"list_plug_actions_label": "",
"list_update_to": "",
"reload": "",
"uninstall": ""
},
"PluginLoader": {
"decky_update_available": "",
"error": "",
"file_picker_cancel_text": "",
"plugin_error_uninstall": "",
"plugin_load_error": {
"message": "",
"toast": ""
},
"plugin_uninstall": {
"button": "",
"desc": "",
"title": ""
},
"plugin_update_one": "",
"plugin_update_many": "",
"plugin_update_other": ""
},
"RemoteDebugging": {
"remote_cef": {
"desc": "",
"label": ""
}
},
"SettingsGeneralIndex": {
"developer_mode": {
"desc": "",
"label": ""
},
"manual_plugin": {
"button": "",
"label": ""
}
},
"SettingsIndex": {
"developer_title": "",
"general_title": "",
"navbar_settings": "",
"plugins_title": ""
},
"Store": {
"store_contrib": {
"desc": "",
"label": ""
},
"store_search": {
"label": ""
},
"store_sort": {
"label": "",
"label_def": ""
},
"store_source": {
"desc": "",
"label": ""
},
"store_tabs": {
"about": "",
"alph_asce": "",
"alph_desc": "",
"title": ""
},
"store_testing_cta": ""
},
"StoreSelect": {
"custom_store_label": "",
"store_channel_label": ""
},
"Updater": {
"decky_updates": "",
"no_patch_notes_desc": "",
"updates": {
"check_button": "",
"checking": "",
"cur_version": "",
"install_button": "",
"label": "",
"lat_version": "",
"reloading": "",
"updating": ""
}
}
}
+126
View File
@@ -0,0 +1,126 @@
{
"BranchSelect": {
"update_channel": {
"label": ""
}
},
"Developer": {
"5secreload": "",
"disabling": "",
"enabling": ""
},
"DeveloperIndex": {
"react_devtools": {
"desc": "",
"label": ""
},
"valve_internal": {
"desc1": "",
"desc2": "",
"label": ""
}
},
"PluginCard": {
"plugin_full_access": "",
"plugin_install": "",
"plugin_no_desc": "",
"plugin_version_label": ""
},
"PluginInstallModal": {
"install": {
"button_idle": "",
"button_processing": "",
"desc": "",
"title": ""
}
},
"PluginListIndex": {
"list_no_plugin": "",
"list_plug_actions_label": "",
"list_update_to": "",
"reload": "",
"uninstall": ""
},
"PluginLoader": {
"decky_update_available": "",
"error": "",
"file_picker_cancel_text": "",
"plugin_error_uninstall": "",
"plugin_load_error": {
"message": "",
"toast": ""
},
"plugin_uninstall": {
"button": "",
"desc": "",
"title": ""
},
"plugin_update_one": "",
"plugin_update_many": "",
"plugin_update_other": ""
},
"RemoteDebugging": {
"remote_cef": {
"desc": "",
"label": ""
}
},
"SettingsGeneralIndex": {
"developer_mode": {
"desc": "",
"label": ""
},
"manual_plugin": {
"button": "",
"label": ""
}
},
"SettingsIndex": {
"developer_title": "",
"general_title": "",
"navbar_settings": "",
"plugins_title": ""
},
"Store": {
"store_contrib": {
"desc": "",
"label": ""
},
"store_search": {
"label": ""
},
"store_sort": {
"label": "",
"label_def": ""
},
"store_source": {
"desc": "",
"label": ""
},
"store_tabs": {
"about": "",
"alph_asce": "",
"alph_desc": "",
"title": ""
},
"store_testing_cta": ""
},
"StoreSelect": {
"custom_store_label": "",
"store_channel_label": ""
},
"Updater": {
"decky_updates": "",
"no_patch_notes_desc": "",
"updates": {
"check_button": "",
"checking": "",
"cur_version": "",
"install_button": "",
"label": "",
"lat_version": "",
"reloading": "",
"updating": ""
}
}
}
+60 -60
View File
@@ -5,123 +5,123 @@
}
},
"Developer": {
"enabling": "Abilitando",
"5secreload": "Ricaricando in 5 secondi",
"disabling": "Disabilitando",
"5secreload": "Ricaricando in 5 secondi"
"enabling": "Abilitando"
},
"DeveloperIndex": {
"valve_internal": {
"label": "Abilita Menu Sviluppatore",
"desc1": "Abilita il menu di sviluppo interno di Valve.",
"desc2": "Non toccare nulla in questo menu se non sai quello che fa."
},
"react_devtools": {
"label": "Abilita i DevTools di React",
"desc": "Abilita la connessione ad un computer che esegue i DevTools di React. Cambiando questa impostazione ricaricherà Steam. Imposta l'indirizzo IP prima di abilitarlo."
"desc": "Abilita la connessione ad un computer che esegue i DevTools di React. Cambiando questa impostazione ricaricherà Steam. Imposta l'indirizzo IP prima di abilitarlo.",
"label": "Abilita i DevTools di React"
},
"valve_internal": {
"desc1": "Abilita il menu di sviluppo interno di Valve.",
"desc2": "Non toccare nulla in questo menu se non sai quello che fa.",
"label": "Abilita Menu Sviluppatore"
}
},
"PluginCard": {
"plugin_version_label": "Versione Plugin",
"plugin_full_access": "Questo pluugin ha accesso completo al tuo Steam Deck.",
"plugin_install": "Installa",
"plugin_no_desc": "Nessuna descrizione fornita."
"plugin_no_desc": "Nessuna descrizione fornita.",
"plugin_version_label": "Versione Plugin"
},
"PluginInstallModal": {
"install": {
"title": "Installa {{artifact}}",
"desc": "Sei sicuro di voler installare {{artifact}} {{version}}?",
"button_idle": "Installa",
"button_processing": "Installando"
"button_processing": "Installando",
"desc": "Sei sicuro di voler installare {{artifact}} {{version}}?",
"title": "Installa {{artifact}}"
}
},
"PluginListIndex": {
"list_no_plugin": "Nessun plugin installato!",
"list_update_to": "Aggiornamento a {{name}}",
"list_plug_actions_label": "Operazioni sui plugins",
"list_update_to": "Aggiornamento a {{name}}",
"reload": "Ricarica",
"uninstall": "Rimuovi"
},
"PluginLoader": {
"decky_update_available": "Disponibile aggiornamento a {{tag_name}}!",
"plugin_update_one": "Aggiornamento disponibile per un plugin!",
"plugin_update_other": "Aggiornamento disponibile per {{count}} plugins!",
"plugin_uninstall": {
"title": "Rimozione di {{name}}",
"desc": "Rimuovo {{name}}?",
"button": "Rimuovi"
},
"error": "Errore",
"file_picker_cancel_text": "Annullato dall'utente",
"plugin_error_uninstall": "Per rimuovere questo plugin vai su {{-icon}} nel menu di Decky.",
"plugin_load_error": {
"message": "Errore caricando il plugin {{name}}",
"toast": "Errore caricando {{name}}"
},
"error": "Errore",
"plugin_error_uninstall": "Per rimuovere questo plugin vai su {{-icon}} nel menu di Decky.",
"file_picker_cancel_text": "Annullato dall'utente"
"plugin_uninstall": {
"button": "Rimuovi",
"desc": "Rimuovo {{name}}?",
"title": "Rimozione di {{name}}"
},
"plugin_update_one": "Aggiornamento disponibile per un plugin!",
"plugin_update_many": "changeme",
"plugin_update_other": "Aggiornamento disponibile per {{count}} plugins!"
},
"RemoteDebugging": {
"remote_cef": {
"label": "Permetti il debug remoto di CEF",
"desc": "Permetti l'accesso non autenticato a chiunque sulla tua rete locale al debugger di CEF."
"desc": "Permetti l'accesso non autenticato a chiunque sulla tua rete locale al debugger di CEF.",
"label": "Permetti il debug remoto di CEF"
}
},
"SettingsGeneralIndex": {
"developer_mode": {
"label": "Modalità sviluppatore",
"desc": "Abilità le impostazioni di sviluppo di Decky."
"desc": "Abilità le impostazioni di sviluppo di Decky.",
"label": "Modalità sviluppatore"
},
"manual_plugin": {
"label": "Installazione manuale plugins",
"button": "Installa"
"button": "Installa",
"label": "Installazione manuale plugins"
}
},
"SettingsIndex": {
"general_title": "Generali",
"plugins_title": "Plugins",
"developer_title": "Sviluppatore",
"navbar_settings": "Impostazioni Decky"
"general_title": "Generali",
"navbar_settings": "Impostazioni Decky",
"plugins_title": "Plugins"
},
"Store": {
"store_tabs": {
"title": "Naviga",
"about": "About",
"alph_desc": "Alfabetico (A a Z)",
"alph_asce": "Alfabetico (Z a A)"
"store_contrib": {
"desc": "Se desideri contribuire allo store di Decky, puoi trovare un template caricato su GitHub all'indirizzo SteamDeckHomebrew/decky-plugin-template. Informazioni riguardo sviluppo e distribuzione sono disponibili nel README.",
"label": "Contribuisci"
},
"store_search": {
"label": "changeme"
},
"store_search_label": "Cerca",
"store_sort": {
"label": "Ordina",
"label_def": "Ultimo aggiornato (Più recente)"
},
"store_filter": {
"label": "Filtra",
"label_def": "Tutto"
},
"store_search_label": "Cerca",
"store_testing_cta": "Valuta la possibilità di testare nuovi plugin per aiutare il team di Decky Loader!",
"store_contrib": {
"label": "Contribuisci",
"desc": "Se desideri contribuire allo store di Decky, puoi trovare un template caricato su GitHub all'indirizzo SteamDeckHomebrew/decky-plugin-template. Informazioni riguardo sviluppo e distribuzione sono disponibili nel README."
},
"store_source": {
"label": "Codice Sorgente",
"desc": "Tutto il codice sorgente dei plugin è disponibile su GitHub all'indirizzo SteamDeckHomebrew/decky-plugin-database"
}
"desc": "Tutto il codice sorgente dei plugin è disponibile su GitHub all'indirizzo SteamDeckHomebrew/decky-plugin-database",
"label": "Codice Sorgente"
},
"store_tabs": {
"about": "About",
"alph_asce": "Alfabetico (Z a A)",
"alph_desc": "Alfabetico (A a Z)",
"title": "Naviga"
},
"store_testing_cta": "Valuta la possibilità di testare nuovi plugin per aiutare il team di Decky Loader!"
},
"StoreSelect": {
"store_channel_label": "Canale del negozio",
"custom_store_label": "Negozio custom"
"custom_store_label": "Negozio custom",
"store_channel_label": "Canale del negozio"
},
"Updater": {
"no_patch_notes_desc": "nessuna patch notes per questa versione",
"decky_updates": "Aggiornamenti di Decky",
"no_patch_notes_desc": "nessuna patch notes per questa versione",
"updates": {
"label": "Aggiornamenti",
"cur_version": "Versione attuale: {{ver}}",
"lat_version": "Ultima versione: {{ver}}",
"checking": "Controllando",
"check_button": "Cerca aggiornamenti",
"checking": "Controllando",
"cur_version": "Versione attuale: {{ver}}",
"install_button": "Installa aggiornamento",
"label": "Aggiornamenti",
"lat_version": "Ultima versione: {{ver}}",
"reloading": "Ricaricando",
"updating": "Aggiornando"
}
}
}
}
+8
View File
@@ -0,0 +1,8 @@
{
"Store": {
"store_filter": {
"label": "Filtra",
"label_def": "Tutto"
}
}
}
+108
View File
@@ -0,0 +1,108 @@
// i18next-parser.config.js
export default {
contextSeparator: '_',
// Key separator used in your translation keys
createOldCatalogs: true,
// Save the \_old files
defaultNamespace: 'translation',
// Default namespace used in your i18next config
defaultValue: '',
// Default value to give to keys with no value
// You may also specify a function accepting the locale, namespace, key, and value as arguments
indentation: 2,
// Indentation of the catalog files
keepRemoved: false,
// Keep keys from the catalog that are no longer in code
keySeparator: '.',
// Key separator used in your translation keys
// If you want to use plain english keys, separators such as `.` and `:` will conflict. You might want to set `keySeparator: false` and `namespaceSeparator: false`. That way, `t('Status: Loading...')` will not think that there are a namespace and three separator dots for instance.
// see below for more details
lexers: {
hbs: ['HandlebarsLexer'],
handlebars: ['HandlebarsLexer'],
htm: ['HTMLLexer'],
html: ['HTMLLexer'],
mjs: ['JavascriptLexer'],
js: ['JavascriptLexer'], // if you're writing jsx inside .js files, change this to JsxLexer
ts: ['JavascriptLexer'],
jsx: ['JsxLexer'],
tsx: ['JsxLexer'],
default: ['JavascriptLexer'],
},
lineEnding: 'auto',
// Control the line ending. See options at https://github.com/ryanve/eol
locales: ['en', 'fr', 'de', 'es', 'it'],
// An array of the locales in your applications
namespaceSeparator: false,
// Namespace separator used in your translation keys
// If you want to use plain english keys, separators such as `.` and `:` will conflict. You might want to set `keySeparator: false` and `namespaceSeparator: false`. That way, `t('Status: Loading...')` will not think that there are a namespace and three separator dots for instance.
output: '../backend/locales/$LOCALE.json',
// Supports $LOCALE and $NAMESPACE injection
// Supports JSON (.json) and YAML (.yml) file formats
// Where to write the locale files relative to process.cwd()
pluralSeparator: '_',
// Plural separator used in your translation keys
// If you want to use plain english keys, separators such as `_` might conflict. You might want to set `pluralSeparator` to a different string that does not occur in your keys.
input: './src/**/*.{ts,tsx}',
// An array of globs that describe where to look for source files
// relative to the location of the configuration file
sort: true,
// Whether or not to sort the catalog. Can also be a [compareFunction](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#parameters)
verbose: false,
// Display info about the parsing including some stats
failOnWarnings: false,
// Exit with an exit code of 1 on warnings
failOnUpdate: false,
// Exit with an exit code of 1 when translations are updated (for CI purpose)
customValueTemplate: null,
// If you wish to customize the value output the value as an object, you can set your own format.
// ${defaultValue} is the default value you set in your translation function.
// Any other custom property will be automatically extracted.
//
// Example:
// {
// message: "${defaultValue}",
// description: "${maxLength}", // t('my-key', {maxLength: 150})
// }
resetDefaultValueLocale: null,
// The locale to compare with default values to determine whether a default value has been changed.
// If this is set and a default value differs from a translation in the specified locale, all entries
// for that key across locales are reset to the default value, and existing translations are moved to
// the `_old` file.
i18nextOptions: null,
// If you wish to customize options in internally used i18next instance, you can define an object with any
// configuration property supported by i18next (https://www.i18next.com/overview/configuration-options).
// { compatibilityJSON: 'v3' } can be used to generate v3 compatible plurals.
yamlOptions: null,
// If you wish to customize options for yaml output, you can define an object here.
// Configuration options are here (https://github.com/nodeca/js-yaml#dump-object---options-).
// Example:
// {
// lineWidth: -1,
// }
}
+1
View File
@@ -23,6 +23,7 @@
"@types/webpack": "^5.28.0",
"husky": "^8.0.1",
"eslint": "^8.33.0",
"i18next-parser": "^7.6.0",
"import-sort-style-module": "^6.0.0",
"inquirer": "^8.2.4",
"prettier": "^2.7.1",
+1089 -5
View File
File diff suppressed because it is too large Load Diff
+5 -5
View File
@@ -101,7 +101,7 @@ class PluginLoader extends Logger {
public async notifyUpdates() {
const versionInfo = await this.updateVersion();
const { t } = useTranslation('PluginLoader');
const { t } = useTranslation();
if (versionInfo?.remote && versionInfo?.remote?.tag_name != versionInfo?.current) {
this.toaster.toast({
title: 'Decky',
@@ -127,7 +127,7 @@ class PluginLoader extends Logger {
this.toaster.toast({
title: 'Decky',
//body: `Updates available for ${updates.size} plugin${updates.size > 1 ? 's' : ''}!`,
body: t('PluginLoader.plugin_update', updates.size.toString(10), { count: updates.size }),
body: t('PluginLoader.plugin_update', { count: updates.size }),
onClick: () => Router.Navigate('/decky/settings/plugins'),
});
}
@@ -247,10 +247,10 @@ class PluginLoader extends Logger {
version: version,
});
} catch (e) {
this.error(t('PluginLoader.plugin_load_error', name), e);
this.error(t('PluginLoader.plugin_load_error.message', { name: name }), e);
const TheError: FC<{}> = () => (
<>
{t('error')}:{' '}
{t('PluginLoader.error')}:{' '}
<pre>
<code>{e instanceof Error ? e.stack : JSON.stringify(e)}</code>
</pre>
@@ -264,7 +264,7 @@ class PluginLoader extends Logger {
icon: <FaExclamationCircle />,
});
this.toaster.toast({
title: t('PluginLoader.error_loading_plugin.toast', name),
title: t('PluginLoader.plugin_load_error.toast', { name: name }),
body: '' + e,
icon: <FaExclamationCircle />,
});