From 121c5526b345effe54b84ff202edec1df64f4244 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernd-Ren=C3=A9=20Predota?= Date: Thu, 12 Aug 2021 17:36:49 +0200 Subject: [PATCH] localization in progress --- public/android-chrome-192x192.png | Bin 1074 -> 3315 bytes public/android-chrome-512x512.png | Bin 3723 -> 6761 bytes public/apple-touch-icon.png | Bin 1145 -> 3423 bytes public/index.html | 6 +-- public/manifest.json | 8 ++-- src/App.css | 2 +- src/App.js | 40 +++++++++---------- src/components/expense-form/ExpenseForm.js | 12 +++--- src/components/expense-list/ExpenseDetail.js | 4 +- src/components/expense-list/ExpenseList.css | 11 ++--- 10 files changed, 40 insertions(+), 43 deletions(-) diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png index 3f7ede6d69e5f72ad7bed8620bd7d1532725f4e0..357dd3d3120a04f4f768744c545ac84456e27f80 100644 GIT binary patch literal 3315 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 F0RS61>sSB) diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png index 585d61640ff0a1a235a65e6ff7b6605e4283812e..fed79e51ab7373a20342c10e8c192c7bba4785c5 100644 GIT binary patch literal 6761 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 F-vBn3e>DIA diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png index 630db555fd91831a8f78d2240c0bfdf8909a5385..3b8305d8995790cb72ebd8335fe83a604e3adeb4 100644 GIT binary patch literal 3423 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 diff --git a/public/index.html b/public/index.html index 1c66b4c..d68ed44 100644 --- a/public/index.html +++ b/public/index.html @@ -1,5 +1,5 @@ - + @@ -13,10 +13,10 @@ - + - Expenses + Haushaltsbuch diff --git a/public/manifest.json b/public/manifest.json index 654da71..6243266 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -1,6 +1,6 @@ { - "short_name": "Expenses", - "name": "Expense Manager", + "short_name": "Haushaltsbuch", + "name": "Haushaltsbuch", "icons": [ { "src": "/android-chrome-192x192.png", @@ -13,8 +13,8 @@ "type": "image/png" } ], - "theme_color": "#50d29d", - "background_color": "#50d29d", + "theme_color": "#55b223", + "background_color": "#55b223", "display": "standalone", "start_url": "." } \ No newline at end of file diff --git a/src/App.css b/src/App.css index 4add029..7ab7d06 100644 --- a/src/App.css +++ b/src/App.css @@ -5,7 +5,7 @@ } header.mdc-toolbar { - background-color: #50d29d; + background-color: #55b223; } button.mdc-toolbar__icon { display: inline-block; diff --git a/src/App.js b/src/App.js index a91af1b..f9bf512 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,6 @@ -import React, { Component } from "react"; -import { ExpenseList, ExpenseForm, LoadingBar } from "./components/index"; -import { MDCSnackbar } from "@material/snackbar/dist/mdc.snackbar.js"; +import React, {Component} from "react"; +import {ExpenseList, ExpenseForm, LoadingBar} from "./components/index"; +import {MDCSnackbar} from "@material/snackbar/dist/mdc.snackbar.js"; import "@material/fab/dist/mdc.fab.css"; import "@material/button/dist/mdc.button.css"; @@ -72,40 +72,40 @@ class App extends Component { } signedInChanged = (signedIn) => { - this.setState({ signedIn: signedIn }); + this.setState({signedIn: signedIn}); if (this.state.signedIn) { this.load(); } } handleExpenseSubmit = () => { - this.setState({ processing: true, showExpenseForm: false }); + this.setState({processing: true, showExpenseForm: false}); const submitAction = (this.state.expense.id ? this.update : this.append).bind(this); submitAction(this.state.expense).then( response => { this.snackbar.show({ - message: `Expense ${this.state.expense.id ? "updated" : "added"}!` + message: `Ausgabe ${this.state.expense.id ? "aktualisiert" : "hinzugefügt"}!` }); this.load(); }, response => { - console.error("Something went wrong"); + console.error("Ausgabe konnte nicht gespeichert werden!"); console.error(response); - this.setState({ loading: false }); + this.setState({loading: false}); } ); } handleExpenseChange = (attribute, value) => { this.setState({ - expense: Object.assign({}, this.state.expense, { [attribute]: value }) + expense: Object.assign({}, this.state.expense, {[attribute]: value}) }); } handleExpenseDelete = (expense) => { - this.setState({ processing: true, showExpenseForm: false }); + this.setState({processing: true, showExpenseForm: false}); const expenseRow = expense.id.substring(10); window.gapi.client.sheets.spreadsheets .batchUpdate({ @@ -127,23 +127,23 @@ class App extends Component { }) .then( response => { - this.snackbar.show({ message: "Expense deleted!" }); + this.snackbar.show({message: "Ausgabe entfernt!"}); this.load(); }, response => { - console.error("Something went wrong"); + console.error("Ausgabe konnte nicht entfernt werden!"); console.error(response); - this.setState({ loading: false }); + this.setState({loading: false}); } ); } handleExpenseSelect = (expense) => { - this.setState({ expense: expense, showExpenseForm: true }); + this.setState({expense: expense, showExpenseForm: true}); } handleExpenseCancel = () => { - this.setState({ showExpenseForm: false }); + this.setState({showExpenseForm: false}); } onExpenseNew() { @@ -156,8 +156,8 @@ class App extends Component { date: `${now.getFullYear()}-${now.getMonth() < 9 ? "0" + (now.getMonth() + 1) : now.getMonth() + 1}-${now.getDate() < 10 - ? "0" + now.getDate() - : now.getDate()}`, + ? "0" + now.getDate() + : now.getDate()}`, category: this.state.categories[0], account: this.state.accounts[0] } @@ -246,7 +246,7 @@ class App extends Component {
- Expenses + Haushaltsrechner
-

This month you've spent:

+

Ausgaben dieses Monat:

{this.state.currentMonth}

- Previous month: {this.state.previousMonth} + Vorheriges Monat: {this.state.previousMonth}
- +
@@ -130,7 +130,7 @@ class ExpenseForm extends Component { onChange={this.handleInputChange} type="text" /> - + @@ -144,7 +144,7 @@ class ExpenseForm extends Component { type="date" required /> - + @@ -166,7 +166,7 @@ class ExpenseForm extends Component { {this.props.expense.id && @@ -174,13 +174,13 @@ class ExpenseForm extends Component { type="button" className="mdc-button" onClick={() => this.dialog.show()} - value="Delete" + value="Löschen" />} this.props.onCancel()} - value="Close" + value="Schliessen" /> diff --git a/src/components/expense-list/ExpenseDetail.js b/src/components/expense-list/ExpenseDetail.js index 2db7723..5baad94 100644 --- a/src/components/expense-list/ExpenseDetail.js +++ b/src/components/expense-list/ExpenseDetail.js @@ -1,10 +1,10 @@ -import React, { Component } from "react"; +import React, {Component} from "react"; import ExpenseIcon from "./ExpenseIcon"; export default class ExpenseDetail extends Component { formatDate(date) { const dateParts = date.split("-"); - return `${dateParts[2]}/${dateParts[1]}/${dateParts[0]}`; + return `${dateParts[2]}.${dateParts[1]}.${dateParts[0]}`; } render() { diff --git a/src/components/expense-list/ExpenseList.css b/src/components/expense-list/ExpenseList.css index e85e2d9..f1a559b 100644 --- a/src/components/expense-list/ExpenseList.css +++ b/src/components/expense-list/ExpenseList.css @@ -15,23 +15,20 @@ .Lebensmittel { background: rgb(85, 178, 35); } -.Restaurant { - background: rgb(242, 60, 0); -} .Auto, .Transport, .Tanken { - background: rgb(166, 2, 221); + background: rgb(242, 60, 0); } .Hobbies { - background: rgb(38, 94, 4); + background: rgb(39, 70, 211); } .Kleidung, .Shopping, Drogerie { background: rgb(0, 183, 224); } -.Übernachtung { +.Übernachtung, .Restaurant { background: rgb(214, 214, 0); } .Gesundheit { - background: rgb(252, 169, 5); + background: rgb(242, 60, 0); } .Unterhaltung { background: rgb(245, 151, 29);