Khi sử dụng trang web này, bạn đồng ý với Chính sách bảo mật và Điều khoản sử dụng.
Chấp nhận
Mẹo Vặt Công NghệMẹo Vặt Công NghệMẹo Vặt Công Nghệ
  • Trang Chủ
  • Xu Hướng
  • Công Nghệ
  • Lập Trình
    • Lập Trình NodeJS
    • Lập Trình PHP
    • Framework
      • NextJS
  • Liên Hệ
Đọc: Cách Thiết Lập Website Đa Ngôn Ngữ (Next Intl) – Phần 1
Chia sẻ
Đăng nhập
Thông báo
Thay đổi kích thước phông chữÀ à
Mẹo Vặt Công NghệMẹo Vặt Công Nghệ
Thay đổi kích thước phông chữÀ à
Tìm Kiếm
  • Trang Chủ
  • Bài Viết
  • Tùy Chỉnh Sở Thích
  • Công Nghệ
  • Phần Mềm, Ứng Dụng
  • Liên Hệ
Bạn đã có tài khoản chưa? Đăng nhập
Theo dõi chúng tôi
  • Advertise
© 2022 Foxiz News Network. Ruby Design Company. All Rights Reserved.
Mẹo Vặt Công Nghệ > Bài Viết > Lập Trình > Lập Trình NodeJS > Cách Thiết Lập Website Đa Ngôn Ngữ (Next Intl) – Phần 1
Lập TrìnhCông NghệLập Trình NodeJSNextJS

Cách Thiết Lập Website Đa Ngôn Ngữ (Next Intl) – Phần 1

Thiện Nhân Tào
Cập nhật lần cuối: Tháng 9 8, 2024 6:00 sáng
Tào Thiện Nhân - Web Developer 183 Lượt xem
Chia sẻ
5 Đọc tối thiểu
Chia sẻ

Next Intl là một thư viện mạnh mẽ được thiết kế cho Next.js giúp đơn giản hóa quy trình thiết lập trang web đa ngôn ngữ. Nó cung cấp một khuôn khổ mạnh mẽ cho quốc tế hóa (i18n) bằng cách tích hợp bản địa hóa trực tiếp vào các trang và thành phần của ứng dụng Next.js của bạn.

Với các tính năng như định tuyến tự động dựa trên ngôn ngữ, tải bản dịch phía máy chủ và xử lý bản dịch hiệu quả, Next Intl cho phép các nhà phát triển tạo ra các trang web phục vụ cho nhiều ngôn ngữ và nền văn hóa khác nhau một cách liền mạch. Nó cũng cung cấp một API linh hoạt để quản lý bản dịch, định dạng ngày tháng, số và nhiều hơn nữa, đảm bảo trải nghiệm người dùng mượt mà, được bản địa hóa.

next intl

1. Cài Đặt Next Intl

Hiện tại NextJS đang hỗ trợ 2 loại Router đó là App Router và Pages Router, trong bài viết này mình sẽ hướng dẫn các bạn về App Router, vì đây là định hướng phát triển của NextJS sau này và Pages Router sẽ dẫn được loại bỏ và không được cập nhật trong tương lai.

trong cửa sổ terminal bạn chạy lệnh sau:

npm install next-intl

kế tiếp ở thư mục root bạn tạo một thư mục lang (bạn có thể đặt tên theo ý của bạn), trong thư mục này sẽ chứa file ngôn ngữ, mình sẽ hướng dẫn cách cơ bản, bạn có thể tạo lang/en.json:

{
"HomePage": {
"title": "Hello world!",
"about": "Go to the about page"
}
}

Tiếp theo bạn cần cài đặt nextjs.config file này nằm ở root, chỉnh lại như sau:

import createNextIntlPlugin from 'next-intl/plugin';

const withNextIntl = createNextIntlPlugin();

/** @type {import('next').NextConfig} */
const nextConfig = {};

export default withNextIntl(nextConfig);

Định tuyến của Next.js ở hai nơi, Để chia sẻ cấu hình giữa hai nơi này, chúng ta sẽ thiết lập routing.ts:

src/i18n/routing.ts

import {defineRouting} from 'next-intl/routing';
import {createSharedPathnamesNavigation} from 'next-intl/navigation';

export const routing = defineRouting({
// A list of all locales that are supported
locales: ['en', 'de'],

// Used when no locale matches
defaultLocale: 'en'
});

// Lightweight wrappers around Next.js' navigation APIs
// that will consider the routing configuration
export const {Link, redirect, usePathname, useRouter} =
createSharedPathnamesNavigation(routing);

Sau khi đã thiết lập xong cấu hình định tuyến, chúng ta có thể sử dụng nó để thiết lập phần mềm trung gian (middleware).

src/middleware.ts

import createMiddleware from 'next-intl/middleware';
import {routing} from './i18n/routing';

export default createMiddleware(routing);

export const config = {
// Match only internationalized pathnames
matcher: ['/', '/(de|en)/:path*']
};

Next Intl tạo một đối tượng cấu hình có phạm vi yêu cầu, mà bạn có thể sử dụng để cung cấp thông báo và các tùy chọn khác dựa trên ngôn ngữ của người dùng cho Server Components.

src/i18n/request.ts

import {notFound} from 'next/navigation';
import {getRequestConfig} from 'next-intl/server';
import {routing} from './routing';

export default getRequestConfig(async ({locale}) => {
// Validate that the incoming `locale` parameter is valid
if (!routing.locales.includes(locale as any)) notFound();

return {
messages: (await import(`../../messages/${locale}.json`)).default
};
});

Ngôn ngữ được khớp với phần mềm trung gian có sẵn thông qua tham số ngôn ngữ và có thể được sử dụng để cấu hình ngôn ngữ tài liệu. Ngoài ra, chúng ta có thể sử dụng vị trí này để chuyển cấu hình từ i18n/request.ts đến Client Components thông qua NextIntlClientProvider.

src/app/[locale]/layout.tsx

import {NextIntlClientProvider} from 'next-intl';
import {getMessages} from 'next-intl/server';

export default async function LocaleLayout({
children,
params: {locale}
}: {
children: React.ReactNode;
params: {locale: string};
}) {
// Providing all messages to the client
// side is the easiest way to get started
const messages = await getMessages();

return (
<html lang={locale}>
<body>
<NextIntlClientProvider messages={messages}>
{children}
</NextIntlClientProvider>
</body>
</html>
);
}

Và thế là xong! Bây giờ bạn có thể sử dụng bản dịch và chức năng khác từ Next Intl trong các thành phần của mình:

app/[locale]/page.tsx

import {useTranslations} from 'next-intl';
import {Link} from '@/i18n/routing';

export default function HomePage() {
const t = useTranslations('HomePage');
return (
<div>
<h1>{t('title')}</h1>
<Link href="/about">{t('about')}</Link>
</div>
);
}

Video hướng dẫn: Mẹo Vặt Công Nghệ – Youtube
Bài viết khác: Mẹo Vặt Công Nghệ – Webiste

Bạn cũng có thể thích

Hướng Dẫn Thiết Lập Next Auth V5 Cho NextJS 14

Cách tối ưu Windows 11 cho máy tính cấu hình thấp

Đăng Ký Nhận Bản Tin Hàng Ngày

Hãy theo dõi! Nhận tin tức mới nhất được gửi thẳng đến hộp thư của bạn.
Bằng cách đăng ký, bạn đồng ý với Điều khoản sử dụng của chúng tôi và thừa nhận các hoạt động dữ liệu trong Chính sách bảo mật của chúng tôi. Bạn có thể hủy đăng ký bất kỳ lúc nào.
Chia sẻ bài viết này
Facebook Twitter Sao chép liên kết In
Chia sẻ
Thiện Nhân Tào
Qua Tào Thiện Nhân Web Developer
Theo:
I'm a Web Developer with nearly 2 years of experience in the field. I am currently studying Information Technology at FPT University. Throughout my career, I have gained proficiency in various frameworks such as Laravel, Next.js, and WordPress, which have enabled me to build robust and efficient web applications.
Bài viết trước TOP 10 AI Viết Nội Dung Và SEO Web
Bài viết tiếp theo Adobe Photoshop 2024 Cài Đặt Adobe Photoshop 2024 Miễn Phí
Để lại bình luận Để lại bình luận

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Mạng Xã Hội

FacebookThích
TwitterTheo dõi
YoutubeĐặt mua
TiktokTheo dõi

Ủng Hộ Tôi

- Advertisement -
Ad imageAd image
- Advertisement -
Ad imageAd image

Tin Mới Nhất

Adobe Photoshop 2024
Cài Đặt Adobe Photoshop 2024 Miễn Phí
Phần Mềm, Ứng Dụng Tháng 9 20, 2024
TOP 10 AI Viết Nội Dung Và SEO Web
Chưa phân loại Tháng 9 4, 2024
DMCA là gì ? Làm thế nào để bảo vệ nội dung của bạn
Thông Tin Tháng 9 1, 2024
Microsoft Sẽ Sớm Xóa Bỏ Control Panel Trên Windows 11
Tin Tức Tháng 8 24, 2024
//

Mẹo Vặt Công Nghệ là một trang web cung cấp các mẹo hay về công nghệ, phần mềm, máy tính ngoài ra có các bài viết về hướng dẫn lập trình và các thể loại bài viết khác trong lĩnh vực công nghệ.

Điều Khoản & Chính Sách

  • Chính sách bảo mật

Danh Mục Hàng Đầu

  • Công Nghệ
  • Lập Trình
  • Phần Mềm, Ứng Dụnghot
  • Trí Tuệ Nhân Tạo

Đăng Ký Nhận Nản Tin Của Chúng Tôi

Đăng ký nhận bản tin của chúng tôi để nhận ngay những bài viết mới nhất!

DMCA.com Protection Status DMCA compliant image
Mẹo Vặt Công NghệMẹo Vặt Công Nghệ
Theo dõi chúng tôi
© 2024 Bản quyền thuộc về Mẹo Vặt Công Nghệ. Được phát triển bởi Tào Thiện Nhân
Tham Gia Với Chúng Tôi!

Đăng ký nhận bản tin của chúng tôi và không bao giờ bỏ lỡ tin tức, podcast mới nhất, v.v.

Không có thư rác, có thể hủy đăng ký bất cứ lúc nào.
adbanner
Đã phát hiện AdBlock
Trang web của chúng tôi là trang web được hỗ trợ quảng cáo. Vui lòng thêm vào danh sách trắng để hỗ trợ trang web của chúng tôi.
Được rồi, tôi sẽ đưa vào danh sách trắng
Chào Mừng Trở Lại!

Đăng nhập vào tài khoản của bạn

Đăng ký Quên mật khẩu?