fix: localize UI text to Macedonian and fix view count display

- Change date format from 'short' to 'long' month names in Macedonian
- Translate 'views' to 'прегледи' across all components
- Translate 'shares' to 'споделувања'
- Translate 'updates' to 'ажурирања'
- Translate 'By' to 'Од' for author attribution
- Translate 'Back to articles' to 'Назад кон вести'
- Translate archive page headers to Macedonian
- Translate auto-scroll button text to Macedonian
- Translate connection status to Macedonian
- Add fallback to 0 for undefined view counts (|| 0)
This commit is contained in:
echo 2026-02-28 23:57:33 +01:00
parent 46bbeed525
commit aa43f50a8c
6 changed files with 29 additions and 29 deletions

View File

@ -165,12 +165,12 @@ export function LiveBlogViewer({ slug, className }: LiveBlogViewerProps) {
isConnected ? 'bg-green-500' : 'bg-red-500' isConnected ? 'bg-green-500' : 'bg-red-500'
)} /> )} />
<span> <span>
{isConnected ? 'Connected' : `Reconnecting... (${reconnectAttempts})`} {isConnected ? 'Поврзано' : `Се поврзува... (${reconnectAttempts})`}
</span> </span>
</div> </div>
)} )}
<span>{liveBlog.viewCount} views</span> <span>{liveBlog.viewCount || 0} прегледи</span>
<span>{updates.length} updates</span> <span>{updates.length} ажурирања</span>
</div> </div>
</div> </div>
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
@ -179,7 +179,7 @@ export function LiveBlogViewer({ slug, className }: LiveBlogViewerProps) {
size="sm" size="sm"
onClick={handleAutoScrollToggle} onClick={handleAutoScrollToggle}
> >
{autoScroll ? 'Auto-scroll ON' : 'Auto-scroll OFF'} {autoScroll ? 'Авто-скрол ВКЛУЧЕН' : 'Авто-скрол ИСКЛУЧЕН'}
</Button> </Button>
{!isConnected && ( {!isConnected && (
<Button <Button

View File

@ -204,11 +204,11 @@ export function PinnedLiveBlogSidebar({
<div className="mt-2 flex items-center gap-3 text-xs text-muted-foreground"> <div className="mt-2 flex items-center gap-3 text-xs text-muted-foreground">
<div className="flex items-center gap-1"> <div className="flex items-center gap-1">
<MessageSquare className="w-3 h-3" /> <MessageSquare className="w-3 h-3" />
<span>{blog.updates?.length || 0} updates</span> <span>{blog.updates?.length || 0} ажурирања</span>
</div> </div>
<div className="flex items-center gap-1"> <div className="flex items-center gap-1">
<Eye className="w-3 h-3" /> <Eye className="w-3 h-3" />
<span>{blog.viewCount} views</span> <span>{blog.viewCount || 0} прегледи</span>
</div> </div>
</div> </div>
</Link> </Link>

View File

@ -83,7 +83,7 @@ export function HeroArticle() {
<span> <span>
{new Date(article.createdAt).toLocaleDateString('mk-MK', { {new Date(article.createdAt).toLocaleDateString('mk-MK', {
day: 'numeric', day: 'numeric',
month: 'short', month: 'long',
year: 'numeric', year: 'numeric',
})} })}
</span> </span>
@ -98,7 +98,7 @@ export function HeroArticle() {
<div className="flex items-center gap-2"> <div className="flex items-center gap-2">
<Eye className="w-4 h-4" /> <Eye className="w-4 h-4" />
<span>{article.views} views</span> <span>{article.views || 0} прегледи</span>
</div> </div>
</div> </div>
@ -132,7 +132,7 @@ export function HeroArticle() {
<div className="font-body text-xs uppercase tracking-wider text-muted-foreground"> <div className="font-body text-xs uppercase tracking-wider text-muted-foreground">
<span className="font-bold text-foreground"> <span className="font-bold text-foreground">
{(article.facebookShares || 0) + (article.twitterShares || 0) + (article.whatsappShares || 0) + (article.telegramShares || 0)} {(article.facebookShares || 0) + (article.twitterShares || 0) + (article.whatsappShares || 0) + (article.telegramShares || 0)}
</span> shares </span> споделувања
</div> </div>
</div> </div>
</div> </div>

View File

@ -28,8 +28,8 @@ export function ArchiveComponent() {
return ( return (
<div> <div>
<div className="mb-8"> <div className="mb-8">
<h1 className="text-3xl font-bold">Articles</h1> <h1 className="text-3xl font-bold">Архива</h1>
<p className="text-muted-foreground">Latest news and articles</p> <p className="text-muted-foreground">Најнови вести и статии</p>
</div> </div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> <div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
@ -53,18 +53,18 @@ export function ArchiveComponent() {
)} )}
</Link> </Link>
<div className="flex items-center justify-between text-sm text-muted-foreground"> <div className="flex items-center justify-between text-sm text-muted-foreground">
<div className="flex items-center space-x-4"> <div className="flex items-center space-x-4">
<span> <span>
{new Date(article.createdAt).toLocaleDateString('mk-MK', { {new Date(article.createdAt).toLocaleDateString('mk-MK', {
day: 'numeric', day: 'numeric',
month: 'short', month: 'long',
year: 'numeric', year: 'numeric',
})} })}
</span> </span>
<span></span> <span></span>
<span>{article.views} views</span> <span>{article.views || 0} прегледи</span>
</div> </div>
<SocialShareButtons <SocialShareButtons
articleId={article.id} articleId={article.id}

View File

@ -49,7 +49,7 @@ export function ArticleDetailComponent({ id }: { id: string }) {
<path d="m15 18-6-6 6-6" /> <path d="m15 18-6-6 6-6" />
<path d="M19 6H5" /> <path d="M19 6H5" />
</svg> </svg>
Back to articles Назад кон вести
</Link> </Link>
<h1 className="text-4xl font-bold mb-6">{data.title}</h1> <h1 className="text-4xl font-bold mb-6">{data.title}</h1>
@ -63,11 +63,11 @@ export function ArticleDetailComponent({ id }: { id: string }) {
})} })}
</span> </span>
<span></span> <span></span>
<span>{data.views} views</span> <span>{data.views || 0} прегледи</span>
{data.author && ( {data.author && (
<> <>
<span></span> <span></span>
<span>By {data.author.name}</span> <span>Од {data.author.name}</span>
</> </>
)} )}
</div> </div>

View File

@ -63,13 +63,13 @@ export function LiveBlogsComponent() {
<div className="flex items-center justify-between text-sm text-muted-foreground"> <div className="flex items-center justify-between text-sm text-muted-foreground">
<div className="flex items-center gap-4"> <div className="flex items-center gap-4">
<span>{liveBlog.viewCount} views</span> <span>{liveBlog.viewCount || 0} прегледи</span>
<span>{liveBlog.updates?.length || 0} updates</span> <span>{liveBlog.updates?.length || 0} ажурирања</span>
</div> </div>
<span> <span>
{new Date(liveBlog.createdAt).toLocaleDateString('mk-MK', { {new Date(liveBlog.createdAt).toLocaleDateString('mk-MK', {
day: 'numeric', day: 'numeric',
month: 'short', month: 'long',
year: 'numeric', year: 'numeric',
})} })}
</span> </span>