Sử dụng TacoTranslate
Dịch chuỗi
Hiện có ba cách để dịch các chuỗi: thành phần Translate
, hook useTranslation
, hoặc tiện ích translateEntries
.
Sử dụng thành phần Translate
.
Hiển thị bản dịch bên trong phần tử span
và hỗ trợ kết xuất HTML.
import {Translate} from 'tacotranslate/react';
function Page() {
return <Translate string="Hello, world!" />;
}
Bạn có thể thay đổi kiểu phần tử bằng cách sử dụng, ví dụ, as="p"
cho thành phần.
Sử dụng hook useTranslation
.
Trả về bản dịch dưới dạng chuỗi thuần. Hữu ích, ví dụ, trong thẻ meta
.
import {useEffect} from 'react';
import {useTranslation} from 'tacotranslate/react';
function Page() {
const helloWorld = useTranslation('Hello, world!');
useEffect(() => {
alert(helloWorld);
}, [helloWorld]);
return (
<title>{useTranslation('My page title')}</title>
);
}
Sử dụng tiện ích translateEntries
.
Dịch các chuỗi ở phía máy chủ. Tăng cường hình ảnh OpenGraph.
import {createEntry, translateEntries} from 'tacotranslate';
async function generateMetadata(locale = 'es') {
const title = createEntry({string: 'Hello, world!'});
const description = createEntry({string: 'TacoTranslate on the server'});
const translations = await translateEntries(
tacoTranslate,
{origin: 'opengraph', locale},
[title, description]
);
return {
title: translations(title),
description: translations(description)
};
}
Cách các chuỗi được dịch
Khi các chuỗi đến máy chủ của chúng tôi, chúng tôi trước tiên xác thực và lưu chúng, rồi ngay lập tức trả về một bản dịch máy. Mặc dù các bản dịch máy thường có chất lượng thấp hơn so với các bản dịch AI của chúng tôi, chúng vẫn cung cấp phản hồi ban đầu nhanh chóng.
Đồng thời, chúng tôi sẽ khởi tạo một công việc dịch bất đồng bộ để tạo ra bản dịch AI chất lượng cao, tối tân cho chuỗi của bạn. Khi bản dịch AI sẵn sàng, nó sẽ thay thế bản dịch máy và được gửi mỗi khi bạn yêu cầu bản dịch cho các chuỗi của mình.
Nếu bạn đã dịch thủ công một chuỗi, những bản dịch đó sẽ được ưu tiên và được trả về thay thế.
Sử dụng nguồn gốc
Các dự án TacoTranslate chứa những gì chúng tôi gọi là origins. Hãy coi chúng như các điểm vào, thư mục hoặc nhóm cho các chuỗi và bản dịch của bạn.
import {TacoTranslate} from 'tacotranslate/react';
function Menu() {
return (
<TacoTranslate origin="application-menu">
// ...
</TacoTranslate>
);
}
Origins cho phép bạn tách các chuỗi thành các vùng chứa có ý nghĩa. Ví dụ, bạn có thể có một origin cho phần tài liệu và một origin khác cho trang tiếp thị của bạn.
Để kiểm soát chi tiết hơn, bạn có thể thiết lập origins ở cấp thành phần.
Để đạt được điều này, hãy cân nhắc sử dụng nhiều nhà cung cấp TacoTranslate trong dự án của bạn.
Vui lòng lưu ý rằng cùng một chuỗi có thể nhận được những bản dịch khác nhau ở các origin khác nhau.
Cuối cùng, việc bạn phân tách các chuỗi thành các origin như thế nào tùy thuộc vào bạn và nhu cầu của bạn. Tuy nhiên, hãy lưu ý rằng việc có quá nhiều chuỗi trong một origin có thể làm tăng thời gian tải.
Xử lý biến
Bạn luôn nên sử dụng biến cho nội dung động, chẳng hạn như tên người dùng, ngày tháng, địa chỉ e-mail và những nội dung khác.
Các biến trong chuỗi được khai báo bằng hai dấu ngoặc nhọn, như {{variable}}
.
import {Translate} from 'tacotranslate/react';
function Greeting() {
const name = 'Juan';
return <Translate string="Hello, {{name}}!" variables={{name}} />;
}
import {useTranslation} from 'tacotranslate/react';
function useGreeting() {
const name = 'Juan';
return useTranslation('Hello, {{name}}!', {variables: {name}});
}
Quản lý nội dung HTML
Mặc định, thành phần Translate
hỗ trợ và hiển thị nội dung HTML. Tuy nhiên, bạn có thể tắt hành vi này bằng cách đặt useDangerouslySetInnerHTML
thành false
.
Việc vô hiệu hóa kết xuất HTML được khuyến nghị mạnh mẽ khi dịch nội dung không đáng tin cậy, chẳng hạn như nội dung do người dùng tạo.
Tất cả đầu ra luôn được làm sạch bằng sanitize-html trước khi được hiển thị.
import {Translate} from 'tacotranslate/react';
function Page() {
return (
<Translate
string={`
Welcome to <strong>my</strong> website.
I’m using <a href="{{url}}">TacoTranslate</a> to translate text.
`}
variables={{url: 'https://tacotranslate.com'}}
useDangerouslySetInnerHTML={false}
/>
);
}
Ví dụ ở trên sẽ được kết xuất dưới dạng văn bản thuần túy.