localization
This commit is contained in:
parent
1419f64ab9
commit
4454046d22
@ -132,7 +132,7 @@ const { authenticated, userEmail, userId } = authResult;
|
||||
|
||||
<p style="margin-bottom: 1.5rem; line-height: 1.6;">
|
||||
Wenn ihr einen umfangreicheren Beitrag zu einem Tool, einer Methode oder einem Kozept habt, könnt ihr ihn hier einreichen.
|
||||
Dazu müsst ihr ein kurzes Formular ausfüllen, zusätzlich könnt ihr Dateien einreichen.
|
||||
Der Upload von beliebigen Dateien und Unterlagen ist hier möglich, und wird manuell von mir integriert.
|
||||
</p>
|
||||
|
||||
<div style="display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1.5rem;">
|
||||
@ -200,7 +200,7 @@ const { authenticated, userEmail, userId } = authResult;
|
||||
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.5rem;">
|
||||
<div>
|
||||
<h4 style="margin-bottom: 0.75rem; color: var(--color-primary);">Qualitätsstandards</h4>
|
||||
<h4 style="margin-bottom: 0.75rem; color: var(--color-primary);">Empfehlungen</h4>
|
||||
<ul style="margin: 0; padding-left: 1.5rem; line-height: 1.6;">
|
||||
<li>Informationen sollten stets korrekt und up-to-date sein</li>
|
||||
<li>Nutzt klare, verständliche Sprache</li>
|
||||
@ -212,7 +212,7 @@ const { authenticated, userEmail, userId } = authResult;
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<h4 style="margin-bottom: 0.75rem; color: var(--color-accent);">QS</h4>
|
||||
<h4 style="margin-bottom: 0.75rem; color: var(--color-accent);">Review</h4>
|
||||
<ul style="margin: 0; padding-left: 1.5rem; line-height: 1.6;">
|
||||
<li>Alle Beiträge werden transparent als Pull Requests in unserem Git veröffentlicht</li>
|
||||
<li>Die Inforamtionen werden teilweise automatisiert validiert</li>
|
||||
|
@ -35,11 +35,11 @@ const isEdit = !!editTool;
|
||||
<h1 style="margin-bottom: 1rem; font-size: 2rem;">{isEdit ? `Edit: ${editTool?.name}` : 'Contribute New Tool/Method/Concept'}</h1>
|
||||
<p style="margin: 0.5rem 0; opacity: 0.9;">
|
||||
{isEdit
|
||||
? 'Update the information for this tool. Your changes will be submitted as a pull request.'
|
||||
: 'Add a new tool, method, or concept to the database. Your contribution will be submitted as a pull request.'
|
||||
? 'Passt die Informationen für dieses Tool/Methode/Konzept an. Dein Beitrag wird als Git-Issue veröffentlicht.'
|
||||
: 'Füge ein neues Tool, Methode oder Konzept in unsere Datenbank hinzu. Dein Beitrag wird als Git-Issue veröffentlicht.'
|
||||
}
|
||||
</p>
|
||||
{userEmail && <p style="margin: 0.5rem 0; opacity: 0.8;"><strong>Submitting as:</strong> {userEmail}</p>}
|
||||
{userEmail && <p style="margin: 0.5rem 0; opacity: 0.8;"><strong>Eingeloggt als:</strong> {userEmail}</p>}
|
||||
</div>
|
||||
|
||||
<!-- Validation Error Display -->
|
||||
@ -54,7 +54,7 @@ const isEdit = !!editTool;
|
||||
|
||||
<!-- Basic Information -->
|
||||
<div style="border: 1px solid var(--color-border); border-radius: 0.5rem; padding: 1.5rem; margin-bottom: 2rem;">
|
||||
<h3 style="margin: 0 0 1.5rem 0; color: var(--color-primary); border-bottom: 1px solid var(--color-border); padding-bottom: 0.5rem;">Basic Information</h3>
|
||||
<h3 style="margin: 0 0 1.5rem 0; color: var(--color-primary); border-bottom: 1px solid var(--color-border); padding-bottom: 0.5rem;">Grundlegende Infos</h3>
|
||||
|
||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1.5rem;">
|
||||
<div>
|
||||
@ -62,8 +62,8 @@ const isEdit = !!editTool;
|
||||
<select id="type" name="type" required>
|
||||
<option value="">Select type...</option>
|
||||
<option value="software" selected={editTool?.type === 'software'}>Software/Tool</option>
|
||||
<option value="method" selected={editTool?.type === 'method'}>Method/Process</option>
|
||||
<option value="concept" selected={editTool?.type === 'concept'}>Concept/Knowledge</option>
|
||||
<option value="method" selected={editTool?.type === 'method'}>Methode/Prozess</option>
|
||||
<option value="concept" selected={editTool?.type === 'concept'}>Konzept/Wissen</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
@ -93,9 +93,9 @@ const isEdit = !!editTool;
|
||||
</div>
|
||||
|
||||
<div style="margin-bottom: 1.5rem;">
|
||||
<label for="description" style="display: block; margin-bottom: 0.5rem; font-weight: 600;">Description <span style="color: var(--color-error);">*</span></label>
|
||||
<label for="description" style="display: block; margin-bottom: 0.5rem; font-weight: 600;">Beschreibung <span style="color: var(--color-error);">*</span></label>
|
||||
<textarea id="description" name="description" rows="4" maxlength="1000" required
|
||||
placeholder="Clear, concise description of what this tool/method/concept does and its purpose">{editTool?.description || ''}</textarea>
|
||||
placeholder="Klare, kurze Beschreibung, was dein Tool/Methode/Konzept tut, was sein Zweck ist und was es einzigartig macht.">{editTool?.description || ''}</textarea>
|
||||
<div style="text-align: right; font-size: 0.75rem; color: var(--color-text-secondary); margin-top: 0.25rem;">
|
||||
<span id="description-count">0</span>/1000
|
||||
</div>
|
||||
@ -105,17 +105,17 @@ const isEdit = !!editTool;
|
||||
<label for="url" style="display: block; margin-bottom: 0.5rem; font-weight: 600;">Primary URL <span style="color: var(--color-error);">*</span></label>
|
||||
<input type="url" id="url" name="url" value={editTool?.url || ''}
|
||||
placeholder="https://example.com" required />
|
||||
<small style="display: block; margin-top: 0.25rem; color: var(--color-text-secondary); font-size: 0.8125rem;">Homepage, documentation, or primary source</small>
|
||||
<small style="display: block; margin-top: 0.25rem; color: var(--color-text-secondary); font-size: 0.8125rem;">Homepage, Dokumentation, oder Primärquelle</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Categories -->
|
||||
<div style="border: 1px solid var(--color-border); border-radius: 0.5rem; padding: 1.5rem; margin-bottom: 2rem;">
|
||||
<h3 style="margin: 0 0 1.5rem 0; color: var(--color-primary); border-bottom: 1px solid var(--color-border); padding-bottom: 0.5rem;">Categories</h3>
|
||||
<h3 style="margin: 0 0 1.5rem 0; color: var(--color-primary); border-bottom: 1px solid var(--color-border); padding-bottom: 0.5rem;">Kategorien</h3>
|
||||
|
||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 2rem;">
|
||||
<div>
|
||||
<label style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Forensic Domains</label>
|
||||
<label style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Forensische Domänen</label>
|
||||
<div style="display: grid; gap: 0.5rem;">
|
||||
{domains.map(domain => (
|
||||
<label class="checkbox-wrapper">
|
||||
@ -128,7 +128,7 @@ const isEdit = !!editTool;
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Investigation Phases</label>
|
||||
<label style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Phasen der Ermittlung</label>
|
||||
<div style="display: grid; gap: 0.5rem;">
|
||||
{phases.map(phase => (
|
||||
<label class="checkbox-wrapper">
|
||||
@ -148,7 +148,7 @@ const isEdit = !!editTool;
|
||||
|
||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-bottom: 1.5rem;">
|
||||
<div>
|
||||
<label style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Platforms <span id="platforms-required" style="color: var(--color-error);">*</span></label>
|
||||
<label style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Betrieb auf: <span id="platforms-required" style="color: var(--color-error);">*</span></label>
|
||||
<div style="display: grid; gap: 0.5rem;">
|
||||
{['Windows', 'macOS', 'Linux', 'Web', 'Mobile', 'Cross-platform'].map(platform => (
|
||||
<label class="checkbox-wrapper">
|
||||
@ -161,7 +161,7 @@ const isEdit = !!editTool;
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="license" style="display: block; margin-bottom: 0.75rem; font-weight: 600;">License <span id="license-required" style="color: var(--color-error);">*</span></label>
|
||||
<label for="license" style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Lizenzmodell <span id="license-required" style="color: var(--color-error);">*</span></label>
|
||||
<input type="text" id="license" name="license" value={editTool?.license || ''}
|
||||
placeholder="MIT, Apache 2.0, GPL v3, Proprietary" list="license-options" />
|
||||
<datalist id="license-options">
|
||||
@ -177,7 +177,7 @@ const isEdit = !!editTool;
|
||||
|
||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 2rem;">
|
||||
<div>
|
||||
<label for="accessType" style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Access Type</label>
|
||||
<label for="accessType" style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Zugriff über:</label>
|
||||
<select id="accessType" name="accessType">
|
||||
<option value="">Select access type...</option>
|
||||
<option value="download" selected={editTool?.accessType === 'download'}>Download</option>
|
||||
@ -189,7 +189,7 @@ const isEdit = !!editTool;
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Domain-Agnostic Categories</label>
|
||||
<label style="display: block; margin-bottom: 0.75rem; font-weight: 600;">Domänenübergreifende Kategorien</label>
|
||||
<div style="display: grid; gap: 0.5rem;">
|
||||
{domainAgnosticSoftware.map(cat => (
|
||||
<label class="checkbox-wrapper">
|
||||
@ -205,7 +205,7 @@ const isEdit = !!editTool;
|
||||
|
||||
<!-- Related Concepts -->
|
||||
<div id="concepts-fields" style="border: 1px solid var(--color-border); border-radius: 0.5rem; padding: 1.5rem; margin-bottom: 2rem; display: none;">
|
||||
<h3 style="margin: 0 0 1.5rem 0; color: var(--color-primary); border-bottom: 1px solid var(--color-border); padding-bottom: 0.5rem;">Related Concepts</h3>
|
||||
<h3 style="margin: 0 0 1.5rem 0; color: var(--color-primary); border-bottom: 1px solid var(--color-border); padding-bottom: 0.5rem;">Konzepte im Zusammenhang</h3>
|
||||
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 0.5rem;">
|
||||
{existingTools.filter(tool => tool.type === 'concept').map(concept => (
|
||||
<label class="checkbox-wrapper">
|
||||
@ -219,26 +219,26 @@ const isEdit = !!editTool;
|
||||
|
||||
<!-- Additional Information -->
|
||||
<div style="border: 1px solid var(--color-border); border-radius: 0.5rem; padding: 1.5rem; margin-bottom: 2rem;">
|
||||
<h3 style="margin: 0 0 1.5rem 0; color: var(--color-primary); border-bottom: 1px solid var(--color-border); padding-bottom: 0.5rem;">Additional Information</h3>
|
||||
<h3 style="margin: 0 0 1.5rem 0; color: var(--color-primary); border-bottom: 1px solid var(--color-border); padding-bottom: 0.5rem;">Zusatzinfos</h3>
|
||||
|
||||
<div style="margin-bottom: 1.5rem;">
|
||||
<label for="tags" style="display: block; margin-bottom: 0.5rem; font-weight: 600;">Tags</label>
|
||||
<input type="text" id="tags" name="tags" value={editTool?.tags?.join(', ') || ''}
|
||||
placeholder="gui, forensics, network-analysis (comma-separated)" />
|
||||
placeholder="Komma-getrennt: Passede Begriffe, nach denen ihr suchen würdet." />
|
||||
</div>
|
||||
|
||||
<div style="margin-bottom: 1.5rem;">
|
||||
<label class="checkbox-wrapper">
|
||||
<input type="checkbox" id="knowledgebase" name="knowledgebase"
|
||||
checked={editTool?.knowledgebase} />
|
||||
<span>Has knowledgebase article</span>
|
||||
<span>Der Beitrag soll später einen Knowledgebase-Artikel haben</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="reason" style="display: block; margin-bottom: 0.5rem; font-weight: 600;">Reason for Contribution (Optional)</label>
|
||||
<label for="reason" style="display: block; margin-bottom: 0.5rem; font-weight: 600;">Grund für den Beitrag (Optional)</label>
|
||||
<textarea id="reason" name="reason" rows="3" maxlength="500"
|
||||
placeholder="Why are you adding/updating this? Any context for reviewers..."></textarea>
|
||||
placeholder="Hier kannst du noch deine Motivation und sonstige Infos beschreiben."></textarea>
|
||||
<div style="text-align: right; font-size: 0.75rem; color: var(--color-text-secondary); margin-top: 0.25rem;">
|
||||
<span id="reason-count">0</span>/500
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user