Bewährte Verfahren
URLs in Variablen speichern
Beim Übersetzen von Zeichenketten, die URLs oder ähnliche Daten enthalten, gilt es als gute Praxis, diese URLs in Variablen zu speichern und sie dann in Ihren Templates zu referenzieren.
<Translate
string={`Click <a href="{{url}}">here</a>`}
variables={{url: 'https://tacotranslate.com'}}
/>ARIA-Labels verwenden
Beim Übersetzen von Texten interaktiver Elemente wie Schaltflächen ist es wichtig, ARIA-Labels hinzuzufügen, um die Barrierefreiheit sicherzustellen. ARIA-Labels helfen Screenreadern, beschreibende Informationen über die Funktion des Elements bereitzustellen.
Wenn Sie beispielsweise eine Schaltfläche haben, mit der Benutzer Text aus einem Codeblock kopieren können, können Sie das aria-label Attribut verwenden, um eine klare Beschreibung anzugeben:
<Translate
aria-label={useTranslation('Copy to clipboard')}
string="Copy"
/>Irgendetwas daran fühlt sich sehr meta an.
Globales Origins-Array und mehrere Origins pro Komponente
Dieses Muster funktioniert nur, wenn der Next.js Pages Router verwendet wird.
Bei größeren Anwendungen ist es vorteilhaft, Strings und Übersetzungen in mehrere, kleinere Ursprünge aufzuteilen. Dieser Ansatz hilft, Bundle-Größen und Übertragungszeiten zu verringern und sorgt für eine effiziente und skalierbare Lokalisierung.
Während dies beim reinen clientseitigen Rendering einfach ist, wird das Verwalten von Ursprüngen beim Abrufen von Übersetzungen für serverseitiges Rendering schnell komplex. Sie können die Verwaltung der Ursprünge jedoch automatisieren, indem Sie das Array origins des TacoTranslate-Clients verwenden.
Betrachten Sie dieses Beispiel, in dem wir unsere Komponenten und Seiten in separate Dateien aufgeteilt haben.
import TacoTranslate, {Translate} from 'tacotranslate/react';
import tacoTranslate from '../tacotranslate-client';
// Set an origin name for this component
const origin = 'components/pricing-table';
// Push the origin into the origins array as this file is imported
tacoTranslate.origins.push(origin);
export default function PricingTable() {
return (
<TacoTranslate origin={origin}>
<Translate string="Pricing table" />
// ...
</TacoTranslate>
);
}import TacoTranslate, {Translate} from 'tacotranslate/react';
import getTacoTranslateStaticProps from 'tacotranslate/next/get-static-props';
import tacoTranslateClient from '../tacotranslate-client';
import PricingTable from '../components/pricing-table';
const origin = 'pages/pricing';
tacoTranslateClient.origins.push(origin);
export default function PricingPage() {
return (
<TacoTranslate origin={origin}>
<Translate string="Pricing page" />
<PricingTable />
</TacoTranslate>
);
}
// We will now fetch translations for all imported components and their origins automatically
export async function getStaticProps(context) {
return getTacoTranslateStaticProps(context, {client: tacoTranslateClient});
}Siehe unsere Beispiele für serverseitiges Rendering für weitere Informationen zu getTacoTranslateStaticProps.