feat(Translation): enhance product dialogs and update translation model

- Added new translation files for product dialogs to support additional languages.
- Refactored various components to utilize translation functions for error messages, labels, and placeholders, enhancing localization support.
This commit is contained in:
sebseb7
2025-11-22 09:43:51 +01:00
parent d63c385a97
commit 3389a9b66c
72 changed files with 1625 additions and 196 deletions

View File

@@ -79,7 +79,7 @@ class ArticleAvailabilityForm extends Component {
} else {
this.setState({
loading: false,
error: response.error || 'Ein Fehler ist aufgetreten'
error: response.error || this.props.t("productDialogs.errorGeneric")
});
}
@@ -114,20 +114,21 @@ class ArticleAvailabilityForm extends Component {
render() {
const { name, email, telegramId, notificationMethod, message, loading, success, error } = this.state;
const { t } = this.props;
return (
<Paper id="availability-form" sx={{ p: 3, mt: 4, borderRadius: 2, boxShadow: "0 2px 8px rgba(0,0,0,0.08)" }}>
<Typography variant="h5" gutterBottom sx={{ fontWeight: 600, color: '#333' }}>
Verfügbarkeit anfragen
{t("productDialogs.availabilityTitle")}
</Typography>
<Typography variant="body2" color="text.secondary" sx={{ mb: 3 }}>
Dieser Artikel ist derzeit nicht verfügbar. Gerne informieren wir Sie, sobald er wieder lieferbar ist.
{t("productDialogs.availabilitySubtitle")}
</Typography>
{success && (
<Alert severity="success" sx={{ mb: 3 }}>
Vielen Dank für Ihre Anfrage! Wir werden Sie {notificationMethod === 'email' ? 'per E-Mail' : 'über Telegram'} informieren, sobald der Artikel wieder verfügbar ist.
{notificationMethod === 'email' ? t("productDialogs.availabilitySuccessEmail") : t("productDialogs.availabilitySuccessTelegram")}
</Alert>
)}
@@ -139,18 +140,18 @@ class ArticleAvailabilityForm extends Component {
<Box component="form" onSubmit={this.handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
<TextField
label="Name"
label={t("productDialogs.nameLabel")}
value={name}
onChange={this.handleInputChange('name')}
required
fullWidth
disabled={loading}
placeholder="Ihr Name"
placeholder={t("productDialogs.namePlaceholder")}
/>
<FormControl component="fieldset" disabled={loading}>
<FormLabel component="legend" sx={{ mb: 1 }}>
Wie möchten Sie benachrichtigt werden?
{t("productDialogs.notificationMethodLabel")}
</FormLabel>
<RadioGroup
value={notificationMethod}
@@ -160,51 +161,51 @@ class ArticleAvailabilityForm extends Component {
<FormControlLabel
value="email"
control={<Radio />}
label="E-Mail"
label={t("productDialogs.emailLabel")}
/>
<FormControlLabel
value="telegram"
control={<Radio />}
label="Telegram Bot"
label={t("productDialogs.telegramBotLabel")}
/>
</RadioGroup>
</FormControl>
{notificationMethod === 'email' && (
<TextField
label="E-Mail"
label={t("productDialogs.emailLabel")}
type="email"
value={email}
onChange={this.handleInputChange('email')}
required
fullWidth
disabled={loading}
placeholder="ihre.email@example.com"
placeholder={t("productDialogs.emailPlaceholder")}
/>
)}
{notificationMethod === 'telegram' && (
<TextField
label="Telegram ID"
label={t("productDialogs.telegramIdLabel")}
value={telegramId}
onChange={this.handleInputChange('telegramId')}
required
fullWidth
disabled={loading}
placeholder="@IhrTelegramName oder Telegram ID"
helperText="Geben Sie Ihren Telegram-Benutzernamen (mit @) oder Ihre Telegram-ID ein"
placeholder={t("productDialogs.telegramPlaceholder")}
helperText={t("productDialogs.telegramHelper")}
/>
)}
<TextField
label="Nachricht (optional)"
label={t("productDialogs.messageLabel")}
value={message}
onChange={this.handleInputChange('message')}
fullWidth
multiline
rows={3}
disabled={loading}
placeholder="Zusätzliche Informationen oder Fragen..."
placeholder={t("productDialogs.messagePlaceholder")}
/>
<Button
@@ -225,10 +226,10 @@ class ArticleAvailabilityForm extends Component {
{loading ? (
<>
<CircularProgress size={20} sx={{ mr: 1 }} />
Wird gesendet...
{t("productDialogs.sending")}
</>
) : (
'Verfügbarkeit anfragen'
t("productDialogs.submitAvailability")
)}
</Button>
</Box>

View File

@@ -98,7 +98,7 @@ class ArticleQuestionForm extends Component {
} else {
this.setState({
loading: false,
error: response.error || 'Ein Fehler ist aufgetreten'
error: response.error || this.props.t("productDialogs.errorGeneric")
});
}
@@ -110,7 +110,7 @@ class ArticleQuestionForm extends Component {
} catch {
this.setState({
loading: false,
error: 'Fehler beim Verarbeiten der Fotos'
error: this.props.t("productDialogs.errorPhotos")
});
}
@@ -140,20 +140,21 @@ class ArticleQuestionForm extends Component {
render() {
const { name, email, question, loading, success, error } = this.state;
const { t } = this.props;
return (
<Paper sx={{ p: 3, mt: 4, borderRadius: 2, boxShadow: "0 2px 8px rgba(0,0,0,0.08)" }}>
<Typography variant="h5" gutterBottom sx={{ fontWeight: 600, color: '#333' }}>
Frage zum Artikel
{t("productDialogs.questionTitle")}
</Typography>
<Typography variant="body2" color="text.secondary" sx={{ mb: 3 }}>
Haben Sie eine Frage zu diesem Artikel? Wir helfen Ihnen gerne weiter.
{t("productDialogs.questionSubtitle")}
</Typography>
{success && (
<Alert severity="success" sx={{ mb: 3 }}>
Vielen Dank für Ihre Frage! Wir werden uns schnellstmöglich bei Ihnen melden.
{t("productDialogs.questionSuccess")}
</Alert>
)}
@@ -165,28 +166,28 @@ class ArticleQuestionForm extends Component {
<Box component="form" onSubmit={this.handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
<TextField
label="Name"
label={t("productDialogs.nameLabel")}
value={name}
onChange={this.handleInputChange('name')}
required
fullWidth
disabled={loading}
placeholder="Ihr Name"
placeholder={t("productDialogs.namePlaceholder")}
/>
<TextField
label="E-Mail"
label={t("productDialogs.emailLabel")}
type="email"
value={email}
onChange={this.handleInputChange('email')}
required
fullWidth
disabled={loading}
placeholder="ihre.email@example.com"
placeholder={t("productDialogs.emailPlaceholder")}
/>
<TextField
label="Ihre Frage"
label={t("productDialogs.questionLabel")}
value={question}
onChange={this.handleInputChange('question')}
required
@@ -194,7 +195,7 @@ class ArticleQuestionForm extends Component {
multiline
rows={4}
disabled={loading}
placeholder="Beschreiben Sie Ihre Frage zu diesem Artikel..."
placeholder={t("productDialogs.questionPlaceholder")}
/>
<PhotoUpload
@@ -202,7 +203,7 @@ class ArticleQuestionForm extends Component {
onChange={this.handlePhotosChange}
disabled={loading}
maxFiles={3}
label="Fotos zur Frage anhängen (optional)"
label={t("productDialogs.photosLabelQuestion")}
/>
<Button
@@ -219,10 +220,10 @@ class ArticleQuestionForm extends Component {
{loading ? (
<>
<CircularProgress size={20} sx={{ mr: 1 }} />
Wird gesendet...
{t("productDialogs.sending")}
</>
) : (
'Frage senden'
t("productDialogs.submitQuestion")
)}
</Button>
</Box>

View File

@@ -106,7 +106,7 @@ class ArticleRatingForm extends Component {
} else {
this.setState({
loading: false,
error: response.error || 'Ein Fehler ist aufgetreten'
error: response.error || this.props.t("productDialogs.errorGeneric")
});
}
@@ -118,7 +118,7 @@ class ArticleRatingForm extends Component {
} catch {
this.setState({
loading: false,
error: 'Fehler beim Verarbeiten der Fotos'
error: this.props.t("productDialogs.errorPhotos")
});
}
@@ -149,20 +149,21 @@ class ArticleRatingForm extends Component {
render() {
const { name, email, rating, review, loading, success, error } = this.state;
const { t } = this.props;
return (
<Paper sx={{ p: 3, mt: 4, borderRadius: 2, boxShadow: "0 2px 8px rgba(0,0,0,0.08)" }}>
<Typography variant="h5" gutterBottom sx={{ fontWeight: 600, color: '#333' }}>
Artikel Bewerten
{t("productDialogs.ratingTitle")}
</Typography>
<Typography variant="body2" color="text.secondary" sx={{ mb: 3 }}>
Teilen Sie Ihre Erfahrungen mit diesem Artikel und helfen Sie anderen Kunden bei der Entscheidung.
{t("productDialogs.ratingSubtitle")}
</Typography>
{success && (
<Alert severity="success" sx={{ mb: 3 }}>
Vielen Dank für Ihre Bewertung! Sie wird nach Prüfung veröffentlicht.
{t("productDialogs.ratingSuccess")}
</Alert>
)}
@@ -174,30 +175,30 @@ class ArticleRatingForm extends Component {
<Box component="form" onSubmit={this.handleSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>
<TextField
label="Name"
label={t("productDialogs.nameLabel")}
value={name}
onChange={this.handleInputChange('name')}
required
fullWidth
disabled={loading}
placeholder="Ihr Name"
placeholder={t("productDialogs.namePlaceholder")}
/>
<TextField
label="E-Mail"
label={t("productDialogs.emailLabel")}
type="email"
value={email}
onChange={this.handleInputChange('email')}
required
fullWidth
disabled={loading}
placeholder="ihre.email@example.com"
helperText="Ihre E-Mail wird nicht veröffentlicht"
placeholder={t("productDialogs.emailPlaceholder")}
helperText={t("productDialogs.emailHelper")}
/>
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
<Typography variant="body2" sx={{ fontWeight: 500 }}>
Bewertung *
{t("productDialogs.ratingLabel")}
</Typography>
<Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>
<Rating
@@ -209,20 +210,20 @@ class ArticleRatingForm extends Component {
emptyIcon={<StarIcon style={{ opacity: 0.55 }} fontSize="inherit" />}
/>
<Typography variant="body2" color="text.secondary">
{rating > 0 ? `${rating} von 5 Sternen` : 'Bitte bewerten'}
{rating > 0 ? t("productDialogs.ratingStars", { rating }) : t("productDialogs.pleaseRate")}
</Typography>
</Box>
</Box>
<TextField
label="Ihre Bewertung (optional)"
label={t("productDialogs.reviewLabel")}
value={review}
onChange={this.handleInputChange('review')}
fullWidth
multiline
rows={4}
disabled={loading}
placeholder="Beschreiben Sie Ihre Erfahrungen mit diesem Artikel..."
placeholder={t("productDialogs.reviewPlaceholder")}
/>
<PhotoUpload
@@ -230,7 +231,7 @@ class ArticleRatingForm extends Component {
onChange={this.handlePhotosChange}
disabled={loading}
maxFiles={5}
label="Fotos zur Bewertung anhängen (optional)"
label={t("productDialogs.photosLabelRating")}
/>
<Button
@@ -247,10 +248,10 @@ class ArticleRatingForm extends Component {
{loading ? (
<>
<CircularProgress size={20} sx={{ mr: 1 }} />
Wird gesendet...
{t("productDialogs.sending")}
</>
) : (
'Bewertung abgeben'
t("productDialogs.submitRating")
)}
</Button>
</Box>

View File

@@ -10,6 +10,7 @@ import {
} from '@mui/material';
import Delete from '@mui/icons-material/Delete';
import CloudUpload from '@mui/icons-material/CloudUpload';
import { withI18n } from '../i18n/withTranslation.js';
class PhotoUpload extends Component {
constructor(props) {
@@ -30,7 +31,7 @@ class PhotoUpload extends Component {
// Validate file count
if (this.state.files.length + selectedFiles.length > maxFiles) {
this.setState({
error: `Maximal ${maxFiles} Dateien erlaubt`
error: this.props.t("productDialogs.photoUploadErrorMaxFiles", { max: maxFiles })
});
return;
}
@@ -43,14 +44,14 @@ class PhotoUpload extends Component {
for (const file of selectedFiles) {
if (!validTypes.includes(file.type)) {
this.setState({
error: 'Nur Bilddateien (JPEG, PNG, GIF, WebP) sind erlaubt'
error: this.props.t("productDialogs.photoUploadErrorFileType")
});
continue;
}
if (file.size > maxSize) {
this.setState({
error: `Datei zu groß. Maximum: ${Math.round(maxSize / (1024 * 1024))}MB`
error: this.props.t("productDialogs.photoUploadErrorFileSize", { maxSize: Math.round(maxSize / (1024 * 1024)) })
});
continue;
}
@@ -167,12 +168,12 @@ class PhotoUpload extends Component {
render() {
const { files, previews, error } = this.state;
const { disabled, label } = this.props;
const { disabled, label, t } = this.props;
return (
<Box>
<Typography variant="body2" sx={{ mb: 1, fontWeight: 500 }}>
{label || 'Fotos anhängen (optional)'}
{label || t("productDialogs.photoUploadLabelDefault")}
</Typography>
<input
@@ -192,7 +193,7 @@ class PhotoUpload extends Component {
disabled={disabled}
sx={{ mb: 2 }}
>
Fotos auswählen
{t("productDialogs.photoUploadSelect")}
</Button>
{error && (
@@ -228,7 +229,7 @@ class PhotoUpload extends Component {
size="small"
onClick={() => this.handleRemoveFile(index)}
disabled={disabled}
aria-label="Bild entfernen"
aria-label={t("productDialogs.photoUploadRemove")}
sx={{
position: 'absolute',
top: 4,
@@ -269,10 +270,10 @@ class PhotoUpload extends Component {
{files.length > 0 && (
<Typography variant="caption" color="text.secondary" sx={{ mt: 1, display: 'block' }}>
{files.length} Datei(en) ausgewählt
{t("productDialogs.photoUploadSelectedFiles", { count: files.length })}
{previews.length > 0 && previews.some(p => p.originalSize && p.compressedSize) && (
<span style={{ marginLeft: '8px' }}>
(komprimiert für Upload)
{t("productDialogs.photoUploadCompressed")}
</span>
)}
</Typography>
@@ -282,4 +283,4 @@ class PhotoUpload extends Component {
}
}
export default PhotoUpload;
export default withI18n()(PhotoUpload);

View File

@@ -762,7 +762,7 @@ class ProductDetailPage extends Component {
handleEmbedShare = () => {
const embedCode = `<iframe src="${this.getProductUrl()}" width="100%" height="600" frameborder="0"></iframe>`;
navigator.clipboard.writeText(embedCode).then(() => {
this.showSnackbar("Einbettungscode wurde in die Zwischenablage kopiert!");
this.showSnackbar(this.props.t ? this.props.t("productDialogs.shareSuccessEmbed") : "Einbettungscode wurde in die Zwischenablage kopiert!");
}).catch(() => {
// Fallback for older browsers
try {
@@ -772,9 +772,9 @@ class ProductDetailPage extends Component {
textArea.select();
document.execCommand('copy');
document.body.removeChild(textArea);
this.showSnackbar("Einbettungscode wurde in die Zwischenablage kopiert!");
this.showSnackbar(this.props.t ? this.props.t("productDialogs.shareSuccessEmbed") : "Einbettungscode wurde in die Zwischenablage kopiert!");
} catch {
this.showSnackbar("Fehler beim Kopieren des Einbettungscodes", "error");
this.showSnackbar(this.props.t ? this.props.t("productDialogs.shareErrorEmbed") : "Fehler beim Kopieren des Einbettungscodes", "error");
}
});
this.handleShareClose();
@@ -782,7 +782,10 @@ class ProductDetailPage extends Component {
handleWhatsAppShare = () => {
const url = this.getProductUrl();
const text = `Schau dir dieses Produkt an: ${cleanProductName(this.state.product.name)}`;
const productName = cleanProductName(this.state.product.name);
const text = this.props.t
? this.props.t("productDialogs.shareWhatsAppText", { name: productName })
: `Schau dir dieses Produkt an: ${productName}`;
const whatsappUrl = `https://wa.me/?text=${encodeURIComponent(text + ' ' + url)}`;
window.open(whatsappUrl, '_blank');
this.handleShareClose();
@@ -797,7 +800,10 @@ class ProductDetailPage extends Component {
handleTelegramShare = () => {
const url = this.getProductUrl();
const text = `Schau dir dieses Produkt an: ${cleanProductName(this.state.product.name)}`;
const productName = cleanProductName(this.state.product.name);
const text = this.props.t
? this.props.t("productDialogs.shareTelegramText", { name: productName })
: `Schau dir dieses Produkt an: ${productName}`;
const telegramUrl = `https://t.me/share/url?url=${encodeURIComponent(url)}&text=${encodeURIComponent(text)}`;
window.open(telegramUrl, '_blank');
this.handleShareClose();
@@ -805,8 +811,18 @@ class ProductDetailPage extends Component {
handleEmailShare = () => {
const url = this.getProductUrl();
const subject = `Produktempfehlung: ${cleanProductName(this.state.product.name)}`;
const body = `Hallo,\n\nich möchte dir dieses Produkt empfehlen:\n\n${cleanProductName(this.state.product.name)}\n${url}\n\nViele Grüße`;
const productName = cleanProductName(this.state.product.name);
const subject = this.props.t
? `${this.props.t("productDialogs.shareEmailSubject")}: ${productName}`
: `Produktempfehlung: ${productName}`;
const body = this.props.t
? this.props.t("productDialogs.shareEmailBody", {
name: productName,
url: url
})
: `Hallo,\n\nich möchte dir dieses Produkt empfehlen:\n\n${productName}\n${url}\n\nViele Grüße`;
const emailUrl = `mailto:?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`;
window.location.href = emailUrl;
this.handleShareClose();
@@ -815,7 +831,7 @@ class ProductDetailPage extends Component {
handleLinkCopy = () => {
const url = this.getProductUrl();
navigator.clipboard.writeText(url).then(() => {
this.showSnackbar("Link wurde in die Zwischenablage kopiert!");
this.showSnackbar(this.props.t ? this.props.t("productDialogs.shareSuccessLink") : "Link wurde in die Zwischenablage kopiert!");
}).catch(() => {
// Fallback for older browsers
try {
@@ -825,7 +841,7 @@ class ProductDetailPage extends Component {
textArea.select();
document.execCommand('copy');
document.body.removeChild(textArea);
this.showSnackbar("Link wurde in die Zwischenablage kopiert!");
this.showSnackbar(this.props.t ? this.props.t("productDialogs.shareSuccessLink") : "Link wurde in die Zwischenablage kopiert!");
} catch {
this.showSnackbar("Fehler beim Kopieren des Links", "error");
}
@@ -968,7 +984,7 @@ class ProductDetailPage extends Component {
}).format(productData.price)}
</Typography>
<Typography variant="caption" color="text.secondary">
inkl. MwSt.
{this.props.t ? this.props.t('product.inclVatSimple') : 'inkl. MwSt.'}
</Typography>
</Box>
</Box>
@@ -1331,7 +1347,7 @@ class ProductDetailPage extends Component {
whiteSpace: "nowrap"
}}
>
Frage zum Artikel
{this.props.t ? this.props.t('productDialogs.questionTitle') : "Frage zum Artikel"}
</Button>
<Button
variant="outlined"
@@ -1345,7 +1361,7 @@ class ProductDetailPage extends Component {
whiteSpace: "nowrap"
}}
>
Artikel Bewerten
{this.props.t ? this.props.t('productDialogs.ratingTitle') : "Artikel Bewerten"}
</Button>
{(product.available !== 1 && product.availableSupplier !== 1) && (
<Button
@@ -1366,7 +1382,7 @@ class ProductDetailPage extends Component {
}
}}
>
Verfügbarkeit anfragen
{this.props.t ? this.props.t('productDialogs.availabilityTitle') : "Verfügbarkeit anfragen"}
</Button>
)}
</Stack>
@@ -1595,7 +1611,7 @@ class ProductDetailPage extends Component {
}}
size="small"
>
Teilen
{this.props.t ? this.props.t("productDialogs.shareTitle") : "Teilen"}
</Button>
<Box
sx={{
@@ -1669,7 +1685,7 @@ class ProductDetailPage extends Component {
<ListItemIcon>
<CodeIcon fontSize="small" />
</ListItemIcon>
<ListItemText primary="Einbetten" />
<ListItemText primary={this.props.t ? this.props.t("productDialogs.shareEmbed") : "Einbetten"} />
</MenuItem>
<MenuItem onClick={this.handleWhatsAppShare}>
<ListItemIcon>
@@ -1699,7 +1715,7 @@ class ProductDetailPage extends Component {
<ListItemIcon>
<LinkIcon fontSize="small" />
</ListItemIcon>
<ListItemText primary="Link kopieren" />
<ListItemText primary={this.props.t ? this.props.t("productDialogs.shareCopyLink") : "Link kopieren"} />
</MenuItem>
</MenuList>
</Box>

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -5,9 +5,10 @@ export default {
"notFoundDescription": "المنتج الذي تبحث عنه غير موجود أو تم إزالته.",
"backToHome": "العودة إلى الصفحة الرئيسية",
"error": "خطأ",
"articleNumber": "رقم الصنف",
"articleNumber": "رقم المنتج",
"manufacturer": "الشركة المصنعة",
"inclVat": "شامل {{vat}}% ضريبة القيمة المضافة",
"inclVatSimple": "شامل ضريبة القيمة المضافة",
"priceUnit": "{{price}}/{{unit}}",
"new": "جديد",
"weeks": "أسابيع",
@@ -15,7 +16,7 @@ export default {
"inclVatFooter": "شامل {{vat}}% ضريبة القيمة المضافة,*",
"availability": "التوفر",
"inStock": "متوفر في المخزون",
"comingSoon": "قريبًا متوفر",
"comingSoon": "قريبًا",
"deliveryTime": "مدة التوصيل",
"inclShort": "شامل",
"vatShort": "ضريبة القيمة المضافة",
@@ -32,10 +33,10 @@ export default {
"similarProducts": "منتجات مشابهة",
"countDisplay": {
"noProducts": "0 منتجات",
"oneProduct": "منتج واحد",
"oneProduct": "1 منتج",
"multipleProducts": "{{count}} منتجات",
"filteredProducts": "{{filtered}} من {{total}} منتجات",
"filteredOneProduct": "{{filtered}} من منتج واحد",
"filteredOneProduct": "{{filtered}} من 1 منتج",
"xOfYProducts": "{{x}} من {{y}} منتجات"
},
"removeFiltersToSee": "قم بإزالة الفلاتر لرؤية المنتجات",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "سؤال عن المنتج",
"questionSubtitle": "هل لديك سؤال عن هذا المنتج؟ نحن سعداء بمساعدتك.",
"questionSuccess": "شكرًا على سؤالك! سنرد عليك في أقرب وقت ممكن.",
"nameLabel": "الاسم",
"namePlaceholder": "اسمك",
"emailLabel": "البريد الإلكتروني",
"emailPlaceholder": "your.email@example.com",
"questionLabel": "سؤالك",
"questionPlaceholder": "صف سؤالك عن هذا المنتج...",
"photosLabelQuestion": "أرفق صورًا مع سؤالك (اختياري)",
"submitQuestion": "إرسال السؤال",
"sending": "جارٍ الإرسال...",
"ratingTitle": "قيم المنتج",
"ratingSubtitle": "شارك تجربتك مع هذا المنتج وساعد العملاء الآخرين في اتخاذ قرارهم.",
"ratingSuccess": "شكرًا على تقييمك! سيتم نشره بعد المراجعة.",
"emailHelper": "لن يتم نشر بريدك الإلكتروني",
"ratingLabel": "التقييم *",
"pleaseRate": "يرجى التقييم",
"ratingStars": "{{rating}} من 5 نجوم",
"reviewLabel": "تقييمك (اختياري)",
"reviewPlaceholder": "صف تجاربك مع هذا المنتج...",
"photosLabelRating": "أرفق صورًا مع تقييمك (اختياري)",
"submitRating": "إرسال التقييم",
"errorGeneric": "حدث خطأ",
"errorPhotos": "خطأ في معالجة الصور",
"availabilityTitle": "طلب التوفر",
"availabilitySubtitle": "هذا المنتج غير متوفر حاليًا. سنكون سعداء بإبلاغك بمجرد عودته للمخزون.",
"availabilitySuccessEmail": "شكرًا على طلبك! سنخطرك عبر البريد الإلكتروني بمجرد توفر المنتج مرة أخرى.",
"availabilitySuccessTelegram": "شكرًا على طلبك! سنخطرك عبر تيليجرام بمجرد توفر المنتج مرة أخرى.",
"notificationMethodLabel": "كيف تود أن يتم إعلامك؟",
"telegramBotLabel": "بوت تيليجرام",
"telegramIdLabel": "معرف تيليجرام",
"telegramPlaceholder": "@اسمكعلىتيليجرام أو معرف تيليجرام",
"telegramHelper": "أدخل اسم المستخدم الخاص بك على تيليجرام (مع @) أو معرف تيليجرام",
"messageLabel": "رسالة (اختياري)",
"messagePlaceholder": "معلومات إضافية أو أسئلة...",
"submitAvailability": "طلب التوفر",
"photoUploadSelect": "اختر الصور",
"photoUploadErrorMaxFiles": "الحد الأقصى {{max}} ملفات مسموح بها",
"photoUploadErrorFileType": "مسموح فقط بملفات الصور (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "الملف كبير جدًا. الحد الأقصى: {{maxSize}} ميجابايت",
"photoUploadSelectedFiles": "{{count}} ملف(ملفات) مختارة",
"photoUploadCompressed": "(تم الضغط للرفع)",
"photoUploadRemove": "إزالة الصورة",
"photoUploadLabelDefault": "أرفق صورًا (اختياري)",
"shareTitle": "مشاركة",
"shareEmbed": "تضمين",
"shareCopyLink": "نسخ الرابط",
"shareSuccessEmbed": "تم نسخ كود التضمين إلى الحافظة!",
"shareErrorEmbed": "حدث خطأ أثناء نسخ كود التضمين",
"shareSuccessLink": "تم نسخ الرابط إلى الحافظة!",
"shareWhatsAppText": "شوف المنتج ده: {{name}}",
"shareTelegramText": "شوف المنتج ده: {{name}}",
"shareEmailSubject": "توصية بمنتج",
"shareEmailBody": "مرحبًا،\n\nحابب أوصي لك بالمنتج ده:\n\n{{name}}\n{{url}}\n\nمع أطيب التحيات"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,24 +8,25 @@ export default {
"articleNumber": "Номер на артикул",
"manufacturer": "Производител",
"inclVat": "вкл. {{vat}}% ДДС",
"inclVatSimple": "вкл. ДДС",
"priceUnit": "{{price}}/{{unit}}",
"new": "Нов",
"weeks": "седмици",
"weeks": "Седмици",
"arriving": "Пристигане:",
"inclVatFooter": "вкл. {{vat}}% ДДС,*",
"availability": "Наличност",
"inStock": "налично",
"inStock": "налично на склад",
"comingSoon": "Очаква се скоро",
"deliveryTime": "Срок на доставка",
"inclShort": "вкл.",
"vatShort": "ДДС",
"weight": "Тегло: {{weight}} кг",
"youSave": "Спестявате: {{amount}}",
"cheaperThanIndividual": "По-евтино от индивидуална покупка",
"cheaperThanIndividual": "По-евтино от закупуване поотделно",
"pickupPrice": "Цена за вземане: 19,90 € на резник.",
"consistsOf": "Състои се от:",
"loadingComponentDetails": "{{index}}. Зареждане на детайли за компонента...",
"loadingProduct": "Продуктът се зарежда...",
"loadingProduct": "Зареждане на продукта...",
"individualPriceTotal": "Обща индивидуална цена:",
"setPrice": "Цена на комплекта:",
"yourSavings": "Вашите спестявания:",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Въпрос за продукта",
"questionSubtitle": "Имате ли въпрос за този продукт? Ще се радваме да ви помогнем.",
"questionSuccess": "Благодарим ви за въпроса! Ще се свържем с вас възможно най-скоро.",
"nameLabel": "Име",
"namePlaceholder": "Вашето име",
"emailLabel": "Имейл",
"emailPlaceholder": "your.email@example.com",
"questionLabel": "Вашият въпрос",
"questionPlaceholder": "Опишете въпроса си за този продукт...",
"photosLabelQuestion": "Прикачете снимки към въпроса си (по избор)",
"submitQuestion": "Изпрати въпроса",
"sending": "Изпращане...",
"ratingTitle": "Оценете продукта",
"ratingSubtitle": "Споделете опита си с този продукт и помогнете на други клиенти да вземат решение.",
"ratingSuccess": "Благодарим ви за вашия отзив! Той ще бъде публикуван след проверка.",
"emailHelper": "Вашият имейл няма да бъде публикуван",
"ratingLabel": "Оценка *",
"pleaseRate": "Моля, оценете",
"ratingStars": "{{rating}} от 5 звезди",
"reviewLabel": "Вашият отзив (по избор)",
"reviewPlaceholder": "Опишете опита си с този продукт...",
"photosLabelRating": "Прикачете снимки към отзива си (по избор)",
"submitRating": "Изпрати отзива",
"errorGeneric": "Възникна грешка",
"errorPhotos": "Грешка при обработка на снимките",
"availabilityTitle": "Запитване за наличност",
"availabilitySubtitle": "Този продукт в момента не е наличен. Ще се радваме да ви уведомим веднага щом бъде наличен отново.",
"availabilitySuccessEmail": "Благодарим ви за запитването! Ще ви уведомим по имейл веднага щом продуктът отново е наличен.",
"availabilitySuccessTelegram": "Благодарим ви за запитването! Ще ви уведомим чрез Telegram веднага щом продуктът отново е наличен.",
"notificationMethodLabel": "Как бихте искали да бъдете уведомени?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@yourTelegramName or Telegram ID",
"telegramHelper": "Въведете вашето потребителско име в Telegram (с @) или Telegram ID",
"messageLabel": "Съобщение (по избор)",
"messagePlaceholder": "Допълнителна информация или въпроси...",
"submitAvailability": "Запитване за наличност",
"photoUploadSelect": "Изберете снимки",
"photoUploadErrorMaxFiles": "Максимум {{max}} файла са разрешени",
"photoUploadErrorFileType": "Разрешени са само файлове с изображения (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Файлът е твърде голям. Максимум: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} файл(ове) избрани",
"photoUploadCompressed": "(компресиран за качване)",
"photoUploadRemove": "Премахни изображението",
"photoUploadLabelDefault": "Прикачи снимки (по избор)",
"shareTitle": "Сподели",
"shareEmbed": "Вграждане",
"shareCopyLink": "Копирай линка",
"shareSuccessEmbed": "Кодът за вграждане е копиран в клипборда!",
"shareErrorEmbed": "Грешка при копиране на кода за вграждане",
"shareSuccessLink": "Линкът е копиран в клипборда!",
"shareWhatsAppText": "Виж този продукт: {{name}}",
"shareTelegramText": "Виж този продукт: {{name}}",
"shareEmailSubject": "Препоръка за продукт",
"shareEmailBody": "Здравейте,\n\nИскам да ви препоръчам този продукт:\n\n{{name}}\n{{url}}\n\nПоздрави"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,10 +8,11 @@ export default {
"articleNumber": "Číslo artiklu",
"manufacturer": "Výrobce",
"inclVat": "včetně {{vat}}% DPH",
"inclVatSimple": "včetně DPH",
"priceUnit": "{{price}}/{{unit}}",
"new": "Nové",
"weeks": "týdny",
"arriving": "Příchod:",
"weeks": "Týdny",
"arriving": "Příjezd:",
"inclVatFooter": "včetně {{vat}}% DPH,*",
"availability": "Dostupnost",
"inStock": "skladem",
@@ -22,10 +23,10 @@ export default {
"weight": "Hmotnost: {{weight}} kg",
"youSave": "Ušetříte: {{amount}}",
"cheaperThanIndividual": "Levnější než nákup jednotlivě",
"pickupPrice": "Cena za vyzvednutí: 19,90 € za řízek.",
"pickupPrice": "Cena za odběr: 19,90 € za řízek.",
"consistsOf": "Skládá se z:",
"loadingComponentDetails": "{{index}}. Načítání detailů komponenty...",
"loadingProduct": "Produkt se načítá...",
"loadingProduct": "Načítání produktu...",
"individualPriceTotal": "Celková cena jednotlivě:",
"setPrice": "Cena sady:",
"yourSavings": "Vaše úspory:",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Otázka ohledně produktu",
"questionSubtitle": "Máte otázku ohledně tohoto produktu? Rádi vám pomůžeme.",
"questionSuccess": "Děkujeme za vaši otázku! Ozveme se vám co nejdříve.",
"nameLabel": "Jméno",
"namePlaceholder": "Vaše jméno",
"emailLabel": "Email",
"emailPlaceholder": "vas.email@priklad.cz",
"questionLabel": "Vaše otázka",
"questionPlaceholder": "Popište svou otázku ohledně tohoto produktu...",
"photosLabelQuestion": "Přiložte fotografie k vaší otázce (volitelné)",
"submitQuestion": "Odeslat otázku",
"sending": "Odesílání...",
"ratingTitle": "Ohodnoťte produkt",
"ratingSubtitle": "Podělte se o své zkušenosti s tímto produktem a pomozte ostatním zákazníkům s rozhodnutím.",
"ratingSuccess": "Děkujeme za vaši recenzi! Bude zveřejněna po ověření.",
"emailHelper": "Váš email nebude zveřejněn",
"ratingLabel": "Hodnocení *",
"pleaseRate": "Prosím ohodnoťte",
"ratingStars": "{{rating}} z 5 hvězdiček",
"reviewLabel": "Vaše recenze (volitelné)",
"reviewPlaceholder": "Popište své zkušenosti s tímto produktem...",
"photosLabelRating": "Přiložte fotografie k vaší recenzi (volitelné)",
"submitRating": "Odeslat recenzi",
"errorGeneric": "Došlo k chybě",
"errorPhotos": "Chyba při zpracování fotografií",
"availabilityTitle": "Požádejte o dostupnost",
"availabilitySubtitle": "Tento produkt momentálně není dostupný. Rádi vás informujeme, jakmile bude opět skladem.",
"availabilitySuccessEmail": "Děkujeme za váš požadavek! Jakmile bude produkt opět dostupný, budeme vás informovat e-mailem.",
"availabilitySuccessTelegram": "Děkujeme za váš požadavek! Jakmile bude produkt opět dostupný, budeme vás informovat přes Telegram.",
"notificationMethodLabel": "Jak chcete být informováni?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@vaseTelegramJmeno nebo Telegram ID",
"telegramHelper": "Zadejte své uživatelské jméno na Telegramu (s @) nebo Telegram ID",
"messageLabel": "Zpráva (volitelné)",
"messagePlaceholder": "Další informace nebo otázky...",
"submitAvailability": "Požádat o dostupnost",
"photoUploadSelect": "Vybrat fotografie",
"photoUploadErrorMaxFiles": "Maximálně {{max}} souborů povoleno",
"photoUploadErrorFileType": "Jsou povoleny pouze obrazové soubory (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Soubor je příliš velký. Maximum: {{maxSize}}MB",
"photoUploadSelectedFiles": "Vybráno {{count}} souborů",
"photoUploadCompressed": "(komprimováno pro nahrání)",
"photoUploadRemove": "Odstranit obrázek",
"photoUploadLabelDefault": "Přiložit fotografie (volitelné)",
"shareTitle": "Sdílet",
"shareEmbed": "Vložit",
"shareCopyLink": "Kopírovat odkaz",
"shareSuccessEmbed": "Kód pro vložení zkopírován do schránky!",
"shareErrorEmbed": "Chyba při kopírování kódu pro vložení",
"shareSuccessLink": "Odkaz zkopírován do schránky!",
"shareWhatsAppText": "Podívejte se na tento produkt: {{name}}",
"shareTelegramText": "Podívejte se na tento produkt: {{name}}",
"shareEmailSubject": "Doporučení produktu",
"shareEmailBody": "Dobrý den,\n\nrád bych vám doporučil tento produkt:\n\n{{name}}\n{{url}}\n\nS pozdravem"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,6 +8,7 @@ export default {
"articleNumber": "Artikelnummer",
"manufacturer": "Hersteller",
"inclVat": "inkl. {{vat}}% MwSt.",
"inclVatSimple": "inkl. MwSt.",
"priceUnit": "{{price}}/{{unit}}",
"new": "Neu",
"weeks": "Wochen",

View File

@@ -0,0 +1,62 @@
export default {
"questionTitle": "Frage zum Artikel",
"questionSubtitle": "Haben Sie eine Frage zu diesem Artikel? Wir helfen Ihnen gerne weiter.",
"questionSuccess": "Vielen Dank für Ihre Frage! Wir werden uns schnellstmöglich bei Ihnen melden.",
"nameLabel": "Name",
"namePlaceholder": "Ihr Name",
"emailLabel": "E-Mail",
"emailPlaceholder": "ihre.email@example.com",
"questionLabel": "Ihre Frage",
"questionPlaceholder": "Beschreiben Sie Ihre Frage zu diesem Artikel...",
"photosLabelQuestion": "Fotos zur Frage anhängen (optional)",
"submitQuestion": "Frage senden",
"sending": "Wird gesendet...",
"ratingTitle": "Artikel Bewerten",
"ratingSubtitle": "Teilen Sie Ihre Erfahrungen mit diesem Artikel und helfen Sie anderen Kunden bei der Entscheidung.",
"ratingSuccess": "Vielen Dank für Ihre Bewertung! Sie wird nach Prüfung veröffentlicht.",
"emailHelper": "Ihre E-Mail wird nicht veröffentlicht",
"ratingLabel": "Bewertung *",
"pleaseRate": "Bitte bewerten",
"ratingStars": "{{rating}} von 5 Sternen",
"reviewLabel": "Ihre Bewertung (optional)",
"reviewPlaceholder": "Beschreiben Sie Ihre Erfahrungen mit diesem Artikel...",
"photosLabelRating": "Fotos zur Bewertung anhängen (optional)",
"submitRating": "Bewertung abgeben",
"errorGeneric": "Ein Fehler ist aufgetreten",
"errorPhotos": "Fehler beim Verarbeiten der Fotos",
"availabilityTitle": "Verfügbarkeit anfragen",
"availabilitySubtitle": "Dieser Artikel ist derzeit nicht verfügbar. Gerne informieren wir Sie, sobald er wieder lieferbar ist.",
"availabilitySuccessEmail": "Vielen Dank für Ihre Anfrage! Wir werden Sie per E-Mail informieren, sobald der Artikel wieder verfügbar ist.",
"availabilitySuccessTelegram": "Vielen Dank für Ihre Anfrage! Wir werden Sie über Telegram informieren, sobald der Artikel wieder verfügbar ist.",
"notificationMethodLabel": "Wie möchten Sie benachrichtigt werden?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@IhrTelegramName oder Telegram ID",
"telegramHelper": "Geben Sie Ihren Telegram-Benutzernamen (mit @) oder Ihre Telegram-ID ein",
"messageLabel": "Nachricht (optional)",
"messagePlaceholder": "Zusätzliche Informationen oder Fragen...",
"submitAvailability": "Verfügbarkeit anfragen",
"photoUploadSelect": "Fotos auswählen",
"photoUploadErrorMaxFiles": "Maximal {{max}} Dateien erlaubt",
"photoUploadErrorFileType": "Nur Bilddateien (JPEG, PNG, GIF, WebP) sind erlaubt",
"photoUploadErrorFileSize": "Datei zu groß. Maximum: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} Datei(en) ausgewählt",
"photoUploadCompressed": "(komprimiert für Upload)",
"photoUploadRemove": "Bild entfernen",
"photoUploadLabelDefault": "Fotos anhängen (optional)",
"shareTitle": "Teilen",
"shareEmbed": "Einbetten",
"shareCopyLink": "Link kopieren",
"shareSuccessEmbed": "Einbettungscode wurde in die Zwischenablage kopiert!",
"shareErrorEmbed": "Fehler beim Kopieren des Einbettungscodes",
"shareSuccessLink": "Link wurde in die Zwischenablage kopiert!",
"shareWhatsAppText": "Schau dir dieses Produkt an: {{name}}",
"shareTelegramText": "Schau dir dieses Produkt an: {{name}}",
"shareEmailSubject": "Produktempfehlung",
"shareEmailBody": "Hallo,\n\nich möchte dir dieses Produkt empfehlen:\n\n{{name}}\n{{url}}\n\nViele Grüße"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Αριθμός άρθρου",
"manufacturer": "Κατασκευαστής",
"inclVat": "συμπ. {{vat}}% ΦΠΑ",
"inclVatSimple": "συμπ. ΦΠΑ",
"priceUnit": "{{price}}/{{unit}}",
"new": "Νέο",
"weeks": "εβδομάδες",
"weeks": "Εβδομάδες",
"arriving": "Άφιξη:",
"inclVatFooter": "συμπ. {{vat}}% ΦΠΑ,*",
"availability": "Διαθεσιμότητα",
@@ -28,7 +29,7 @@ export default {
"loadingProduct": "Φόρτωση προϊόντος...",
"individualPriceTotal": "Συνολική τιμή μεμονωμένων:",
"setPrice": "Τιμή σετ:",
"yourSavings": "Η εξοικονόμησή σας:",
"yourSavings": "Οι εξοικονομήσεις σας:",
"similarProducts": "Παρόμοια προϊόντα",
"countDisplay": {
"noProducts": "0 προϊόντα",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Ερώτηση σχετικά με το προϊόν",
"questionSubtitle": "Έχετε κάποια ερώτηση για αυτό το προϊόν; Είμαστε εδώ για να σας βοηθήσουμε.",
"questionSuccess": "Ευχαριστούμε για την ερώτησή σας! Θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.",
"nameLabel": "Όνομα",
"namePlaceholder": "Το όνομά σας",
"emailLabel": "Email",
"emailPlaceholder": "your.email@example.com",
"questionLabel": "Η ερώτησή σας",
"questionPlaceholder": "Περιγράψτε την ερώτησή σας σχετικά με αυτό το προϊόν...",
"photosLabelQuestion": "Επισυνάψτε φωτογραφίες στην ερώτησή σας (προαιρετικό)",
"submitQuestion": "Αποστολή ερώτησης",
"sending": "Αποστολή...",
"ratingTitle": "Αξιολογήστε το προϊόν",
"ratingSubtitle": "Μοιραστείτε την εμπειρία σας με αυτό το προϊόν και βοηθήστε άλλους πελάτες να πάρουν την απόφασή τους.",
"ratingSuccess": "Ευχαριστούμε για την αξιολόγησή σας! Θα δημοσιευτεί μετά από έλεγχο.",
"emailHelper": "Το email σας δεν θα δημοσιευτεί",
"ratingLabel": "Αξιολόγηση *",
"pleaseRate": "Παρακαλώ αξιολογήστε",
"ratingStars": "{{rating}} από 5 αστέρια",
"reviewLabel": "Η κριτική σας (προαιρετικό)",
"reviewPlaceholder": "Περιγράψτε τις εμπειρίες σας με αυτό το προϊόν...",
"photosLabelRating": "Επισυνάψτε φωτογραφίες στην κριτική σας (προαιρετικό)",
"submitRating": "Υποβολή κριτικής",
"errorGeneric": "Παρουσιάστηκε σφάλμα",
"errorPhotos": "Σφάλμα κατά την επεξεργασία των φωτογραφιών",
"availabilityTitle": "Ζητήστε διαθεσιμότητα",
"availabilitySubtitle": "Αυτό το προϊόν δεν είναι διαθέσιμο αυτή τη στιγμή. Θα χαρούμε να σας ενημερώσουμε μόλις είναι ξανά διαθέσιμο.",
"availabilitySuccessEmail": "Ευχαριστούμε για το αίτημά σας! Θα σας ενημερώσουμε μέσω email μόλις το προϊόν είναι ξανά διαθέσιμο.",
"availabilitySuccessTelegram": "Ευχαριστούμε για το αίτημά σας! Θα σας ενημερώσουμε μέσω Telegram μόλις το προϊόν είναι ξανά διαθέσιμο.",
"notificationMethodLabel": "Πώς θέλετε να ειδοποιηθείτε;",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@yourTelegramName or Telegram ID",
"telegramHelper": "Εισάγετε το όνομα χρήστη Telegram (με @) ή το Telegram ID σας",
"messageLabel": "Μήνυμα (προαιρετικό)",
"messagePlaceholder": "Επιπλέον πληροφορίες ή ερωτήσεις...",
"submitAvailability": "Ζητήστε διαθεσιμότητα",
"photoUploadSelect": "Επιλέξτε φωτογραφίες",
"photoUploadErrorMaxFiles": "Επιτρέπονται έως {{max}} αρχεία",
"photoUploadErrorFileType": "Επιτρέπονται μόνο αρχεία εικόνας (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Το αρχείο είναι πολύ μεγάλο. Μέγιστο: {{maxSize}}MB",
"photoUploadSelectedFiles": "Επιλέχθηκαν {{count}} αρχεία",
"photoUploadCompressed": "(συμπιεσμένο για αποστολή)",
"photoUploadRemove": "Αφαίρεση εικόνας",
"photoUploadLabelDefault": "Επισύναψη φωτογραφιών (προαιρετικό)",
"shareTitle": "Κοινοποίηση",
"shareEmbed": "Ενσωμάτωση",
"shareCopyLink": "Αντιγραφή συνδέσμου",
"shareSuccessEmbed": "Ο κώδικας ενσωμάτωσης αντιγράφηκε στο πρόχειρο!",
"shareErrorEmbed": "Σφάλμα κατά την αντιγραφή του κώδικα ενσωμάτωσης",
"shareSuccessLink": "Ο σύνδεσμος αντιγράφηκε στο πρόχειρο!",
"shareWhatsAppText": "Δείτε αυτό το προϊόν: {{name}}",
"shareTelegramText": "Δείτε αυτό το προϊόν: {{name}}",
"shareEmailSubject": "Σύσταση προϊόντος",
"shareEmailBody": "Γεια σας,\n\nΘα ήθελα να σας προτείνω αυτό το προϊόν:\n\n{{name}}\n{{url}}\n\nΜε εκτίμηση"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Article number", // Artikelnummer
"manufacturer": "Manufacturer", // Hersteller
"inclVat": "incl. {{vat}}% VAT", // inkl. {{vat}}% MwSt.
"inclVatSimple": "incl. VAT", // inkl. MwSt.
"priceUnit": "{{price}}/{{unit}}", // {{price}}/{{unit}}
"new": "New", // Neu
"weeks": "weeks", // Wochen
"weeks": "Weeks", // Wochen
"arriving": "Arrival:", // Ankunft:
"inclVatFooter": "incl. {{vat}}% VAT,*", // inkl. {{vat}}% MwSt.,*
"availability": "Availability", // Verfügbarkeit
@@ -23,13 +24,13 @@ export default {
"youSave": "You save: {{amount}}", // Sie sparen: {{amount}}
"cheaperThanIndividual": "Cheaper than buying individually", // Günstiger als Einzelkauf
"pickupPrice": "Pickup price: €19.90 per cutting.", // Abholpreis: 19,90 € pro Steckling.
"consistsOf": "Consists of:", // Bestehend aus:
"consistsOf": "Consisting of:", // Bestehend aus:
"loadingComponentDetails": "{{index}}. Loading component details...", // {{index}}. Lädt Komponent-Details...
"loadingProduct": "Product is loading...", // Produkt wird geladen...
"loadingProduct": "Loading product...", // Produkt wird geladen...
"individualPriceTotal": "Total individual price:", // Einzelpreis gesamt:
"setPrice": "Set price:", // Set-Preis:
"yourSavings": "Your savings:", // Ihre Ersparnis:
"similarProducts": "Similar Products", // Ähnliche Produkte
"similarProducts": "Similar products", // Ähnliche Produkte
"countDisplay": {
"noProducts": "0 products", // 0 Produkte
"oneProduct": "1 product", // 1 Produkt

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Question about the product", // Frage zum Artikel
"questionSubtitle": "Do you have a question about this product? We are happy to help you.", // Haben Sie eine Frage zu diesem Artikel? Wir helfen Ihnen gerne weiter.
"questionSuccess": "Thank you for your question! We will get back to you as soon as possible.", // Vielen Dank für Ihre Frage! Wir werden uns schnellstmöglich bei Ihnen melden.
"nameLabel": "Name", // Name
"namePlaceholder": "Your name", // Ihr Name
"emailLabel": "Email", // E-Mail
"emailPlaceholder": "your.email@example.com", // ihre.email@example.com
"questionLabel": "Your question", // Ihre Frage
"questionPlaceholder": "Describe your question about this product...", // Beschreiben Sie Ihre Frage zu diesem Artikel...
"photosLabelQuestion": "Attach photos to your question (optional)", // Fotos zur Frage anhängen (optional)
"submitQuestion": "Send question", // Frage senden
"sending": "Sending...", // Wird gesendet...
"ratingTitle": "Rate product", // Artikel Bewerten
"ratingSubtitle": "Share your experience with this product and help other customers make their decision.", // Teilen Sie Ihre Erfahrungen mit diesem Artikel und helfen Sie anderen Kunden bei der Entscheidung.
"ratingSuccess": "Thank you for your review! It will be published after verification.", // Vielen Dank für Ihre Bewertung! Sie wird nach Prüfung veröffentlicht.
"emailHelper": "Your email will not be published", // Ihre E-Mail wird nicht veröffentlicht
"ratingLabel": "Rating *", // Bewertung *
"pleaseRate": "Please rate", // Bitte bewerten
"ratingStars": "{{rating}} out of 5 stars", // {{rating}} von 5 Sternen
"reviewLabel": "Your review (optional)", // Ihre Bewertung (optional)
"reviewPlaceholder": "Describe your experiences with this product...", // Beschreiben Sie Ihre Erfahrungen mit diesem Artikel...
"photosLabelRating": "Attach photos to your review (optional)", // Fotos zur Bewertung anhängen (optional)
"submitRating": "Submit review", // Bewertung abgeben
"errorGeneric": "An error occurred", // Ein Fehler ist aufgetreten
"errorPhotos": "Error processing photos", // Fehler beim Verarbeiten der Fotos
"availabilityTitle": "Request availability", // Verfügbarkeit anfragen
"availabilitySubtitle": "This product is currently unavailable. We will be happy to inform you as soon as it is back in stock.", // Dieser Artikel ist derzeit nicht verfügbar. Gerne informieren wir Sie, sobald er wieder lieferbar ist.
"availabilitySuccessEmail": "Thank you for your request! We will notify you by email as soon as the product is available again.", // Vielen Dank für Ihre Anfrage! Wir werden Sie per E-Mail informieren, sobald der Artikel wieder verfügbar ist.
"availabilitySuccessTelegram": "Thank you for your request! We will notify you via Telegram as soon as the product is available again.", // Vielen Dank für Ihre Anfrage! Wir werden Sie über Telegram informieren, sobald der Artikel wieder verfügbar ist.
"notificationMethodLabel": "How would you like to be notified?", // Wie möchten Sie benachrichtigt werden?
"telegramBotLabel": "Telegram Bot", // Telegram Bot
"telegramIdLabel": "Telegram ID", // Telegram ID
"telegramPlaceholder": "@yourTelegramName or Telegram ID", // @IhrTelegramName oder Telegram ID
"telegramHelper": "Enter your Telegram username (with @) or Telegram ID", // Geben Sie Ihren Telegram-Benutzernamen (mit @) oder Ihre Telegram-ID ein
"messageLabel": "Message (optional)", // Nachricht (optional)
"messagePlaceholder": "Additional information or questions...", // Zusätzliche Informationen oder Fragen...
"submitAvailability": "Request availability", // Verfügbarkeit anfragen
"photoUploadSelect": "Select photos", // Fotos auswählen
"photoUploadErrorMaxFiles": "Maximum {{max}} files allowed", // Maximal {{max}} Dateien erlaubt
"photoUploadErrorFileType": "Only image files (JPEG, PNG, GIF, WebP) are allowed", // Nur Bilddateien (JPEG, PNG, GIF, WebP) sind erlaubt
"photoUploadErrorFileSize": "File too large. Maximum: {{maxSize}}MB", // Datei zu groß. Maximum: {{maxSize}}MB
"photoUploadSelectedFiles": "{{count}} file(s) selected", // {{count}} Datei(en) ausgewählt
"photoUploadCompressed": "(compressed for upload)", // (komprimiert für Upload)
"photoUploadRemove": "Remove image", // Bild entfernen
"photoUploadLabelDefault": "Attach photos (optional)", // Fotos anhängen (optional)
"shareTitle": "Share", // Teilen
"shareEmbed": "Embed", // Einbetten
"shareCopyLink": "Copy link", // Link kopieren
"shareSuccessEmbed": "Embed code copied to clipboard!", // Einbettungscode wurde in die Zwischenablage kopiert!
"shareErrorEmbed": "Error copying the embed code", // Fehler beim Kopieren des Einbettungscodes
"shareSuccessLink": "Link copied to clipboard!", // Link wurde in die Zwischenablage kopiert!
"shareWhatsAppText": "Check out this product: {{name}}", // Schau dir dieses Produkt an: {{name}}
"shareTelegramText": "Check out this product: {{name}}", // Schau dir dieses Produkt an: {{name}}
"shareEmailSubject": "Product recommendation", // Produktempfehlung
"shareEmailBody": "Hello,\n\nI'd like to recommend this product to you:\n\n{{name}}\n{{url}}\n\nBest regards", // Hallo,\n\nich möchte dir dieses Produkt empfehlen:\n\n{{name}}\n{{url}}\n\nViele Grüße
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Número de artículo",
"manufacturer": "Fabricante",
"inclVat": "incl. {{vat}}% IVA",
"inclVatSimple": "incl. IVA",
"priceUnit": "{{price}}/{{unit}}",
"new": "Nuevo",
"weeks": "semanas",
"weeks": "Semanas",
"arriving": "Llegada:",
"inclVatFooter": "incl. {{vat}}% IVA,*",
"availability": "Disponibilidad",
@@ -25,7 +26,7 @@ export default {
"pickupPrice": "Precio de recogida: 19,90 € por esqueje.",
"consistsOf": "Consiste en:",
"loadingComponentDetails": "{{index}}. Cargando detalles del componente...",
"loadingProduct": "Producto cargando...",
"loadingProduct": "Cargando producto...",
"individualPriceTotal": "Precio individual total:",
"setPrice": "Precio del set:",
"yourSavings": "Tus ahorros:",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Pregunta sobre el producto",
"questionSubtitle": "¿Tiene alguna pregunta sobre este producto? Estamos encantados de ayudarle.",
"questionSuccess": "¡Gracias por su pregunta! Nos pondremos en contacto con usted lo antes posible.",
"nameLabel": "Nombre",
"namePlaceholder": "Su nombre",
"emailLabel": "Correo electrónico",
"emailPlaceholder": "su.email@ejemplo.com",
"questionLabel": "Su pregunta",
"questionPlaceholder": "Describa su pregunta sobre este producto...",
"photosLabelQuestion": "Adjunte fotos a su pregunta (opcional)",
"submitQuestion": "Enviar pregunta",
"sending": "Enviando...",
"ratingTitle": "Calificar producto",
"ratingSubtitle": "Comparta su experiencia con este producto y ayude a otros clientes a tomar su decisión.",
"ratingSuccess": "¡Gracias por su reseña! Se publicará después de la verificación.",
"emailHelper": "Su correo electrónico no será publicado",
"ratingLabel": "Calificación *",
"pleaseRate": "Por favor califique",
"ratingStars": "{{rating}} de 5 estrellas",
"reviewLabel": "Su reseña (opcional)",
"reviewPlaceholder": "Describa sus experiencias con este producto...",
"photosLabelRating": "Adjunte fotos a su reseña (opcional)",
"submitRating": "Enviar reseña",
"errorGeneric": "Ocurrió un error",
"errorPhotos": "Error al procesar las fotos",
"availabilityTitle": "Solicitar disponibilidad",
"availabilitySubtitle": "Este producto no está disponible actualmente. Le informaremos tan pronto como vuelva a estar en stock.",
"availabilitySuccessEmail": "¡Gracias por su solicitud! Le notificaremos por correo electrónico tan pronto como el producto esté disponible nuevamente.",
"availabilitySuccessTelegram": "¡Gracias por su solicitud! Le notificaremos vía Telegram tan pronto como el producto esté disponible nuevamente.",
"notificationMethodLabel": "¿Cómo desea ser notificado?",
"telegramBotLabel": "Bot de Telegram",
"telegramIdLabel": "ID de Telegram",
"telegramPlaceholder": "@suNombreTelegram o ID de Telegram",
"telegramHelper": "Ingrese su nombre de usuario de Telegram (con @) o ID de Telegram",
"messageLabel": "Mensaje (opcional)",
"messagePlaceholder": "Información adicional o preguntas...",
"submitAvailability": "Solicitar disponibilidad",
"photoUploadSelect": "Seleccionar fotos",
"photoUploadErrorMaxFiles": "Máximo {{max}} archivos permitidos",
"photoUploadErrorFileType": "Solo se permiten archivos de imagen (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Archivo demasiado grande. Máximo: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} archivo(s) seleccionado(s)",
"photoUploadCompressed": "(comprimido para subir)",
"photoUploadRemove": "Eliminar imagen",
"photoUploadLabelDefault": "Adjuntar fotos (opcional)",
"shareTitle": "Compartir",
"shareEmbed": "Insertar",
"shareCopyLink": "Copiar enlace",
"shareSuccessEmbed": "¡Código de inserción copiado al portapapeles!",
"shareErrorEmbed": "Error al copiar el código de inserción",
"shareSuccessLink": "¡Enlace copiado al portapapeles!",
"shareWhatsAppText": "Mira este producto: {{name}}",
"shareTelegramText": "Mira este producto: {{name}}",
"shareEmailSubject": "Recomendación de producto",
"shareEmailBody": "Hola,\n\nQuisiera recomendarte este producto:\n\n{{name}}\n{{url}}\n\nSaludos cordiales"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Numéro d'article",
"manufacturer": "Fabricant",
"inclVat": "TTC {{vat}}%",
"inclVatSimple": "TTC",
"priceUnit": "{{price}}/{{unit}}",
"new": "Nouveau",
"weeks": "semaines",
"weeks": "Semaines",
"arriving": "Arrivée :",
"inclVatFooter": "TTC {{vat}}%,*",
"availability": "Disponibilité",
@@ -25,7 +26,7 @@ export default {
"pickupPrice": "Prix de retrait : 19,90 € par bouture.",
"consistsOf": "Composé de :",
"loadingComponentDetails": "{{index}}. Chargement des détails du composant...",
"loadingProduct": "Le produit est en cours de chargement...",
"loadingProduct": "Chargement du produit...",
"individualPriceTotal": "Prix individuel total :",
"setPrice": "Prix du lot :",
"yourSavings": "Vos économies :",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Question sur le produit",
"questionSubtitle": "Vous avez une question sur ce produit ? Nous sommes heureux de vous aider.",
"questionSuccess": "Merci pour votre question ! Nous vous répondrons dès que possible.",
"nameLabel": "Nom",
"namePlaceholder": "Votre nom",
"emailLabel": "Email",
"emailPlaceholder": "votre.email@exemple.com",
"questionLabel": "Votre question",
"questionPlaceholder": "Décrivez votre question à propos de ce produit...",
"photosLabelQuestion": "Joindre des photos à votre question (optionnel)",
"submitQuestion": "Envoyer la question",
"sending": "Envoi en cours...",
"ratingTitle": "Noter le produit",
"ratingSubtitle": "Partagez votre expérience avec ce produit et aidez les autres clients à prendre leur décision.",
"ratingSuccess": "Merci pour votre avis ! Il sera publié après vérification.",
"emailHelper": "Votre email ne sera pas publié",
"ratingLabel": "Note *",
"pleaseRate": "Veuillez noter",
"ratingStars": "{{rating}} sur 5 étoiles",
"reviewLabel": "Votre avis (optionnel)",
"reviewPlaceholder": "Décrivez vos expériences avec ce produit...",
"photosLabelRating": "Joindre des photos à votre avis (optionnel)",
"submitRating": "Soumettre l'avis",
"errorGeneric": "Une erreur est survenue",
"errorPhotos": "Erreur lors du traitement des photos",
"availabilityTitle": "Demander la disponibilité",
"availabilitySubtitle": "Ce produit est actuellement indisponible. Nous serons heureux de vous informer dès qu'il sera de nouveau en stock.",
"availabilitySuccessEmail": "Merci pour votre demande ! Nous vous informerons par email dès que le produit sera à nouveau disponible.",
"availabilitySuccessTelegram": "Merci pour votre demande ! Nous vous informerons via Telegram dès que le produit sera à nouveau disponible.",
"notificationMethodLabel": "Comment souhaitez-vous être informé ?",
"telegramBotLabel": "Bot Telegram",
"telegramIdLabel": "ID Telegram",
"telegramPlaceholder": "@votreNomTelegram ou ID Telegram",
"telegramHelper": "Entrez votre nom d'utilisateur Telegram (avec @) ou votre ID Telegram",
"messageLabel": "Message (optionnel)",
"messagePlaceholder": "Informations supplémentaires ou questions...",
"submitAvailability": "Demander la disponibilité",
"photoUploadSelect": "Sélectionner des photos",
"photoUploadErrorMaxFiles": "Maximum {{max}} fichiers autorisés",
"photoUploadErrorFileType": "Seuls les fichiers image (JPEG, PNG, GIF, WebP) sont autorisés",
"photoUploadErrorFileSize": "Fichier trop volumineux. Maximum : {{maxSize}}Mo",
"photoUploadSelectedFiles": "{{count}} fichier(s) sélectionné(s)",
"photoUploadCompressed": "(compressé pour l'envoi)",
"photoUploadRemove": "Supprimer l'image",
"photoUploadLabelDefault": "Joindre des photos (optionnel)",
"shareTitle": "Partager",
"shareEmbed": "Intégrer",
"shareCopyLink": "Copier le lien",
"shareSuccessEmbed": "Code d'intégration copié dans le presse-papiers !",
"shareErrorEmbed": "Erreur lors de la copie du code d'intégration",
"shareSuccessLink": "Lien copié dans le presse-papiers !",
"shareWhatsAppText": "Découvrez ce produit : {{name}}",
"shareTelegramText": "Découvrez ce produit : {{name}}",
"shareEmailSubject": "Recommandation de produit",
"shareEmailBody": "Bonjour,\n\nJe souhaite vous recommander ce produit :\n\n{{name}}\n{{url}}\n\nCordialement"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -3,14 +3,15 @@ export default {
"loadingDescription": "Učitavanje opisa proizvoda...",
"notFound": "Proizvod nije pronađen",
"notFoundDescription": "Proizvod koji tražite ne postoji ili je uklonjen.",
"backToHome": "Povratak na početnu stranicu",
"backToHome": "Natrag na početnu stranicu",
"error": "Greška",
"articleNumber": "Broj artikla",
"manufacturer": "Proizvođač",
"inclVat": "uključujući {{vat}}% PDV-a",
"inclVatSimple": "uključujući PDV",
"priceUnit": "{{price}}/{{unit}}",
"new": "Novo",
"weeks": "tjedana",
"weeks": "Tjedni",
"arriving": "Dolazak:",
"inclVatFooter": "uključujući {{vat}}% PDV-a,*",
"availability": "Dostupnost",
@@ -25,7 +26,7 @@ export default {
"pickupPrice": "Cijena preuzimanja: 19,90 € po reznici.",
"consistsOf": "Sastoji se od:",
"loadingComponentDetails": "{{index}}. Učitavanje detalja komponente...",
"loadingProduct": "Proizvod se učitava...",
"loadingProduct": "Učitavanje proizvoda...",
"individualPriceTotal": "Ukupna pojedinačna cijena:",
"setPrice": "Cijena seta:",
"yourSavings": "Vaša ušteda:",
@@ -38,7 +39,7 @@ export default {
"filteredOneProduct": "{{filtered}} od 1 proizvoda",
"xOfYProducts": "{{x}} od {{y}} proizvoda"
},
"removeFiltersToSee": "Uklonite filtere da vidite proizvode",
"removeFiltersToSee": "Uklonite filtre da vidite proizvode",
"outOfStock": "Nema na skladištu",
"fromXProducts": "od {{count}} proizvoda",
"discount": {

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Pitanje o proizvodu",
"questionSubtitle": "Imate li pitanje o ovom proizvodu? Rado ćemo vam pomoći.",
"questionSuccess": "Hvala na vašem pitanju! Javili smo vam se što je prije moguće.",
"nameLabel": "Ime",
"namePlaceholder": "Vaše ime",
"emailLabel": "Email",
"emailPlaceholder": "your.email@example.com",
"questionLabel": "Vaše pitanje",
"questionPlaceholder": "Opišite svoje pitanje o ovom proizvodu...",
"photosLabelQuestion": "Priložite fotografije uz svoje pitanje (opcionalno)",
"submitQuestion": "Pošalji pitanje",
"sending": "Šalje se...",
"ratingTitle": "Ocijenite proizvod",
"ratingSubtitle": "Podijelite svoje iskustvo s ovim proizvodom i pomozite drugim kupcima u odluci.",
"ratingSuccess": "Hvala na vašoj recenziji! Bit će objavljena nakon provjere.",
"emailHelper": "Vaš email neće biti objavljen",
"ratingLabel": "Ocjena *",
"pleaseRate": "Molimo ocijenite",
"ratingStars": "{{rating}} od 5 zvjezdica",
"reviewLabel": "Vaša recenzija (opcionalno)",
"reviewPlaceholder": "Opišite svoja iskustva s ovim proizvodom...",
"photosLabelRating": "Priložite fotografije uz svoju recenziju (opcionalno)",
"submitRating": "Pošalji recenziju",
"errorGeneric": "Došlo je do pogreške",
"errorPhotos": "Pogreška pri obradi fotografija",
"availabilityTitle": "Zatražite dostupnost",
"availabilitySubtitle": "Ovaj proizvod trenutno nije dostupan. Obavijestit ćemo vas čim ponovno bude na skladištu.",
"availabilitySuccessEmail": "Hvala na vašem zahtjevu! Obavijestit ćemo vas putem emaila čim proizvod ponovno bude dostupan.",
"availabilitySuccessTelegram": "Hvala na vašem zahtjevu! Obavijestit ćemo vas putem Telegrama čim proizvod ponovno bude dostupan.",
"notificationMethodLabel": "Kako želite biti obaviješteni?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@yourTelegramName or Telegram ID",
"telegramHelper": "Unesite svoje Telegram korisničko ime (s @) ili Telegram ID",
"messageLabel": "Poruka (opcionalno)",
"messagePlaceholder": "Dodatne informacije ili pitanja...",
"submitAvailability": "Zatražite dostupnost",
"photoUploadSelect": "Odaberite fotografije",
"photoUploadErrorMaxFiles": "Dozvoljeno maksimalno {{max}} datoteka",
"photoUploadErrorFileType": "Dozvoljene su samo slikovne datoteke (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Datoteka je prevelika. Maksimum: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} datoteka je odabrano",
"photoUploadCompressed": "(komprimirano za prijenos)",
"photoUploadRemove": "Ukloni sliku",
"photoUploadLabelDefault": "Priložite fotografije (opcionalno)",
"shareTitle": "Podijeli",
"shareEmbed": "Ugradi",
"shareCopyLink": "Kopiraj link",
"shareSuccessEmbed": "Kod za ugradnju kopiran u međuspremnik!",
"shareErrorEmbed": "Pogreška pri kopiranju koda za ugradnju",
"shareSuccessLink": "Link kopiran u međuspremnik!",
"shareWhatsAppText": "Pogledajte ovaj proizvod: {{name}}",
"shareTelegramText": "Pogledajte ovaj proizvod: {{name}}",
"shareEmailSubject": "Preporuka proizvoda",
"shareEmailBody": "Pozdrav,\n\nŽelio/la bih vam preporučiti ovaj proizvod:\n\n{{name}}\n{{url}}\n\nSrdačan pozdrav"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -1,50 +1,51 @@
export default {
"loading": "Termék betöltése...",
"loadingDescription": "Termékleírás betöltése...",
"notFound": "A termék nem található",
"notFoundDescription": "A keresett termék nem létezik vagy eltávolításra került.",
"backToHome": "Vissza a kezdőlapra",
"error": "Hiba",
"articleNumber": "Cikkszám",
"manufacturer": "Gyártó",
"inclVat": "áfával együtt {{vat}}%",
"priceUnit": "{{price}}/{{unit}}",
"new": "Új",
"weeks": "hetek",
"arriving": "Érkezés:",
"inclVatFooter": "áfával együtt {{vat}}%,*",
"availability": "Elérhetőség",
"inStock": "készleten",
"comingSoon": "Hamarosan elérhető",
"deliveryTime": "Szállítási idő",
"inclShort": "áfával",
"vatShort": "ÁFA",
"weight": "Súly: {{weight}} kg",
"youSave": "Megtakarítás: {{amount}}",
"cheaperThanIndividual": "Olcsóbb, mint külön megvásárolni",
"pickupPrice": "Átvételi ár: 19,90 € darabonként.",
"consistsOf": "Tartalmazza:",
"loadingComponentDetails": "{{index}}. Komponens részleteinek betöltése...",
"loadingProduct": "Termék betöltése...",
"individualPriceTotal": "Egyedi ár összesen:",
"setPrice": "Szett ár:",
"yourSavings": "Megtakarításod:",
"similarProducts": "Hasonló termékek",
"loading": "Termék betöltése...",
"loadingDescription": "Termékleírás betöltése...",
"notFound": "A termék nem található",
"notFoundDescription": "A keresett termék nem létezik vagy eltávolításra került.",
"backToHome": "Vissza a kezdőlapra",
"error": "Hiba",
"articleNumber": "Cikkszám",
"manufacturer": "Gyártó",
"inclVat": "áfával együtt {{vat}}%",
"inclVatSimple": "áfával együtt",
"priceUnit": "{{price}}/{{unit}}",
"new": "Új",
"weeks": "Hét",
"arriving": "Érkezés:",
"inclVatFooter": "áfával együtt {{vat}}%,*",
"availability": "Elérhetőség",
"inStock": "készleten",
"comingSoon": "Hamarosan elérhető",
"deliveryTime": "Szállítási idő",
"inclShort": "áfával",
"vatShort": "ÁFA",
"weight": "Súly: {{weight}} kg",
"youSave": "Megtakarítás: {{amount}}",
"cheaperThanIndividual": "Olcsóbb, mint külön megvásárolni",
"pickupPrice": "Átvételi ár: 19,90 € darabonként.",
"consistsOf": "Tartalmazza:",
"loadingComponentDetails": "{{index}}. Komponens részleteinek betöltése...",
"loadingProduct": "Termék betöltése...",
"individualPriceTotal": "Egyedi ár összesen:",
"setPrice": "Szett ár:",
"yourSavings": "Az Ön megtakarítása:",
"similarProducts": "Hasonló termékek",
"countDisplay": {
"noProducts": "0 termék",
"oneProduct": "1 termék",
"multipleProducts": "{{count}} termék",
"filteredProducts": "{{filtered}} a(z) {{total}} termékből",
"filteredOneProduct": "{{filtered}} az 1 termékből",
"xOfYProducts": "{{x}} a(z) {{y}} termékből"
"noProducts": "0 termék",
"oneProduct": "1 termék",
"multipleProducts": "{{count}} termék",
"filteredProducts": "{{filtered}} a(z) {{total}} termékből",
"filteredOneProduct": "{{filtered}} az 1 termékből",
"xOfYProducts": "{{x}} a(z) {{y}} termékből"
},
"removeFiltersToSee": "Szűrők eltávolítása a termékek megtekintéséhez",
"outOfStock": "Nincs készleten",
"fromXProducts": "{{count}} terméktől",
"removeFiltersToSee": "Szűrők eltávolítása a termékek megtekintéséhez",
"outOfStock": "Nincs készleten",
"fromXProducts": "{{count}} terméktől",
"discount": {
"from3Products": "3 terméktől",
"from5Products": "5 terméktől",
"from7Products": "7 terméktől",
"moreProductsMoreSavings": "Minél több terméket választasz, annál többet spórolsz!"
"from3Products": "3 terméktől",
"from5Products": "5 terméktől",
"from7Products": "7 terméktől",
"moreProductsMoreSavings": "Minél több terméket választasz, annál többet spórolsz!"
}
};

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Kérdés a termékről",
"questionSubtitle": "Van kérdése ezzel a termékkel kapcsolatban? Örömmel segítünk.",
"questionSuccess": "Köszönjük a kérdését! A lehető leghamarabb válaszolunk.",
"nameLabel": "Név",
"namePlaceholder": "Az Ön neve",
"emailLabel": "Email",
"emailPlaceholder": "az.email@pelda.hu",
"questionLabel": "Az Ön kérdése",
"questionPlaceholder": "Írja le kérdését ezzel a termékkel kapcsolatban...",
"photosLabelQuestion": "Csatoljon fényképeket a kérdéséhez (opcionális)",
"submitQuestion": "Kérdés küldése",
"sending": "Küldés...",
"ratingTitle": "Értékelje a terméket",
"ratingSubtitle": "Ossza meg tapasztalatait ezzel a termékkel kapcsolatban, és segítsen más vásárlóknak a döntésben.",
"ratingSuccess": "Köszönjük az értékelését! Ellenőrzés után megjelenik.",
"emailHelper": "Az Ön e-mail címe nem lesz nyilvános",
"ratingLabel": "Értékelés *",
"pleaseRate": "Kérjük, értékeljen",
"ratingStars": "{{rating}} az 5 csillagból",
"reviewLabel": "Az Ön értékelése (opcionális)",
"reviewPlaceholder": "Írja le tapasztalatait ezzel a termékkel kapcsolatban...",
"photosLabelRating": "Csatoljon fényképeket az értékeléséhez (opcionális)",
"submitRating": "Értékelés elküldése",
"errorGeneric": "Hiba történt",
"errorPhotos": "Hiba a fényképek feldolgozása során",
"availabilityTitle": "Készletkérés",
"availabilitySubtitle": "Ez a termék jelenleg nem elérhető. Örömmel értesítjük, amint újra készleten lesz.",
"availabilitySuccessEmail": "Köszönjük a kérését! E-mailben értesítjük, amint a termék újra elérhető.",
"availabilitySuccessTelegram": "Köszönjük a kérését! Telegramon értesítjük, amint a termék újra elérhető.",
"notificationMethodLabel": "Hogyan szeretne értesítést kapni?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@TelegramNeved vagy Telegram ID",
"telegramHelper": "Adja meg Telegram felhasználónevét (@-al) vagy Telegram ID-ját",
"messageLabel": "Üzenet (opcionális)",
"messagePlaceholder": "További információk vagy kérdések...",
"submitAvailability": "Készletkérés",
"photoUploadSelect": "Fényképek kiválasztása",
"photoUploadErrorMaxFiles": "Maximum {{max}} fájl engedélyezett",
"photoUploadErrorFileType": "Csak képfájlok (JPEG, PNG, GIF, WebP) engedélyezettek",
"photoUploadErrorFileSize": "A fájl túl nagy. Maximum: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} fájl kiválasztva",
"photoUploadCompressed": "(feltöltéshez tömörítve)",
"photoUploadRemove": "Kép eltávolítása",
"photoUploadLabelDefault": "Fényképek csatolása (opcionális)",
"shareTitle": "Megosztás",
"shareEmbed": "Beágyazás",
"shareCopyLink": "Link másolása",
"shareSuccessEmbed": "Beágyazási kód a vágólapra másolva!",
"shareErrorEmbed": "Hiba a beágyazási kód másolásakor",
"shareSuccessLink": "Link a vágólapra másolva!",
"shareWhatsAppText": "Nézd meg ezt a terméket: {{name}}",
"shareTelegramText": "Nézd meg ezt a terméket: {{name}}",
"shareEmailSubject": "Termékajánló",
"shareEmailBody": "Szia,\n\nSzeretném ajánlani neked ezt a terméket:\n\n{{name}}\n{{url}}\n\nÜdvözlettel"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Numero articolo",
"manufacturer": "Produttore",
"inclVat": "incl. {{vat}}% IVA",
"inclVatSimple": "incl. IVA",
"priceUnit": "{{price}}/{{unit}}",
"new": "Nuovo",
"weeks": "settimane",
"weeks": "Settimane",
"arriving": "Arrivo:",
"inclVatFooter": "incl. {{vat}}% IVA,*",
"availability": "Disponibilità",
@@ -21,14 +22,14 @@ export default {
"vatShort": "IVA",
"weight": "Peso: {{weight}} kg",
"youSave": "Risparmi: {{amount}}",
"cheaperThanIndividual": "Più conveniente che acquistare singolarmente",
"cheaperThanIndividual": "Più economico che acquistare singolarmente",
"pickupPrice": "Prezzo ritiro: €19,90 per talea.",
"consistsOf": "Composto da:",
"loadingComponentDetails": "{{index}}. Caricamento dettagli componente...",
"loadingProduct": "Caricamento prodotto...",
"individualPriceTotal": "Prezzo totale individuale:",
"setPrice": "Prezzo set:",
"yourSavings": "I tuoi risparmi:",
"yourSavings": "Il tuo risparmio:",
"similarProducts": "Prodotti simili",
"countDisplay": {
"noProducts": "0 prodotti",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Domanda sul prodotto",
"questionSubtitle": "Hai una domanda su questo prodotto? Siamo felici di aiutarti.",
"questionSuccess": "Grazie per la tua domanda! Ti risponderemo il prima possibile.",
"nameLabel": "Nome",
"namePlaceholder": "Il tuo nome",
"emailLabel": "Email",
"emailPlaceholder": "tuo.email@example.com",
"questionLabel": "La tua domanda",
"questionPlaceholder": "Descrivi la tua domanda su questo prodotto...",
"photosLabelQuestion": "Allega foto alla tua domanda (opzionale)",
"submitQuestion": "Invia domanda",
"sending": "Invio in corso...",
"ratingTitle": "Valuta il prodotto",
"ratingSubtitle": "Condividi la tua esperienza con questo prodotto e aiuta altri clienti a prendere una decisione.",
"ratingSuccess": "Grazie per la tua recensione! Sarà pubblicata dopo verifica.",
"emailHelper": "La tua email non sarà pubblicata",
"ratingLabel": "Valutazione *",
"pleaseRate": "Per favore valuta",
"ratingStars": "{{rating}} su 5 stelle",
"reviewLabel": "La tua recensione (opzionale)",
"reviewPlaceholder": "Descrivi la tua esperienza con questo prodotto...",
"photosLabelRating": "Allega foto alla tua recensione (opzionale)",
"submitRating": "Invia recensione",
"errorGeneric": "Si è verificato un errore",
"errorPhotos": "Errore durante l'elaborazione delle foto",
"availabilityTitle": "Richiedi disponibilità",
"availabilitySubtitle": "Questo prodotto non è attualmente disponibile. Saremo felici di informarti non appena sarà di nuovo disponibile.",
"availabilitySuccessEmail": "Grazie per la tua richiesta! Ti informeremo via email non appena il prodotto sarà di nuovo disponibile.",
"availabilitySuccessTelegram": "Grazie per la tua richiesta! Ti informeremo tramite Telegram non appena il prodotto sarà di nuovo disponibile.",
"notificationMethodLabel": "Come desideri essere notificato?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@tuoNomeTelegram o Telegram ID",
"telegramHelper": "Inserisci il tuo nome utente Telegram (con @) o Telegram ID",
"messageLabel": "Messaggio (opzionale)",
"messagePlaceholder": "Informazioni aggiuntive o domande...",
"submitAvailability": "Richiedi disponibilità",
"photoUploadSelect": "Seleziona foto",
"photoUploadErrorMaxFiles": "Massimo {{max}} file consentiti",
"photoUploadErrorFileType": "Sono consentiti solo file immagine (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "File troppo grande. Massimo: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} file selezionato(i)",
"photoUploadCompressed": "(compresso per il caricamento)",
"photoUploadRemove": "Rimuovi immagine",
"photoUploadLabelDefault": "Allega foto (opzionale)",
"shareTitle": "Condividi",
"shareEmbed": "Incorpora",
"shareCopyLink": "Copia link",
"shareSuccessEmbed": "Codice di incorporamento copiato negli appunti!",
"shareErrorEmbed": "Errore durante la copia del codice di incorporamento",
"shareSuccessLink": "Link copiato negli appunti!",
"shareWhatsAppText": "Dai un'occhiata a questo prodotto: {{name}}",
"shareTelegramText": "Dai un'occhiata a questo prodotto: {{name}}",
"shareEmailSubject": "Raccomandazione prodotto",
"shareEmailBody": "Ciao,\n\nvorrei consigliarti questo prodotto:\n\n{{name}}\n{{url}}\n\nCordiali saluti"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,25 +8,26 @@ export default {
"articleNumber": "Numer artykułu",
"manufacturer": "Producent",
"inclVat": "zawiera {{vat}}% VAT",
"inclVatSimple": "z VAT",
"priceUnit": "{{price}}/{{unit}}",
"new": "Nowy",
"weeks": "tygodnie",
"weeks": "Tygodnie",
"arriving": "Przyjazd:",
"inclVatFooter": "zawiera {{vat}}% VAT,*",
"availability": "Dostępność",
"inStock": "w magazynie",
"inStock": "na stanie",
"comingSoon": "Wkrótce dostępne",
"deliveryTime": "Czas dostawy",
"inclShort": "zawiera",
"inclShort": "zaw.",
"vatShort": "VAT",
"weight": "Waga: {{weight}} kg",
"youSave": "Oszczędzasz: {{amount}}",
"cheaperThanIndividual": "Tańsze niż kupowanie osobno",
"cheaperThanIndividual": "Tańsze niż zakup pojedynczy",
"pickupPrice": "Cena odbioru: 19,90 € za sadzonkę.",
"consistsOf": "Składa się z:",
"loadingComponentDetails": "{{index}}. Ładowanie szczegółów komponentu...",
"loadingProduct": "Produkt jest ładowany...",
"individualPriceTotal": "Całkowita cena indywidualna:",
"loadingProduct": "Ładowanie produktu...",
"individualPriceTotal": "Łączna cena pojedyncza:",
"setPrice": "Cena zestawu:",
"yourSavings": "Twoje oszczędności:",
"similarProducts": "Podobne produkty",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Pytanie o produkt",
"questionSubtitle": "Masz pytanie dotyczące tego produktu? Chętnie pomożemy.",
"questionSuccess": "Dziękujemy za Twoje pytanie! Skontaktujemy się z Tobą jak najszybciej.",
"nameLabel": "Imię",
"namePlaceholder": "Twoje imię",
"emailLabel": "Email",
"emailPlaceholder": "twoj.email@przyklad.com",
"questionLabel": "Twoje pytanie",
"questionPlaceholder": "Opisz swoje pytanie dotyczące tego produktu...",
"photosLabelQuestion": "Dołącz zdjęcia do pytania (opcjonalnie)",
"submitQuestion": "Wyślij pytanie",
"sending": "Wysyłanie...",
"ratingTitle": "Oceń produkt",
"ratingSubtitle": "Podziel się swoimi doświadczeniami z tym produktem i pomóż innym klientom podjąć decyzję.",
"ratingSuccess": "Dziękujemy za Twoją opinię! Zostanie opublikowana po weryfikacji.",
"emailHelper": "Twój email nie zostanie opublikowany",
"ratingLabel": "Ocena *",
"pleaseRate": "Proszę oceń",
"ratingStars": "{{rating}} z 5 gwiazdek",
"reviewLabel": "Twoja opinia (opcjonalnie)",
"reviewPlaceholder": "Opisz swoje doświadczenia z tym produktem...",
"photosLabelRating": "Dołącz zdjęcia do opinii (opcjonalnie)",
"submitRating": "Prześlij opinię",
"errorGeneric": "Wystąpił błąd",
"errorPhotos": "Błąd podczas przetwarzania zdjęć",
"availabilityTitle": "Zapytaj o dostępność",
"availabilitySubtitle": "Ten produkt jest obecnie niedostępny. Poinformujemy Cię, gdy tylko będzie ponownie dostępny.",
"availabilitySuccessEmail": "Dziękujemy za zapytanie! Poinformujemy Cię mailowo, gdy produkt będzie ponownie dostępny.",
"availabilitySuccessTelegram": "Dziękujemy za zapytanie! Poinformujemy Cię przez Telegram, gdy produkt będzie ponownie dostępny.",
"notificationMethodLabel": "Jak chcesz otrzymać powiadomienie?",
"telegramBotLabel": "Bot Telegram",
"telegramIdLabel": "ID Telegram",
"telegramPlaceholder": "@twojTelegram lub ID Telegram",
"telegramHelper": "Wpisz swoją nazwę użytkownika Telegram (z @) lub ID Telegram",
"messageLabel": "Wiadomość (opcjonalnie)",
"messagePlaceholder": "Dodatkowe informacje lub pytania...",
"submitAvailability": "Zapytaj o dostępność",
"photoUploadSelect": "Wybierz zdjęcia",
"photoUploadErrorMaxFiles": "Dozwolona maksymalna liczba plików to {{max}}",
"photoUploadErrorFileType": "Dozwolone są tylko pliki graficzne (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Plik jest za duży. Maksymalny rozmiar: {{maxSize}}MB",
"photoUploadSelectedFiles": "Wybrano {{count}} plik(ów)",
"photoUploadCompressed": "(skompresowane do wysłania)",
"photoUploadRemove": "Usuń obraz",
"photoUploadLabelDefault": "Dołącz zdjęcia (opcjonalnie)",
"shareTitle": "Udostępnij",
"shareEmbed": "Osadź",
"shareCopyLink": "Kopiuj link",
"shareSuccessEmbed": "Kod do osadzenia skopiowany do schowka!",
"shareErrorEmbed": "Błąd podczas kopiowania kodu do osadzenia",
"shareSuccessLink": "Link skopiowany do schowka!",
"shareWhatsAppText": "Sprawdź ten produkt: {{name}}",
"shareTelegramText": "Sprawdź ten produkt: {{name}}",
"shareEmailSubject": "Polecenie produktu",
"shareEmailBody": "Cześć,\n\nChciałbym polecić Ci ten produkt:\n\n{{name}}\n{{url}}\n\nPozdrawiam"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,14 +8,15 @@ export default {
"articleNumber": "Număr articol",
"manufacturer": "Producător",
"inclVat": "incl. {{vat}}% TVA",
"inclVatSimple": "incl. TVA",
"priceUnit": "{{price}}/{{unit}}",
"new": "Nou",
"weeks": "săptămâni",
"weeks": "Săptămâni",
"arriving": "Sosire:",
"inclVatFooter": "incl. {{vat}}% TVA,*",
"availability": "Disponibilitate",
"inStock": "în stoc",
"comingSoon": "În curând disponibil",
"comingSoon": "În curând",
"deliveryTime": "Timp de livrare",
"inclShort": "incl.",
"vatShort": "TVA",
@@ -25,7 +26,7 @@ export default {
"pickupPrice": "Preț ridicare: 19,90 € per butaș.",
"consistsOf": "Constă din:",
"loadingComponentDetails": "{{index}}. Se încarcă detalii componentă...",
"loadingProduct": "Produsul se încarcă...",
"loadingProduct": "Se încarcă produsul...",
"individualPriceTotal": "Preț individual total:",
"setPrice": "Preț set:",
"yourSavings": "Economiile dvs.:",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Întrebare despre produs",
"questionSubtitle": "Aveți o întrebare despre acest produs? Suntem bucuroși să vă ajutăm.",
"questionSuccess": "Vă mulțumim pentru întrebare! Vă vom contacta cât mai curând posibil.",
"nameLabel": "Nume",
"namePlaceholder": "Numele dumneavoastră",
"emailLabel": "Email",
"emailPlaceholder": "adresa.dumneavoastră@example.com",
"questionLabel": "Întrebarea dumneavoastră",
"questionPlaceholder": "Descrieți întrebarea dumneavoastră despre acest produs...",
"photosLabelQuestion": "Atașați fotografii la întrebare (opțional)",
"submitQuestion": "Trimite întrebare",
"sending": "Se trimite...",
"ratingTitle": "Evaluează produsul",
"ratingSubtitle": "Împărtășiți experiența dumneavoastră cu acest produs și ajutați alți clienți să ia o decizie.",
"ratingSuccess": "Vă mulțumim pentru recenzie! Aceasta va fi publicată după verificare.",
"emailHelper": "Emailul dumneavoastră nu va fi publicat",
"ratingLabel": "Evaluare *",
"pleaseRate": "Vă rugăm să evaluați",
"ratingStars": "{{rating}} din 5 stele",
"reviewLabel": "Recenzia dumneavoastră (opțional)",
"reviewPlaceholder": "Descrieți experiențele dumneavoastră cu acest produs...",
"photosLabelRating": "Atașați fotografii la recenzie (opțional)",
"submitRating": "Trimite recenzia",
"errorGeneric": "A apărut o eroare",
"errorPhotos": "Eroare la procesarea fotografiilor",
"availabilityTitle": "Solicită disponibilitate",
"availabilitySubtitle": "Acest produs nu este disponibil momentan. Vă vom informa cu plăcere de îndată ce va fi din nou în stoc.",
"availabilitySuccessEmail": "Vă mulțumim pentru solicitare! Vă vom notifica prin email de îndată ce produsul va fi din nou disponibil.",
"availabilitySuccessTelegram": "Vă mulțumim pentru solicitare! Vă vom notifica prin Telegram de îndată ce produsul va fi din nou disponibil.",
"notificationMethodLabel": "Cum doriți să fiți notificat?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@numeleTauTelegram sau Telegram ID",
"telegramHelper": "Introduceți numele dumneavoastră de utilizator Telegram (cu @) sau Telegram ID",
"messageLabel": "Mesaj (opțional)",
"messagePlaceholder": "Informații suplimentare sau întrebări...",
"submitAvailability": "Solicită disponibilitate",
"photoUploadSelect": "Selectați fotografii",
"photoUploadErrorMaxFiles": "Maximum {{max}} fișiere permise",
"photoUploadErrorFileType": "Sunt permise doar fișiere imagine (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Fișier prea mare. Maxim: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} fișier(e) selectat(e)",
"photoUploadCompressed": "(comprimat pentru încărcare)",
"photoUploadRemove": "Elimină imaginea",
"photoUploadLabelDefault": "Atașați fotografii (opțional)",
"shareTitle": "Distribuie",
"shareEmbed": "Încorporează",
"shareCopyLink": "Copiază linkul",
"shareSuccessEmbed": "Codul de încorporare a fost copiat în clipboard!",
"shareErrorEmbed": "Eroare la copierea codului de încorporare",
"shareSuccessLink": "Linkul a fost copiat în clipboard!",
"shareWhatsAppText": "Vezi acest produs: {{name}}",
"shareTelegramText": "Vezi acest produs: {{name}}",
"shareEmailSubject": "Recomandare produs",
"shareEmailBody": "Bună,\n\nAș dori să-ți recomand acest produs:\n\n{{name}}\n{{url}}\n\nCu stimă"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Артикул",
"manufacturer": "Производитель",
"inclVat": "включая {{vat}}% НДС",
"inclVatSimple": "включая НДС",
"priceUnit": "{{price}}/{{unit}}",
"new": "Новый",
"weeks": "недели",
"weeks": "Недели",
"arriving": "Прибытие:",
"inclVatFooter": "включая {{vat}}% НДС,*",
"availability": "Наличие",
@@ -22,10 +23,10 @@ export default {
"weight": "Вес: {{weight}} кг",
"youSave": "Вы экономите: {{amount}}",
"cheaperThanIndividual": "Дешевле, чем покупать по отдельности",
"pickupPrice": "Цена при самовывозе: 19.90 за черенок.",
"pickupPrice": "Цена при самовывозе: 19,90 за черенок.",
"consistsOf": "Состоит из:",
"loadingComponentDetails": "{{index}}. Загрузка деталей компонента...",
"loadingProduct": "Продукт загружается...",
"loadingProduct": "Загрузка продукта...",
"individualPriceTotal": "Общая цена по отдельности:",
"setPrice": "Цена набора:",
"yourSavings": "Ваша экономия:",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Вопрос о товаре",
"questionSubtitle": "У вас есть вопрос по этому товару? Мы рады помочь вам.",
"questionSuccess": "Спасибо за ваш вопрос! Мы свяжемся с вами как можно скорее.",
"nameLabel": "Имя",
"namePlaceholder": "Ваше имя",
"emailLabel": "Электронная почта",
"emailPlaceholder": "your.email@example.com",
"questionLabel": "Ваш вопрос",
"questionPlaceholder": "Опишите ваш вопрос по этому товару...",
"photosLabelQuestion": "Прикрепите фотографии к вашему вопросу (необязательно)",
"submitQuestion": "Отправить вопрос",
"sending": "Отправка...",
"ratingTitle": "Оцените товар",
"ratingSubtitle": "Поделитесь своим опытом использования этого товара и помогите другим покупателям сделать выбор.",
"ratingSuccess": "Спасибо за ваш отзыв! Он будет опубликован после проверки.",
"emailHelper": "Ваш email не будет опубликован",
"ratingLabel": "Оценка *",
"pleaseRate": "Пожалуйста, оцените",
"ratingStars": "{{rating}} из 5 звезд",
"reviewLabel": "Ваш отзыв (необязательно)",
"reviewPlaceholder": "Опишите ваш опыт использования этого товара...",
"photosLabelRating": "Прикрепите фотографии к вашему отзыву (необязательно)",
"submitRating": "Отправить отзыв",
"errorGeneric": "Произошла ошибка",
"errorPhotos": "Ошибка при обработке фотографий",
"availabilityTitle": "Запросить наличие",
"availabilitySubtitle": "Этот товар в настоящее время недоступен. Мы с радостью сообщим вам, как только он появится в наличии.",
"availabilitySuccessEmail": "Спасибо за ваш запрос! Мы уведомим вас по электронной почте, как только товар снова будет доступен.",
"availabilitySuccessTelegram": "Спасибо за ваш запрос! Мы уведомим вас через Telegram, как только товар снова будет доступен.",
"notificationMethodLabel": "Как вы хотите получить уведомление?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@yourTelegramName or Telegram ID",
"telegramHelper": "Введите ваше имя пользователя Telegram (с @) или Telegram ID",
"messageLabel": "Сообщение (необязательно)",
"messagePlaceholder": "Дополнительная информация или вопросы...",
"submitAvailability": "Запросить наличие",
"photoUploadSelect": "Выбрать фотографии",
"photoUploadErrorMaxFiles": "Максимум разрешено {{max}} файлов",
"photoUploadErrorFileType": "Разрешены только изображения (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Файл слишком большой. Максимум: {{maxSize}}МБ",
"photoUploadSelectedFiles": "Выбрано {{count}} файл(ов)",
"photoUploadCompressed": "(сжат для загрузки)",
"photoUploadRemove": "Удалить изображение",
"photoUploadLabelDefault": "Прикрепить фотографии (необязательно)",
"shareTitle": "Поделиться",
"shareEmbed": "Встроить",
"shareCopyLink": "Копировать ссылку",
"shareSuccessEmbed": "Код для встраивания скопирован в буфер обмена!",
"shareErrorEmbed": "Ошибка при копировании кода для встраивания",
"shareSuccessLink": "Ссылка скопирована в буфер обмена!",
"shareWhatsAppText": "Посмотрите этот товар: {{name}}",
"shareTelegramText": "Посмотрите этот товар: {{name}}",
"shareEmailSubject": "Рекомендация товара",
"shareEmailBody": "Здравствуйте,\n\nХочу порекомендовать вам этот товар:\n\n{{name}}\n{{url}}\n\nС наилучшими пожеланиями"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -1,16 +1,17 @@
export default {
"loading": "Načítava sa produkt...",
"loadingDescription": "Načítava sa popis produktu...",
"loading": "Načítavam produkt...",
"loadingDescription": "Načítavam popis produktu...",
"notFound": "Produkt nenájdený",
"notFoundDescription": "Produkt, ktorý hľadáte, neexistuje alebo bol odstránený.",
"backToHome": "Späť na domovskú stránku",
"error": "Chyba",
"articleNumber": "Číslo článku",
"articleNumber": "Číslo produktu",
"manufacturer": "Výrobca",
"inclVat": "vrátane {{vat}}% DPH",
"inclVatSimple": "vrátane DPH",
"priceUnit": "{{price}}/{{unit}}",
"new": "Nové",
"weeks": "týždne",
"weeks": "Týždne",
"arriving": "Príchod:",
"inclVatFooter": "vrátane {{vat}}% DPH,*",
"availability": "Dostupnosť",
@@ -24,8 +25,8 @@ export default {
"cheaperThanIndividual": "Lacnejšie ako kúpa jednotlivých kusov",
"pickupPrice": "Cena pri osobnom odbere: 19,90 € za odrezok.",
"consistsOf": "Skladá sa z:",
"loadingComponentDetails": "{{index}}. Načítavajú sa detaily komponentu...",
"loadingProduct": "Produkt sa načítava...",
"loadingComponentDetails": "{{index}}. Načítavam detaily komponentu...",
"loadingProduct": "Načítavam produkt...",
"individualPriceTotal": "Celková cena jednotlivých kusov:",
"setPrice": "Cena setu:",
"yourSavings": "Vaša úspora:",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Otázka o produkte",
"questionSubtitle": "Máte otázku ohľadom tohto produktu? Radi vám pomôžeme.",
"questionSuccess": "Ďakujeme za vašu otázku! Čoskoro sa vám ozveme.",
"nameLabel": "Meno",
"namePlaceholder": "Vaše meno",
"emailLabel": "Email",
"emailPlaceholder": "vas.email@priklad.sk",
"questionLabel": "Vaša otázka",
"questionPlaceholder": "Popíšte svoju otázku ohľadom tohto produktu...",
"photosLabelQuestion": "Priložte fotografie k vašej otázke (voliteľné)",
"submitQuestion": "Odoslať otázku",
"sending": "Odosielanie...",
"ratingTitle": "Ohodnoťte produkt",
"ratingSubtitle": "Podeľte sa o svoje skúsenosti s týmto produktom a pomôžte ostatným zákazníkom pri rozhodovaní.",
"ratingSuccess": "Ďakujeme za vašu recenziu! Bude zverejnená po overení.",
"emailHelper": "Váš email nebude zverejnený",
"ratingLabel": "Hodnotenie *",
"pleaseRate": "Prosím ohodnoťte",
"ratingStars": "{{rating}} z 5 hviezdičiek",
"reviewLabel": "Vaša recenzia (voliteľné)",
"reviewPlaceholder": "Popíšte svoje skúsenosti s týmto produktom...",
"photosLabelRating": "Priložte fotografie k vašej recenzii (voliteľné)",
"submitRating": "Odoslať recenziu",
"errorGeneric": "Vyskytla sa chyba",
"errorPhotos": "Chyba pri spracovaní fotografií",
"availabilityTitle": "Požiadať o dostupnosť",
"availabilitySubtitle": "Tento produkt momentálne nie je dostupný. Radi vás budeme informovať, akonáhle bude opäť na sklade.",
"availabilitySuccessEmail": "Ďakujeme za vašu žiadosť! O dostupnosti produktu vás budeme informovať emailom.",
"availabilitySuccessTelegram": "Ďakujeme za vašu žiadosť! O dostupnosti produktu vás budeme informovať cez Telegram.",
"notificationMethodLabel": "Ako by ste chceli byť informovaní?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@vasTelegramMeno alebo Telegram ID",
"telegramHelper": "Zadajte svoje Telegram používateľské meno (s @) alebo Telegram ID",
"messageLabel": "Správa (voliteľné)",
"messagePlaceholder": "Dodatočné informácie alebo otázky...",
"submitAvailability": "Požiadať o dostupnosť",
"photoUploadSelect": "Vybrať fotografie",
"photoUploadErrorMaxFiles": "Maximálne povolených {{max}} súborov",
"photoUploadErrorFileType": "Povolené sú len obrázkové súbory (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Súbor je príliš veľký. Maximálne: {{maxSize}}MB",
"photoUploadSelectedFiles": "Vybraných {{count}} súborov",
"photoUploadCompressed": "(komprimované pre nahrávanie)",
"photoUploadRemove": "Odstrániť obrázok",
"photoUploadLabelDefault": "Priložiť fotografie (voliteľné)",
"shareTitle": "Zdieľať",
"shareEmbed": "Vložiť",
"shareCopyLink": "Kopírovať odkaz",
"shareSuccessEmbed": "Kód na vloženie bol skopírovaný do schránky!",
"shareErrorEmbed": "Chyba pri kopírovaní kódu na vloženie",
"shareSuccessLink": "Odkaz bol skopírovaný do schránky!",
"shareWhatsAppText": "Pozrite si tento produkt: {{name}}",
"shareTelegramText": "Pozrite si tento produkt: {{name}}",
"shareEmailSubject": "Odporúčanie produktu",
"shareEmailBody": "Dobrý deň,\n\nchcel by som vám odporučiť tento produkt:\n\n{{name}}\n{{url}}\n\nS pozdravom"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Številka artikla",
"manufacturer": "Proizvajalec",
"inclVat": "vključno z {{vat}}% DDV",
"inclVatSimple": "vključno z DDV",
"priceUnit": "{{price}}/{{unit}}",
"new": "Novo",
"weeks": "tedni",
"weeks": "Tedni",
"arriving": "Prihod:",
"inclVatFooter": "vključno z {{vat}}% DDV,*",
"availability": "Razpoložljivost",
@@ -25,7 +26,7 @@ export default {
"pickupPrice": "Cena prevzema: 19,90 € na potaknjenca.",
"consistsOf": "Sestavljeno iz:",
"loadingComponentDetails": "{{index}}. Nalaganje podrobnosti komponente...",
"loadingProduct": "Izdelek se nalaga...",
"loadingProduct": "Nalaganje izdelka...",
"individualPriceTotal": "Skupna cena posamezno:",
"setPrice": "Cena kompleta:",
"yourSavings": "Vaš prihranek:",
@@ -33,12 +34,12 @@ export default {
"countDisplay": {
"noProducts": "0 izdelkov",
"oneProduct": "1 izdelek",
"multipleProducts": "{{count}} izdelki",
"multipleProducts": "{{count}} izdelkov",
"filteredProducts": "{{filtered}} od {{total}} izdelkov",
"filteredOneProduct": "{{filtered}} od 1 izdelka",
"xOfYProducts": "{{x}} od {{y}} izdelkov"
},
"removeFiltersToSee": "Odstranite filtre, da vidite izdelke",
"removeFiltersToSee": "Odstranite filtre za prikaz izdelkov",
"outOfStock": "Ni na zalogi",
"fromXProducts": "od {{count}} izdelkov",
"discount": {

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Vprašanje o izdelku",
"questionSubtitle": "Imate vprašanje o tem izdelku? Z veseljem vam pomagamo.",
"questionSuccess": "Hvala za vaše vprašanje! Odgovorili vam bomo čim prej.",
"nameLabel": "Ime",
"namePlaceholder": "Vaše ime",
"emailLabel": "E-pošta",
"emailPlaceholder": "vas.email@primer.si",
"questionLabel": "Vaše vprašanje",
"questionPlaceholder": "Opis vašega vprašanja o tem izdelku...",
"photosLabelQuestion": "Priložite fotografije k vašemu vprašanju (neobvezno)",
"submitQuestion": "Pošlji vprašanje",
"sending": "Pošiljanje...",
"ratingTitle": "Oceni izdelek",
"ratingSubtitle": "Delite svoje izkušnje z izdelkom in pomagajte drugim kupcem pri odločitvi.",
"ratingSuccess": "Hvala za vašo oceno! Objavljena bo po preverjanju.",
"emailHelper": "Vaš e-poštni naslov ne bo objavljen",
"ratingLabel": "Ocena *",
"pleaseRate": "Prosimo, ocenite",
"ratingStars": "{{rating}} od 5 zvezdic",
"reviewLabel": "Vaša ocena (neobvezno)",
"reviewPlaceholder": "Opis vaših izkušenj s tem izdelkom...",
"photosLabelRating": "Priložite fotografije k vaši oceni (neobvezno)",
"submitRating": "Oddaj oceno",
"errorGeneric": "Prišlo je do napake",
"errorPhotos": "Napaka pri obdelavi fotografij",
"availabilityTitle": "Povprašajte o razpoložljivosti",
"availabilitySubtitle": "Ta izdelek trenutno ni na voljo. Z veseljem vas bomo obvestili, ko bo spet na zalogi.",
"availabilitySuccessEmail": "Hvala za vaše povpraševanje! Obvestili vas bomo po e-pošti, ko bo izdelek spet na voljo.",
"availabilitySuccessTelegram": "Hvala za vaše povpraševanje! Obvestili vas bomo preko Telegrama, ko bo izdelek spet na voljo.",
"notificationMethodLabel": "Kako želite biti obveščeni?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@vašeTelegramIme ali Telegram ID",
"telegramHelper": "Vnesite svoje Telegram uporabniško ime (z @) ali Telegram ID",
"messageLabel": "Sporočilo (neobvezno)",
"messagePlaceholder": "Dodatne informacije ali vprašanja...",
"submitAvailability": "Povprašajte o razpoložljivosti",
"photoUploadSelect": "Izberite fotografije",
"photoUploadErrorMaxFiles": "Dovoljeno največ {{max}} datotek",
"photoUploadErrorFileType": "Dovoljene so samo slikovne datoteke (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Datoteka je prevelika. Največ: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} datoteka(e) izbrana(e)",
"photoUploadCompressed": "(stisnjeno za nalaganje)",
"photoUploadRemove": "Odstrani sliko",
"photoUploadLabelDefault": "Priložite fotografije (neobvezno)",
"shareTitle": "Deli",
"shareEmbed": "Vstavi",
"shareCopyLink": "Kopiraj povezavo",
"shareSuccessEmbed": "Koda za vstavljanje je bila kopirana v odložišče!",
"shareErrorEmbed": "Napaka pri kopiranju kode za vstavljanje",
"shareSuccessLink": "Povezava je bila kopirana v odložišče!",
"shareWhatsAppText": "Oglejte si ta izdelek: {{name}}",
"shareTelegramText": "Oglejte si ta izdelek: {{name}}",
"shareEmailSubject": "Priporočilo izdelka",
"shareEmailBody": "Pozdravljeni,\n\nrad bi vam priporočil ta izdelek:\n\n{{name}}\n{{url}}\n\nLep pozdrav"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Numri i artikullit",
"manufacturer": "Prodhuesi",
"inclVat": "përfshirë {{vat}}% TVSH",
"inclVatSimple": "përfshirë TVSH",
"priceUnit": "{{price}}/{{unit}}",
"new": "I ri",
"weeks": "javë",
"weeks": "Javë",
"arriving": "Arritja:",
"inclVatFooter": "përfshirë {{vat}}% TVSH,*",
"availability": "Disponueshmëria",
@@ -25,7 +26,7 @@ export default {
"pickupPrice": "Çmimi për marrje: 19,90 € për prerje.",
"consistsOf": "Përbëhet nga:",
"loadingComponentDetails": "{{index}}. Duke ngarkuar detajet e komponentit...",
"loadingProduct": "Produkti po ngarkohet...",
"loadingProduct": "Duke ngarkuar produktin...",
"individualPriceTotal": "Çmimi total individual:",
"setPrice": "Çmimi i setit:",
"yourSavings": "Kursimet tuaja:",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Pyetje rreth produktit",
"questionSubtitle": "Keni një pyetje rreth këtij produkti? Ne jemi të lumtur t'ju ndihmojmë.",
"questionSuccess": "Faleminderit për pyetjen tuaj! Do t'ju kontaktojmë sa më shpejt të jetë e mundur.",
"nameLabel": "Emri",
"namePlaceholder": "Emri juaj",
"emailLabel": "Email",
"emailPlaceholder": "emaili.juaj@example.com",
"questionLabel": "Pyetja juaj",
"questionPlaceholder": "Përshkruani pyetjen tuaj rreth këtij produkti...",
"photosLabelQuestion": "Bashkëngjitni foto me pyetjen tuaj (opsionale)",
"submitQuestion": "Dërgo pyetjen",
"sending": "Duke dërguar...",
"ratingTitle": "Vlerëso produktin",
"ratingSubtitle": "Ndani përvojën tuaj me këtë produkt dhe ndihmoni klientët e tjerë të marrin vendimin.",
"ratingSuccess": "Faleminderit për vlerësimin tuaj! Ai do të publikohet pas verifikimit.",
"emailHelper": "Emaili juaj nuk do të publikohet",
"ratingLabel": "Vlerësimi *",
"pleaseRate": "Ju lutemi vlerësoni",
"ratingStars": "{{rating}} nga 5 yje",
"reviewLabel": "Rishikimi juaj (opsional)",
"reviewPlaceholder": "Përshkruani përvojat tuaja me këtë produkt...",
"photosLabelRating": "Bashkëngjitni foto me rishikimin tuaj (opsionale)",
"submitRating": "Dërgo rishikimin",
"errorGeneric": "Ndodhi një gabim",
"errorPhotos": "Gabim gjatë përpunimit të fotove",
"availabilityTitle": "Kërko disponueshmërinë",
"availabilitySubtitle": "Ky produkt aktualisht nuk është në dispozicion. Ne do të jemi të lumtur t'ju njoftojmë sapo të jetë përsëri në stok.",
"availabilitySuccessEmail": "Faleminderit për kërkesën tuaj! Do t'ju njoftojmë me email sapo produkti të jetë përsëri në dispozicion.",
"availabilitySuccessTelegram": "Faleminderit për kërkesën tuaj! Do t'ju njoftojmë përmes Telegram sapo produkti të jetë përsëri në dispozicion.",
"notificationMethodLabel": "Si dëshironi të njoftoheni?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@emriJuajTelegram ose Telegram ID",
"telegramHelper": "Shkruani emrin tuaj të përdoruesit në Telegram (me @) ose Telegram ID-në tuaj",
"messageLabel": "Mesazh (opsional)",
"messagePlaceholder": "Informacione shtesë ose pyetje...",
"submitAvailability": "Kërko disponueshmërinë",
"photoUploadSelect": "Zgjidh foto",
"photoUploadErrorMaxFiles": "Maksimumi {{max}} skedarë të lejuar",
"photoUploadErrorFileType": "Lejohen vetëm skedarë imazhi (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Skedari është shumë i madh. Maksimumi: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} skedar(e) të zgjedhur",
"photoUploadCompressed": "(i kompresuar për ngarkim)",
"photoUploadRemove": "Hiq imazhin",
"photoUploadLabelDefault": "Bashkëngjit foto (opsionale)",
"shareTitle": "Ndaj",
"shareEmbed": "Fut",
"shareCopyLink": "Kopjo lidhjen",
"shareSuccessEmbed": "Kodi i futjes u kopjua në memorien e përkohshme!",
"shareErrorEmbed": "Gabim gjatë kopjimit të kodit të futjes",
"shareSuccessLink": "Lidhja u kopjua në memorien e përkohshme!",
"shareWhatsAppText": "Shiko këtë produkt: {{name}}",
"shareTelegramText": "Shiko këtë produkt: {{name}}",
"shareEmailSubject": "Rekomandim produkti",
"shareEmailBody": "Përshëndetje,\n\nDëshiroj t'ju rekomandoj këtë produkt:\n\n{{name}}\n{{url}}\n\nMe respekt"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Broj artikla",
"manufacturer": "Proizvođač",
"inclVat": "uključujući {{vat}}% PDV",
"inclVatSimple": "uključujući PDV",
"priceUnit": "{{price}}/{{unit}}",
"new": "Novo",
"weeks": "nedelja",
"weeks": "Nedelje",
"arriving": "Dolazak:",
"inclVatFooter": "uključujući {{vat}}% PDV,*",
"availability": "Dostupnost",
@@ -25,7 +26,7 @@ export default {
"pickupPrice": "Cena preuzimanja: 19,90 € po reznici.",
"consistsOf": "Sastoji se od:",
"loadingComponentDetails": "{{index}}. Učitavanje detalja komponente...",
"loadingProduct": "Proizvod se učitava...",
"loadingProduct": "Učitavanje proizvoda...",
"individualPriceTotal": "Ukupna pojedinačna cena:",
"setPrice": "Cena kompleta:",
"yourSavings": "Vaša ušteda:",
@@ -45,6 +46,6 @@ export default {
"from3Products": "od 3 proizvoda",
"from5Products": "od 5 proizvoda",
"from7Products": "od 7 proizvoda",
"moreProductsMoreSavings": "Što više proizvoda izaberete, više štedite!"
"moreProductsMoreSavings": "Što više proizvoda izaberete, to više štedite!"
}
};

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Pitanje o proizvodu",
"questionSubtitle": "Imate li pitanje u vezi ovog proizvoda? Rado ćemo vam pomoći.",
"questionSuccess": "Hvala vam na pitanju! Javićemo vam se što je pre moguće.",
"nameLabel": "Ime",
"namePlaceholder": "Vaše ime",
"emailLabel": "Email",
"emailPlaceholder": "vas.email@example.com",
"questionLabel": "Vaše pitanje",
"questionPlaceholder": "Opišite svoje pitanje u vezi ovog proizvoda...",
"photosLabelQuestion": "Priložite fotografije uz pitanje (opciono)",
"submitQuestion": "Pošalji pitanje",
"sending": "Šalje se...",
"ratingTitle": "Oceni proizvod",
"ratingSubtitle": "Podelite svoje iskustvo sa ovim proizvodom i pomozite drugim kupcima da donesu odluku.",
"ratingSuccess": "Hvala vam na oceni! Biće objavljena nakon provere.",
"emailHelper": "Vaš email neće biti objavljen",
"ratingLabel": "Ocena *",
"pleaseRate": "Molimo ocenite",
"ratingStars": "{{rating}} od 5 zvezdica",
"reviewLabel": "Vaša recenzija (opciono)",
"reviewPlaceholder": "Opišite svoja iskustva sa ovim proizvodom...",
"photosLabelRating": "Priložite fotografije uz recenziju (opciono)",
"submitRating": "Pošalji recenziju",
"errorGeneric": "Došlo je do greške",
"errorPhotos": "Greška pri obradi fotografija",
"availabilityTitle": "Zahtevajte dostupnost",
"availabilitySubtitle": "Ovaj proizvod trenutno nije dostupan. Rado ćemo vas obavestiti čim ponovo bude na stanju.",
"availabilitySuccessEmail": "Hvala vam na zahtevu! Obavestićemo vas putem emaila čim proizvod ponovo bude dostupan.",
"availabilitySuccessTelegram": "Hvala vam na zahtevu! Obavestićemo vas putem Telegrama čim proizvod ponovo bude dostupan.",
"notificationMethodLabel": "Kako želite da budete obavešteni?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@vašeTelegramIme ili Telegram ID",
"telegramHelper": "Unesite svoje Telegram korisničko ime (sa @) ili Telegram ID",
"messageLabel": "Poruka (opciono)",
"messagePlaceholder": "Dodatne informacije ili pitanja...",
"submitAvailability": "Zahtevaj dostupnost",
"photoUploadSelect": "Izaberite fotografije",
"photoUploadErrorMaxFiles": "Dozvoljeno je maksimalno {{max}} fajlova",
"photoUploadErrorFileType": "Dozvoljeni su samo slikovni fajlovi (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Fajl je prevelik. Maksimum: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} fajl(ova) izabrano",
"photoUploadCompressed": "(kompresovano za upload)",
"photoUploadRemove": "Ukloni sliku",
"photoUploadLabelDefault": "Priložite fotografije (opciono)",
"shareTitle": "Podeli",
"shareEmbed": "Ugradi",
"shareCopyLink": "Kopiraj link",
"shareSuccessEmbed": "Kod za ugradnju je kopiran u međuspremnik!",
"shareErrorEmbed": "Greška pri kopiranju koda za ugradnju",
"shareSuccessLink": "Link je kopiran u međuspremnik!",
"shareWhatsAppText": "Pogledaj ovaj proizvod: {{name}}",
"shareTelegramText": "Pogledaj ovaj proizvod: {{name}}",
"shareEmailSubject": "Preporuka proizvoda",
"shareEmailBody": "Zdravo,\n\nŽelim da ti preporučim ovaj proizvod:\n\n{{name}}\n{{url}}\n\nSrdačan pozdrav"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Artikelnummer",
"manufacturer": "Tillverkare",
"inclVat": "inkl. {{vat}}% moms",
"inclVatSimple": "inkl. moms",
"priceUnit": "{{price}}/{{unit}}",
"new": "Ny",
"weeks": "veckor",
"weeks": "Veckor",
"arriving": "Ankomst:",
"inclVatFooter": "inkl. {{vat}}% moms,*",
"availability": "Tillgänglighet",
@@ -22,13 +23,13 @@ export default {
"weight": "Vikt: {{weight}} kg",
"youSave": "Du sparar: {{amount}}",
"cheaperThanIndividual": "Billigare än att köpa separat",
"pickupPrice": "Avhämtningspris: 19,90 € per stickling.",
"pickupPrice": "Upphämtningspris: 19,90 € per stickling.",
"consistsOf": "Består av:",
"loadingComponentDetails": "{{index}}. Laddar komponentdetaljer...",
"loadingProduct": "Produkten laddas...",
"loadingProduct": "Laddar produkt...",
"individualPriceTotal": "Total individuellt pris:",
"setPrice": "Setpris:",
"yourSavings": "Din besparing:",
"yourSavings": "Dina besparingar:",
"similarProducts": "Liknande produkter",
"countDisplay": {
"noProducts": "0 produkter",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Fråga om produkten",
"questionSubtitle": "Har du en fråga om denna produkt? Vi hjälper dig gärna.",
"questionSuccess": "Tack för din fråga! Vi återkommer till dig så snart som möjligt.",
"nameLabel": "Namn",
"namePlaceholder": "Ditt namn",
"emailLabel": "E-post",
"emailPlaceholder": "din.epost@example.com",
"questionLabel": "Din fråga",
"questionPlaceholder": "Beskriv din fråga om denna produkt...",
"photosLabelQuestion": "Bifoga bilder till din fråga (valfritt)",
"submitQuestion": "Skicka fråga",
"sending": "Skickar...",
"ratingTitle": "Betygsätt produkt",
"ratingSubtitle": "Dela din erfarenhet av denna produkt och hjälp andra kunder att fatta beslut.",
"ratingSuccess": "Tack för din recension! Den kommer att publiceras efter granskning.",
"emailHelper": "Din e-post kommer inte att publiceras",
"ratingLabel": "Betyg *",
"pleaseRate": "Vänligen betygsätt",
"ratingStars": "{{rating}} av 5 stjärnor",
"reviewLabel": "Din recension (valfritt)",
"reviewPlaceholder": "Beskriv dina erfarenheter av denna produkt...",
"photosLabelRating": "Bifoga bilder till din recension (valfritt)",
"submitRating": "Skicka recension",
"errorGeneric": "Ett fel uppstod",
"errorPhotos": "Fel vid bearbetning av bilder",
"availabilityTitle": "Begär tillgänglighet",
"availabilitySubtitle": "Denna produkt är för närvarande inte tillgänglig. Vi meddelar dig gärna så snart den finns i lager igen.",
"availabilitySuccessEmail": "Tack för din förfrågan! Vi meddelar dig via e-post så snart produkten finns tillgänglig igen.",
"availabilitySuccessTelegram": "Tack för din förfrågan! Vi meddelar dig via Telegram så snart produkten finns tillgänglig igen.",
"notificationMethodLabel": "Hur vill du bli meddelad?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@dittTelegramNamn eller Telegram ID",
"telegramHelper": "Ange ditt Telegram-användarnamn (med @) eller Telegram ID",
"messageLabel": "Meddelande (valfritt)",
"messagePlaceholder": "Ytterligare information eller frågor...",
"submitAvailability": "Begär tillgänglighet",
"photoUploadSelect": "Välj bilder",
"photoUploadErrorMaxFiles": "Maximalt {{max}} filer tillåtna",
"photoUploadErrorFileType": "Endast bildfiler (JPEG, PNG, GIF, WebP) är tillåtna",
"photoUploadErrorFileSize": "Filen är för stor. Max: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} fil(er) valda",
"photoUploadCompressed": "(komprimerad för uppladdning)",
"photoUploadRemove": "Ta bort bild",
"photoUploadLabelDefault": "Bifoga bilder (valfritt)",
"shareTitle": "Dela",
"shareEmbed": "Bädda in",
"shareCopyLink": "Kopiera länk",
"shareSuccessEmbed": "Bäddningskod kopierad till urklipp!",
"shareErrorEmbed": "Fel vid kopiering av bäddningskoden",
"shareSuccessLink": "Länk kopierad till urklipp!",
"shareWhatsAppText": "Kolla in denna produkt: {{name}}",
"shareTelegramText": "Kolla in denna produkt: {{name}}",
"shareEmailSubject": "Produktrekommendation",
"shareEmailBody": "Hej,\n\nJag vill rekommendera denna produkt till dig:\n\n{{name}}\n{{url}}\n\nMed vänliga hälsningar"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,9 +8,10 @@ export default {
"articleNumber": "Makale numarası",
"manufacturer": "Üretici",
"inclVat": "%{{vat}} KDV dahil",
"inclVatSimple": "KDV dahil",
"priceUnit": "{{price}}/{{unit}}",
"new": "Yeni",
"weeks": "hafta",
"weeks": "Hafta",
"arriving": "Geliş:",
"inclVatFooter": "%{{vat}} KDV dahil,*",
"availability": "Mevcutluk",
@@ -22,14 +23,14 @@ export default {
"weight": "Ağırlık: {{weight}} kg",
"youSave": "Tasarruf edersiniz: {{amount}}",
"cheaperThanIndividual": "Tek tek almaktan daha ucuz",
"pickupPrice": "Teslim alma fiyatı: kesim başına €19,90.",
"pickupPrice": "Teslim alma fiyatı: Kesim başına €19,90.",
"consistsOf": "Şunlardan oluşur:",
"loadingComponentDetails": "{{index}}. Bileşen detayları yükleniyor...",
"loadingProduct": "Ürün yükleniyor...",
"individualPriceTotal": "Toplam bireysel fiyat:",
"setPrice": "Set fiyatı:",
"yourSavings": "Tasarrufunuz:",
"similarProducts": "Benzer Ürünler",
"similarProducts": "Benzer ürünler",
"countDisplay": {
"noProducts": "0 ürün",
"oneProduct": "1 ürün",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Ürün hakkında soru",
"questionSubtitle": "Bu ürünle ilgili bir sorunuz mu var? Size yardımcı olmaktan memnuniyet duyarız.",
"questionSuccess": "Sorunuz için teşekkürler! En kısa sürede size geri döneceğiz.",
"nameLabel": "İsim",
"namePlaceholder": "Adınız",
"emailLabel": "E-posta",
"emailPlaceholder": "sizin.email@example.com",
"questionLabel": "Sorunuz",
"questionPlaceholder": "Bu ürünle ilgili sorunuzu açıklayın...",
"photosLabelQuestion": "Sorunuza fotoğraf ekleyin (isteğe bağlı)",
"submitQuestion": "Soruyu gönder",
"sending": "Gönderiliyor...",
"ratingTitle": "Ürünü değerlendirin",
"ratingSubtitle": "Bu ürünle ilgili deneyimlerinizi paylaşın ve diğer müşterilerin karar vermesine yardımcı olun.",
"ratingSuccess": "Değerlendirmeniz için teşekkürler! İnceleme sonrası yayınlanacaktır.",
"emailHelper": "E-postanız yayınlanmayacaktır",
"ratingLabel": "Değerlendirme *",
"pleaseRate": "Lütfen değerlendirin",
"ratingStars": "{{rating}} üzerinden 5 yıldız",
"reviewLabel": "Yorumunuz (isteğe bağlı)",
"reviewPlaceholder": "Bu ürünle ilgili deneyimlerinizi açıklayın...",
"photosLabelRating": "Yorumunuza fotoğraf ekleyin (isteğe bağlı)",
"submitRating": "Yorumu gönder",
"errorGeneric": "Bir hata oluştu",
"errorPhotos": "Fotoğraflar işlenirken hata oluştu",
"availabilityTitle": "Stok durumu talep et",
"availabilitySubtitle": "Bu ürün şu anda mevcut değil. Stoklara girdiğinde sizi bilgilendirmekten memnuniyet duyarız.",
"availabilitySuccessEmail": "Talebiniz için teşekkürler! Ürün tekrar mevcut olduğunda e-posta ile bilgilendirileceksiniz.",
"availabilitySuccessTelegram": "Talebiniz için teşekkürler! Ürün tekrar mevcut olduğunda Telegram üzerinden bilgilendirileceksiniz.",
"notificationMethodLabel": "Nasıl bilgilendirilmek istersiniz?",
"telegramBotLabel": "Telegram Botu",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@TelegramAdınız veya Telegram ID",
"telegramHelper": "Telegram kullanıcı adınızı (@ ile) veya Telegram ID'nizi girin",
"messageLabel": "Mesaj (isteğe bağlı)",
"messagePlaceholder": "Ek bilgiler veya sorular...",
"submitAvailability": "Stok durumu talep et",
"photoUploadSelect": "Fotoğraf seç",
"photoUploadErrorMaxFiles": "En fazla {{max}} dosya izin verilir",
"photoUploadErrorFileType": "Sadece resim dosyalarına (JPEG, PNG, GIF, WebP) izin verilir",
"photoUploadErrorFileSize": "Dosya çok büyük. Maksimum: {{maxSize}}MB",
"photoUploadSelectedFiles": "{{count}} dosya seçildi",
"photoUploadCompressed": "(yükleme için sıkıştırıldı)",
"photoUploadRemove": "Resmi kaldır",
"photoUploadLabelDefault": "Fotoğraf ekle (isteğe bağlı)",
"shareTitle": "Paylaş",
"shareEmbed": "Yerleştir",
"shareCopyLink": "Bağlantıyı kopyala",
"shareSuccessEmbed": "Yerleştirme kodu panoya kopyalandı!",
"shareErrorEmbed": "Yerleştirme kodu kopyalanırken hata oluştu",
"shareSuccessLink": "Bağlantı panoya kopyalandı!",
"shareWhatsAppText": "Bu ürüne göz atın: {{name}}",
"shareTelegramText": "Bu ürüne göz atın: {{name}}",
"shareEmailSubject": "Ürün tavsiyesi",
"shareEmailBody": "Merhaba,\n\nSize bu ürünü tavsiye etmek istiyorum:\n\n{{name}}\n{{url}}\n\nSaygılarımla"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -5,17 +5,18 @@ export default {
"notFoundDescription": "Продукт, який ви шукаєте, не існує або був видалений.",
"backToHome": "Повернутися на головну сторінку",
"error": "Помилка",
"articleNumber": "Номер артикула",
"articleNumber": "Артикул",
"manufacturer": "Виробник",
"inclVat": "включно з {{vat}}% ПДВ",
"inclVatSimple": "включно з ПДВ",
"priceUnit": "{{price}}/{{unit}}",
"new": "Новий",
"weeks": "тижнів",
"weeks": "Тижнів",
"arriving": "Прибуття:",
"inclVatFooter": "включно з {{vat}}% ПДВ,*",
"availability": "Наявність",
"inStock": "в наявності",
"comingSoon": "Скоро буде",
"comingSoon": "Скоро в наявності",
"deliveryTime": "Час доставки",
"inclShort": "вкл.",
"vatShort": "ПДВ",
@@ -25,7 +26,7 @@ export default {
"pickupPrice": "Ціна за самовивіз: €19.90 за живець.",
"consistsOf": "Складається з:",
"loadingComponentDetails": "{{index}}. Завантаження деталей компонента...",
"loadingProduct": "Продукт завантажується...",
"loadingProduct": "Завантаження продукту...",
"individualPriceTotal": "Загальна ціна окремо:",
"setPrice": "Ціна набору:",
"yourSavings": "Ваша економія:",
@@ -38,7 +39,7 @@ export default {
"filteredOneProduct": "{{filtered}} з 1 продукту",
"xOfYProducts": "{{x}} з {{y}} продуктів"
},
"removeFiltersToSee": "Видаліть фільтри, щоб побачити продукти",
"removeFiltersToSee": "Приберіть фільтри, щоб побачити продукти",
"outOfStock": "Немає в наявності",
"fromXProducts": "від {{count}} продуктів",
"discount": {

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "Питання про продукт",
"questionSubtitle": "У вас є питання щодо цього продукту? Ми раді допомогти вам.",
"questionSuccess": "Дякуємо за ваше питання! Ми зв’яжемося з вами якнайшвидше.",
"nameLabel": "Ім'я",
"namePlaceholder": "Ваше ім'я",
"emailLabel": "Електронна пошта",
"emailPlaceholder": "your.email@example.com",
"questionLabel": "Ваше питання",
"questionPlaceholder": "Опишіть ваше питання щодо цього продукту...",
"photosLabelQuestion": "Додайте фото до вашого питання (необов’язково)",
"submitQuestion": "Надіслати питання",
"sending": "Надсилання...",
"ratingTitle": "Оцінити продукт",
"ratingSubtitle": "Поділіться своїм досвідом використання цього продукту та допоможіть іншим клієнтам зробити вибір.",
"ratingSuccess": "Дякуємо за ваш відгук! Він буде опублікований після перевірки.",
"emailHelper": "Ваша електронна пошта не буде опублікована",
"ratingLabel": "Оцінка *",
"pleaseRate": "Будь ласка, оцініть",
"ratingStars": "{{rating}} з 5 зірок",
"reviewLabel": "Ваш відгук (необов’язково)",
"reviewPlaceholder": "Опишіть свій досвід з цим продуктом...",
"photosLabelRating": "Додайте фото до вашого відгуку (необов’язково)",
"submitRating": "Надіслати відгук",
"errorGeneric": "Сталася помилка",
"errorPhotos": "Помилка обробки фотографій",
"availabilityTitle": "Запитати наявність",
"availabilitySubtitle": "Цей продукт наразі недоступний. Ми з радістю повідомимо вас, як тільки він з’явиться в наявності.",
"availabilitySuccessEmail": "Дякуємо за ваш запит! Ми повідомимо вас електронною поштою, як тільки продукт знову буде доступний.",
"availabilitySuccessTelegram": "Дякуємо за ваш запит! Ми повідомимо вас через Telegram, як тільки продукт знову буде доступний.",
"notificationMethodLabel": "Як ви хочете отримувати сповіщення?",
"telegramBotLabel": "Telegram Bot",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@yourTelegramName or Telegram ID",
"telegramHelper": "Введіть ваш Telegram-ім'я користувача (з @) або Telegram ID",
"messageLabel": "Повідомлення (необов’язково)",
"messagePlaceholder": "Додаткова інформація або питання...",
"submitAvailability": "Запитати наявність",
"photoUploadSelect": "Вибрати фото",
"photoUploadErrorMaxFiles": "Максимум дозволено {{max}} файлів",
"photoUploadErrorFileType": "Дозволені лише зображення (JPEG, PNG, GIF, WebP)",
"photoUploadErrorFileSize": "Файл занадто великий. Максимум: {{maxSize}}MB",
"photoUploadSelectedFiles": "Вибрано {{count}} файл(ів)",
"photoUploadCompressed": "(скомпресовано для завантаження)",
"photoUploadRemove": "Видалити зображення",
"photoUploadLabelDefault": "Додати фото (необов’язково)",
"shareTitle": "Поділитися",
"shareEmbed": "Вбудувати",
"shareCopyLink": "Копіювати посилання",
"shareSuccessEmbed": "Код для вбудовування скопійовано в буфер обміну!",
"shareErrorEmbed": "Помилка копіювання коду для вбудовування",
"shareSuccessLink": "Посилання скопійовано в буфер обміну!",
"shareWhatsAppText": "Перегляньте цей продукт: {{name}}",
"shareTelegramText": "Перегляньте цей продукт: {{name}}",
"shareEmailSubject": "Рекомендація продукту",
"shareEmailBody": "Привіт,\n\nХочу порекомендувати вам цей продукт:\n\n{{name}}\n{{url}}\n\nЗ найкращими побажаннями"
};

View File

@@ -3,6 +3,7 @@ import navigation from './navigation.js';
import auth from './auth.js';
import cart from './cart.js';
import product from './product.js';
import productDialogs from './productDialogs.js';
import search from './search.js';
import sorting from './sorting.js';
import chat from './chat.js';
@@ -35,6 +36,7 @@ export default {
"auth": auth,
"cart": cart,
"product": product,
"productDialogs": productDialogs,
"search": search,
"sorting": sorting,
"chat": chat,

View File

@@ -8,13 +8,14 @@ export default {
"articleNumber": "商品编号",
"manufacturer": "制造商",
"inclVat": "含 {{vat}}% 增值税",
"inclVatSimple": "含增值税",
"priceUnit": "{{price}}/{{unit}}",
"new": "新品",
"weeks": "周",
"arriving": "到货时间:",
"inclVatFooter": "含 {{vat}}% 增值税,*",
"availability": "库存情况",
"inStock": "有库存",
"inStock": "有现货",
"comingSoon": "即将上市",
"deliveryTime": "交货时间",
"inclShort": "含",
@@ -22,11 +23,11 @@ export default {
"weight": "重量:{{weight}} 公斤",
"youSave": "您节省了:{{amount}}",
"cheaperThanIndividual": "比单独购买更便宜",
"pickupPrice": "自每个插枝19.90欧元。",
"pickupPrice": "自每个插枝19.90欧元。",
"consistsOf": "包含:",
"loadingComponentDetails": "{{index}}. 正在加载组件详情...",
"loadingProduct": "产品正在加载...",
"individualPriceTotal": "单总价:",
"loadingProduct": "正在加载产品...",
"individualPriceTotal": "单独购买总价:",
"setPrice": "套装价格:",
"yourSavings": "您的节省:",
"similarProducts": "类似产品",

View File

@@ -0,0 +1,61 @@
export default {
"questionTitle": "关于产品的问题",
"questionSubtitle": "您对该产品有疑问吗?我们很乐意为您提供帮助。",
"questionSuccess": "感谢您的提问!我们会尽快与您联系。",
"nameLabel": "姓名",
"namePlaceholder": "您的姓名",
"emailLabel": "电子邮件",
"emailPlaceholder": "your.email@example.com",
"questionLabel": "您的问题",
"questionPlaceholder": "描述您关于该产品的问题...",
"photosLabelQuestion": "附加照片(可选)",
"submitQuestion": "发送问题",
"sending": "发送中...",
"ratingTitle": "评价产品",
"ratingSubtitle": "分享您对该产品的体验,帮助其他客户做出决定。",
"ratingSuccess": "感谢您的评价!审核通过后将予以发布。",
"emailHelper": "您的电子邮件不会被公开",
"ratingLabel": "评分 *",
"pleaseRate": "请评分",
"ratingStars": "{{rating}} 星,满分 5 星",
"reviewLabel": "您的评价(可选)",
"reviewPlaceholder": "描述您对该产品的体验...",
"photosLabelRating": "附加照片(可选)",
"submitRating": "提交评价",
"errorGeneric": "发生错误",
"errorPhotos": "处理照片时出错",
"availabilityTitle": "请求库存信息",
"availabilitySubtitle": "该产品当前无货。我们会在恢复库存时通知您。",
"availabilitySuccessEmail": "感谢您的请求!产品恢复供应时,我们会通过电子邮件通知您。",
"availabilitySuccessTelegram": "感谢您的请求!产品恢复供应时,我们会通过 Telegram 通知您。",
"notificationMethodLabel": "您希望如何接收通知?",
"telegramBotLabel": "Telegram 机器人",
"telegramIdLabel": "Telegram ID",
"telegramPlaceholder": "@yourTelegramName 或 Telegram ID",
"telegramHelper": "请输入您的 Telegram 用户名(带 @)或 Telegram ID",
"messageLabel": "留言(可选)",
"messagePlaceholder": "附加信息或问题...",
"submitAvailability": "请求库存信息",
"photoUploadSelect": "选择照片",
"photoUploadErrorMaxFiles": "最多允许 {{max}} 个文件",
"photoUploadErrorFileType": "仅允许图片文件JPEG、PNG、GIF、WebP",
"photoUploadErrorFileSize": "文件过大。最大:{{maxSize}}MB",
"photoUploadSelectedFiles": "已选择 {{count}} 个文件",
"photoUploadCompressed": "(上传时已压缩)",
"photoUploadRemove": "移除图片",
"photoUploadLabelDefault": "附加照片(可选)",
"shareTitle": "分享",
"shareEmbed": "嵌入",
"shareCopyLink": "复制链接",
"shareSuccessEmbed": "嵌入代码已复制到剪贴板!",
"shareErrorEmbed": "复制嵌入代码时出错",
"shareSuccessLink": "链接已复制到剪贴板!",
"shareWhatsAppText": "看看这个产品:{{name}}",
"shareTelegramText": "看看这个产品:{{name}}",
"shareEmailSubject": "产品推荐",
"shareEmailBody": "您好,\n\n我想向您推荐这款产品\n\n{{name}}\n{{url}}\n\n此致敬礼"
};

View File

@@ -17,6 +17,7 @@ const TRANSLATION_FILES = [
'auth.js',
'cart.js',
'product.js',
'productDialogs.js',
'search.js',
'sorting.js',
'chat.js',
@@ -52,7 +53,7 @@ const LEGAL_FILES = [
];
// Model configuration
const GERMAN_TO_ENGLISH_MODEL = 'gpt-4.1'; // High-quality model for German -> English (critical step)
const GERMAN_TO_ENGLISH_MODEL = 'gpt-5.1'; // High-quality model for German -> English (critical step)
const ENGLISH_TO_OTHER_MODEL = 'gpt-4.1-mini'; // Faster/cheaper model for English -> Other languages
// Supported languages for translation
@@ -354,7 +355,7 @@ function writeTranslationFile(filePath, translationString) {
}
// Function to translate content using OpenAI (for German to English)
async function translateContent(content, systemPrompt, targetLanguage = null, model = 'gpt-4') {
async function translateContent(content, systemPrompt, targetLanguage = null, model = 'gpt-5.1') {
try {
const prompt = targetLanguage
? systemPrompt.replace(/{{targetLanguage}}/g, targetLanguage)
@@ -366,8 +367,7 @@ async function translateContent(content, systemPrompt, targetLanguage = null, mo
{ role: 'system', content: prompt },
{ role: 'user', content: `Please translate this translation file content:\n\n${content}` }
],
temperature: 0.1,
max_tokens: 4000
reasoning_effort: "none",
});
return response.choices[0].message.content;
@@ -649,7 +649,7 @@ async function main() {
// Check if OpenAI API key is set (only if we're doing actual translation)
if (!skipEnglish && !OPENAI_API_KEY) {
console.error('❌ OPENAI_API_KEY environment variable is not set');
console.log('Please set your OpenAI API key: export OPENAI_API_KEY="your-api-key-here"');
console.log('Hint: export `cat ../shopApi/.env |grep OPENAI` ; node translate-i18n.js');
process.exit(1);
}