diff --git a/package.json b/package.json index 3a1b867..b52f321 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "quasar-items-editor", "private": true, - "version": "0.5.0", + "version": "0.5.1", "type": "module", "scripts": { "dev": "vite", diff --git a/public/flags/it.svg b/public/flags/it.svg new file mode 100644 index 0000000..48c7842 --- /dev/null +++ b/public/flags/it.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/public/flags/pl.svg b/public/flags/pl.svg new file mode 100644 index 0000000..0f0a22c --- /dev/null +++ b/public/flags/pl.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/public/flags/pt-br.svg b/public/flags/pt-br.svg new file mode 100644 index 0000000..47ce535 --- /dev/null +++ b/public/flags/pt-br.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/public/flags/ru.svg b/public/flags/ru.svg new file mode 100644 index 0000000..2e75cd6 --- /dev/null +++ b/public/flags/ru.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/public/flags/tr.svg b/public/flags/tr.svg new file mode 100644 index 0000000..66207f8 --- /dev/null +++ b/public/flags/tr.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index dab658b..8fc1ee0 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2676,7 +2676,7 @@ dependencies = [ [[package]] name = "quasar-items-editor" -version = "0.5.0" +version = "0.5.1" dependencies = [ "serde", "serde_json", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 31642c1..5d5c8f7 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "quasar-items-editor" -version = "0.5.0" +version = "0.5.1" description = "Item Editor für das Quasar Advanced Inventory" authors = ["koichixD"] edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 22b7506..1911b4b 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "quasar-items-editor", - "version": "0.5.0", + "version": "0.5.1", "identifier": "com.wf.quasar-items-editor", "build": { "beforeDevCommand": "npm run dev", diff --git a/src/App.jsx b/src/App.jsx index 9d0bb41..743799e 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -43,6 +43,11 @@ const languageOptions = [ { value: "en", label: "English", flagSrc: "/flags/us.svg", flagAlt: "US" }, { value: "es", label: "Espanol", flagSrc: "/flags/es.svg", flagAlt: "ES" }, { value: "fr", label: "Francais", flagSrc: "/flags/fr.svg", flagAlt: "FR" }, + { value: "pt-BR", label: "Portugues (BR)", flagSrc: "/flags/pt-br.svg", flagAlt: "BR" }, + { value: "it", label: "Italiano", flagSrc: "/flags/it.svg", flagAlt: "IT" }, + { value: "pl", label: "Polski", flagSrc: "/flags/pl.svg", flagAlt: "PL" }, + { value: "tr", label: "Turkce", flagSrc: "/flags/tr.svg", flagAlt: "TR" }, + { value: "ru", label: "Russkiy", flagSrc: "/flags/ru.svg", flagAlt: "RU" }, ]; const translations = { de: { @@ -221,6 +226,231 @@ const translations = { imageAddError: ({ message }) => `Impossible d'ajouter l'image : ${message}`, imageAdded: "Image ajoutée", }, + "pt-BR": { + allItems: "Todos os itens", + uncategorized: "Nao atribuido", + categories: "Categorias", + category: "Categoria", + newCategoryPlaceholder: "Criar nova categoria...", + searchPlaceholder: "Buscar item...", + inventoryOpen: "Abrir inventario", + inventoryLabel: "Inventario", + loadedFile: "Carregado", + chooseItemHint: "Escolha uma categoria a esquerda e depois selecione um item.", + applyChanges: "Aplicar alteracoes", + selectInventoryTitle: "Selecionar pasta do QS inventory", + itemsFileMissing: "items.lua nao encontrado. Selecione a pasta qs-inventory.", + imagesMissing: "Pasta de imagens nao encontrada: qs-inventory\\html\\images", + noItemsDetected: + "Nenhum item detectado. Verifique se o arquivo comeca com `ItemList = {` ou `QBShared.Items = {`.", + loadedItems: ({ count }) => `Carregado: ${count} itens`, + loadError: ({ message }) => `Erro ao carregar: ${message}`, + saved: "Salvo", + saveError: ({ message }) => `Erro ao salvar: ${message}`, + backupError: ({ message }) => `Falha ao criar backup: ${message}`, + language: "Idioma", + newItem: "Novo item", + template: "Modelo", + create: "Criar", + cancel: "Cancelar", + itemId: "ID do item", + itemLabel: "Rotulo", + idRequired: "Informe um ID de item.", + idExists: ({ id }) => `ID de item ja existe: ${id}`, + templateNormal: "Itens normais", + templateNormalRare: "Itens normais com raridade", + templateWeapon: "Armas", + templateFood: "Comida", + templateDrink: "Bebida", + selectTemplateTitle: "Selecionar modelo", + createItemTitle: "Editar novo item", + close: "Fechar", + itemCreated: "Item salvo", + imageAdd: "Adicionar imagem", + imageAddError: ({ message }) => `Falha ao adicionar imagem: ${message}`, + imageAdded: "Imagem adicionada", + }, + it: { + allItems: "Tutti gli item", + uncategorized: "Non assegnato", + categories: "Categorie", + category: "Categoria", + newCategoryPlaceholder: "Crea una nuova categoria...", + searchPlaceholder: "Cerca item...", + inventoryOpen: "Apri inventario", + inventoryLabel: "Inventario", + loadedFile: "Caricato", + chooseItemHint: "Scegli una categoria a sinistra e poi seleziona un item.", + applyChanges: "Applica modifiche", + selectInventoryTitle: "Seleziona cartella QS inventory", + itemsFileMissing: "items.lua non trovato. Seleziona la cartella qs-inventory.", + imagesMissing: "Cartella immagini non trovata: qs-inventory\\html\\images", + noItemsDetected: + "Nessun item rilevato. Assicurati che il file inizi con `ItemList = {` o `QBShared.Items = {`.", + loadedItems: ({ count }) => `Caricati: ${count} item`, + loadError: ({ message }) => `Errore di caricamento: ${message}`, + saved: "Salvato", + saveError: ({ message }) => `Errore di salvataggio: ${message}`, + backupError: ({ message }) => `Backup non riuscito: ${message}`, + language: "Lingua", + newItem: "Nuovo item", + template: "Modello", + create: "Crea", + cancel: "Annulla", + itemId: "ID item", + itemLabel: "Etichetta", + idRequired: "Inserisci un ID item.", + idExists: ({ id }) => `ID item gia esistente: ${id}`, + templateNormal: "Item normali", + templateNormalRare: "Item normali con rarita", + templateWeapon: "Armi", + templateFood: "Cibo", + templateDrink: "Bevanda", + selectTemplateTitle: "Seleziona modello", + createItemTitle: "Modifica nuovo item", + close: "Chiudi", + itemCreated: "Item salvato", + imageAdd: "Aggiungi immagine", + imageAddError: ({ message }) => `Impossibile aggiungere l'immagine: ${message}`, + imageAdded: "Immagine aggiunta", + }, + pl: { + allItems: "Wszystkie przedmioty", + uncategorized: "Nieprzypisane", + categories: "Kategorie", + category: "Kategoria", + newCategoryPlaceholder: "Utworz nowa kategorie...", + searchPlaceholder: "Szukaj przedmiotu...", + inventoryOpen: "Otworz ekwipunek", + inventoryLabel: "Ekwipunek", + loadedFile: "Wczytano", + chooseItemHint: "Wybierz kategorie po lewej stronie, a nastepnie przedmiot.", + applyChanges: "Zastosuj zmiany", + selectInventoryTitle: "Wybierz folder QS inventory", + itemsFileMissing: "Nie znaleziono items.lua. Wybierz folder qs-inventory.", + imagesMissing: "Nie znaleziono folderu obrazow: qs-inventory\\html\\images", + noItemsDetected: + "Nie wykryto przedmiotow. Upewnij sie, ze plik zaczyna sie od `ItemList = {` lub `QBShared.Items = {`.", + loadedItems: ({ count }) => `Wczytano: ${count} przedmiotow`, + loadError: ({ message }) => `Blad wczytywania: ${message}`, + saved: "Zapisano", + saveError: ({ message }) => `Blad zapisu: ${message}`, + backupError: ({ message }) => `Nie udalo sie utworzyc kopii zapasowej: ${message}`, + language: "Jezyk", + newItem: "Nowy przedmiot", + template: "Szablon", + create: "Utworz", + cancel: "Anuluj", + itemId: "ID przedmiotu", + itemLabel: "Etykieta", + idRequired: "Podaj ID przedmiotu.", + idExists: ({ id }) => `ID przedmiotu juz istnieje: ${id}`, + templateNormal: "Zwykle przedmioty", + templateNormalRare: "Zwykle przedmioty z rzadkoscia", + templateWeapon: "Bron", + templateFood: "Jedzenie", + templateDrink: "Napoj", + selectTemplateTitle: "Wybierz szablon", + createItemTitle: "Edytuj nowy przedmiot", + close: "Zamknij", + itemCreated: "Przedmiot zapisany", + imageAdd: "Dodaj obraz", + imageAddError: ({ message }) => `Nie udalo sie dodac obrazu: ${message}`, + imageAdded: "Obraz dodany", + }, + tr: { + allItems: "Tum ogeler", + uncategorized: "Atanmamis", + categories: "Kategoriler", + category: "Kategori", + newCategoryPlaceholder: "Yeni kategori olustur...", + searchPlaceholder: "Oge ara...", + inventoryOpen: "Envanteri ac", + inventoryLabel: "Envanter", + loadedFile: "Yuklendi", + chooseItemHint: "Soldan bir kategori secin ve sonra bir oge secin.", + applyChanges: "Degisiklikleri uygula", + selectInventoryTitle: "QS inventory klasorunu sec", + itemsFileMissing: "items.lua bulunamadi. Lutfen qs-inventory klasorunu secin.", + imagesMissing: "Gorsel klasoru bulunamadi: qs-inventory\\html\\images", + noItemsDetected: + "Oge bulunamadi. Dosyanin `ItemList = {` veya `QBShared.Items = {` ile basladigindan emin olun.", + loadedItems: ({ count }) => `Yuklendi: ${count} oge`, + loadError: ({ message }) => `Yukleme hatasi: ${message}`, + saved: "Kaydedildi", + saveError: ({ message }) => `Kaydetme hatasi: ${message}`, + backupError: ({ message }) => `Yedek olusturulamadi: ${message}`, + language: "Dil", + newItem: "Yeni oge", + template: "Sablon", + create: "Olustur", + cancel: "Iptal", + itemId: "Oge ID", + itemLabel: "Etiket", + idRequired: "Lutfen bir oge ID girin.", + idExists: ({ id }) => `Oge ID zaten mevcut: ${id}`, + templateNormal: "Normal ogeler", + templateNormalRare: "Nadirlikli normal ogeler", + templateWeapon: "Silahlar", + templateFood: "Yiyecek", + templateDrink: "Icecek", + selectTemplateTitle: "Sablon sec", + createItemTitle: "Yeni ogeyi duzenle", + close: "Kapat", + itemCreated: "Oge kaydedildi", + imageAdd: "Gorsel ekle", + imageAddError: ({ message }) => `Gorsel eklenemedi: ${message}`, + imageAdded: "Gorsel eklendi", + }, + ru: { + allItems: "\u0412\u0441\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b", + uncategorized: "\u0411\u0435\u0437 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438", + categories: "\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438", + category: "\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f", + newCategoryPlaceholder: "\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u0443\u044e \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e...", + searchPlaceholder: "\u041f\u043e\u0438\u0441\u043a \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430...", + inventoryOpen: "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u044c", + inventoryLabel: "\u0418\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u044c", + loadedFile: "\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e", + chooseItemHint: + "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u0441\u043b\u0435\u0432\u0430, \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442.", + applyChanges: "\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f", + selectInventoryTitle: "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 QS inventory", + itemsFileMissing: + "\u0424\u0430\u0439\u043b items.lua \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d. \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0430\u043f\u043a\u0443 qs-inventory.", + imagesMissing: + "\u041f\u0430\u043f\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430: qs-inventory\\html\\images", + noItemsDetected: + "\u041f\u0440\u0435\u0434\u043c\u0435\u0442\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b. \u0423\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u0444\u0430\u0439\u043b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 `ItemList = {` \u0438\u043b\u0438 `QBShared.Items = {`.", + loadedItems: ({ count }) => `\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e: ${count} \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432`, + loadError: ({ message }) => `\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438: ${message}`, + saved: "\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e", + saveError: ({ message }) => `\u041e\u0448\u0438\u0431\u043a\u0430 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f: ${message}`, + backupError: ({ message }) => + `\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e: ${message}`, + language: "\u042f\u0437\u044b\u043a", + newItem: "\u041d\u043e\u0432\u044b\u0439 \u043f\u0440\u0435\u0434\u043c\u0435\u0442", + template: "\u0428\u0430\u0431\u043b\u043e\u043d", + create: "\u0421\u043e\u0437\u0434\u0430\u0442\u044c", + cancel: "\u041e\u0442\u043c\u0435\u043d\u0430", + itemId: "ID \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430", + itemLabel: "\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435", + idRequired: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 ID \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430.", + idExists: ({ id }) => `ID \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442: ${id}`, + templateNormal: "\u041e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b", + templateNormalRare: "\u041e\u0431\u044b\u0447\u043d\u044b\u0435 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u044b \u0441 \u0440\u0435\u0434\u043a\u043e\u0441\u0442\u044c\u044e", + templateWeapon: "\u041e\u0440\u0443\u0436\u0438\u0435", + templateFood: "\u0415\u0434\u0430", + templateDrink: "\u041d\u0430\u043f\u0438\u0442\u043e\u043a", + selectTemplateTitle: "\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0448\u0430\u0431\u043b\u043e\u043d", + createItemTitle: "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u0430", + close: "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", + itemCreated: "\u041f\u0440\u0435\u0434\u043c\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d", + imageAdd: "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", + imageAddError: ({ message }) => + `\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435: ${message}`, + imageAdded: "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e", + }, }; const itemTemplates = [