Translate all user-facing text to English for broader accessibility

This commit updates all Slovenian text strings to English across various components including modals, grids, and player interfaces. It also translates ad-related terminology and button labels, ensuring a consistent English-language user experience. The changes span across files such as `ad-explanation.tsx`, `ad-settings.tsx`, `bunny-video-modal.tsx`, `netflix-grid.tsx`, `thumbnail-generator.tsx`, `vast-player.tsx`, `video-edit-modal.tsx`, and `video-grid.tsx`.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 2eb1084e-b728-4449-9231-f1665924c8d5
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/8cc42625-c1f5-4e43-99bd-77f2c4dedee2/2eb1084e-b728-4449-9231-f1665924c8d5/LdexDZU
This commit is contained in:
sebastjanartic 2025-08-29 07:17:26 +00:00
parent 061b7854bf
commit 8a4ea10fc4
8 changed files with 59 additions and 59 deletions

View File

@ -15,7 +15,7 @@ export default function AdExplanation({ isOpen, onClose }: AdExplanationProps) {
<DialogHeader>
<DialogTitle className="text-xl font-bold flex items-center gap-2">
<DollarSign className="w-6 h-6 text-yellow-500" />
Kaj pomenijo oznake "💰 OGLAS"?
What do "💰 AD" badges mean?
</DialogTitle>
</DialogHeader>
@ -25,10 +25,10 @@ export default function AdExplanation({ isOpen, onClose }: AdExplanationProps) {
<div className="bg-gradient-to-r from-yellow-500 to-orange-500 text-white text-xs px-2 py-1 rounded-full font-bold">
💰 OGLAS
</div>
<span className="text-yellow-300 font-medium">Monetizirani videji</span>
<span className="text-yellow-300 font-medium">Monetized Videos</span>
</div>
<p className="text-sm text-gray-300">
Te oznake prikazujejo, da so videji opremljeni z naprednim VAST oglasnim sistemom
These badges indicate that videos are equipped with advanced VAST advertising system
</p>
</div>
@ -36,26 +36,26 @@ export default function AdExplanation({ isOpen, onClose }: AdExplanationProps) {
<div className="bg-gray-700/50 rounded-lg p-4">
<div className="flex items-center gap-2 mb-2">
<PlayCircle className="w-5 h-5 text-blue-400" />
<h3 className="font-medium">Kako deluje?</h3>
<h3 className="font-medium">How does it work?</h3>
</div>
<p className="text-sm text-gray-300">
Pred ali med predvajanjem videa se prikazujejo oglasi, ki omogočajo brezplačno gledanje vsebine
Ads are shown before or during video playback, enabling free viewing of content
</p>
</div>
<div className="bg-gray-700/50 rounded-lg p-4">
<div className="flex items-center gap-2 mb-2">
<Eye className="w-5 h-5 text-green-400" />
<h3 className="font-medium">Brezplačno gledanje</h3>
<h3 className="font-medium">Free Viewing</h3>
</div>
<p className="text-sm text-gray-300">
Oglasi omogočajo, da lahko vse videji gledate povsem brezplačno brez naročnine
Ads enable you to watch all videos completely free without subscription
</p>
</div>
</div>
<div className="bg-blue-500/10 border border-blue-500/20 rounded-lg p-4">
<h3 className="font-medium text-blue-300 mb-2">VAST oglasni sistem</h3>
<h3 className="font-medium text-blue-300 mb-2">VAST Advertising System</h3>
<p className="text-sm text-gray-300 mb-2">
Platforma uporablja profesionalni VAST (Video Ad Serving Template) sistem z 5 oglasnimi mrežami:
</p>

View File

@ -283,7 +283,7 @@ export default function AdSettings({ isOpen, onClose }: AdSettingsProps) {
<div>
<h4 className="font-medium">Publift integracija</h4>
<p className="text-sm text-gray-600 dark:text-gray-400">
Agregator več omrežij za povišanje prihodkov do 55%
Multi-network aggregator for revenue increase up to 55%
</p>
</div>
</div>
@ -292,16 +292,16 @@ export default function AdSettings({ isOpen, onClose }: AdSettingsProps) {
<div>
<h4 className="font-medium">Header bidding</h4>
<p className="text-sm text-gray-600 dark:text-gray-400">
Priporočeno za 100.000+ mesečnih ogledov
Recommended for 100,000+ monthly views
</p>
</div>
</div>
<div className="flex items-start space-x-3">
<div className="w-2 h-2 bg-purple-500 rounded-full mt-2 flex-shrink-0" />
<div>
<h4 className="font-medium">VAST waterfall optimizacija</h4>
<h4 className="font-medium">VAST Waterfall Optimization</h4>
<p className="text-sm text-gray-600 dark:text-gray-400">
Avtomatsko preklapljanje med omrežji za maksimalne CPM-je
Automatic switching between networks for maximum CPMs
</p>
</div>
</div>
@ -311,10 +311,10 @@ export default function AdSettings({ isOpen, onClose }: AdSettingsProps) {
<div className="flex justify-end space-x-3">
<Button variant="outline" onClick={onClose}>
Prekliči
Cancel
</Button>
<Button className="bg-bunny-blue hover:bg-bunny-blue/90">
Shrani nastavitve
Save Settings
</Button>
</div>
</div>

View File

@ -188,7 +188,7 @@ export default function BunnyVideoModal({ video, isOpen, onClose, onEdit, videos
data-testid="button-edit-video"
>
<Edit3 className="w-4 h-4" />
Uredi
Edit
</Button>
)}
<div className="relative">
@ -200,7 +200,7 @@ export default function BunnyVideoModal({ video, isOpen, onClose, onEdit, videos
data-testid="button-share-video"
>
<Share2 className="w-4 h-4" />
Deli
Share
</Button>
{showShareMenu && (
@ -237,7 +237,7 @@ export default function BunnyVideoModal({ video, isOpen, onClose, onEdit, videos
className="w-full px-4 py-2 text-left text-white hover:bg-gray-700"
data-testid="button-copy-link"
>
Kopiraj povezavo
Copy Link
</button>
</div>
)}
@ -271,7 +271,7 @@ export default function BunnyVideoModal({ video, isOpen, onClose, onEdit, videos
/>
) : (
<div className="absolute inset-0 flex items-center justify-center text-white">
<p>Video ni na voljo</p>
<p>Video not available</p>
</div>
)}

View File

@ -47,19 +47,19 @@ export default function NetflixGrid({ videos, isLoading }: NetflixGridProps) {
return [
{
title: "Top 10 Videjev Danes",
title: "Top 10 Videos Today",
videos: sortedByViews.slice(0, 10)
},
{
title: "Priljubljeni Videi",
title: "Popular Videos",
videos: sortedByViews.slice(10, 20)
},
{
title: "Nazadnje Dodano",
title: "Recently Added",
videos: sortedByDate.slice(0, 15)
},
{
title: "Trending Sedaj",
title: "Trending Now",
videos: videos.slice(0, 12)
}
];
@ -92,10 +92,10 @@ export default function NetflixGrid({ videos, isLoading }: NetflixGridProps) {
return (
<div className="text-center py-12">
<div className="text-bunny-muted text-lg mb-4">
Ni najdenih videjev
No videos found
</div>
<p className="text-sm text-bunny-muted">
Poskusi prilagoditi iskalne ali filter kriterije
Try adjusting your search or filter criteria
</p>
</div>
);

View File

@ -238,7 +238,7 @@ export default function ThumbnailGenerator({
{/* Header */}
<div className="flex items-center justify-between mb-6">
<h2 className="text-2xl font-bold text-gray-900 dark:text-white">
Generiraj thumbnail sliko
Generate Thumbnail Image
</h2>
<Button
onClick={onClose}
@ -255,7 +255,7 @@ export default function ThumbnailGenerator({
{/* Video Player Section */}
<div className="space-y-4">
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">
Video predogled
Video Preview
</h3>
<div className="relative bg-black rounded-lg overflow-hidden">
@ -266,7 +266,7 @@ export default function ThumbnailGenerator({
preload="metadata"
data-testid="thumbnail-video-player"
>
Vaš brskalnik ne podpira video oznake.
Your browser does not support the video tag.
</video>
{!isVideoLoaded && (
@ -305,12 +305,12 @@ export default function ThumbnailGenerator({
{isGenerating ? (
<div className="flex items-center gap-2">
<div className="w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin" />
Generiram...
Generating...
</div>
) : (
<div className="flex items-center gap-2">
<Download className="w-4 h-4" />
Generiraj iz trenutnega okvirja
Generate from Current Frame
</div>
)}
</Button>
@ -325,12 +325,12 @@ export default function ThumbnailGenerator({
{isGeneratingAI ? (
<div className="flex items-center gap-2">
<div className="w-4 h-4 border-2 border-purple-600 border-t-transparent rounded-full animate-spin" />
AI generiram predloge...
AI generating suggestions...
</div>
) : (
<div className="flex items-center gap-2">
<Sparkles className="w-4 h-4" />
AI predlogi thumbnail-ov
AI Thumbnail Suggestions
</div>
)}
</Button>
@ -340,7 +340,7 @@ export default function ThumbnailGenerator({
{/* Thumbnail Preview Section */}
<div className="space-y-4">
<h3 className="text-lg font-semibold text-gray-900 dark:text-white">
Predogled thumbnail
Thumbnail Preview
</h3>
{/* Thumbnail Preview */}
@ -349,7 +349,7 @@ export default function ThumbnailGenerator({
<div className="space-y-2">
<img
src={selectedThumbnail || customThumbnail || ""}
alt="Thumbnail predogled"
alt="Thumbnail preview"
className="max-w-full max-h-48 rounded"
data-testid="thumbnail-preview"
/>

View File

@ -308,7 +308,7 @@ export default function VASTPlayer({ video, onClose, vastTagUrl, enableAds = tru
{/* Ad Network Badge */}
<div className="flex justify-between items-center">
<div className="bg-yellow-600 text-white px-3 py-1 rounded-full text-sm font-medium">
📺 Oglas {currentAdNetwork && `${AD_NETWORKS[currentAdNetwork as keyof typeof AD_NETWORKS].name}`}
📺 Ad {currentAdNetwork && `${AD_NETWORKS[currentAdNetwork as keyof typeof AD_NETWORKS].name}`}
</div>
{/* Skip Ad Button */}
@ -319,11 +319,11 @@ export default function VASTPlayer({ video, onClose, vastTagUrl, enableAds = tru
data-testid="button-skip-ad"
>
<SkipForward className="w-4 h-4 mr-2" />
Preskoči oglas
Skip Ad
</Button>
) : (
<div className="bg-gray-800 text-white px-4 py-2 rounded-full text-sm">
Preskoči čez {skipCountdown}s
Skip in {skipCountdown}s
</div>
)}
</div>

View File

@ -92,8 +92,8 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
updateVideoMutation.mutate(updates);
} catch (error) {
toast({
title: "Napaka",
description: "Preverite vnesene podatke",
title: "Error",
description: "Please check your input data",
variant: "destructive"
});
}
@ -111,7 +111,7 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
{/* Header */}
<div className="flex items-center justify-between mb-6">
<h2 className="text-2xl font-bold text-white">
Uredi video
Edit Video
</h2>
<Button
onClick={onClose}
@ -129,12 +129,12 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
{/* Title */}
<div>
<Label className="block text-sm font-medium text-white mb-2">
Naslov
Title
</Label>
<Input
value={title}
onChange={(e) => setTitle(e.target.value)}
placeholder="Vnesite naslov videoposnetka"
placeholder="Enter video title"
className="w-full !bg-gray-700 !text-white !border-gray-500 placeholder:!text-gray-300"
style={{ backgroundColor: '#374151', color: '#ffffff', borderColor: '#6b7280' }}
data-testid="input-video-title"
@ -144,12 +144,12 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
{/* Description */}
<div>
<Label className="block text-sm font-medium text-white mb-2">
Opis
Description
</Label>
<Textarea
value={description}
onChange={(e) => setDescription(e.target.value)}
placeholder="Opišite vsebino videoposnetka"
placeholder="Describe the video content"
rows={4}
className="w-full !bg-gray-700 !text-white !border-gray-500 placeholder:!text-gray-300"
style={{ backgroundColor: '#374151', color: '#ffffff', borderColor: '#6b7280' }}
@ -160,12 +160,12 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
{/* Category */}
<div>
<Label className="block text-sm font-medium text-white mb-2">
Kategorija
Category
</Label>
<Input
value={category}
onChange={(e) => setCategory(e.target.value)}
placeholder="npr. Izobraževanje, Zabava, Tehnologija"
placeholder="e.g. Education, Entertainment, Technology"
className="w-full !bg-gray-700 !text-white !border-gray-500 placeholder:!text-gray-300"
style={{ backgroundColor: '#374151', color: '#ffffff', borderColor: '#6b7280' }}
data-testid="input-video-category"
@ -175,12 +175,12 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
{/* Tags */}
<div>
<Label className="block text-sm font-medium text-white mb-2">
Oznake (ločene z vejico)
Tags (separated by commas)
</Label>
<Input
value={tags}
onChange={(e) => setTags(e.target.value)}
placeholder="npr. tutorial, spletno programiranje, react"
placeholder="e.g. tutorial, web development, react"
className="w-full !bg-gray-700 !text-white !border-gray-500 placeholder:!text-gray-300"
style={{ backgroundColor: '#374151', color: '#ffffff', borderColor: '#6b7280' }}
data-testid="input-video-tags"
@ -190,14 +190,14 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
{/* Thumbnail Upload */}
<div>
<Label className="block text-sm font-medium text-white mb-2">
Slika predogleda
Thumbnail Image
</Label>
<div className="space-y-3">
{thumbnailPreview && (
<div className="w-48 h-27 rounded overflow-hidden border">
<img
src={thumbnailPreview}
alt="Predogled thumbnail"
alt="Thumbnail preview"
className="w-full h-full object-cover"
/>
</div>
@ -212,7 +212,7 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
data-testid="button-generate-from-video"
>
<Camera className="w-4 h-4 mr-2" />
Generiraj iz videoposnetka
Generate from Video
</Button>
<Label className="cursor-pointer flex-1">
@ -228,7 +228,7 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
style={{ backgroundColor: '#374151', color: '#ffffff', borderColor: '#6b7280' }}
>
<Upload className="w-4 h-4" />
<span>Naloži sliko</span>
<span>Upload Image</span>
</div>
</Label>
</div>
@ -246,7 +246,7 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
data-testid="checkbox-public-video"
/>
<Label htmlFor="public-video" className="text-sm font-medium text-white">
Javno dostopen video
Public Video
</Label>
</div>
</div>
@ -258,7 +258,7 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
variant="outline"
data-testid="button-cancel-edit"
>
Prekliči
Cancel
</Button>
<Button
onClick={handleSave}
@ -269,12 +269,12 @@ export default function VideoEditModal({ video, isOpen, onClose }: VideoEditModa
{updateVideoMutation.isPending ? (
<div className="flex items-center gap-2">
<div className="w-4 h-4 border-2 border-white border-t-transparent rounded-full animate-spin" />
Shranjujem...
Saving...
</div>
) : (
<div className="flex items-center gap-2">
<Save className="w-4 h-4" />
Shrani
Save
</div>
)}
</Button>

View File

@ -52,10 +52,10 @@ export default function VideoGrid({ videos, isLoading, hasMore, onLoadMore, view
return (
<div className="text-center py-12">
<div className="text-bunny-muted text-lg mb-4" data-testid="text-no-videos">
Ni najdenih videjev
No videos found
</div>
<p className="text-sm text-bunny-muted">
Poskusi prilagoditi iskalne ali filter kriterije
Try adjusting your search or filter criteria
</p>
</div>
);
@ -88,11 +88,11 @@ export default function VideoGrid({ videos, isLoading, hasMore, onLoadMore, view
{isLoading ? (
<>
<div className="animate-spin rounded-full h-4 w-4 border-b-2 border-white"></div>
<span>Nalagam...</span>
<span>Loading...</span>
</>
) : (
<>
<span>Naloži Več Videjev</span>
<span>Load More Videos</span>
<ChevronDown className="w-4 h-4" />
</>
)}