# General Translation React SDKs (gt-react, gt-next, gt-react-native): Using server functions
URL: https://generaltranslation.com/en-US/docs/react/tanstack-start/using-server-functions.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: How to translate strings and read request state with General Translation in TanStack Start server functions.

Import the isomorphic runtime helpers from `gt-tanstack-start`. In loaders, server functions, and server-rendered metadata, call them inside the active request scope.

## Before you start [#before-start]

Complete the [TanStack Start setup](/docs/react/tanstack-start/setup). You must register [`gtMiddleware`](/docs/react/tanstack-start/reference/functions/gt-middleware) globally and call [`initializeGT`](/docs/react/reference/config#initialize) before the middleware handles a request.

Server calls to these helpers throw outside an active middleware request scope.

## Translate in a server function [#translate]

Create a TanStack Start server function, then call [`getGT`](/docs/react/tanstack-start/reference/functions/get-gt) inside its handler. Use [`getLocale`](/docs/react/tanstack-start/reference/functions/get-locale) and [`getEnableI18n`](/docs/react/tanstack-start/reference/functions/get-enable-i18n) when the response also needs request state.

```tsx title="src/routes/account.tsx"
import { createFileRoute } from '@tanstack/react-router';
import { createServerFn } from '@tanstack/react-start';
import {
  getEnableI18n,
  getGT,
  getLocale,
} from 'gt-tanstack-start';

const loadAccount = createServerFn({ method: 'GET' }).handler(async () => {
  const gt = await getGT();

  return {
    locale: getLocale(),
    enableI18n: getEnableI18n(),
    title: gt('Account'),
  };
});

export const Route = createFileRoute('/account')({
  loader: () => loadAccount(),
  head: ({ loaderData }) => ({
    meta: [{ title: loaderData?.title }],
  }),
  component: Account,
});

function Account() {
  const data = Route.useLoaderData();
  return <h1>{data.title}</h1>;
}
```

TanStack Start runs the handler inside the request middleware scope. Each request receives its own locale and internationalization setting, including during concurrent server rendering.

## Translate registered messages and dictionaries [#messages]

Use [`getMessages`](/docs/react/tanstack-start/reference/functions/get-messages) for strings registered with [`msg`](/docs/react/reference/functions/msg). Use [`getTranslations`](/docs/react/tanstack-start/reference/functions/get-translations) for dictionary entries.

```ts
import { createServerFn } from '@tanstack/react-start';
import {
  getMessages,
  getTranslations,
  msg,
} from 'gt-tanstack-start';

const status = msg('Ready');

export const loadCopy = createServerFn({ method: 'GET' }).handler(async () => {
  const m = await getMessages();
  const t = await getTranslations('account');

  return {
    status: m(status),
    heading: t('heading'),
  };
});
```

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
