fix: og:locale hardcoded ru_RU regardless of active locale
Both setItemMeta() and resetToDefaults() hardcoded 'ru_RU'. Added a LanguageService-driven mapping (ru/en/hy -> ru_RU/en_US/hy_AM). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,13 @@ import { Item } from '../models';
|
|||||||
import { getDiscountedPrice, getMainImage } from '../utils/item.utils';
|
import { getDiscountedPrice, getMainImage } from '../utils/item.utils';
|
||||||
import { UiRuntimeFacade } from '../facades/runtime/ui-runtime.facade';
|
import { UiRuntimeFacade } from '../facades/runtime/ui-runtime.facade';
|
||||||
import { ConfigService } from '../core/config/config.service';
|
import { ConfigService } from '../core/config/config.service';
|
||||||
|
import { LanguageService } from './language.service';
|
||||||
|
|
||||||
|
const OG_LOCALE_MAP: Record<string, string> = {
|
||||||
|
ru: 'ru_RU',
|
||||||
|
en: 'en_US',
|
||||||
|
hy: 'hy_AM',
|
||||||
|
};
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
@@ -14,6 +21,7 @@ export class SeoService {
|
|||||||
private doc = inject(DOCUMENT);
|
private doc = inject(DOCUMENT);
|
||||||
private readonly uiRuntime = inject(UiRuntimeFacade);
|
private readonly uiRuntime = inject(UiRuntimeFacade);
|
||||||
private readonly configService = inject(ConfigService);
|
private readonly configService = inject(ConfigService);
|
||||||
|
private readonly languageService = inject(LanguageService);
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
// Keep the runtime <title>/OG/Twitter/canonical/robots tags in sync with
|
// Keep the runtime <title>/OG/Twitter/canonical/robots tags in sync with
|
||||||
@@ -38,6 +46,10 @@ export class SeoService {
|
|||||||
return this.uiRuntime.marketplaceDisplayName() || 'Marketplace';
|
return this.uiRuntime.marketplaceDisplayName() || 'Marketplace';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private get ogLocale(): string {
|
||||||
|
return OG_LOCALE_MAP[this.languageService.currentLanguage()] ?? 'en_US';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Open Graph & Twitter Card meta tags for a product/item page.
|
* Set Open Graph & Twitter Card meta tags for a product/item page.
|
||||||
*/
|
*/
|
||||||
@@ -59,7 +71,7 @@ export class SeoService {
|
|||||||
{ property: 'og:image', content: imageUrl },
|
{ property: 'og:image', content: imageUrl },
|
||||||
{ property: 'og:url', content: itemUrl },
|
{ property: 'og:url', content: itemUrl },
|
||||||
{ property: 'og:site_name', content: this.siteName },
|
{ property: 'og:site_name', content: this.siteName },
|
||||||
{ property: 'og:locale', content: 'ru_RU' },
|
{ property: 'og:locale', content: this.ogLocale },
|
||||||
|
|
||||||
// Product-specific OG tags
|
// Product-specific OG tags
|
||||||
{ property: 'product:price:amount', content: price.toFixed(2) },
|
{ property: 'product:price:amount', content: price.toFixed(2) },
|
||||||
@@ -111,7 +123,7 @@ export class SeoService {
|
|||||||
{ property: 'og:image', content: defaultImage },
|
{ property: 'og:image', content: defaultImage },
|
||||||
{ property: 'og:url', content: this.siteUrl },
|
{ property: 'og:url', content: this.siteUrl },
|
||||||
{ property: 'og:site_name', content: this.siteName },
|
{ property: 'og:site_name', content: this.siteName },
|
||||||
{ property: 'og:locale', content: 'ru_RU' },
|
{ property: 'og:locale', content: this.ogLocale },
|
||||||
|
|
||||||
{ name: 'twitter:card', content: 'summary_large_image' },
|
{ name: 'twitter:card', content: 'summary_large_image' },
|
||||||
{ name: 'twitter:title', content: defaultTitle },
|
{ name: 'twitter:title', content: defaultTitle },
|
||||||
|
|||||||
Reference in New Issue
Block a user