diff --git a/components/AppStore/AppDetails.jsx b/components/AppStore/AppDetails.jsx index 2f1e4be..426dcdc 100644 --- a/components/AppStore/AppDetails.jsx +++ b/components/AppStore/AppDetails.jsx @@ -76,7 +76,7 @@ const AppDetails = () => { const getGradeDescription = (grade) => { const gradeKey = grade?.toLowerCase(); - return t.appStore.details.grades[gradeKey] || ""; + return t.appStore?.details?.grades?.[gradeKey] || ''; } if (loading) { @@ -84,7 +84,7 @@ const AppDetails = () => {
-

{t.appStore.details.loading}

+

{t.appStore?.details?.loading || 'Loading app details...'}

); @@ -94,8 +94,8 @@ const AppDetails = () => { return (
-

{t.appStore.details.notFound}

- {t.appStore.details.back} +

{t.appStore?.details?.notFound || 'App not found'}

+ {t.appStore?.details?.back || 'Back to App Store'}
); @@ -106,7 +106,7 @@ const AppDetails = () => {
- {t.appStore.details.back} + {t.appStore?.details?.back || 'Back to App Store'}
@@ -138,7 +138,7 @@ const AppDetails = () => { className="inline-flex items-center px-6 py-3 rounded-full bg-blue-600 hover:bg-blue-700 text-white font-medium transition-colors" > - {t.appStore.details.install} + {t.appStore?.details?.install || 'Install'} {reviewContent && ( )}
@@ -168,7 +168,7 @@ const AppDetails = () => {

- {t.appStore.details.aboutGrade.replace('{grade}', entry.Grade)} + {(t.appStore?.details?.aboutGrade || 'About this {grade} app').replace('{grade}', entry.Grade)}

{getGradeDescription(entry.Grade)} @@ -179,17 +179,17 @@ const AppDetails = () => {

- {t.appStore.details.dependencies.title} + {t.appStore?.details?.dependencies?.title || 'Dependencies'}

- {t.appStore.details.dependencies.description} + {t.appStore?.details?.dependencies?.description || 'These dependencies are required for the installer.'}

{details.Dependencies.map(dep => (

{dep}

- {dependenciesData[dep]?.Description || t.appStore.details.dependencies.noDescription} + {dependenciesData[dep]?.Description || t.appStore?.details?.dependencies?.noDescription || 'No description available.'}

))} @@ -201,17 +201,17 @@ const AppDetails = () => {

- {t.appStore.details.configuration.title} + {t.appStore?.details?.configuration?.title || 'Configuration'}

- {t.appStore.details.configuration.description} + {t.appStore?.details?.configuration?.description || 'The following configuration will be applied to your bottle:'}

    {Object.entries(details.Parameters).map(([param, value]) => (
  • - {param}: {value ? t.appStore.details.configuration.enabled : t.appStore.details.configuration.disabled} + {param}: {value ? (t.appStore?.details?.configuration?.enabled || 'enabled') : (t.appStore?.details?.configuration?.disabled || 'disabled')}
  • ))}
@@ -219,6 +219,14 @@ const AppDetails = () => {
)} +
+
+

+ {t.appStore?.details?.disclaimer || 'Bottles does not re-distribute or host the files but only downloads them from the vendor\'s official sources. These files are checked by our maintainers and do not contain viruses. However, they may be subject to copyright or licenses of different types, including proprietary ones.'} +

+
+
+
@@ -245,7 +253,7 @@ const AppDetails = () => {
-

{t.appStore.details.review} {entry.Name}

+

{t.appStore?.details?.review || 'Review for'} {entry.Name}

diff --git a/i18n/translations/en.js b/i18n/translations/en.js index 3215b79..2d7cf16 100644 --- a/i18n/translations/en.js +++ b/i18n/translations/en.js @@ -25,6 +25,35 @@ export const en = { card: { details: 'Details', install: 'Install' + }, + details: { + loading: 'Loading app details...', + notFound: 'App not found', + back: 'Back to App Store', + aboutGrade: 'About this {grade} app', + grades: { + bronze: 'This application works but not in the best way. The installer has configured your bottle to give you the best possible experience but you have to expect glitches, inaccessible features (e.g. multiplayer if it\'s a game) and other problems. In the future, this installer may receive updates to improve the result.', + silver: 'This application works fine. There are some glitches, but they do not affect the application\'s functionality. All features are accessible and work as expected.', + gold: 'This application works in the best way. There may be rare glitches but they do not affect the application\'s functionality. All features are accessible and work as expected.', + platinum: 'This application works in the best way. There are no glitches. All features are accessible and work as expected, and the overall experience is smooth.', + }, + dependencies: { + title: 'Dependencies', + description: 'The following dependencies will be automatically installed with this app:', + noDescription: 'No description available.', + }, + configuration: { + title: 'Configuration', + description: 'The following configuration will be applied to your bottle:', + enabled: 'enabled', + disabled: 'disabled', + }, + install: 'How to Install', + readReview: 'Read review', + review: 'Review for', + disclaimer: 'Bottles does not re-distribute or host the files but only downloads them from the vendor\'s official sources. These files are checked by our maintainers and do not contain viruses. However, they may be subject to copyright or licenses of different types, including proprietary ones.', + wineDb: 'More info on WineDB', + protonDb: 'More info on ProtonDB', } }, hero: { diff --git a/i18n/translations/es.js b/i18n/translations/es.js index 186532f..1be5ffd 100644 --- a/i18n/translations/es.js +++ b/i18n/translations/es.js @@ -25,6 +25,35 @@ export const es = { card: { details: 'Detalles', install: 'Instalar' + }, + details: { + loading: 'Cargando detalles de la aplicación...', + notFound: 'Aplicación no encontrada', + back: 'Volver a la Tienda de Aplicaciones', + aboutGrade: 'Acerca de esta aplicación {grade}', + grades: { + bronze: 'Esta aplicación funciona, pero no de la mejor manera. El instalador ha configurado tu botella para ofrecerte la mejor experiencia posible, pero debes esperar fallos, funciones inaccesibles (por ejemplo, el multijugador si es un juego) y otros problemas. En el futuro, este instalador puede recibir actualizaciones para mejorar el resultado.', + silver: 'Esta aplicación funciona bien. Hay algunos fallos, pero no afectan la funcionalidad de la aplicación. Todas las funciones están accesibles y funcionan como se espera.', + gold: 'Esta aplicación funciona de la mejor manera. Puede haber fallos raros, pero no afectan la funcionalidad de la aplicación. Todas las funciones están accesibles y funcionan como se espera.', + platinum: 'Esta aplicación funciona de la mejor manera. No hay fallos. Todas las funciones están accesibles y funcionan como se espera, y la experiencia general es fluida.', + }, + dependencies: { + title: 'Dependencias', + description: 'Las siguientes dependencias se instalarán automáticamente con esta aplicación:', + noDescription: 'No hay descripción disponible.', + }, + configuration: { + title: 'Configuración', + description: 'La siguiente configuración se aplicará a tu botella:', + enabled: 'habilitado', + disabled: 'deshabilitado', + }, + install: 'Cómo instalar', + readReview: 'Leer reseña', + review: 'Reseña de', + disclaimer: 'Bottles no redistribuye ni aloja los archivos, solo los descarga desde las fuentes oficiales del proveedor. Estos archivos son revisados por nuestros mantenedores y no contienen virus. Sin embargo, pueden estar sujetos a derechos de autor o licencias de distintos tipos, incluidas licencias propietarias.', + wineDb: 'Más información en WineDB', + protonDb: 'Más información en ProtonDB', } }, hero: { diff --git a/i18n/translations/it.js b/i18n/translations/it.js index e756310..bbeed81 100644 --- a/i18n/translations/it.js +++ b/i18n/translations/it.js @@ -25,6 +25,35 @@ export const it = { card: { details: 'Dettagli', install: 'Installa' + }, + details: { + loading: 'Caricamento dettagli app...', + notFound: 'App non trovata', + back: 'Torna all\'App Store', + aboutGrade: 'Informazioni su questa app {grade}', + grades: { + bronze: 'Questa applicazione funziona, ma non nel modo migliore. L\'installer ha configurato la tua bottle per offrirti la migliore esperienza possibile, ma devi aspettarti glitch, funzionalita non accessibili (ad esempio il multiplayer se e un gioco) e altri problemi. In futuro, questo installer potrebbe ricevere aggiornamenti per migliorare il risultato.', + silver: 'Questa applicazione funziona bene. Ci sono alcuni glitch, ma non influenzano la funzionalita dell\'applicazione. Tutte le funzionalita sono accessibili e funzionano come previsto.', + gold: 'Questa applicazione funziona nel modo migliore. Potrebbero esserci rari glitch, ma non influenzano la funzionalita dell\'applicazione. Tutte le funzionalita sono accessibili e funzionano come previsto.', + platinum: 'Questa applicazione funziona nel modo migliore. Non ci sono glitch. Tutte le funzionalita sono accessibili e funzionano come previsto, e l\'esperienza complessiva e fluida.', + }, + dependencies: { + title: 'Dipendenze', + description: 'Le seguenti dipendenze verranno installate automaticamente con questa applicazione:', + noDescription: 'Nessuna descrizione disponibile.', + }, + configuration: { + title: 'Configurazione', + description: 'La seguente configurazione verra applicata alla tua bottle:', + enabled: 'abilitato', + disabled: 'disabilitato', + }, + install: 'Come installare', + readReview: 'Leggi la recensione', + review: 'Recensione di', + disclaimer: 'Bottles non ridistribuisce ne ospita i file, ma li scarica solo dalle fonti ufficiali del fornitore. Questi file sono controllati dai nostri maintainer e non contengono virus. Tuttavia, possono essere soggetti a copyright o licenze di vario tipo, incluse quelle proprietarie.', + wineDb: 'Maggiori info su WineDB', + protonDb: 'Maggiori info su ProtonDB', } }, hero: {