Skip to main content

_

Isomorphic translation function for React components and templates. It performs a real dictionary lookup against the active locale, then interpolates ${variable} placeholders.

Import​

import { _ } from '@evershop/evershop/lib/locale/translate/_';

Syntax​

_(text: string, values?: Record<string, string>): string

Parameters​

text

Type: string

The English source text, with optional placeholders using ${variable} syntax. This doubles as the dictionary lookup key.

values

Type: Record<string, string> (optional)

Object containing values to replace placeholders.

Return Value​

Returns the translated string with placeholders replaced. Missing or empty dictionary entries fall back to the source text unchanged.

How the lookup works​

_() reads the active dictionary and looks the source string up in it:

  • On the server, the dictionary is the per-page slice seeded immediately before renderToString.
  • On the client, it is read once from window.eContext.translations and memoised.

Both come from the same translations/<locale>/*.csv files translate() uses — _() is not interpolation-only, and it is not a lesser version of translate(). The split is about where the code runs:

_()translate()
Runs onServer and browser (isomorphic)Server only
Dictionary sourceActive per-page dictionary / window.eContext.translationsRequest locale context, or an explicit locale argument
ScopeThe page's translation sliceThe full locale dictionary
Use forReact components, templates, anything that hydratesMiddleware, services, emails, cron jobs

Use _() in anything that reaches the browser — it pulls in no node:async_hooks and is safe to bundle.

Examples​

Basic Usage​

import { _ } from '@evershop/evershop/lib/locale/translate/_';

// Simple text
const message = _('Welcome to our store');

// With variables
const greeting = _('Hello ${name}', { name: 'John' });
// Returns: "Hello John"

In React Components​

import React from 'react';
import { _ } from '@evershop/evershop/lib/locale/translate/_';

export default function ProductCard({ product }) {
return (
<div>
<h2>{_(product.name)}</h2>
<p>{_('Price: ${price}', { price: product.price })}</p>
<p>{_('${qty} items in stock', { qty: product.qty })}</p>
</div>
);
}

Multiple Variables​

import { _ } from '@evershop/evershop/lib/locale/translate/_';

const message = _(
'Order ${orderId} for ${total} has been ${status}',
{
orderId: '12345',
total: '$99.99',
status: 'completed'
}
);
// Returns: "Order 12345 for $99.99 has been completed"

Conditional Messages​

import { _ } from '@evershop/evershop/lib/locale/translate/_';

const itemCount = 5;
const message = _(
'${count} items in cart',
{ count: itemCount.toString() }
);

Notes​

  • Used primarily in React components and templates
  • Performs a real dictionary lookup — not just interpolation
  • Placeholders use ${variable} syntax
  • If a placeholder key is not found in values, the placeholder is left unchanged
  • Falls back to the source text when the dictionary has no (or an empty) entry
  • For server-only code — middleware, services, emails, cron jobs — use translate(), which can also target an explicit locale

See Also​

  • translate - Server-side translation, with an optional explicit locale