diff --git a/src/utils/persianTerminology.ts b/src/utils/persianTerminology.ts new file mode 100644 index 0000000..110eea4 --- /dev/null +++ b/src/utils/persianTerminology.ts @@ -0,0 +1,25 @@ +/** جایگزینی «مظنه» و شکل‌های وابسته با «قیمت» در متن‌های نمایشی */ + +const MAZANEH_TO_PRICE: Array<[RegExp, string]> = [ + [/مظنه‌های/g, 'قیمت‌های'], + [/مظنه‌ها/g, 'قیمت‌ها'], + [/مظنه‌ای/g, 'قیمتی'], + [/مظنهای/g, 'قیمتی'], + [/مظنهٔ/g, 'قیمت'], + [/مظنه/g, 'قیمت'], +] + +export function replaceMazanehTerminology(text: string): string { + let result = text + for (const [pattern, replacement] of MAZANEH_TO_PRICE) { + result = result.replace(pattern, replacement) + } + return result +} + +export function polishUserFacingCopy(text: unknown): string { + if (typeof text !== 'string') return '' + const trimmed = text.trim() + if (!trimmed) return '' + return replaceMazanehTerminology(trimmed) +} diff --git a/src/utils/storeHours.ts b/src/utils/storeHours.ts index 4dd9a9a..e650ace 100644 --- a/src/utils/storeHours.ts +++ b/src/utils/storeHours.ts @@ -1,4 +1,5 @@ import { ref } from 'vue' +import { replaceMazanehTerminology } from '@/utils/persianTerminology' import { useSettingsStore } from '@/store/settingsStore' import { getTradeBuyPrice, getTradeSellPrice, lastPrice } from '@/utils/price' @@ -173,7 +174,7 @@ export function isStoreClosed(): boolean { export const STORE_CLOSED_TITLE = 'فروشگاه بسته است' export function stripHtmlMessage(message: string): string { - return message.replace(/<[^>]*>/g, '').trim() + return replaceMazanehTerminology(message.replace(/<[^>]*>/g, '').trim()) } export function getStoreClosedHint(customMessage?: unknown): string {