mirror of
https://github.com/HugeFrog24/nini-artgallery.git
synced 2026-03-02 00:14:33 +00:00
AI chat widget
This commit is contained in:
14
.cursor/rules/snyk_rules.mdc
Normal file
14
.cursor/rules/snyk_rules.mdc
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
alwaysApply: true
|
||||
always_on: true
|
||||
trigger: always_on
|
||||
applyTo: "**"
|
||||
description: Snyk Security At Inception
|
||||
---
|
||||
|
||||
# Project security best practices
|
||||
|
||||
- Always run snyk_code_scan tool for new first party code that is generated in a Snyk-supported language.
|
||||
- If any security issues are found based on newly introduced or modified code or dependencies, attempt to fix the issues using the results context from Snyk.
|
||||
- Rescan the code after fixing the issues to ensure that the issues were fixed and that there are no newly introduced issues.
|
||||
- Repeat this process until no new issues are found.
|
||||
7
.dockerignore
Normal file
7
.dockerignore
Normal file
@@ -0,0 +1,7 @@
|
||||
.git
|
||||
.next
|
||||
node_modules
|
||||
Dockerfile
|
||||
docker-compose.yml
|
||||
README.md
|
||||
.env*
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -33,6 +33,9 @@ yarn-error.log*
|
||||
# env files (can opt-in for committing if needed)
|
||||
.env*
|
||||
|
||||
# docker override files with real credentials
|
||||
docker-compose.override.yml
|
||||
|
||||
# vercel
|
||||
.vercel
|
||||
|
||||
|
||||
8
.vscode/settings.json
vendored
Normal file
8
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"i18n-ally.localesPaths": [
|
||||
"messages",
|
||||
"src/i18n"
|
||||
],
|
||||
"snyk.advanced.organization": "512ef4a1-6034-4537-a391-9692d282122a",
|
||||
"snyk.advanced.autoSelectOrganization": true
|
||||
}
|
||||
51
Dockerfile
Normal file
51
Dockerfile
Normal file
@@ -0,0 +1,51 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
# Stage 1: Dependencies
|
||||
FROM --platform=$BUILDPLATFORM node:20-alpine AS deps
|
||||
WORKDIR /app
|
||||
|
||||
# Install pnpm
|
||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
||||
|
||||
COPY package.json pnpm-lock.yaml ./
|
||||
RUN pnpm install --frozen-lockfile
|
||||
|
||||
# Stage 2: Builder
|
||||
FROM --platform=$BUILDPLATFORM node:20-alpine AS builder
|
||||
WORKDIR /app
|
||||
|
||||
# Install pnpm
|
||||
RUN corepack enable && corepack prepare pnpm@latest --activate
|
||||
|
||||
COPY --from=deps /app/node_modules ./node_modules
|
||||
COPY . .
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
|
||||
RUN pnpm run build
|
||||
|
||||
# Stage 3: Runner
|
||||
FROM node:20-alpine AS runner
|
||||
WORKDIR /app
|
||||
|
||||
ENV NODE_ENV=production
|
||||
ENV NEXT_TELEMETRY_DISABLED=1
|
||||
|
||||
RUN addgroup --system --gid 1001 nodejs
|
||||
RUN adduser --system --uid 1001 nextjs
|
||||
|
||||
# Copy only necessary files
|
||||
COPY --from=builder /app/public ./public
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
|
||||
|
||||
# Copy tenant data and message files (not included in standalone bundle)
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/data ./data
|
||||
COPY --from=builder --chown=nextjs:nodejs /app/messages ./messages
|
||||
|
||||
USER nextjs
|
||||
|
||||
EXPOSE 3000
|
||||
|
||||
ENV PORT=3000
|
||||
ENV HOSTNAME="0.0.0.0"
|
||||
|
||||
CMD ["node", "server.js"]
|
||||
38
KNOWN_ISSUES.md
Normal file
38
KNOWN_ISSUES.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Known Issues
|
||||
|
||||
## OpenGraph Images Removed
|
||||
|
||||
**Issue:** OpenGraph image tags have been intentionally removed from all metadata.
|
||||
|
||||
**Why:** Next.js static generation + Docker is fundamentally broken for OpenGraph images.
|
||||
|
||||
**The Problem:**
|
||||
|
||||
- `NEXT_PUBLIC_*` variables are embedded at **build time**, not runtime
|
||||
- Static pages get URLs baked in permanently during Docker build
|
||||
- No way to change URLs after build without rebuilding entire image
|
||||
- `metadataBase` doesn't work in Docker builds (only works with `npm run build && npm run start`)
|
||||
- Results in hardcoded `localhost:3000` URLs in production
|
||||
|
||||
**Next.js Design Flaws:**
|
||||
|
||||
- Treats `NEXT_PUBLIC_*` as "client-side" but uses them for server-side metadata generation
|
||||
- Static generation breaks basic containerization patterns
|
||||
- Framework optimized for Vercel's walled garden, not real-world Docker deployments
|
||||
- No proper runtime environment variable support for metadata
|
||||
|
||||
**Attempted Solutions (All Failed):**
|
||||
|
||||
- Runtime header detection → breaks static generation
|
||||
- Dynamic rendering → metadata renders in `<body>` instead of `<head>`
|
||||
- Build arguments → breaks universal Docker distribution
|
||||
- Placeholder replacement → hacky and unreliable
|
||||
|
||||
**Current Solution:**
|
||||
Removed OpenGraph images entirely. All other metadata (title, description, etc.) works perfectly and provides excellent social media previews without the architectural nightmare.
|
||||
|
||||
**Impact:**
|
||||
Social platforms still show beautiful previews with title/description. Only missing the large preview image, which isn't worth the engineering complexity.
|
||||
|
||||
**Recommendation:**
|
||||
Don't use Next.js for projects requiring universal Docker distribution with OpenGraph images. Consider SvelteKit, Nuxt, or Remix instead.
|
||||
7
data/tenants.json
Normal file
7
data/tenants.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"gallery.nini.love": "nini",
|
||||
"nini.boger.dev": "nini",
|
||||
"alice.boger.dev": "alice",
|
||||
"localhost:3000": "nini",
|
||||
"localhost": "nini"
|
||||
}
|
||||
22
data/tenants/alice/artist-translations.json
Normal file
22
data/tenants/alice/artist-translations.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"de": {
|
||||
"name": "Alice",
|
||||
"description": "Eine digitale Künstlerin und Illustratorin, die fantastische Welten zum Leben erweckt. Ich lasse mich von Märchen, Natur und dem Surrealen inspirieren. Meine Arbeit verbindet lebhafte Farben mit traumhaften Kompositionen — jedes Stück ist ein Tor in eine andere Realität."
|
||||
},
|
||||
"es": {
|
||||
"name": "Alice",
|
||||
"description": "Una artista digital e ilustradora que da vida a mundos fantásticos. Me inspiro en los cuentos de hadas, la naturaleza y lo surreal. Mi trabajo combina colores vivos con composiciones oníricas — cada pieza es una puerta a otra realidad."
|
||||
},
|
||||
"ka": {
|
||||
"name": "ალისი",
|
||||
"description": "ციფრული მხატვარი და ილუსტრატორი, რომელიც ფანტასტიკურ სამყაროებს აცოცხლებს. ზღაპრები, ბუნება და სიურეალიზმი შთამაგონებს. ჩემი ნამუშევრები ცოცხალ ფერებსა და ოცნებისებურ კომპოზიციებს აერთიანებს — ყოველი ნამუშევარი სხვა რეალობაში შესასვლელია."
|
||||
},
|
||||
"ru": {
|
||||
"name": "Алиса",
|
||||
"description": "Цифровой художник и иллюстратор, оживляющая фантастические миры. Я черпаю вдохновение из сказок, природы и сюрреализма. Моя работа сочетает яркие цвета с мечтательными композициями — каждое произведение — это дверь в другую реальность."
|
||||
},
|
||||
"tr": {
|
||||
"name": "Alice",
|
||||
"description": "Fantastik dünyaları hayata geçiren dijital bir sanatçı ve illüstratör. Peri masallarından, doğadan ve gerçeküstünden ilham alıyorum. Çalışmalarım canlı renkleri rüya gibi kompozisyonlarla birleştiriyor — her parça başka bir gerçekliğe açılan bir kapı."
|
||||
}
|
||||
}
|
||||
5
data/tenants/alice/artist.json
Normal file
5
data/tenants/alice/artist.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "Alice",
|
||||
"description": "A digital artist and illustrator who brings fantastical worlds to life. I draw inspiration from fairy tales, nature, and the surreal. My work blends vivid colors with dreamlike compositions — each piece is a doorway into another reality.",
|
||||
"defaultLanguage": "en"
|
||||
}
|
||||
54
data/tenants/alice/artworks-base.json
Normal file
54
data/tenants/alice/artworks-base.json
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"categorySections": [
|
||||
{
|
||||
"id": "paintings",
|
||||
"artworks": [
|
||||
{
|
||||
"id": "p1",
|
||||
"imageUrl": "#6A5ACD",
|
||||
"category": "paintings",
|
||||
"mediumKey": "digitalPainting",
|
||||
"dimensions": "3000 x 4000 px",
|
||||
"year": 2025
|
||||
},
|
||||
{
|
||||
"id": "p2",
|
||||
"imageUrl": "#20B2AA",
|
||||
"category": "paintings",
|
||||
"mediumKey": "watercolorOnPaper",
|
||||
"dimensions": "18\" x 24\"",
|
||||
"year": 2025
|
||||
},
|
||||
{
|
||||
"id": "p3",
|
||||
"imageUrl": "#FF6347",
|
||||
"category": "paintings",
|
||||
"mediumKey": "digitalPainting",
|
||||
"dimensions": "4000 x 3000 px",
|
||||
"year": 2024
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "origami",
|
||||
"artworks": [
|
||||
{
|
||||
"id": "o1",
|
||||
"imageUrl": "#DA70D6",
|
||||
"category": "origami",
|
||||
"mediumKey": "watercolorOnPaper",
|
||||
"dimensions": "12\" x 16\"",
|
||||
"year": 2025
|
||||
},
|
||||
{
|
||||
"id": "o2",
|
||||
"imageUrl": "#3CB371",
|
||||
"category": "origami",
|
||||
"mediumKey": "inkOnPaper",
|
||||
"dimensions": "9\" x 12\"",
|
||||
"year": 2024
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
7
data/tenants/alice/personal-message.json
Normal file
7
data/tenants/alice/personal-message.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"enabled": false,
|
||||
"recipient": "",
|
||||
"message": "",
|
||||
"dismissible": true,
|
||||
"ariaLabel": ""
|
||||
}
|
||||
11
data/tenants/alice/tags.json
Normal file
11
data/tenants/alice/tags.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"siteKeywords": [
|
||||
"art gallery",
|
||||
"digital art",
|
||||
"illustration",
|
||||
"fantasy art",
|
||||
"watercolor",
|
||||
"surreal",
|
||||
"prints"
|
||||
]
|
||||
}
|
||||
22
data/tenants/nini/artist-translations.json
Normal file
22
data/tenants/nini/artist-translations.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"de": {
|
||||
"name": "Nini",
|
||||
"description": "Ein süßes georgisches Mädchen mit einer Leidenschaft für Kunst und Design. Ich liebe es, meine Kreativität durch verschiedene Medien auszudrücken. Jedes Stück, das ich erschaffe, trägt ein Stück meiner Seele und meiner Heimat in sich. Wenn ich nicht gerade etwas Neues erschaffe, träume ich von meinem nächsten künstlerischen Abenteuer! ✨"
|
||||
},
|
||||
"es": {
|
||||
"name": "Nini",
|
||||
"description": "Una linda chica georgiana con pasión por el arte y el diseño. Me encanta expresar mi creatividad a través de diferentes medios. Cada pieza que creo lleva un pedacito de mi alma y mi tierra natal. Cuando no estoy creando algo nuevo, puedes encontrarme soñando con mi próxima aventura artística! ✨"
|
||||
},
|
||||
"ka": {
|
||||
"name": "ნინი",
|
||||
"description": "ლამაზი ქართველი გოგონა, რომელსაც ხელოვნებისა და დიზაინის მიმართ ვნება აქვს. მიყვარს ჩემი შემოქმედებითობის გამოხატვა სხვადასხვა საშუალებებით. ყოველი ნამუშევარი, რომელსაც ვქმნი, ჩემი სულისა და ჩემი სამშობლოს ნაწილს შეიცავს. როცა რაღაც ახალს არ ვქმნი, ჩემს შემდეგ ხელოვნურ თავგადასავალზე ვოცნებობ! ✨"
|
||||
},
|
||||
"ru": {
|
||||
"name": "Нини",
|
||||
"description": "Милая грузинская девушка с страстью к искусству и дизайну. Я люблю выражать свое творчество через различные материалы. Каждое произведение, которое я создаю, несет частичку моей души и моей родины. Когда я не создаю что-то новое, вы можете найти меня мечтающей о моем следующем художественном приключении! ✨"
|
||||
},
|
||||
"tr": {
|
||||
"name": "Nini",
|
||||
"description": "Sanat ve tasarıma tutkuyla bağlı sevimli bir Gürcü kız. Yaratıcılığımı farklı ortamlar aracılığıyla ifade etmeyi seviyorum. Yarattığım her eser, ruhumun ve vatanımın bir parçasını taşır. Yeni bir şey yaratmadığım zamanlarda, bir sonraki sanatsal maceramı hayal ediyorum! ✨"
|
||||
}
|
||||
}
|
||||
5
data/tenants/nini/artist.json
Normal file
5
data/tenants/nini/artist.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"name": "Nini",
|
||||
"description": "A cute Georgian girl with a passion for art and design. I love expressing my creativity through different mediums. Each piece I create carries a bit of my soul and my homeland. When I'm not crafting something new, you can find me dreaming up my next artistic adventure! ✨",
|
||||
"defaultLanguage": "en"
|
||||
}
|
||||
160
data/tenants/nini/artworks-base.json
Normal file
160
data/tenants/nini/artworks-base.json
Normal file
@@ -0,0 +1,160 @@
|
||||
{
|
||||
"categorySections": [
|
||||
{
|
||||
"id": "origami",
|
||||
"artworks": [
|
||||
{
|
||||
"id": "o1",
|
||||
"imageUrl": "#FF9F9F",
|
||||
"category": "origami",
|
||||
"mediumKey": "washiPaper",
|
||||
"dimensions": "6\" x 6\"",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "o2",
|
||||
"imageUrl": "#FFB5B5",
|
||||
"category": "origami",
|
||||
"mediumKey": "origamiPaper",
|
||||
"dimensions": "8\" x 8\"",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "o3",
|
||||
"imageUrl": "#98FB98",
|
||||
"category": "origami",
|
||||
"mediumKey": "origamiPaper",
|
||||
"dimensions": "4\" x 4\"",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "o4",
|
||||
"imageUrl": "#87CEEB",
|
||||
"category": "origami",
|
||||
"mediumKey": "specialtyOrigamiPaper",
|
||||
"dimensions": "5\" x 5\" x 5\"",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "o5",
|
||||
"imageUrl": "#FFB6C1",
|
||||
"category": "origami",
|
||||
"mediumKey": "origamiPaper",
|
||||
"dimensions": "6\" x 6\"",
|
||||
"year": 2024
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "crochet",
|
||||
"artworks": [
|
||||
{
|
||||
"id": "c1",
|
||||
"imageUrl": "#95E1D3",
|
||||
"category": "crochet",
|
||||
"mediumKey": "merinoWool",
|
||||
"dimensions": "4\" height",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "c2",
|
||||
"imageUrl": "#A8E6CF",
|
||||
"category": "crochet",
|
||||
"mediumKey": "cottonYarn",
|
||||
"dimensions": "50\" x 60\"",
|
||||
"year": 2023
|
||||
},
|
||||
{
|
||||
"id": "c3",
|
||||
"imageUrl": "#90EE90",
|
||||
"category": "crochet",
|
||||
"mediumKey": "cottonYarn",
|
||||
"dimensions": "6\" height",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "c4",
|
||||
"imageUrl": "#FFF0F5",
|
||||
"category": "crochet",
|
||||
"mediumKey": "softAcrylicYarn",
|
||||
"dimensions": "8\" height",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "c5",
|
||||
"imageUrl": "#E6E6FA",
|
||||
"category": "crochet",
|
||||
"mediumKey": "softAcrylicYarn",
|
||||
"dimensions": "7\" height",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "c6",
|
||||
"imageUrl": "#8B4513",
|
||||
"category": "crochet",
|
||||
"mediumKey": "cottonYarn",
|
||||
"dimensions": "12\" height",
|
||||
"year": 2024
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "paintings",
|
||||
"artworks": [
|
||||
{
|
||||
"id": "p1",
|
||||
"imageUrl": "#FFD93D",
|
||||
"category": "paintings",
|
||||
"mediumKey": "acrylicOnCanvas",
|
||||
"dimensions": "24\" x 36\"",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "p2",
|
||||
"imageUrl": "#F6CD61",
|
||||
"category": "paintings",
|
||||
"mediumKey": "oilOnCanvas",
|
||||
"dimensions": "30\" x 40\"",
|
||||
"year": 2023
|
||||
},
|
||||
{
|
||||
"id": "p3",
|
||||
"imageUrl": "#DDA0DD",
|
||||
"category": "paintings",
|
||||
"mediumKey": "mixedMediaOnCanvas",
|
||||
"dimensions": "36\" x 48\"",
|
||||
"year": 2024
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "fingernails",
|
||||
"artworks": [
|
||||
{
|
||||
"id": "n1",
|
||||
"imageUrl": "#FF8B94",
|
||||
"category": "fingernails",
|
||||
"mediumKey": "gelPolish",
|
||||
"dimensions": "Standard nail size",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "n2",
|
||||
"imageUrl": "#FFA69E",
|
||||
"category": "fingernails",
|
||||
"mediumKey": "regularPolish",
|
||||
"dimensions": "Standard nail size",
|
||||
"year": 2024
|
||||
},
|
||||
{
|
||||
"id": "n3",
|
||||
"imageUrl": "#FF69B4",
|
||||
"category": "fingernails",
|
||||
"mediumKey": "gelPolish",
|
||||
"dimensions": "Standard nail size",
|
||||
"year": 2024
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
7
data/tenants/nini/personal-message.json
Normal file
7
data/tenants/nini/personal-message.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"enabled": true,
|
||||
"recipient": "To my Tibik!",
|
||||
"message": "Every color I pick has your smile in it. Every origami fold holds our hugs. I put pieces of our love in each artwork - so everyone can see you belong to me! Your support makes my hands create better, but these creations are just to keep you closer. No one else can inspire my art like you do. No one else can have your hugs or see your special smile. You are my art, my inspiration, my everything. No running away from my gallery! ❤️",
|
||||
"dismissible": true,
|
||||
"ariaLabel": "Personal message for To my Tibik!"
|
||||
}
|
||||
11
data/tenants/nini/tags.json
Normal file
11
data/tenants/nini/tags.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"siteKeywords": [
|
||||
"art gallery",
|
||||
"origami",
|
||||
"crochet",
|
||||
"paintings",
|
||||
"nail art",
|
||||
"handmade",
|
||||
"crafts"
|
||||
]
|
||||
}
|
||||
50
docker-compose.yml
Normal file
50
docker-compose.yml
Normal file
@@ -0,0 +1,50 @@
|
||||
services:
|
||||
web:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
platforms:
|
||||
- linux/amd64
|
||||
- linux/arm64
|
||||
image: bogerserge/nini-artgallery:latest
|
||||
container_name: nini-artgallery
|
||||
restart: unless-stopped
|
||||
read_only: true
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
# User-writable data directory
|
||||
- ./data:/app/data
|
||||
# Temporary directories for Next.js cache
|
||||
- /tmp
|
||||
- /app/.next/cache
|
||||
environment:
|
||||
- NODE_ENV=production
|
||||
# Required for SEO metadata, Open Graph, and absolute URLs in emails
|
||||
- NEXT_PUBLIC_BASE_URL=https://your-domain.com
|
||||
# Admin SMTP Configuration - Configure these in production
|
||||
- ADMIN_EMAIL=admin@example.com
|
||||
- SMTP_HOST=smtp.example.com
|
||||
- SMTP_PORT=587
|
||||
- SMTP_USER=smtp-user@example.com
|
||||
- SMTP_PASS=your-smtp-password
|
||||
- SMTP_FROM_NAME="Your Gallery Name"
|
||||
- SMTP_SECURE=false
|
||||
- SMTP_REQUIRE_TLS=true
|
||||
- JWT_SECRET=your-super-secret-jwt-key-change-this-in-production
|
||||
# OpenRouter AI Chat - Get your key at https://openrouter.ai/keys
|
||||
- OPENROUTER_API_KEY=your-openrouter-api-key
|
||||
healthcheck:
|
||||
test:
|
||||
[
|
||||
"CMD",
|
||||
"wget",
|
||||
"--no-verbose",
|
||||
"--tries=1",
|
||||
"--spider",
|
||||
"http://127.0.0.1:3000/api/health",
|
||||
]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 20s
|
||||
@@ -1,16 +1,83 @@
|
||||
import { dirname } from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
import { FlatCompat } from "@eslint/eslintrc";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
const compat = new FlatCompat({
|
||||
baseDirectory: __dirname,
|
||||
});
|
||||
import js from "@eslint/js";
|
||||
import globals from "globals";
|
||||
import tseslint from "@typescript-eslint/eslint-plugin";
|
||||
import tsparser from "@typescript-eslint/parser";
|
||||
|
||||
const eslintConfig = [
|
||||
...compat.extends("next/core-web-vitals", "next/typescript"),
|
||||
{
|
||||
ignores: [
|
||||
"node_modules/**",
|
||||
".next/**",
|
||||
"out/**",
|
||||
"build/**",
|
||||
"next-env.d.ts",
|
||||
],
|
||||
},
|
||||
js.configs.recommended,
|
||||
{
|
||||
files: ["**/*.{js,mjs,cjs}"],
|
||||
languageOptions: {
|
||||
ecmaVersion: "latest",
|
||||
sourceType: "module",
|
||||
globals: {
|
||||
...globals.browser,
|
||||
...globals.node,
|
||||
...globals.es2021,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
"no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
argsIgnorePattern: "^_",
|
||||
varsIgnorePattern: "^_",
|
||||
caughtErrorsIgnorePattern: "^_",
|
||||
ignoreRestSiblings: true,
|
||||
},
|
||||
],
|
||||
"no-console": "warn",
|
||||
"prefer-const": "error",
|
||||
"no-var": "error",
|
||||
},
|
||||
},
|
||||
{
|
||||
files: ["**/*.{ts,tsx}"],
|
||||
languageOptions: {
|
||||
parser: tsparser,
|
||||
ecmaVersion: "latest",
|
||||
sourceType: "module",
|
||||
globals: {
|
||||
...globals.browser,
|
||||
...globals.node,
|
||||
...globals.es2021,
|
||||
React: "readonly",
|
||||
JSX: "readonly",
|
||||
},
|
||||
parserOptions: {
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
plugins: {
|
||||
"@typescript-eslint": tseslint,
|
||||
},
|
||||
rules: {
|
||||
"no-unused-vars": "off",
|
||||
"@typescript-eslint/no-unused-vars": [
|
||||
"error",
|
||||
{
|
||||
argsIgnorePattern: "^_",
|
||||
varsIgnorePattern: "^_",
|
||||
caughtErrorsIgnorePattern: "^_",
|
||||
ignoreRestSiblings: true,
|
||||
},
|
||||
],
|
||||
"@typescript-eslint/no-unused-expressions": "error",
|
||||
"@typescript-eslint/no-explicit-any": "warn",
|
||||
"no-console": "warn",
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
export default eslintConfig;
|
||||
|
||||
4
messages/artist/alice/de.json
Normal file
4
messages/artist/alice/de.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Alice",
|
||||
"description": "Eine digitale Künstlerin und Illustratorin, die fantastische Welten zum Leben erweckt."
|
||||
}
|
||||
4
messages/artist/alice/en.json
Normal file
4
messages/artist/alice/en.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Alice",
|
||||
"description": "A digital artist and illustrator who brings fantastical worlds to life."
|
||||
}
|
||||
4
messages/artist/alice/es.json
Normal file
4
messages/artist/alice/es.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Alice",
|
||||
"description": "Una artista digital e ilustradora que da vida a mundos fantásticos."
|
||||
}
|
||||
4
messages/artist/alice/ka.json
Normal file
4
messages/artist/alice/ka.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "ალისი",
|
||||
"description": "ციფრული მხატვარი და ილუსტრატორი, რომელიც ფანტასტიკურ სამყაროებს აცოცხლებს."
|
||||
}
|
||||
4
messages/artist/alice/ru.json
Normal file
4
messages/artist/alice/ru.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Алиса",
|
||||
"description": "Цифровой художник и иллюстратор, оживляющая фантастические миры."
|
||||
}
|
||||
4
messages/artist/alice/tr.json
Normal file
4
messages/artist/alice/tr.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Alice",
|
||||
"description": "Fantastik dünyaları hayata geçiren dijital bir sanatçı ve illüstratör."
|
||||
}
|
||||
4
messages/artist/nini/de.json
Normal file
4
messages/artist/nini/de.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Künstlername",
|
||||
"description": "Künstlerbeschreibung und Biografie. Dieser Text wird auf der Galerie-Startseite angezeigt und kann über das Admin-Panel angepasst werden."
|
||||
}
|
||||
4
messages/artist/nini/en.json
Normal file
4
messages/artist/nini/en.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Artist Name",
|
||||
"description": "Artist description and biography. This text will be displayed on the gallery homepage and can be customized through the admin panel."
|
||||
}
|
||||
4
messages/artist/nini/es.json
Normal file
4
messages/artist/nini/es.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Nombre del Artista",
|
||||
"description": "Descripción y biografía del artista. Este texto se mostrará en la página de inicio de la galería y puede personalizarse a través del panel de administración."
|
||||
}
|
||||
4
messages/artist/nini/ka.json
Normal file
4
messages/artist/nini/ka.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "მხატვრის სახელი",
|
||||
"description": "მხატვრის აღწერა და ბიოგრაფია. ეს ტექსტი გამოჩნდება გალერეის მთავარ გვერდზე და შეიძლება მორგებული იყოს ადმინისტრაციული პანელის მეშვეობით."
|
||||
}
|
||||
4
messages/artist/nini/ru.json
Normal file
4
messages/artist/nini/ru.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Имя художника",
|
||||
"description": "Описание и биография художника. Этот текст будет отображаться на главной странице галереи и может быть настроен через панель администратора."
|
||||
}
|
||||
4
messages/artist/nini/tr.json
Normal file
4
messages/artist/nini/tr.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"name": "Sanatçı Adı",
|
||||
"description": "Sanatçı açıklaması ve biyografisi. Bu metin galeri ana sayfasında görüntülenecek ve yönetici paneli aracılığıyla özelleştirilebilir."
|
||||
}
|
||||
39
messages/artworks/alice/de.json
Normal file
39
messages/artworks/alice/de.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"Categories": {
|
||||
"paintings": {
|
||||
"title": "Gemälde & Digitale Kunst",
|
||||
"description": "Traumhafte Gemälde, die Fantasie und Emotion verbinden"
|
||||
},
|
||||
"origami": {
|
||||
"title": "Illustrationen",
|
||||
"description": "Handgezeichnete Tuscheillustrationen, inspiriert von Märchen"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"p1": {
|
||||
"title": "Der Grinsekatzen-Wald",
|
||||
"description": "Ein leuchtender Wald, in dem die Bäume zurückgrinsen — inspiriert vom Wunderland"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Mondscheinteich",
|
||||
"description": "Aquarellstudie von Mondlicht auf stillem Wasser mit Glühwürmchen"
|
||||
},
|
||||
"p3": {
|
||||
"title": "Der Garten der Roten Königin",
|
||||
"description": "Ein surrealer Garten, in dem jede Rose ihr eigenes Temperament hat"
|
||||
},
|
||||
"o1": {
|
||||
"title": "Das Weiße Kaninchen",
|
||||
"description": "Aquarellporträt eines panischen Kaninchens mit Taschenuhr"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Pilzskizzen",
|
||||
"description": "Tuschestudien fantastischer Pilze — manche größer als Häuser"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"digitalPainting": "Digitale Malerei",
|
||||
"watercolorOnPaper": "Aquarell auf Papier",
|
||||
"inkOnPaper": "Tusche auf Papier"
|
||||
}
|
||||
}
|
||||
39
messages/artworks/alice/en.json
Normal file
39
messages/artworks/alice/en.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"Categories": {
|
||||
"paintings": {
|
||||
"title": "Paintings & Digital Art",
|
||||
"description": "Dreamlike paintings blending fantasy and emotion"
|
||||
},
|
||||
"origami": {
|
||||
"title": "Illustrations",
|
||||
"description": "Hand-drawn and ink illustrations inspired by fairy tales"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"p1": {
|
||||
"title": "The Cheshire Forest",
|
||||
"description": "A glowing forest where the trees grin back at you — inspired by Wonderland"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Moonlit Pond",
|
||||
"description": "Watercolor study of moonlight reflecting on still water, with fireflies"
|
||||
},
|
||||
"p3": {
|
||||
"title": "Red Queen's Garden",
|
||||
"description": "A surreal garden where every rose has its own little temper"
|
||||
},
|
||||
"o1": {
|
||||
"title": "The White Rabbit",
|
||||
"description": "Watercolor portrait of a panicked rabbit clutching a pocket watch"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Mushroom Sketches",
|
||||
"description": "Ink studies of fantastical mushrooms — some taller than houses"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"digitalPainting": "Digital painting",
|
||||
"watercolorOnPaper": "Watercolor on paper",
|
||||
"inkOnPaper": "Ink on paper"
|
||||
}
|
||||
}
|
||||
39
messages/artworks/alice/es.json
Normal file
39
messages/artworks/alice/es.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"Categories": {
|
||||
"paintings": {
|
||||
"title": "Pinturas y Arte Digital",
|
||||
"description": "Pinturas oníricas que mezclan fantasía y emoción"
|
||||
},
|
||||
"origami": {
|
||||
"title": "Ilustraciones",
|
||||
"description": "Ilustraciones a mano y tinta inspiradas en cuentos de hadas"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"p1": {
|
||||
"title": "El Bosque del Gato de Cheshire",
|
||||
"description": "Un bosque resplandeciente donde los árboles te devuelven la sonrisa — inspirado en el País de las Maravillas"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Estanque a la Luz de la Luna",
|
||||
"description": "Estudio en acuarela de la luz de la luna reflejada en agua quieta, con luciérnagas"
|
||||
},
|
||||
"p3": {
|
||||
"title": "El Jardín de la Reina Roja",
|
||||
"description": "Un jardín surrealista donde cada rosa tiene su propio carácter"
|
||||
},
|
||||
"o1": {
|
||||
"title": "El Conejo Blanco",
|
||||
"description": "Retrato en acuarela de un conejo asustado agarrando un reloj de bolsillo"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Bocetos de Hongos",
|
||||
"description": "Estudios a tinta de hongos fantásticos — algunos más altos que casas"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"digitalPainting": "Pintura digital",
|
||||
"watercolorOnPaper": "Acuarela sobre papel",
|
||||
"inkOnPaper": "Tinta sobre papel"
|
||||
}
|
||||
}
|
||||
39
messages/artworks/alice/ka.json
Normal file
39
messages/artworks/alice/ka.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"Categories": {
|
||||
"paintings": {
|
||||
"title": "ნახატები და ციფრული ხელოვნება",
|
||||
"description": "ოცნებისებური ნახატები, რომლებიც ფანტაზიასა და ემოციას აერთიანებს"
|
||||
},
|
||||
"origami": {
|
||||
"title": "ილუსტრაციები",
|
||||
"description": "ხელით დახატული და მელნის ილუსტრაციები, ზღაპრებით შთაგონებული"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"p1": {
|
||||
"title": "ჩეშირის ტყე",
|
||||
"description": "მბრწყინავი ტყე, სადაც ხეები ღიმილით გპასუხობენ — საოცრებათა ქვეყნით შთაგონებული"
|
||||
},
|
||||
"p2": {
|
||||
"title": "მთვარის შუქზე აუზი",
|
||||
"description": "აკვარელის ეტიუდი — მთვარის შუქი წყნარ წყალზე, ციცინათელებით"
|
||||
},
|
||||
"p3": {
|
||||
"title": "წითელი დედოფლის ბაღი",
|
||||
"description": "სიურეალისტური ბაღი, სადაც ყოველ ვარდს თავისი ხასიათი აქვს"
|
||||
},
|
||||
"o1": {
|
||||
"title": "თეთრი კურდღელი",
|
||||
"description": "აკვარელის პორტრეტი — შეშინებული კურდღელი ჯიბის საათით"
|
||||
},
|
||||
"o2": {
|
||||
"title": "სოკოს ესკიზები",
|
||||
"description": "მელნის ეტიუდები ფანტასტიკური სოკოების — ზოგი სახლებზე მაღალი"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"digitalPainting": "ციფრული ნახატი",
|
||||
"watercolorOnPaper": "აკვარელი ქაღალდზე",
|
||||
"inkOnPaper": "მელანი ქაღალდზე"
|
||||
}
|
||||
}
|
||||
39
messages/artworks/alice/ru.json
Normal file
39
messages/artworks/alice/ru.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"Categories": {
|
||||
"paintings": {
|
||||
"title": "Картины и цифровое искусство",
|
||||
"description": "Мечтательные картины, сочетающие фантазию и эмоции"
|
||||
},
|
||||
"origami": {
|
||||
"title": "Иллюстрации",
|
||||
"description": "Рисунки тушью и акварелью, вдохновлённые сказками"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"p1": {
|
||||
"title": "Чеширский лес",
|
||||
"description": "Светящийся лес, где деревья улыбаются в ответ — вдохновлено Страной чудес"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Лунный пруд",
|
||||
"description": "Акварельный этюд лунного света на спокойной воде со светлячками"
|
||||
},
|
||||
"p3": {
|
||||
"title": "Сад Красной Королевы",
|
||||
"description": "Сюрреалистический сад, где у каждой розы свой норов"
|
||||
},
|
||||
"o1": {
|
||||
"title": "Белый Кролик",
|
||||
"description": "Акварельный портрет испуганного кролика с карманными часами"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Зарисовки грибов",
|
||||
"description": "Тушевые этюды фантастических грибов — некоторые выше домов"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"digitalPainting": "Цифровая живопись",
|
||||
"watercolorOnPaper": "Акварель на бумаге",
|
||||
"inkOnPaper": "Тушь на бумаге"
|
||||
}
|
||||
}
|
||||
39
messages/artworks/alice/tr.json
Normal file
39
messages/artworks/alice/tr.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"Categories": {
|
||||
"paintings": {
|
||||
"title": "Tablolar ve Dijital Sanat",
|
||||
"description": "Fantezi ve duyguyu harmanlayan rüya gibi tablolar"
|
||||
},
|
||||
"origami": {
|
||||
"title": "İllüstrasyonlar",
|
||||
"description": "Peri masallarından ilham alan el çizimi ve mürekkep illüstrasyonları"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"p1": {
|
||||
"title": "Cheshire Ormanı",
|
||||
"description": "Ağaçların size gülümsediği parlayan bir orman — Harikalar Diyarı'ndan ilham"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Ay Işığında Gölet",
|
||||
"description": "Durgun suda ay ışığının yansımasını ateş böcekleriyle anlatan suluboya çalışması"
|
||||
},
|
||||
"p3": {
|
||||
"title": "Kızıl Kraliçe'nin Bahçesi",
|
||||
"description": "Her gülün kendine has bir huyu olan sürreal bir bahçe"
|
||||
},
|
||||
"o1": {
|
||||
"title": "Beyaz Tavşan",
|
||||
"description": "Cep saatine sımsıkı sarılmış panik halindeki bir tavşanın suluboya portresi"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Mantar Eskizleri",
|
||||
"description": "Fantastik mantarların mürekkep çalışmaları — bazıları evlerden daha uzun"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"digitalPainting": "Dijital resim",
|
||||
"watercolorOnPaper": "Kağıt üzerine suluboya",
|
||||
"inkOnPaper": "Kağıt üzerine mürekkep"
|
||||
}
|
||||
}
|
||||
103
messages/artworks/nini/de.json
Normal file
103
messages/artworks/nini/de.json
Normal file
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"Categories": {
|
||||
"origami": {
|
||||
"title": "Origami-Kreationen",
|
||||
"description": "Kunstvolle Papierfaltkunst, die Präzision und Kreativität zeigt"
|
||||
},
|
||||
"crochet": {
|
||||
"title": "Häkelarbeiten",
|
||||
"description": "Handgefertigte Häkelstücke, die traditionelle Techniken mit modernem Design verbinden"
|
||||
},
|
||||
"paintings": {
|
||||
"title": "Gemälde",
|
||||
"description": "Originale Gemälde, die verschiedene Stile und Techniken erkunden"
|
||||
},
|
||||
"fingernails": {
|
||||
"title": "Nagelkunst",
|
||||
"description": "Kreative und detaillierte Nagelkunst-Designs"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"o1": {
|
||||
"title": "Papierkranich-Serie",
|
||||
"description": "Traditionelle japanische Kranich-Designs in lebendigen Farben"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Geometrische Tiere",
|
||||
"description": "Moderne Interpretation von Wildtieren durch geometrische Faltungen"
|
||||
},
|
||||
"o3": {
|
||||
"title": "Springfrosch",
|
||||
"description": "Traditioneller Origami-Frosch, der tatsächlich hüpfen kann! Ein spielerisches Stück, das Form und Funktion verbindet"
|
||||
},
|
||||
"o4": {
|
||||
"title": "Modulare Würfelbox",
|
||||
"description": "Komplexes modulares Origami, das einen dekorativen Würfel bildet, der sich öffnen und schließen lässt"
|
||||
},
|
||||
"o5": {
|
||||
"title": "Liebesherz",
|
||||
"description": "Elegantes herzförmiges Origami-Design mit zarten Falten und Kurven"
|
||||
},
|
||||
"c1": {
|
||||
"title": "Kleine Tierfamilie",
|
||||
"description": "Sammlung kleiner, süßer Stofftiere aus weicher Wolle"
|
||||
},
|
||||
"c2": {
|
||||
"title": "Moderne Decke",
|
||||
"description": "Zeitgenössische geometrische Musterdecke in Pastelltönen"
|
||||
},
|
||||
"c3": {
|
||||
"title": "Freundlicher Frosch",
|
||||
"description": "Bezaubernder Häkelfrosch mit großen Augen und einem fröhlichen Lächeln"
|
||||
},
|
||||
"c4": {
|
||||
"title": "Flauschiger Hase",
|
||||
"description": "Süßer Häkelhase mit Schlappohren und einem winzigen Baumwollschwanz"
|
||||
},
|
||||
"c5": {
|
||||
"title": "Himmelskind",
|
||||
"description": "Bezauberndes Häkel-Himmelskind aus Sky: Children of the Light, komplett mit Umhang und leuchtendem Herzen"
|
||||
},
|
||||
"c6": {
|
||||
"title": "Gemütlicher Biber",
|
||||
"description": "Ein absolut verrückter Biber mit wilden Kulleraugen, riesigen Nagezähnen und einem Schwanz um aufs Wasser zu knallen! Dieser kleine Wahnsinnige ist bereit, den chaotischsten Damm zu bauen, den Sie je gesehen haben!"
|
||||
},
|
||||
"p1": {
|
||||
"title": "Abstrakter Sonnenuntergang",
|
||||
"description": "Lebendige Interpretation eines Küstensonnenuntergangs"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Stadtleben",
|
||||
"description": "Stadtszenen im impressionistischen Stil eingefangen"
|
||||
},
|
||||
"p3": {
|
||||
"title": "Alice im Wunderland",
|
||||
"description": "Fantasievolle Szene aus Alice im Wunderland mit der Teeparty des verrückten Hutmachers"
|
||||
},
|
||||
"n1": {
|
||||
"title": "Frühlingskollektion",
|
||||
"description": "Blumenmuster mit metallischen Akzenten"
|
||||
},
|
||||
"n2": {
|
||||
"title": "Abstrakte Muster",
|
||||
"description": "Geometrische und abstrakte Designs in kräftigen Farben"
|
||||
},
|
||||
"n3": {
|
||||
"title": "Herzen & Liebe",
|
||||
"description": "Romantische Herzmuster mit Glitzer und zarten Details"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"washiPaper": "Washi-Papier",
|
||||
"origamiPaper": "Origami-Papier",
|
||||
"specialtyOrigamiPaper": "Spezial-Origami-Papier",
|
||||
"merinoWool": "Merinowolle",
|
||||
"cottonYarn": "Baumwollgarn",
|
||||
"softAcrylicYarn": "Weiches Acrylgarn",
|
||||
"acrylicOnCanvas": "Acryl auf Leinwand",
|
||||
"oilOnCanvas": "Öl auf Leinwand",
|
||||
"mixedMediaOnCanvas": "Mischtechnik auf Leinwand",
|
||||
"gelPolish": "Gel-Nagellack",
|
||||
"regularPolish": "Normaler Nagellack"
|
||||
}
|
||||
}
|
||||
103
messages/artworks/nini/en.json
Normal file
103
messages/artworks/nini/en.json
Normal file
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"Categories": {
|
||||
"origami": {
|
||||
"title": "Origami Creations",
|
||||
"description": "Intricate paper folding art pieces showcasing precision and creativity"
|
||||
},
|
||||
"crochet": {
|
||||
"title": "Crochet Items",
|
||||
"description": "Handcrafted crochet pieces combining traditional techniques with modern design"
|
||||
},
|
||||
"paintings": {
|
||||
"title": "Paintings",
|
||||
"description": "Original paintings exploring various styles and techniques"
|
||||
},
|
||||
"fingernails": {
|
||||
"title": "Fingernail Art",
|
||||
"description": "Creative and detailed nail art designs"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"o1": {
|
||||
"title": "Paper Crane Series",
|
||||
"description": "Traditional Japanese crane designs in vibrant colors"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Geometric Animals",
|
||||
"description": "Modern interpretation of wildlife through geometric folds"
|
||||
},
|
||||
"o3": {
|
||||
"title": "Jumping Frog",
|
||||
"description": "Traditional origami frog that can actually hop! A playful piece combining form and function"
|
||||
},
|
||||
"o4": {
|
||||
"title": "Modular Cube Box",
|
||||
"description": "Complex modular origami forming a decorative cube that can open and close"
|
||||
},
|
||||
"o5": {
|
||||
"title": "Love Heart",
|
||||
"description": "Elegant heart-shaped origami design with delicate folds and curves"
|
||||
},
|
||||
"c1": {
|
||||
"title": "Tiny Animal Family",
|
||||
"description": "Collection of small, cute stuffed animals made with soft wool"
|
||||
},
|
||||
"c2": {
|
||||
"title": "Modern Blanket",
|
||||
"description": "Contemporary geometric pattern blanket in pastel tones"
|
||||
},
|
||||
"c3": {
|
||||
"title": "Friendly Frog",
|
||||
"description": "Adorable crochet frog with big eyes and a cheerful smile"
|
||||
},
|
||||
"c4": {
|
||||
"title": "Fluffy Bunny",
|
||||
"description": "Sweet crochet rabbit with floppy ears and a tiny cotton tail"
|
||||
},
|
||||
"c5": {
|
||||
"title": "Sky Kid",
|
||||
"description": "Adorable crochet Sky Kid from Sky: Children of the Light, complete with cape and glowing heart"
|
||||
},
|
||||
"c6": {
|
||||
"title": "Cozy Beaver",
|
||||
"description": "An absolutely bonkers beaver with wild googly eyes, oversized buck teeth, and a tail for slapping the water! This little maniac is ready to build the most chaotic dam you've ever seen."
|
||||
},
|
||||
"p1": {
|
||||
"title": "Abstract Sunset",
|
||||
"description": "Vibrant interpretation of a coastal sunset"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Urban Life",
|
||||
"description": "City scenes captured in impressionistic style"
|
||||
},
|
||||
"p3": {
|
||||
"title": "Alice in Wonderland",
|
||||
"description": "Whimsical scene from Alice in Wonderland featuring the Mad Hatter's tea party"
|
||||
},
|
||||
"n1": {
|
||||
"title": "Spring Collection",
|
||||
"description": "Floral patterns with metallic accents"
|
||||
},
|
||||
"n2": {
|
||||
"title": "Abstract Patterns",
|
||||
"description": "Geometric and abstract designs in bold colors"
|
||||
},
|
||||
"n3": {
|
||||
"title": "Hearts & Love",
|
||||
"description": "Romantic heart patterns with glitter and delicate details"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"washiPaper": "Washi paper",
|
||||
"origamiPaper": "Origami paper",
|
||||
"specialtyOrigamiPaper": "Specialty origami paper",
|
||||
"merinoWool": "Merino wool",
|
||||
"cottonYarn": "Cotton yarn",
|
||||
"softAcrylicYarn": "Soft acrylic yarn",
|
||||
"acrylicOnCanvas": "Acrylic on canvas",
|
||||
"oilOnCanvas": "Oil on canvas",
|
||||
"mixedMediaOnCanvas": "Mixed media on canvas",
|
||||
"gelPolish": "Gel polish",
|
||||
"regularPolish": "Regular polish"
|
||||
}
|
||||
}
|
||||
103
messages/artworks/nini/es.json
Normal file
103
messages/artworks/nini/es.json
Normal file
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"Categories": {
|
||||
"origami": {
|
||||
"title": "Creaciones de Origami",
|
||||
"description": "Piezas de arte de plegado de papel intrincadas que muestran precisión y creatividad"
|
||||
},
|
||||
"crochet": {
|
||||
"title": "Artículos de Ganchillo",
|
||||
"description": "Piezas de ganchillo hechas a mano que combinan técnicas tradicionales con diseño moderno"
|
||||
},
|
||||
"paintings": {
|
||||
"title": "Pinturas",
|
||||
"description": "Pinturas originales que exploran varios estilos y técnicas"
|
||||
},
|
||||
"fingernails": {
|
||||
"title": "Arte de Uñas",
|
||||
"description": "Diseños creativos y detallados de arte de uñas"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"o1": {
|
||||
"title": "Serie de Grullas de Papel",
|
||||
"description": "Diseños tradicionales japoneses de grullas en colores vibrantes"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Animales Geométricos",
|
||||
"description": "Interpretación moderna de la vida silvestre a través de pliegues geométricos"
|
||||
},
|
||||
"o3": {
|
||||
"title": "Rana Saltarina",
|
||||
"description": "¡Rana de origami tradicional que realmente puede saltar! Una pieza juguetona que combina forma y función"
|
||||
},
|
||||
"o4": {
|
||||
"title": "Caja Cubo Modular",
|
||||
"description": "Origami modular complejo que forma un cubo decorativo que puede abrirse y cerrarse"
|
||||
},
|
||||
"o5": {
|
||||
"title": "Corazón de Amor",
|
||||
"description": "Diseño elegante de origami en forma de corazón con pliegues y curvas delicadas"
|
||||
},
|
||||
"c1": {
|
||||
"title": "Familia de Animales Pequeños",
|
||||
"description": "Colección de pequeños y lindos animales de peluche hechos con lana suave"
|
||||
},
|
||||
"c2": {
|
||||
"title": "Manta Moderna",
|
||||
"description": "Manta de patrón geométrico contemporáneo en tonos pastel"
|
||||
},
|
||||
"c3": {
|
||||
"title": "Rana Amigable",
|
||||
"description": "Adorable rana de ganchillo con ojos grandes y una sonrisa alegre"
|
||||
},
|
||||
"c4": {
|
||||
"title": "Conejito Esponjoso",
|
||||
"description": "Dulce conejo de ganchillo con orejas caídas y una pequeña cola de algodón"
|
||||
},
|
||||
"c5": {
|
||||
"title": "Niño del Cielo",
|
||||
"description": "Adorable Niño del Cielo de ganchillo de Sky: Children of the Light, completo con capa y corazón brillante"
|
||||
},
|
||||
"c6": {
|
||||
"title": "Castor Acogedor",
|
||||
"description": "¡Un castor absolutamente loco con ojos saltones salvajes, dientes enormes y una cola para golpear el agua! ¡Este pequeño maníaco está listo para construir la presa más caótica que hayas visto jamás!"
|
||||
},
|
||||
"p1": {
|
||||
"title": "Atardecer Abstracto",
|
||||
"description": "Interpretación vibrante de un atardecer costero"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Vida Urbana",
|
||||
"description": "Escenas de la ciudad capturadas en estilo impresionista"
|
||||
},
|
||||
"p3": {
|
||||
"title": "Alicia en el País de las Maravillas",
|
||||
"description": "Escena caprichosa de Alicia en el País de las Maravillas con la fiesta del té del Sombrerero Loco"
|
||||
},
|
||||
"n1": {
|
||||
"title": "Colección de Primavera",
|
||||
"description": "Patrones florales con acentos metálicos"
|
||||
},
|
||||
"n2": {
|
||||
"title": "Patrones Abstractos",
|
||||
"description": "Diseños geométricos y abstractos en colores audaces"
|
||||
},
|
||||
"n3": {
|
||||
"title": "Corazones y Amor",
|
||||
"description": "Patrones románticos de corazones con purpurina y detalles delicados"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"washiPaper": "Papel Washi",
|
||||
"origamiPaper": "Papel de origami",
|
||||
"specialtyOrigamiPaper": "Papel de origami especial",
|
||||
"merinoWool": "Lana merino",
|
||||
"cottonYarn": "Hilo de algodón",
|
||||
"softAcrylicYarn": "Hilo acrílico suave",
|
||||
"acrylicOnCanvas": "Acrílico sobre lienzo",
|
||||
"oilOnCanvas": "Óleo sobre lienzo",
|
||||
"mixedMediaOnCanvas": "Técnica mixta sobre lienzo",
|
||||
"gelPolish": "Esmalte en gel",
|
||||
"regularPolish": "Esmalte regular"
|
||||
}
|
||||
}
|
||||
103
messages/artworks/nini/ka.json
Normal file
103
messages/artworks/nini/ka.json
Normal file
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"Categories": {
|
||||
"origami": {
|
||||
"title": "ორიგამის ნამუშევრები",
|
||||
"description": "რთული ქაღალდის კეცვის ხელოვნების ნაწარმოებები, რომლებიც გამოირჩევა სიზუსტითა და შემოქმედებითობით"
|
||||
},
|
||||
"crochet": {
|
||||
"title": "ქსოვის ნაწარმები",
|
||||
"description": "ხელნაკეთი ქსოვის ნაწარმოები, რომლებიც აერთიანებს ტრადიციულ ტექნიკებს თანამედროვე დიზაინთან"
|
||||
},
|
||||
"paintings": {
|
||||
"title": "ნახატები",
|
||||
"description": "ორიგინალური ნახატები, რომლებიც იკვლევს სხვადასხვა სტილსა და ტექნიკას"
|
||||
},
|
||||
"fingernails": {
|
||||
"title": "ფრჩხილების ხელოვნება",
|
||||
"description": "შემოქმედებითი და დეტალური ფრჩხილების დიზაინები"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"o1": {
|
||||
"title": "ქაღალდის ამწის სერია",
|
||||
"description": "ტრადიციული იაპონური ამწის დიზაინები ცოცხალ ფერებში"
|
||||
},
|
||||
"o2": {
|
||||
"title": "გეომეტრიული ცხოველები",
|
||||
"description": "ველური ბუნების თანამედროვე ინტერპრეტაცია გეომეტრიული კეცვებით"
|
||||
},
|
||||
"o3": {
|
||||
"title": "მხტუნავი ბაყაყი",
|
||||
"description": "ტრადიციული ორიგამის ბაყაყი, რომელსაც ნამდვილად შეუძლია ხტუნვა! სახალისო ნაწარმოები, რომელიც აერთიანებს ფორმასა და ფუნქციას"
|
||||
},
|
||||
"o4": {
|
||||
"title": "მოდულური კუბის ყუთი",
|
||||
"description": "რთული მოდულური ორიგამი, რომელიც ქმნის დეკორატიულ კუბს, რომელსაც შეუძლია გაიხსნას და დაიხუროს"
|
||||
},
|
||||
"o5": {
|
||||
"title": "სიყვარულის გული",
|
||||
"description": "ელეგანტური გულის ფორმის ორიგამის დიზაინი ნაზი კეცვებითა და მოხვევებით"
|
||||
},
|
||||
"c1": {
|
||||
"title": "პატარა ცხოველების ოჯახი",
|
||||
"description": "პატარა, საყვარელი ბუმბულოვანი ცხოველების კოლექცია რბილი მატყლისგან"
|
||||
},
|
||||
"c2": {
|
||||
"title": "თანამედროვე საბანი",
|
||||
"description": "თანამედროვე გეომეტრიული ნიმუშის საბანი პასტელურ ტონებში"
|
||||
},
|
||||
"c3": {
|
||||
"title": "მეგობრული ბაყაყი",
|
||||
"description": "საყვარელი ქსოვის ბაყაყი დიდი თვალებითა და მხიარული ღიმილით"
|
||||
},
|
||||
"c4": {
|
||||
"title": "ბუმბულოვანი კურდღელი",
|
||||
"description": "ტკბილი ქსოვის კურდღელი ჩამოკიდებული ყურებითა და პატარა ბამბის კუდით"
|
||||
},
|
||||
"c5": {
|
||||
"title": "ცის ბავშვი",
|
||||
"description": "საყვარელი ქსოვის ცის ბავშვი Sky: Children of the Light-დან, სრული კაბითა და ნათელი გულით"
|
||||
},
|
||||
"c6": {
|
||||
"title": "მყუდრო თახვი",
|
||||
"description": "აბსოლუტურად გიჟი თახვი ველური გუგლის თვალებით, გადიდებული წინა კბილებითა და წყლის ცემისთვის განკუთვნილი კუდით! ეს პატარა მანიაკი მზადაა ააშენოს ყველაზე ქაოსური კაშხალი, რომელიც ოდესმე გინახავს."
|
||||
},
|
||||
"p1": {
|
||||
"title": "აბსტრაქტული მზისჩასვლა",
|
||||
"description": "სანაპირო მზისჩასვლის ცოცხალი ინტერპრეტაცია"
|
||||
},
|
||||
"p2": {
|
||||
"title": "ურბანული ცხოვრება",
|
||||
"description": "ქალაქის სცენები იმპრესიონისტული სტილით"
|
||||
},
|
||||
"p3": {
|
||||
"title": "ალისა საოცრებათა ქვეყანაში",
|
||||
"description": "ალისა საოცრებათა ქვეყანაში-ს ფანტასტიკური სცენა, რომელიც გამოსახავს გიჟი ქუდმაქრის ჩაის წვეულებას"
|
||||
},
|
||||
"n1": {
|
||||
"title": "გაზაფხულის კოლექცია",
|
||||
"description": "ყვავილოვანი ნიმუშები ლითონის აქცენტებით"
|
||||
},
|
||||
"n2": {
|
||||
"title": "აბსტრაქტული ნიმუშები",
|
||||
"description": "გეომეტრიული და აბსტრაქტული დიზაინები მკვეთრ ფერებში"
|
||||
},
|
||||
"n3": {
|
||||
"title": "გულები და სიყვარული",
|
||||
"description": "რომანტიული გულის ნიმუშები ბრჭყვიალითა და ნაზი დეტალებით"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"washiPaper": "ვაში ქაღალდი",
|
||||
"origamiPaper": "ორიგამის ქაღალდი",
|
||||
"specialtyOrigamiPaper": "სპეციალური ორიგამის ქაღალდი",
|
||||
"merinoWool": "მერინოს მატყლი",
|
||||
"cottonYarn": "ბამბის ძაფი",
|
||||
"softAcrylicYarn": "რბილი აკრილის ძაფი",
|
||||
"acrylicOnCanvas": "აკრილი ტილოზე",
|
||||
"oilOnCanvas": "ზეთი ტილოზე",
|
||||
"mixedMediaOnCanvas": "შერეული მასალა ტილოზე",
|
||||
"gelPolish": "გელის ლაქი",
|
||||
"regularPolish": "ჩვეულებრივი ლაქი"
|
||||
}
|
||||
}
|
||||
103
messages/artworks/nini/ru.json
Normal file
103
messages/artworks/nini/ru.json
Normal file
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"Categories": {
|
||||
"origami": {
|
||||
"title": "Оригами",
|
||||
"description": "Сложные произведения искусства складывания бумаги, демонстрирующие точность и творчество"
|
||||
},
|
||||
"crochet": {
|
||||
"title": "Вязаные изделия",
|
||||
"description": "Изделия ручной работы, сочетающие традиционные техники с современным дизайном"
|
||||
},
|
||||
"paintings": {
|
||||
"title": "Картины",
|
||||
"description": "Оригинальные картины, исследующие различные стили и техники"
|
||||
},
|
||||
"fingernails": {
|
||||
"title": "Дизайн ногтей",
|
||||
"description": "Креативные и детализированные дизайны для ногтей"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"o1": {
|
||||
"title": "Серия бумажных журавликов",
|
||||
"description": "Традиционные японские дизайны журавликов в ярких цветах"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Геометрические животные",
|
||||
"description": "Современная интерпретация дикой природы через геометрические складки"
|
||||
},
|
||||
"o3": {
|
||||
"title": "Прыгающая лягушка",
|
||||
"description": "Традиционная лягушка оригами, которая действительно может прыгать! Игривое произведение, сочетающее форму и функцию"
|
||||
},
|
||||
"o4": {
|
||||
"title": "Модульная кубическая коробка",
|
||||
"description": "Сложное модульное оригами, образующее декоративный куб, который может открываться и закрываться"
|
||||
},
|
||||
"o5": {
|
||||
"title": "Сердце любви",
|
||||
"description": "Элегантный дизайн оригами в форме сердца с деликатными складками и изгибами"
|
||||
},
|
||||
"c1": {
|
||||
"title": "Семья маленьких животных",
|
||||
"description": "Коллекция маленьких, милых мягких игрушек, сделанных из мягкой шерсти"
|
||||
},
|
||||
"c2": {
|
||||
"title": "Современное одеяло",
|
||||
"description": "Современное одеяло с геометрическим узором в пастельных тонах"
|
||||
},
|
||||
"c3": {
|
||||
"title": "Дружелюбная лягушка",
|
||||
"description": "Очаровательная вязаная лягушка с большими глазами и веселой улыбкой"
|
||||
},
|
||||
"c4": {
|
||||
"title": "Пушистый кролик",
|
||||
"description": "Милый вязаный кролик с висячими ушами и крошечным хлопковым хвостиком"
|
||||
},
|
||||
"c5": {
|
||||
"title": "Небесный ребенок",
|
||||
"description": "Очаровательный вязаный Небесный ребенок из игры Sky: Children of the Light, с плащом и светящимся сердцем"
|
||||
},
|
||||
"c6": {
|
||||
"title": "Уютный бобр",
|
||||
"description": "Абсолютно безумный бобр с дикими выпученными глазами, огромными передними зубами и хвостом для шлепания по воде! Этот маленький маньяк готов построить самую хаотичную плотину, которую вы когда-либо видели."
|
||||
},
|
||||
"p1": {
|
||||
"title": "Абстрактный закат",
|
||||
"description": "Яркая интерпретация прибрежного заката"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Городская жизнь",
|
||||
"description": "Городские сцены, запечатленные в импрессионистском стиле"
|
||||
},
|
||||
"p3": {
|
||||
"title": "Алиса в стране чудес",
|
||||
"description": "Причудливая сцена из Алисы в стране чудес с чаепитием Безумного Шляпника"
|
||||
},
|
||||
"n1": {
|
||||
"title": "Весенняя коллекция",
|
||||
"description": "Цветочные узоры с металлическими акцентами"
|
||||
},
|
||||
"n2": {
|
||||
"title": "Абстрактные узоры",
|
||||
"description": "Геометрические и абстрактные дизайны в ярких цветах"
|
||||
},
|
||||
"n3": {
|
||||
"title": "Сердца и любовь",
|
||||
"description": "Романтические узоры с сердцами, блестками и деликатными деталями"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"washiPaper": "Бумага васи",
|
||||
"origamiPaper": "Бумага для оригами",
|
||||
"specialtyOrigamiPaper": "Специальная бумага для оригами",
|
||||
"merinoWool": "Шерсть мериноса",
|
||||
"cottonYarn": "Хлопковая пряжа",
|
||||
"softAcrylicYarn": "Мягкая акриловая пряжа",
|
||||
"acrylicOnCanvas": "Акрил на холсте",
|
||||
"oilOnCanvas": "Масло на холсте",
|
||||
"mixedMediaOnCanvas": "Смешанная техника на холсте",
|
||||
"gelPolish": "Гель-лак",
|
||||
"regularPolish": "Обычный лак"
|
||||
}
|
||||
}
|
||||
103
messages/artworks/nini/tr.json
Normal file
103
messages/artworks/nini/tr.json
Normal file
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"Categories": {
|
||||
"origami": {
|
||||
"title": "Origami Kreasyonları",
|
||||
"description": "Hassasiyet ve yaratıcılığı sergileyen karmaşık kağıt katlama sanat eserleri"
|
||||
},
|
||||
"crochet": {
|
||||
"title": "Örgü Ürünleri",
|
||||
"description": "Geleneksel teknikleri modern tasarımla birleştiren el yapımı örgü parçaları"
|
||||
},
|
||||
"paintings": {
|
||||
"title": "Resimler",
|
||||
"description": "Çeşitli stil ve teknikleri keşfeden orijinal resimler"
|
||||
},
|
||||
"fingernails": {
|
||||
"title": "Tırnak Sanatı",
|
||||
"description": "Yaratıcı ve detaylı tırnak sanatı tasarımları"
|
||||
}
|
||||
},
|
||||
"Artworks": {
|
||||
"o1": {
|
||||
"title": "Kağıt Turna Serisi",
|
||||
"description": "Canlı renklerde geleneksel Japon turna tasarımları"
|
||||
},
|
||||
"o2": {
|
||||
"title": "Geometrik Hayvanlar",
|
||||
"description": "Vahşi yaşamın geometrik katlamalarla modern yorumu"
|
||||
},
|
||||
"o3": {
|
||||
"title": "Zıplayan Kurbağa",
|
||||
"description": "Gerçekten zıplayabilen geleneksel origami kurbağa! Form ve işlevi birleştiren eğlenceli bir parça"
|
||||
},
|
||||
"o4": {
|
||||
"title": "Modüler Küp Kutu",
|
||||
"description": "Açılıp kapanabilen dekoratif bir küp oluşturan karmaşık modüler origami"
|
||||
},
|
||||
"o5": {
|
||||
"title": "Aşk Kalbi",
|
||||
"description": "Zarif katlamalar ve kıvrımlarla kalp şeklinde şık origami tasarımı"
|
||||
},
|
||||
"c1": {
|
||||
"title": "Minik Hayvan Ailesi",
|
||||
"description": "Yumuşak yünden yapılmış küçük, sevimli peluş hayvanlar koleksiyonu"
|
||||
},
|
||||
"c2": {
|
||||
"title": "Modern Battaniye",
|
||||
"description": "Pastel tonlarda çağdaş geometrik desenli battaniye"
|
||||
},
|
||||
"c3": {
|
||||
"title": "Dost Kurbağa",
|
||||
"description": "Büyük gözleri ve neşeli gülümsemesiyle sevimli örgü kurbağa"
|
||||
},
|
||||
"c4": {
|
||||
"title": "Tüylü Tavşan",
|
||||
"description": "Sarkık kulakları ve minik pamuk kuyruğuyla tatlı örgü tavşan"
|
||||
},
|
||||
"c5": {
|
||||
"title": "Gökyüzü Çocuğu",
|
||||
"description": "Sky: Children of the Light'tan sevimli örgü Gökyüzü Çocuğu, pelerini ve parlayan kalbiyle birlikte"
|
||||
},
|
||||
"c6": {
|
||||
"title": "Rahat Kunduz",
|
||||
"description": "Vahşi google gözleri, büyük ön dişleri ve suyu çarpmak için kuyruğuyla kesinlikle çılgın bir kunduz! Bu küçük manyak, şimdiye kadar gördüğünüz en kaotik barajı inşa etmeye hazır."
|
||||
},
|
||||
"p1": {
|
||||
"title": "Soyut Gün Batımı",
|
||||
"description": "Sahil gün batımının canlı yorumu"
|
||||
},
|
||||
"p2": {
|
||||
"title": "Şehir Hayatı",
|
||||
"description": "İzlenimci tarzda yakalanmış şehir manzaraları"
|
||||
},
|
||||
"p3": {
|
||||
"title": "Harikalar Diyarında Alice",
|
||||
"description": "Çılgın Şapkacı'nın çay partisini içeren Alice Harikalar Diyarında'ndan fantastik sahne"
|
||||
},
|
||||
"n1": {
|
||||
"title": "İlkbahar Koleksiyonu",
|
||||
"description": "Metalik vurgularla çiçek desenleri"
|
||||
},
|
||||
"n2": {
|
||||
"title": "Soyut Desenler",
|
||||
"description": "Cesur renklerde geometrik ve soyut tasarımlar"
|
||||
},
|
||||
"n3": {
|
||||
"title": "Kalpler ve Aşk",
|
||||
"description": "Sim ve zarif detaylarla romantik kalp desenleri"
|
||||
}
|
||||
},
|
||||
"Mediums": {
|
||||
"washiPaper": "Washi kağıdı",
|
||||
"origamiPaper": "Origami kağıdı",
|
||||
"specialtyOrigamiPaper": "Özel origami kağıdı",
|
||||
"merinoWool": "Merino yünü",
|
||||
"cottonYarn": "Pamuk ipliği",
|
||||
"softAcrylicYarn": "Yumuşak akrilik iplik",
|
||||
"acrylicOnCanvas": "Tuval üzerine akrilik",
|
||||
"oilOnCanvas": "Tuval üzerine yağlıboya",
|
||||
"mixedMediaOnCanvas": "Tuval üzerine karışık teknik",
|
||||
"gelPolish": "Jel oje",
|
||||
"regularPolish": "Normal oje"
|
||||
}
|
||||
}
|
||||
58
messages/ui/admin/de.json
Normal file
58
messages/ui/admin/de.json
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"Dashboard": {
|
||||
"title": "Dashboard",
|
||||
"subtitle": "Verwalten Sie Ihre Kunstgalerie-Einstellungen",
|
||||
"checkingConfiguration": "Konfiguration wird überprüft…"
|
||||
},
|
||||
"Login": {
|
||||
"title": "Anmeldung",
|
||||
"emailStep": "Geben Sie Ihre E-Mail-Adresse ein, um einen Bestätigungscode zu erhalten",
|
||||
"otpStep": "Geben Sie den Bestätigungscode ein, der an Ihre E-Mail gesendet wurde",
|
||||
"notAvailable": "Admin-Anmeldung ist nicht verfügbar",
|
||||
"configurationRequired": "Konfiguration erforderlich",
|
||||
"configurationMessage": "Die Admin-Anmeldung erfordert SMTP- und Authentifizierungskonfiguration. Bitte überprüfen Sie die Server-Logs auf fehlende Umgebungsvariablen.",
|
||||
"emailAddress": "E-Mail-Adresse",
|
||||
"verificationCode": "Bestätigungscode",
|
||||
"sendVerificationCode": "Bestätigungscode senden",
|
||||
"verifyAndLogin": "Bestätigen & Anmelden",
|
||||
"sentTo": "Gesendet an:",
|
||||
"useDifferentEmail": "Andere E-Mail verwenden",
|
||||
"loginSuccessful": "Anmeldung erfolgreich! Weiterleitung…",
|
||||
"networkError": "Netzwerkfehler. Bitte versuchen Sie es erneut."
|
||||
},
|
||||
"Settings": {
|
||||
"broadcastMessageSettings": "Broadcast-Nachrichten-Einstellungen",
|
||||
"broadcastMessageDescription": "Konfigurieren Sie die Nachricht, die in Ihrer Galerie angezeigt wird",
|
||||
"displayBroadcastMessage": "Broadcast-Nachricht in der Galerie anzeigen",
|
||||
"title": "Titel",
|
||||
"messageContent": "Nachrichteninhalt",
|
||||
"allowDismiss": "Besuchern erlauben, die Nachricht zu schließen",
|
||||
"saveChanges": "Änderungen speichern",
|
||||
"settingsSaved": "Einstellungen erfolgreich gespeichert!",
|
||||
"enterMessageTitle": "Nachrichtentitel eingeben",
|
||||
"enterMessageContent": "Ihren Nachrichteninhalt eingeben",
|
||||
"charactersCount": "{count}/{max} Zeichen"
|
||||
},
|
||||
"ArtistSettings": {
|
||||
"title": "Künstlerprofil-Einstellungen",
|
||||
"description": "Verwalten Sie Ihre Künstlerprofil-Informationen",
|
||||
"artistName": "Künstlername",
|
||||
"artistDescription": "Künstlerbeschreibung",
|
||||
"enterArtistName": "Künstlername eingeben",
|
||||
"enterArtistDescription": "Künstlerbeschreibung eingeben"
|
||||
},
|
||||
"Errors": {
|
||||
"failedToLoadSettings": "Einstellungen konnten nicht geladen werden",
|
||||
"failedToSaveSettings": "Einstellungen konnten nicht gespeichert werden",
|
||||
"checkAdminConfiguration": "Admin-Konfiguration konnte nicht überprüft werden"
|
||||
},
|
||||
"Email": {
|
||||
"subject": "Admin-Anmeldung - Ihr Bestätigungscode",
|
||||
"title": "Admin-Anmeldung Bestätigung",
|
||||
"codeMessage": "Ihr Bestätigungscode für den Admin-Zugang ist:",
|
||||
"expiryMessage": "Dieser Code läuft in 10 Minuten ab.",
|
||||
"ignoreMessage": "Falls Sie diesen Code nicht angefordert haben, ignorieren Sie diese E-Mail bitte.",
|
||||
"automatedMessage": "Dies ist eine automatische Nachricht von {siteName}",
|
||||
"textVersion": "Ihr Admin-Bestätigungscode ist: {otp}. Dieser Code läuft in 10 Minuten ab."
|
||||
}
|
||||
}
|
||||
58
messages/ui/admin/en.json
Normal file
58
messages/ui/admin/en.json
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"Dashboard": {
|
||||
"title": "Dashboard",
|
||||
"subtitle": "Manage your art gallery settings",
|
||||
"checkingConfiguration": "Checking configuration…"
|
||||
},
|
||||
"Login": {
|
||||
"title": "Login",
|
||||
"emailStep": "Enter your email to receive a verification code",
|
||||
"otpStep": "Enter the verification code sent to your email",
|
||||
"notAvailable": "Admin login is not available",
|
||||
"configurationRequired": "Configuration Required",
|
||||
"configurationMessage": "Admin login requires SMTP and authentication configuration. Please check the server logs for missing environment variables.",
|
||||
"emailAddress": "Email address",
|
||||
"verificationCode": "Verification Code",
|
||||
"sendVerificationCode": "Send Verification Code",
|
||||
"verifyAndLogin": "Verify & Login",
|
||||
"sentTo": "Sent to:",
|
||||
"useDifferentEmail": "Use different email",
|
||||
"loginSuccessful": "Login successful! Redirecting…",
|
||||
"networkError": "Network error. Please try again."
|
||||
},
|
||||
"Settings": {
|
||||
"broadcastMessageSettings": "Broadcast Message Settings",
|
||||
"broadcastMessageDescription": "Configure the message displayed on your gallery",
|
||||
"displayBroadcastMessage": "Display broadcast message on gallery",
|
||||
"title": "Title",
|
||||
"messageContent": "Message Content",
|
||||
"allowDismiss": "Allow visitors to dismiss the message",
|
||||
"saveChanges": "Save Changes",
|
||||
"settingsSaved": "Settings saved successfully!",
|
||||
"enterMessageTitle": "Enter message title",
|
||||
"enterMessageContent": "Enter your message content",
|
||||
"charactersCount": "{count}/{max} characters"
|
||||
},
|
||||
"ArtistSettings": {
|
||||
"title": "Artist Profile Settings",
|
||||
"description": "Manage your artist profile information",
|
||||
"artistName": "Artist Name",
|
||||
"artistDescription": "Artist Description",
|
||||
"enterArtistName": "Enter artist name",
|
||||
"enterArtistDescription": "Enter artist description"
|
||||
},
|
||||
"Errors": {
|
||||
"failedToLoadSettings": "Failed to load settings",
|
||||
"failedToSaveSettings": "Failed to save settings",
|
||||
"checkAdminConfiguration": "Unable to check admin configuration"
|
||||
},
|
||||
"Email": {
|
||||
"subject": "Admin Login - Your Verification Code",
|
||||
"title": "Admin Login Verification",
|
||||
"codeMessage": "Your verification code for admin access is:",
|
||||
"expiryMessage": "This code will expire in 10 minutes.",
|
||||
"ignoreMessage": "If you didn't request this code, please ignore this email.",
|
||||
"automatedMessage": "This is an automated message from {siteName}",
|
||||
"textVersion": "Your admin verification code is: {otp}. This code will expire in 10 minutes."
|
||||
}
|
||||
}
|
||||
58
messages/ui/admin/es.json
Normal file
58
messages/ui/admin/es.json
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"Dashboard": {
|
||||
"title": "Panel de Control",
|
||||
"subtitle": "Gestiona la configuración de tu galería de arte",
|
||||
"checkingConfiguration": "Verificando configuración…"
|
||||
},
|
||||
"Login": {
|
||||
"title": "Inicio de Sesión",
|
||||
"emailStep": "Ingresa tu email para recibir un código de verificación",
|
||||
"otpStep": "Ingresa el código de verificación enviado a tu email",
|
||||
"notAvailable": "El inicio de sesión de administrador no está disponible",
|
||||
"configurationRequired": "Configuración Requerida",
|
||||
"configurationMessage": "El inicio de sesión de administrador requiere configuración SMTP y de autenticación. Por favor revisa los logs del servidor para variables de entorno faltantes.",
|
||||
"emailAddress": "Dirección de email",
|
||||
"verificationCode": "Código de Verificación",
|
||||
"sendVerificationCode": "Enviar Código de Verificación",
|
||||
"verifyAndLogin": "Verificar e Iniciar Sesión",
|
||||
"sentTo": "Enviado a:",
|
||||
"useDifferentEmail": "Usar email diferente",
|
||||
"loginSuccessful": "¡Inicio de sesión exitoso! Redirigiendo…",
|
||||
"networkError": "Error de red. Por favor intenta de nuevo."
|
||||
},
|
||||
"Settings": {
|
||||
"broadcastMessageSettings": "Configuración de Mensaje de Difusión",
|
||||
"broadcastMessageDescription": "Configura el mensaje mostrado en tu galería",
|
||||
"displayBroadcastMessage": "Mostrar mensaje de difusión en la galería",
|
||||
"title": "Título",
|
||||
"messageContent": "Contenido del Mensaje",
|
||||
"allowDismiss": "Permitir a los visitantes cerrar el mensaje",
|
||||
"saveChanges": "Guardar Cambios",
|
||||
"settingsSaved": "¡Configuración guardada exitosamente!",
|
||||
"enterMessageTitle": "Ingresa el título del mensaje",
|
||||
"enterMessageContent": "Ingresa el contenido de tu mensaje",
|
||||
"charactersCount": "{count}/{max} caracteres"
|
||||
},
|
||||
"ArtistSettings": {
|
||||
"title": "Configuración del Perfil del Artista",
|
||||
"description": "Gestiona la información de tu perfil de artista",
|
||||
"artistName": "Nombre del Artista",
|
||||
"artistDescription": "Descripción del Artista",
|
||||
"enterArtistName": "Ingresa el nombre del artista",
|
||||
"enterArtistDescription": "Ingresa la descripción del artista"
|
||||
},
|
||||
"Errors": {
|
||||
"failedToLoadSettings": "Error al cargar la configuración",
|
||||
"failedToSaveSettings": "Error al guardar la configuración",
|
||||
"checkAdminConfiguration": "No se pudo verificar la configuración de administrador"
|
||||
},
|
||||
"Email": {
|
||||
"subject": "Inicio de Sesión de Administrador - Su Código de Verificación",
|
||||
"title": "Verificación de Inicio de Sesión de Administrador",
|
||||
"codeMessage": "Su código de verificación para acceso de administrador es:",
|
||||
"expiryMessage": "Este código expirará en 10 minutos.",
|
||||
"ignoreMessage": "Si no solicitó este código, por favor ignore este email.",
|
||||
"automatedMessage": "Este es un mensaje automatizado de {siteName}",
|
||||
"textVersion": "Su código de verificación de administrador es: {otp}. Este código expirará en 10 minutos."
|
||||
}
|
||||
}
|
||||
58
messages/ui/admin/ka.json
Normal file
58
messages/ui/admin/ka.json
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"Dashboard": {
|
||||
"title": "მართვის პანელი",
|
||||
"subtitle": "მართეთ თქვენი ხელოვნების გალერეის პარამეტრები",
|
||||
"checkingConfiguration": "კონფიგურაციის შემოწმება…"
|
||||
},
|
||||
"Login": {
|
||||
"title": "შესვლა",
|
||||
"emailStep": "შეიყვანეთ თქვენი ელ-ფოსტა დადასტურების კოდის მისაღებად",
|
||||
"otpStep": "შეიყვანეთ დადასტურების კოდი, რომელიც გამოიგზავნა თქვენს ელ-ფოსტაზე",
|
||||
"notAvailable": "ადმინისტრატორის შესვლა მიუწვდომელია",
|
||||
"configurationRequired": "საჭიროა კონფიგურაცია",
|
||||
"configurationMessage": "ადმინისტრატორის შესვლა საჭიროებს SMTP და ავთენტიფიკაციის კონფიგურაციას. გთხოვთ შეამოწმოთ სერვერის ლოგები გამოტოვებული გარემოს ცვლადებისთვის.",
|
||||
"emailAddress": "ელ-ფოსტის მისამართი",
|
||||
"verificationCode": "დადასტურების კოდი",
|
||||
"sendVerificationCode": "დადასტურების კოდის გაგზავნა",
|
||||
"verifyAndLogin": "დადასტურება და შესვლა",
|
||||
"sentTo": "გაიგზავნა:",
|
||||
"useDifferentEmail": "სხვა ელ-ფოსტის გამოყენება",
|
||||
"loginSuccessful": "შესვლა წარმატებულია! გადამისამართება…",
|
||||
"networkError": "ქსელის შეცდომა. გთხოვთ სცადოთ ხელახლა."
|
||||
},
|
||||
"Settings": {
|
||||
"broadcastMessageSettings": "ტრანსლაციის შეტყობინების პარამეტრები",
|
||||
"broadcastMessageDescription": "კონფიგურაცია შეტყობინებისა, რომელიც ნაჩვენებია თქვენს გალერეაში",
|
||||
"displayBroadcastMessage": "ტრანსლაციის შეტყობინების ჩვენება გალერეაში",
|
||||
"title": "სათაური",
|
||||
"messageContent": "შეტყობინების შინაარსი",
|
||||
"allowDismiss": "ვიზიტორებს შეუძლიათ შეტყობინების დახურვა",
|
||||
"saveChanges": "ცვლილებების შენახვა",
|
||||
"settingsSaved": "პარამეტრები წარმატებით შეინახა!",
|
||||
"enterMessageTitle": "შეიყვანეთ შეტყობინების სათაური",
|
||||
"enterMessageContent": "შეიყვანეთ თქვენი შეტყობინების შინაარსი",
|
||||
"charactersCount": "{count}/{max} სიმბოლო"
|
||||
},
|
||||
"ArtistSettings": {
|
||||
"title": "მხატვრის პროფილის პარამეტრები",
|
||||
"description": "მართეთ თქვენი მხატვრის პროფილის ინფორმაცია",
|
||||
"artistName": "მხატვრის სახელი",
|
||||
"artistDescription": "მხატვრის აღწერა",
|
||||
"enterArtistName": "შეიყვანეთ მხატვრის სახელი",
|
||||
"enterArtistDescription": "შეიყვანეთ მხატვრის აღწერა"
|
||||
},
|
||||
"Errors": {
|
||||
"failedToLoadSettings": "პარამეტრების ჩატვირთვა ვერ მოხერხდა",
|
||||
"failedToSaveSettings": "პარამეტრების შენახვა ვერ მოხერხდა",
|
||||
"checkAdminConfiguration": "ადმინისტრაციული კონფიგურაციის შემოწმება ვერ მოხერხდა"
|
||||
},
|
||||
"Email": {
|
||||
"subject": "ადმინისტრატორის შესვლა - თქვენი დადასტურების კოდი",
|
||||
"title": "ადმინისტრატორის შესვლის დადასტურება",
|
||||
"codeMessage": "თქვენი დადასტურების კოდი ადმინისტრაციული წვდომისთვის არის:",
|
||||
"expiryMessage": "ეს კოდი ვადაგასდება 10 წუთში.",
|
||||
"ignoreMessage": "თუ ამ კოდს არ მოითხოვდით, გთხოვთ უგულებელყოთ ეს ელ-ფოსტა.",
|
||||
"automatedMessage": "ეს არის ავტომატური შეტყობინება {siteName}-დან",
|
||||
"textVersion": "თქვენი ადმინისტრაციული დადასტურების კოდი არის: {otp}. ეს კოდი ვადაგასდება 10 წუთში."
|
||||
}
|
||||
}
|
||||
58
messages/ui/admin/ru.json
Normal file
58
messages/ui/admin/ru.json
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"Dashboard": {
|
||||
"title": "Панель управления",
|
||||
"subtitle": "Управляйте настройками вашей художественной галереи",
|
||||
"checkingConfiguration": "Проверка конфигурации…"
|
||||
},
|
||||
"Login": {
|
||||
"title": "Вход",
|
||||
"emailStep": "Введите ваш email для получения кода подтверждения",
|
||||
"otpStep": "Введите код подтверждения, отправленный на ваш email",
|
||||
"notAvailable": "Вход администратора недоступен",
|
||||
"configurationRequired": "Требуется конфигурация",
|
||||
"configurationMessage": "Вход администратора требует настройки SMTP и аутентификации. Пожалуйста, проверьте логи сервера на отсутствующие переменные окружения.",
|
||||
"emailAddress": "Адрес электронной почты",
|
||||
"verificationCode": "Код подтверждения",
|
||||
"sendVerificationCode": "Отправить код подтверждения",
|
||||
"verifyAndLogin": "Подтвердить и войти",
|
||||
"sentTo": "Отправлено на:",
|
||||
"useDifferentEmail": "Использовать другой email",
|
||||
"loginSuccessful": "Вход выполнен успешно! Перенаправление…",
|
||||
"networkError": "Ошибка сети. Пожалуйста, попробуйте снова."
|
||||
},
|
||||
"Settings": {
|
||||
"broadcastMessageSettings": "Настройки широковещательного сообщения",
|
||||
"broadcastMessageDescription": "Настройте сообщение, отображаемое в вашей галерее",
|
||||
"displayBroadcastMessage": "Показывать широковещательное сообщение в галерее",
|
||||
"title": "Заголовок",
|
||||
"messageContent": "Содержание сообщения",
|
||||
"allowDismiss": "Разрешить посетителям закрывать сообщение",
|
||||
"saveChanges": "Сохранить изменения",
|
||||
"settingsSaved": "Настройки успешно сохранены!",
|
||||
"enterMessageTitle": "Введите заголовок сообщения",
|
||||
"enterMessageContent": "Введите содержание вашего сообщения",
|
||||
"charactersCount": "{count}/{max} символов"
|
||||
},
|
||||
"ArtistSettings": {
|
||||
"title": "Настройки профиля художника",
|
||||
"description": "Управляйте информацией вашего профиля художника",
|
||||
"artistName": "Имя художника",
|
||||
"artistDescription": "Описание художника",
|
||||
"enterArtistName": "Введите имя художника",
|
||||
"enterArtistDescription": "Введите описание художника"
|
||||
},
|
||||
"Errors": {
|
||||
"failedToLoadSettings": "Не удалось загрузить настройки",
|
||||
"failedToSaveSettings": "Не удалось сохранить настройки",
|
||||
"checkAdminConfiguration": "Не удалось проверить конфигурацию администратора"
|
||||
},
|
||||
"Email": {
|
||||
"subject": "Вход администратора - Ваш код подтверждения",
|
||||
"title": "Подтверждение входа администратора",
|
||||
"codeMessage": "Ваш код подтверждения для доступа администратора:",
|
||||
"expiryMessage": "Этот код истечет через 10 минут.",
|
||||
"ignoreMessage": "Если вы не запрашивали этот код, пожалуйста, проигнорируйте это письмо.",
|
||||
"automatedMessage": "Это автоматическое сообщение от {siteName}",
|
||||
"textVersion": "Ваш код подтверждения администратора: {otp}. Этот код истечет через 10 минут."
|
||||
}
|
||||
}
|
||||
58
messages/ui/admin/tr.json
Normal file
58
messages/ui/admin/tr.json
Normal file
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"Dashboard": {
|
||||
"title": "Kontrol Paneli",
|
||||
"subtitle": "Sanat galerinizin ayarlarını yönetin",
|
||||
"checkingConfiguration": "Yapılandırma kontrol ediliyor…"
|
||||
},
|
||||
"Login": {
|
||||
"title": "Giriş",
|
||||
"emailStep": "Doğrulama kodu almak için e-posta adresinizi girin",
|
||||
"otpStep": "E-postanıza gönderilen doğrulama kodunu girin",
|
||||
"notAvailable": "Yönetici girişi mevcut değil",
|
||||
"configurationRequired": "Yapılandırma Gerekli",
|
||||
"configurationMessage": "Yönetici girişi SMTP ve kimlik doğrulama yapılandırması gerektirir. Lütfen eksik ortam değişkenleri için sunucu günlüklerini kontrol edin.",
|
||||
"emailAddress": "E-posta adresi",
|
||||
"verificationCode": "Doğrulama Kodu",
|
||||
"sendVerificationCode": "Doğrulama Kodu Gönder",
|
||||
"verifyAndLogin": "Doğrula ve Giriş Yap",
|
||||
"sentTo": "Gönderildi:",
|
||||
"useDifferentEmail": "Farklı e-posta kullan",
|
||||
"loginSuccessful": "Giriş başarılı! Yönlendiriliyor…",
|
||||
"networkError": "Ağ hatası. Lütfen tekrar deneyin."
|
||||
},
|
||||
"Settings": {
|
||||
"broadcastMessageSettings": "Yayın Mesajı Ayarları",
|
||||
"broadcastMessageDescription": "Galerinizde görüntülenen mesajı yapılandırın",
|
||||
"displayBroadcastMessage": "Galeride yayın mesajını göster",
|
||||
"title": "Başlık",
|
||||
"messageContent": "Mesaj İçeriği",
|
||||
"allowDismiss": "Ziyaretçilerin mesajı kapatmasına izin ver",
|
||||
"saveChanges": "Değişiklikleri Kaydet",
|
||||
"settingsSaved": "Ayarlar başarıyla kaydedildi!",
|
||||
"enterMessageTitle": "Mesaj başlığını girin",
|
||||
"enterMessageContent": "Mesaj içeriğinizi girin",
|
||||
"charactersCount": "{count}/{max} karakter"
|
||||
},
|
||||
"ArtistSettings": {
|
||||
"title": "Sanatçı Profili Ayarları",
|
||||
"description": "Sanatçı profil bilgilerinizi yönetin",
|
||||
"artistName": "Sanatçı Adı",
|
||||
"artistDescription": "Sanatçı Açıklaması",
|
||||
"enterArtistName": "Sanatçı adını girin",
|
||||
"enterArtistDescription": "Sanatçı açıklamasını girin"
|
||||
},
|
||||
"Errors": {
|
||||
"failedToLoadSettings": "Ayarlar yüklenemedi",
|
||||
"failedToSaveSettings": "Ayarlar kaydedilemedi",
|
||||
"checkAdminConfiguration": "Yönetici yapılandırması kontrol edilemedi"
|
||||
},
|
||||
"Email": {
|
||||
"subject": "Yönetici Girişi - Doğrulama Kodunuz",
|
||||
"title": "Yönetici Girişi Doğrulaması",
|
||||
"codeMessage": "Yönetici erişimi için doğrulama kodunuz:",
|
||||
"expiryMessage": "Bu kod 10 dakika içinde sona erecek.",
|
||||
"ignoreMessage": "Bu kodu talep etmediyseniz, lütfen bu e-postayı görmezden gelin.",
|
||||
"automatedMessage": "Bu {siteName} tarafından gönderilen otomatik bir mesajdır",
|
||||
"textVersion": "Yönetici doğrulama kodunuz: {otp}. Bu kod 10 dakika içinde sona erecek."
|
||||
}
|
||||
}
|
||||
105
messages/ui/de.json
Normal file
105
messages/ui/de.json
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Site": {
|
||||
"name": "{artistName}s Kunstgalerie",
|
||||
"description": "Multidisziplinäre Kunstsammlung",
|
||||
"subheading": "Eine multidisziplinäre Sammlung von Kunstwerken",
|
||||
"longDescription": "Entdecken Sie {artistName}s vielfältige Kunstsammlung mit Origami, Häkelarbeiten, Gemälden und Nagelkunst-Designs. Jedes Stück zeigt einzigartige Kreativität und Handwerkskunst."
|
||||
},
|
||||
"Search": {
|
||||
"placeholder": "Kunstwerke suchen…",
|
||||
"noResults": "Keine Kunstwerke gefunden, die Ihrer Suche entsprechen.",
|
||||
"searchLabel": "Suchen"
|
||||
},
|
||||
"Artwork": {
|
||||
"medium": "Medium",
|
||||
"dimensions": "Abmessungen",
|
||||
"year": "Jahr",
|
||||
"description": "Beschreibung"
|
||||
},
|
||||
"Navigation": {
|
||||
"home": "Startseite",
|
||||
"gallery": "Galerie"
|
||||
},
|
||||
"greeting": {
|
||||
"morning": "Guten Morgen!",
|
||||
"afternoon": "Guten Tag!",
|
||||
"evening": "Guten Abend!",
|
||||
"default": "Hallo!"
|
||||
},
|
||||
"introduction": "Ich bin {name}.",
|
||||
"ArtworkDetail": {
|
||||
"backToGallery": "Zurück zur Galerie",
|
||||
"backToGalleryAriaLabel": "Zurück zur Galerie gehen",
|
||||
"artworkDetails": "Kunstwerk-Details",
|
||||
"category": "Kategorie",
|
||||
"viewMoreArtworks": "Weitere Kunstwerke ansehen",
|
||||
"shareArtwork": "Kunstwerk teilen",
|
||||
"categoryArtwork": "{category} Kunstwerk"
|
||||
},
|
||||
"Sort": {
|
||||
"title": "Titel",
|
||||
"year": "Jahr",
|
||||
"sortByTitle": "Nach Titel sortieren",
|
||||
"sortByYear": "Nach Jahr sortieren"
|
||||
},
|
||||
"Gallery": {
|
||||
"categoryGallery": "{category} Galerie"
|
||||
},
|
||||
"Theme": {
|
||||
"changeThemeColors": "Theme-Farben ändern",
|
||||
"themeOptions": "Theme-Optionen",
|
||||
"appearance": "Erscheinungsbild",
|
||||
"accentColor": "Akzentfarbe",
|
||||
"dark": "dunkel",
|
||||
"light": "hell",
|
||||
"colors": {
|
||||
"pink": "Rosa",
|
||||
"orange": "Orange",
|
||||
"green": "Hellgrün"
|
||||
},
|
||||
"schemes": {
|
||||
"light": "Hell",
|
||||
"dark": "Dunkel",
|
||||
"system": "System"
|
||||
}
|
||||
},
|
||||
"Chat": {
|
||||
"title": "Kunst-Assistent",
|
||||
"placeholder": "Fragen Sie über Kunst...",
|
||||
"emptyState": "Fragen Sie mich alles über Kunst!",
|
||||
"openChat": "Chat öffnen",
|
||||
"closeChat": "Chat schließen",
|
||||
"sendMessage": "Nachricht senden",
|
||||
"errorMessage": "Antwort konnte nicht abgerufen werden.",
|
||||
"retry": "Wiederholen",
|
||||
"dismissError": "Fehler ausblenden",
|
||||
"clearChat": "Chat leeren",
|
||||
"listening": "Hört zu…",
|
||||
"startListening": "Nachricht diktieren",
|
||||
"stopListening": "Diktat stoppen",
|
||||
"recording": "Aufnahme… {time}",
|
||||
"startRecording": "Sprachnachricht aufnehmen",
|
||||
"stopRecording": "Aufnahme stoppen",
|
||||
"transcribing": "Wird transkribiert…",
|
||||
"transcriptionFailed": "Transkription fehlgeschlagen. Bitte erneut versuchen.",
|
||||
"settings": "Einstellungen",
|
||||
"dictationMode": "Diktat",
|
||||
"dictationBrowser": "Browser",
|
||||
"dictationServer": "Server (KI)",
|
||||
"dictationBrowserUnavailable": "In diesem Browser nicht unterstützt"
|
||||
},
|
||||
"Common": {
|
||||
"loading": "Wird geladen…",
|
||||
"error": "Ein Fehler ist aufgetreten",
|
||||
"retry": "Wiederholen",
|
||||
"back": "Zurück",
|
||||
"saving": "Wird gespeichert…",
|
||||
"sending": "Wird gesendet…",
|
||||
"verifying": "Wird bestätigt…",
|
||||
"logout": "Abmelden",
|
||||
"closeBroadcastMessage": "Nachricht schließen",
|
||||
"login": "Anmelden",
|
||||
"dashboard": "Dashboard",
|
||||
"preview": "Vorschau"
|
||||
}
|
||||
}
|
||||
105
messages/ui/en.json
Normal file
105
messages/ui/en.json
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Site": {
|
||||
"name": "{artistName}'s Art Gallery",
|
||||
"description": "Multi-disciplinary Art Collection",
|
||||
"subheading": "A multi-disciplinary collection of artworks",
|
||||
"longDescription": "Explore {artistName}'s diverse art collection featuring origami, crochet items, paintings, and nail art designs. Each piece showcases unique creativity and craftsmanship."
|
||||
},
|
||||
"Search": {
|
||||
"placeholder": "Search artworks…",
|
||||
"noResults": "No artworks found matching your search.",
|
||||
"searchLabel": "Search"
|
||||
},
|
||||
"Artwork": {
|
||||
"medium": "Medium",
|
||||
"dimensions": "Dimensions",
|
||||
"year": "Year",
|
||||
"description": "Description"
|
||||
},
|
||||
"Navigation": {
|
||||
"home": "Home",
|
||||
"gallery": "Gallery"
|
||||
},
|
||||
"greeting": {
|
||||
"morning": "Good morning!",
|
||||
"afternoon": "Good afternoon!",
|
||||
"evening": "Good evening!",
|
||||
"default": "Hello!"
|
||||
},
|
||||
"introduction": "I'm {name}.",
|
||||
"ArtworkDetail": {
|
||||
"backToGallery": "Back to Gallery",
|
||||
"backToGalleryAriaLabel": "Go back to gallery",
|
||||
"artworkDetails": "Artwork Details",
|
||||
"category": "Category",
|
||||
"viewMoreArtworks": "View More Artworks",
|
||||
"shareArtwork": "Share Artwork",
|
||||
"categoryArtwork": "{category} Artwork"
|
||||
},
|
||||
"Sort": {
|
||||
"title": "Title",
|
||||
"year": "Year",
|
||||
"sortByTitle": "Sort by title",
|
||||
"sortByYear": "Sort by year"
|
||||
},
|
||||
"Gallery": {
|
||||
"categoryGallery": "{category} gallery"
|
||||
},
|
||||
"Theme": {
|
||||
"changeThemeColors": "Change theme colors",
|
||||
"themeOptions": "Theme options",
|
||||
"appearance": "Appearance",
|
||||
"accentColor": "Accent color",
|
||||
"dark": "dark",
|
||||
"light": "light",
|
||||
"colors": {
|
||||
"pink": "Pink",
|
||||
"orange": "Orange",
|
||||
"green": "Light Green"
|
||||
},
|
||||
"schemes": {
|
||||
"light": "Light",
|
||||
"dark": "Dark",
|
||||
"system": "System"
|
||||
}
|
||||
},
|
||||
"Chat": {
|
||||
"title": "Art Assistant",
|
||||
"placeholder": "Ask about art...",
|
||||
"emptyState": "Ask me anything about art!",
|
||||
"openChat": "Open chat",
|
||||
"closeChat": "Close chat",
|
||||
"sendMessage": "Send message",
|
||||
"errorMessage": "Unable to get a response.",
|
||||
"retry": "Retry",
|
||||
"dismissError": "Dismiss error",
|
||||
"clearChat": "Clear chat",
|
||||
"listening": "Listening…",
|
||||
"startListening": "Dictate message",
|
||||
"stopListening": "Stop dictation",
|
||||
"recording": "Recording… {time}",
|
||||
"startRecording": "Record voice message",
|
||||
"stopRecording": "Stop recording",
|
||||
"transcribing": "Transcribing…",
|
||||
"transcriptionFailed": "Transcription failed. Please try again.",
|
||||
"settings": "Settings",
|
||||
"dictationMode": "Dictation",
|
||||
"dictationBrowser": "Browser",
|
||||
"dictationServer": "Server (AI)",
|
||||
"dictationBrowserUnavailable": "Not supported in this browser"
|
||||
},
|
||||
"Common": {
|
||||
"loading": "Loading…",
|
||||
"error": "An error occurred",
|
||||
"retry": "Retry",
|
||||
"back": "Back",
|
||||
"saving": "Saving…",
|
||||
"sending": "Sending…",
|
||||
"verifying": "Verifying…",
|
||||
"logout": "Logout",
|
||||
"closeBroadcastMessage": "Close broadcast message",
|
||||
"login": "Login",
|
||||
"dashboard": "Dashboard",
|
||||
"preview": "Preview"
|
||||
}
|
||||
}
|
||||
105
messages/ui/es.json
Normal file
105
messages/ui/es.json
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Site": {
|
||||
"name": "Galería de Arte de {artistName}",
|
||||
"description": "Colección de Arte Multidisciplinaria",
|
||||
"subheading": "Una colección multidisciplinaria de obras de arte",
|
||||
"longDescription": "Explora la diversa colección de arte de {artistName} que incluye origami, artículos de ganchillo, pinturas y diseños de arte de uñas. Cada pieza muestra creatividad única y artesanía."
|
||||
},
|
||||
"Search": {
|
||||
"placeholder": "Buscar obras de arte…",
|
||||
"noResults": "No se encontraron obras de arte que coincidan con tu búsqueda.",
|
||||
"searchLabel": "Buscar"
|
||||
},
|
||||
"Artwork": {
|
||||
"medium": "Medio",
|
||||
"dimensions": "Dimensiones",
|
||||
"year": "Año",
|
||||
"description": "Descripción"
|
||||
},
|
||||
"Navigation": {
|
||||
"home": "Inicio",
|
||||
"gallery": "Galería"
|
||||
},
|
||||
"greeting": {
|
||||
"morning": "¡Buenos días!",
|
||||
"afternoon": "¡Buenas tardes!",
|
||||
"evening": "¡Buenas noches!",
|
||||
"default": "¡Hola!"
|
||||
},
|
||||
"introduction": "Soy {name}.",
|
||||
"ArtworkDetail": {
|
||||
"backToGallery": "Volver a la Galería",
|
||||
"backToGalleryAriaLabel": "Volver a la galería",
|
||||
"artworkDetails": "Detalles de la Obra",
|
||||
"category": "Categoría",
|
||||
"viewMoreArtworks": "Ver Más Obras",
|
||||
"shareArtwork": "Compartir Obra",
|
||||
"categoryArtwork": "Obra de {category}"
|
||||
},
|
||||
"Sort": {
|
||||
"title": "Título",
|
||||
"year": "Año",
|
||||
"sortByTitle": "Ordenar por título",
|
||||
"sortByYear": "Ordenar por año"
|
||||
},
|
||||
"Gallery": {
|
||||
"categoryGallery": "galería de {category}"
|
||||
},
|
||||
"Theme": {
|
||||
"changeThemeColors": "Cambiar colores del tema",
|
||||
"themeOptions": "Opciones de tema",
|
||||
"appearance": "Apariencia",
|
||||
"accentColor": "Color de acento",
|
||||
"dark": "oscuro",
|
||||
"light": "claro",
|
||||
"colors": {
|
||||
"pink": "Rosa",
|
||||
"orange": "Naranja",
|
||||
"green": "Verde Claro"
|
||||
},
|
||||
"schemes": {
|
||||
"light": "Claro",
|
||||
"dark": "Oscuro",
|
||||
"system": "Sistema"
|
||||
}
|
||||
},
|
||||
"Chat": {
|
||||
"title": "Asistente de Arte",
|
||||
"placeholder": "Pregunta sobre arte...",
|
||||
"emptyState": "¡Pregúntame lo que quieras sobre arte!",
|
||||
"openChat": "Abrir chat",
|
||||
"closeChat": "Cerrar chat",
|
||||
"sendMessage": "Enviar mensaje",
|
||||
"errorMessage": "No se pudo obtener una respuesta.",
|
||||
"retry": "Reintentar",
|
||||
"dismissError": "Descartar error",
|
||||
"clearChat": "Borrar chat",
|
||||
"listening": "Escuchando…",
|
||||
"startListening": "Dictar mensaje",
|
||||
"stopListening": "Detener dictado",
|
||||
"recording": "Grabando… {time}",
|
||||
"startRecording": "Grabar mensaje de voz",
|
||||
"stopRecording": "Detener grabación",
|
||||
"transcribing": "Transcribiendo…",
|
||||
"transcriptionFailed": "Error en la transcripción. Inténtalo de nuevo.",
|
||||
"settings": "Ajustes",
|
||||
"dictationMode": "Dictado",
|
||||
"dictationBrowser": "Navegador",
|
||||
"dictationServer": "Servidor (IA)",
|
||||
"dictationBrowserUnavailable": "No compatible con este navegador"
|
||||
},
|
||||
"Common": {
|
||||
"loading": "Cargando…",
|
||||
"error": "Ocurrió un error",
|
||||
"retry": "Reintentar",
|
||||
"back": "Atrás",
|
||||
"saving": "Guardando…",
|
||||
"sending": "Enviando…",
|
||||
"verifying": "Verificando…",
|
||||
"logout": "Cerrar sesión",
|
||||
"closeBroadcastMessage": "Cerrar mensaje",
|
||||
"login": "Iniciar sesión",
|
||||
"dashboard": "Panel de control",
|
||||
"preview": "Vista previa"
|
||||
}
|
||||
}
|
||||
105
messages/ui/ka.json
Normal file
105
messages/ui/ka.json
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Site": {
|
||||
"name": "{artistName}-ის ხელოვნების გალერეა",
|
||||
"description": "მულტიდისციპლინური ხელოვნების კოლექცია",
|
||||
"subheading": "მულტიდისციპლინური ხელოვნების ნამუშევრების კოლექცია",
|
||||
"longDescription": "გაეცანით {artistName}-ის მრავალფეროვან ხელოვნების კოლექციას, რომელიც მოიცავს ორიგამის, ქსოვის, ნახატებისა და ფრჩხილების დიზაინის ნამუშევრებს. ყოველი ნაწარმოები გამოირჩევა უნიკალური შემოქმედებითობითა და ოსტატობით."
|
||||
},
|
||||
"Search": {
|
||||
"placeholder": "ძიება ნამუშევრებში…",
|
||||
"noResults": "თქვენს ძიებას შესაბამისი ნამუშევრები ვერ მოიძებნა.",
|
||||
"searchLabel": "ძიება"
|
||||
},
|
||||
"Artwork": {
|
||||
"medium": "მასალა",
|
||||
"dimensions": "ზომები",
|
||||
"year": "წელი",
|
||||
"description": "აღწერა"
|
||||
},
|
||||
"Navigation": {
|
||||
"home": "მთავარი",
|
||||
"gallery": "გალერეა"
|
||||
},
|
||||
"greeting": {
|
||||
"morning": "დილა მშვიდობისა!",
|
||||
"afternoon": "დღე მშვიდობისა!",
|
||||
"evening": "საღამო მშვიდობისა!",
|
||||
"default": "გამარჯობა!"
|
||||
},
|
||||
"introduction": "მე ვარ {name}.",
|
||||
"ArtworkDetail": {
|
||||
"backToGallery": "უკან გალერეაში",
|
||||
"backToGalleryAriaLabel": "დაბრუნება გალერეაში",
|
||||
"artworkDetails": "ნამუშევრის დეტალები",
|
||||
"category": "კატეგორია",
|
||||
"viewMoreArtworks": "მეტი ნამუშევრის ნახვა",
|
||||
"shareArtwork": "ნამუშევრის გაზიარება",
|
||||
"categoryArtwork": "{category} ნამუშევარი"
|
||||
},
|
||||
"Sort": {
|
||||
"title": "სათაური",
|
||||
"year": "წელი",
|
||||
"sortByTitle": "დალაგება სათაურით",
|
||||
"sortByYear": "დალაგება წლით"
|
||||
},
|
||||
"Gallery": {
|
||||
"categoryGallery": "{category} გალერეა"
|
||||
},
|
||||
"Theme": {
|
||||
"changeThemeColors": "თემის ფერების შეცვლა",
|
||||
"themeOptions": "თემის პარამეტრები",
|
||||
"appearance": "გარეგნობა",
|
||||
"accentColor": "აქცენტის ფერი",
|
||||
"dark": "მუქი",
|
||||
"light": "ღია",
|
||||
"colors": {
|
||||
"pink": "ვარდისფერი",
|
||||
"orange": "ნარინჯისფერი",
|
||||
"green": "ღია მწვანე"
|
||||
},
|
||||
"schemes": {
|
||||
"light": "ღია",
|
||||
"dark": "მუქი",
|
||||
"system": "სისტემური"
|
||||
}
|
||||
},
|
||||
"Chat": {
|
||||
"title": "ხელოვნების ასისტენტი",
|
||||
"placeholder": "იკითხეთ ხელოვნების შესახებ...",
|
||||
"emptyState": "მკითხეთ ნებისმიერი რამ ხელოვნების შესახებ!",
|
||||
"openChat": "ჩატის გახსნა",
|
||||
"closeChat": "ჩატის დახურვა",
|
||||
"sendMessage": "შეტყობინების გაგზავნა",
|
||||
"errorMessage": "პასუხის მიღება ვერ მოხერხდა.",
|
||||
"retry": "ხელახლა ცდა",
|
||||
"dismissError": "შეცდომის დამალვა",
|
||||
"clearChat": "ჩატის გასუფთავება",
|
||||
"listening": "მოსმენა…",
|
||||
"startListening": "შეტყობინების კარნახი",
|
||||
"stopListening": "კარნახის შეჩერება",
|
||||
"recording": "ჩაწერა… {time}",
|
||||
"startRecording": "ხმოვანი შეტყობინების ჩაწერა",
|
||||
"stopRecording": "ჩაწერის შეჩერება",
|
||||
"transcribing": "ტრანსკრიბაცია…",
|
||||
"transcriptionFailed": "ტრანსკრიბაცია ვერ მოხერხდა. სცადეთ ხელახლა.",
|
||||
"settings": "პარამეტრები",
|
||||
"dictationMode": "კარნახი",
|
||||
"dictationBrowser": "ბრაუზერი",
|
||||
"dictationServer": "სერვერი (AI)",
|
||||
"dictationBrowserUnavailable": "ამ ბრაუზერში არ არის მხარდაჭერილი"
|
||||
},
|
||||
"Common": {
|
||||
"loading": "იტვირთება…",
|
||||
"error": "მოხდა შეცდომა",
|
||||
"retry": "ხელახლა ცდა",
|
||||
"back": "უკან",
|
||||
"saving": "ინახება…",
|
||||
"sending": "იგზავნება…",
|
||||
"verifying": "მოწმდება…",
|
||||
"logout": "გასვლა",
|
||||
"closeBroadcastMessage": "შეტყობინების დახურვა",
|
||||
"login": "შესვლა",
|
||||
"dashboard": "მართვის პანელი",
|
||||
"preview": "წინასწარი ხედვა"
|
||||
}
|
||||
}
|
||||
105
messages/ui/ru.json
Normal file
105
messages/ui/ru.json
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Site": {
|
||||
"name": "Художественная галерея {artistName}",
|
||||
"description": "Мультидисциплинарная коллекция искусства",
|
||||
"subheading": "Мультидисциплинарная коллекция произведений искусства",
|
||||
"longDescription": "Исследуйте разнообразную коллекцию искусства {artistName}, включающую оригами, вязаные изделия, картины и дизайн ногтей. Каждое произведение демонстрирует уникальное творчество и мастерство."
|
||||
},
|
||||
"Search": {
|
||||
"placeholder": "Поиск произведений искусства…",
|
||||
"noResults": "Произведения искусства, соответствующие вашему запросу, не найдены.",
|
||||
"searchLabel": "Поиск"
|
||||
},
|
||||
"Artwork": {
|
||||
"medium": "Материал",
|
||||
"dimensions": "Размеры",
|
||||
"year": "Год",
|
||||
"description": "Описание"
|
||||
},
|
||||
"Navigation": {
|
||||
"home": "Главная",
|
||||
"gallery": "Галерея"
|
||||
},
|
||||
"greeting": {
|
||||
"morning": "Доброе утро!",
|
||||
"afternoon": "Добрый день!",
|
||||
"evening": "Добрый вечер!",
|
||||
"default": "Привет!"
|
||||
},
|
||||
"introduction": "Я {name}.",
|
||||
"ArtworkDetail": {
|
||||
"backToGallery": "Назад в галерею",
|
||||
"backToGalleryAriaLabel": "Вернуться в галерею",
|
||||
"artworkDetails": "Детали произведения",
|
||||
"category": "Категория",
|
||||
"viewMoreArtworks": "Посмотреть больше произведений",
|
||||
"shareArtwork": "Поделиться произведением",
|
||||
"categoryArtwork": "Произведение {category}"
|
||||
},
|
||||
"Sort": {
|
||||
"title": "Название",
|
||||
"year": "Год",
|
||||
"sortByTitle": "Сортировать по названию",
|
||||
"sortByYear": "Сортировать по году"
|
||||
},
|
||||
"Gallery": {
|
||||
"categoryGallery": "Галерея {category}"
|
||||
},
|
||||
"Theme": {
|
||||
"changeThemeColors": "Изменить цвета темы",
|
||||
"themeOptions": "Настройки темы",
|
||||
"appearance": "Внешний вид",
|
||||
"accentColor": "Акцентный цвет",
|
||||
"dark": "темная",
|
||||
"light": "светлая",
|
||||
"colors": {
|
||||
"pink": "Розовый",
|
||||
"orange": "Оранжевый",
|
||||
"green": "Светло-зеленый"
|
||||
},
|
||||
"schemes": {
|
||||
"light": "Светлая",
|
||||
"dark": "Темная",
|
||||
"system": "Системная"
|
||||
}
|
||||
},
|
||||
"Chat": {
|
||||
"title": "Арт-ассистент",
|
||||
"placeholder": "Спросите об искусстве...",
|
||||
"emptyState": "Спросите меня о чём угодно об искусстве!",
|
||||
"openChat": "Открыть чат",
|
||||
"closeChat": "Закрыть чат",
|
||||
"sendMessage": "Отправить сообщение",
|
||||
"errorMessage": "Не удалось получить ответ.",
|
||||
"retry": "Повторить",
|
||||
"dismissError": "Скрыть ошибку",
|
||||
"clearChat": "Очистить чат",
|
||||
"listening": "Слушаю…",
|
||||
"startListening": "Надиктовать сообщение",
|
||||
"stopListening": "Остановить диктовку",
|
||||
"recording": "Запись… {time}",
|
||||
"startRecording": "Записать голосовое сообщение",
|
||||
"stopRecording": "Остановить запись",
|
||||
"transcribing": "Транскрибирую…",
|
||||
"transcriptionFailed": "Ошибка транскрипции. Попробуйте ещё раз.",
|
||||
"settings": "Настройки",
|
||||
"dictationMode": "Диктовка",
|
||||
"dictationBrowser": "Браузер",
|
||||
"dictationServer": "Сервер (ИИ)",
|
||||
"dictationBrowserUnavailable": "Не поддерживается в этом браузере"
|
||||
},
|
||||
"Common": {
|
||||
"loading": "Загрузка…",
|
||||
"error": "Произошла ошибка",
|
||||
"retry": "Повторить",
|
||||
"back": "Назад",
|
||||
"saving": "Сохранение…",
|
||||
"sending": "Отправка…",
|
||||
"verifying": "Проверка…",
|
||||
"logout": "Выйти",
|
||||
"closeBroadcastMessage": "Закрыть сообщение",
|
||||
"login": "Войти",
|
||||
"dashboard": "Панель управления",
|
||||
"preview": "Предпросмотр"
|
||||
}
|
||||
}
|
||||
105
messages/ui/tr.json
Normal file
105
messages/ui/tr.json
Normal file
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"Site": {
|
||||
"name": "{artistName}'nin Sanat Galerisi",
|
||||
"description": "Multidisipliner Sanat Koleksiyonu",
|
||||
"subheading": "Multidisipliner sanat eserleri koleksiyonu",
|
||||
"longDescription": "{artistName}'nin origami, örgü ürünleri, resimler ve tırnak sanatı tasarımlarını içeren çeşitli sanat koleksiyonunu keşfedin. Her eser benzersiz yaratıcılık ve ustalık sergiler."
|
||||
},
|
||||
"Search": {
|
||||
"placeholder": "Sanat eserlerinde ara…",
|
||||
"noResults": "Aramanızla eşleşen sanat eseri bulunamadı.",
|
||||
"searchLabel": "Ara"
|
||||
},
|
||||
"Artwork": {
|
||||
"medium": "Malzeme",
|
||||
"dimensions": "Boyutlar",
|
||||
"year": "Yıl",
|
||||
"description": "Açıklama"
|
||||
},
|
||||
"Navigation": {
|
||||
"home": "Ana Sayfa",
|
||||
"gallery": "Galeri"
|
||||
},
|
||||
"greeting": {
|
||||
"morning": "Günaydın!",
|
||||
"afternoon": "İyi günler!",
|
||||
"evening": "İyi akşamlar!",
|
||||
"default": "Merhaba!"
|
||||
},
|
||||
"introduction": "Ben {name}.",
|
||||
"ArtworkDetail": {
|
||||
"backToGallery": "Galeriye Dön",
|
||||
"backToGalleryAriaLabel": "Galeriye geri dön",
|
||||
"artworkDetails": "Eser Detayları",
|
||||
"category": "Kategori",
|
||||
"viewMoreArtworks": "Daha Fazla Eser Görüntüle",
|
||||
"shareArtwork": "Eseri Paylaş",
|
||||
"categoryArtwork": "{category} Eseri"
|
||||
},
|
||||
"Sort": {
|
||||
"title": "Başlık",
|
||||
"year": "Yıl",
|
||||
"sortByTitle": "Başlığa göre sırala",
|
||||
"sortByYear": "Yıla göre sırala"
|
||||
},
|
||||
"Gallery": {
|
||||
"categoryGallery": "{category} galerisi"
|
||||
},
|
||||
"Theme": {
|
||||
"changeThemeColors": "Tema renklerini değiştir",
|
||||
"themeOptions": "Tema seçenekleri",
|
||||
"appearance": "Görünüm",
|
||||
"accentColor": "Vurgu rengi",
|
||||
"dark": "koyu",
|
||||
"light": "açık",
|
||||
"colors": {
|
||||
"pink": "Pembe",
|
||||
"orange": "Turuncu",
|
||||
"green": "Açık Yeşil"
|
||||
},
|
||||
"schemes": {
|
||||
"light": "Açık",
|
||||
"dark": "Koyu",
|
||||
"system": "Sistem"
|
||||
}
|
||||
},
|
||||
"Chat": {
|
||||
"title": "Sanat Asistanı",
|
||||
"placeholder": "Sanat hakkında sorun...",
|
||||
"emptyState": "Sanat hakkında istediğinizi sorun!",
|
||||
"openChat": "Sohbeti aç",
|
||||
"closeChat": "Sohbeti kapat",
|
||||
"sendMessage": "Mesaj gönder",
|
||||
"errorMessage": "Yanıt alınamadı.",
|
||||
"retry": "Tekrar Dene",
|
||||
"dismissError": "Hatayı kapat",
|
||||
"clearChat": "Sohbeti temizle",
|
||||
"listening": "Dinleniyor…",
|
||||
"startListening": "Mesaj dikte et",
|
||||
"stopListening": "Dikteyi durdur",
|
||||
"recording": "Kaydediliyor… {time}",
|
||||
"startRecording": "Sesli mesaj kaydet",
|
||||
"stopRecording": "Kaydı durdur",
|
||||
"transcribing": "Yazıya dökülüyor…",
|
||||
"transcriptionFailed": "Yazıya dökme başarısız. Lütfen tekrar deneyin.",
|
||||
"settings": "Ayarlar",
|
||||
"dictationMode": "Dikte",
|
||||
"dictationBrowser": "Tarayıcı",
|
||||
"dictationServer": "Sunucu (YZ)",
|
||||
"dictationBrowserUnavailable": "Bu tarayıcıda desteklenmiyor"
|
||||
},
|
||||
"Common": {
|
||||
"loading": "Yükleniyor…",
|
||||
"error": "Bir hata oluştu",
|
||||
"retry": "Tekrar Dene",
|
||||
"back": "Geri",
|
||||
"saving": "Kaydediliyor…",
|
||||
"sending": "Gönderiliyor…",
|
||||
"verifying": "Doğrulanıyor…",
|
||||
"logout": "Çıkış Yap",
|
||||
"closeBroadcastMessage": "Mesajı kapat",
|
||||
"login": "Giriş Yap",
|
||||
"dashboard": "Yönetim Paneli",
|
||||
"preview": "Önizleme"
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,21 @@
|
||||
import type { NextConfig } from "next";
|
||||
import { NextConfig } from "next";
|
||||
import createNextIntlPlugin from "next-intl/plugin";
|
||||
|
||||
const withNextIntl = createNextIntlPlugin("./src/i18n/request.ts");
|
||||
|
||||
/** @type {import('next').NextConfig} */
|
||||
const nextConfig: NextConfig = {
|
||||
/* config options here */
|
||||
images: {
|
||||
remotePatterns: [
|
||||
{
|
||||
protocol: "https",
|
||||
hostname: "source.unsplash.com",
|
||||
port: "",
|
||||
pathname: "/**",
|
||||
},
|
||||
],
|
||||
},
|
||||
output: "standalone",
|
||||
};
|
||||
|
||||
export default nextConfig;
|
||||
export default withNextIntl(nextConfig);
|
||||
|
||||
5895
package-lock.json
generated
5895
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
51
package.json
51
package.json
@@ -2,26 +2,51 @@
|
||||
"name": "nini-artgallery",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@10.29.3",
|
||||
"scripts": {
|
||||
"dev": "next dev --turbopack",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "next lint"
|
||||
"lint": "eslint .",
|
||||
"lint:fix": "eslint --fix ."
|
||||
},
|
||||
"dependencies": {
|
||||
"react": "^19.0.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"next": "15.1.5"
|
||||
"@ai-sdk/react": "^3.0.87",
|
||||
"@heroicons/react": "^2.2.0",
|
||||
"@openrouter/ai-sdk-provider": "^2.2.3",
|
||||
"@types/jsonwebtoken": "^9.0.10",
|
||||
"@types/nodemailer": "^7.0.9",
|
||||
"ai": "^6.0.85",
|
||||
"jsonwebtoken": "^9.0.3",
|
||||
"next": "16.1.6",
|
||||
"next-intl": "^4.8.2",
|
||||
"nodemailer": "^8.0.1",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"server-only": "^0.0.1",
|
||||
"zod": "^4.3.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"typescript": "^5",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"postcss": "^8",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"eslint": "^9",
|
||||
"eslint-config-next": "15.1.5",
|
||||
"@eslint/eslintrc": "^3"
|
||||
"@eslint/eslintrc": "^3.3.3",
|
||||
"@eslint/js": "^10.0.1",
|
||||
"@tailwindcss/postcss": "^4.1.18",
|
||||
"@types/node": "^25.2.3",
|
||||
"@types/react": "19.2.14",
|
||||
"@types/react-dom": "19.2.3",
|
||||
"@typescript-eslint/eslint-plugin": "^8.55.0",
|
||||
"@typescript-eslint/parser": "^8.55.0",
|
||||
"eslint": "^10.0.0",
|
||||
"eslint-config-next": "16.1.6",
|
||||
"globals": "^17.3.0",
|
||||
"postcss": "^8.5.6",
|
||||
"postcss-load-config": "^6.0.1",
|
||||
"tailwindcss": "^4.1.18",
|
||||
"typescript": "^5.9.3"
|
||||
},
|
||||
"pnpm": {
|
||||
"overrides": {
|
||||
"@types/react": "19.2.14",
|
||||
"@types/react-dom": "19.2.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
4833
pnpm-lock.yaml
generated
Normal file
4833
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load Diff
4
pnpm-workspace.yaml
Normal file
4
pnpm-workspace.yaml
Normal file
@@ -0,0 +1,4 @@
|
||||
onlyBuiltDependencies:
|
||||
- "@tailwindcss/oxide"
|
||||
- sharp
|
||||
- unrs-resolver
|
||||
@@ -1,7 +1,7 @@
|
||||
/** @type {import('postcss-load-config').Config} */
|
||||
const config = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
"@tailwindcss/postcss": {},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Binary file not shown.
BIN
public/fonts/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf
Normal file
BIN
public/fonts/Noto_Sans/NotoSans-VariableFont_wdth,wght.ttf
Normal file
Binary file not shown.
93
public/fonts/Noto_Sans/OFL.txt
Normal file
93
public/fonts/Noto_Sans/OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright 2022 The Noto Project Authors (https://github.com/notofonts/latin-greek-cyrillic)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
136
public/fonts/Noto_Sans/README.txt
Normal file
136
public/fonts/Noto_Sans/README.txt
Normal file
@@ -0,0 +1,136 @@
|
||||
Noto Sans Variable Font
|
||||
=======================
|
||||
|
||||
This download contains Noto Sans as both variable fonts and static fonts.
|
||||
|
||||
Noto Sans is a variable font with these axes:
|
||||
wdth
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
NotoSans-VariableFont_wdth,wght.ttf
|
||||
NotoSans-Italic-VariableFont_wdth,wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Noto Sans:
|
||||
static/NotoSans_ExtraCondensed-Thin.ttf
|
||||
static/NotoSans_ExtraCondensed-ExtraLight.ttf
|
||||
static/NotoSans_ExtraCondensed-Light.ttf
|
||||
static/NotoSans_ExtraCondensed-Regular.ttf
|
||||
static/NotoSans_ExtraCondensed-Medium.ttf
|
||||
static/NotoSans_ExtraCondensed-SemiBold.ttf
|
||||
static/NotoSans_ExtraCondensed-Bold.ttf
|
||||
static/NotoSans_ExtraCondensed-ExtraBold.ttf
|
||||
static/NotoSans_ExtraCondensed-Black.ttf
|
||||
static/NotoSans_Condensed-Thin.ttf
|
||||
static/NotoSans_Condensed-ExtraLight.ttf
|
||||
static/NotoSans_Condensed-Light.ttf
|
||||
static/NotoSans_Condensed-Regular.ttf
|
||||
static/NotoSans_Condensed-Medium.ttf
|
||||
static/NotoSans_Condensed-SemiBold.ttf
|
||||
static/NotoSans_Condensed-Bold.ttf
|
||||
static/NotoSans_Condensed-ExtraBold.ttf
|
||||
static/NotoSans_Condensed-Black.ttf
|
||||
static/NotoSans_SemiCondensed-Thin.ttf
|
||||
static/NotoSans_SemiCondensed-ExtraLight.ttf
|
||||
static/NotoSans_SemiCondensed-Light.ttf
|
||||
static/NotoSans_SemiCondensed-Regular.ttf
|
||||
static/NotoSans_SemiCondensed-Medium.ttf
|
||||
static/NotoSans_SemiCondensed-SemiBold.ttf
|
||||
static/NotoSans_SemiCondensed-Bold.ttf
|
||||
static/NotoSans_SemiCondensed-ExtraBold.ttf
|
||||
static/NotoSans_SemiCondensed-Black.ttf
|
||||
static/NotoSans-Thin.ttf
|
||||
static/NotoSans-ExtraLight.ttf
|
||||
static/NotoSans-Light.ttf
|
||||
static/NotoSans-Regular.ttf
|
||||
static/NotoSans-Medium.ttf
|
||||
static/NotoSans-SemiBold.ttf
|
||||
static/NotoSans-Bold.ttf
|
||||
static/NotoSans-ExtraBold.ttf
|
||||
static/NotoSans-Black.ttf
|
||||
static/NotoSans_ExtraCondensed-ThinItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-ExtraLightItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-LightItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-Italic.ttf
|
||||
static/NotoSans_ExtraCondensed-MediumItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-SemiBoldItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-BoldItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-ExtraBoldItalic.ttf
|
||||
static/NotoSans_ExtraCondensed-BlackItalic.ttf
|
||||
static/NotoSans_Condensed-ThinItalic.ttf
|
||||
static/NotoSans_Condensed-ExtraLightItalic.ttf
|
||||
static/NotoSans_Condensed-LightItalic.ttf
|
||||
static/NotoSans_Condensed-Italic.ttf
|
||||
static/NotoSans_Condensed-MediumItalic.ttf
|
||||
static/NotoSans_Condensed-SemiBoldItalic.ttf
|
||||
static/NotoSans_Condensed-BoldItalic.ttf
|
||||
static/NotoSans_Condensed-ExtraBoldItalic.ttf
|
||||
static/NotoSans_Condensed-BlackItalic.ttf
|
||||
static/NotoSans_SemiCondensed-ThinItalic.ttf
|
||||
static/NotoSans_SemiCondensed-ExtraLightItalic.ttf
|
||||
static/NotoSans_SemiCondensed-LightItalic.ttf
|
||||
static/NotoSans_SemiCondensed-Italic.ttf
|
||||
static/NotoSans_SemiCondensed-MediumItalic.ttf
|
||||
static/NotoSans_SemiCondensed-SemiBoldItalic.ttf
|
||||
static/NotoSans_SemiCondensed-BoldItalic.ttf
|
||||
static/NotoSans_SemiCondensed-ExtraBoldItalic.ttf
|
||||
static/NotoSans_SemiCondensed-BlackItalic.ttf
|
||||
static/NotoSans-ThinItalic.ttf
|
||||
static/NotoSans-ExtraLightItalic.ttf
|
||||
static/NotoSans-LightItalic.ttf
|
||||
static/NotoSans-Italic.ttf
|
||||
static/NotoSans-MediumItalic.ttf
|
||||
static/NotoSans-SemiBoldItalic.ttf
|
||||
static/NotoSans-BoldItalic.ttf
|
||||
static/NotoSans-ExtraBoldItalic.ttf
|
||||
static/NotoSans-BlackItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them in your products & projects – print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
||||
BIN
public/fonts/Noto_Sans/static/NotoSans-Black.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-Black.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-BlackItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-BlackItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-Bold.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-Bold.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-BoldItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-ExtraBold.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-ExtraBold.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-ExtraBoldItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-ExtraLight.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-ExtraLight.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-ExtraLightItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-Italic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-Italic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-Light.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-Light.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-LightItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-LightItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-Medium.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-Medium.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-MediumItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-MediumItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-Regular.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-Regular.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-SemiBold.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-SemiBold.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-SemiBoldItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-Thin.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-Thin.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans-ThinItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans-ThinItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Black.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-BlackItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Bold.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-BoldItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-ExtraBold.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-ExtraLight.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Italic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Light.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-LightItalic.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Medium.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Regular.ttf
Normal file
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-SemiBold.ttf
Normal file
Binary file not shown.
Binary file not shown.
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttf
Normal file
BIN
public/fonts/Noto_Sans/static/NotoSans_Condensed-Thin.ttf
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user