Thực tiễn tốt nhất
Đặt URL vào biến
Khi dịch các chuỗi chứa URL hoặc dữ liệu tương tự, được coi là một thực hành tốt khi đặt các URL này bên trong các biến và sau đó tham chiếu chúng trong các mẫu của bạn.
<Translate
string={`Click <a href="{{url}}">here</a>`}
variables={{url: 'https://tacotranslate.com'}}
/>
Sử dụng nhãn ARIA
Khi dịch văn bản của các phần tử tương tác như nút bấm, việc bao gồm các nhãn ARIA là rất quan trọng để đảm bảo khả năng truy cập. Các nhãn ARIA giúp trình đọc màn hình cung cấp thông tin mô tả về chức năng của phần tử.
Ví dụ, nếu bạn có một nút cho phép người dùng sao chép văn bản từ một khối mã, bạn có thể sử dụng thuộc tính aria-label
để cung cấp mô tả rõ ràng:
<Translate
aria-label={useTranslation('Copy to clipboard')}
string="Copy"
/>
Có điều gì đó về điều này cảm thấy rất meta.
Mảng nguồn toàn cục và nhiều nguồn thành phần
Mẫu này chỉ hoạt động khi sử dụng Next.js Pages Router.
Khi làm việc với các ứng dụng lớn hơn, việc chia chuỗi và bản dịch thành nhiều nguồn nhỏ hơn là rất có lợi. Cách tiếp cận này giúp giảm kích thước gói và thời gian truyền tải, đảm bảo việc bản địa hóa hiệu quả và có thể mở rộng.
Mặc dù điều này khá đơn giản khi chỉ render phía client, việc quản lý các nguồn nhanh chóng trở nên phức tạp khi lấy bản dịch cho server-side rendering. Tuy nhiên, bạn có thể tự động quản lý nguồn bằng cách sử dụng mảng origins
của client TacoTranslate.
Xem xét ví dụ này, nơi chúng tôi đã tách các thành phần và trang thành các tệp riêng biệt.
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});
}
Xem các ví dụ về kết xuất phía máy chủ của chúng tôi để biết thêm thông tin về getTacoTranslateStaticProps
.