Trang chủSandboxTrưng bàyỨng dụngTài liệuBlog
    • EnglishTiếng Anh
      EN
    • русскийTiếng Nga
      RU
    • 日本語Tiếng Nhật
      JA
    • françaisTiếng Pháp
      FR
    • 한국어Tiếng Hàn
      KO
    • 中文Tiếng Trung
      ZH
    • españolTiếng Tây Ban Nha
      ES
    • DeutschTiếng Đức
      DE
    • العربيةTiếng Ả Rập
      AR
    • italianoTiếng Italy
      IT
    • British EnglishTiếng Anh (Anh)
      EN-GB
    • portuguêsTiếng Bồ Đào Nha
      PT
    • हिन्दीTiếng Hindi
      HI
    • TürkçeTiếng Thổ Nhĩ Kỳ
      TR
    • polskiTiếng Ba Lan
      PL
    • IndonesiaTiếng Indonesia
      ID
    • Tiếng ViệtTiếng Việt
      VI
    • українськаTiếng Ukraina
      UK
    /
    Lọc tài liệu theo framework
    Alt+←
    Tại sao Intlayer?
    Bắt đầu
    Khái niệm
    • Intlayer làm việc như thế nào
    • Cấu hình
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • Editor visual
    • CMS
    • Tích hợp CI/CD
    • DịchSố nhiềuLiệt kêĐiều kiệnGiới tínhChènTệpNestingMarkdownHTMLLấy hàm
    • File cho mỗi ngôn ngữ
    • Biên dịch
    • Tự động điền
    • Kiểm tra
    • Tối ưu hóa gói
    Môi trường
    • Next.js 14 và App Router
      Next.js 15
      Next.js không locale URL
      Next.js và Page Router
      Trình biên dịch
    • Tanstack Start Solid
    • Astro và React
      Astro và Svelte
      Astro và Vue
      Astro và Solid
      Astro và Preact
      Astro và Lit
      Astro và Vanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • Nuxt và Vue
    • Vite và Solid
    • SvelteKit
    • Vite và Preact
    • Vite và Vanilla JS
    • Vite và Lit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React Native và Expo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • Lynx và React
    Plugins
    • JSON
    • gettext (.po)
    Mở rộng VS Code
    Tác nhân
    • MCP Server
    • Kỹ năng tác nhân
    Phiên bản
    • v8
    • v7
    • v6
    Benchmark
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    Blog
    Đặt câu hỏi
    1. Documentation
    2. Khái niệm
    3. Khai báo nội dung
    4. Số nhiều
    Ngày tạo:2026-05-04Cập nhật lần cuối:2026-05-04
    Tham chiếu tài liệu này tới trợ lý AI yêu thích của bạn
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    Đặt câu hỏi và nhận tóm tắt tài liệu bằng cách tham chiếu trang này và nhà cung cấp AI bạn chọn

    Lịch sử phiên bản

    1. "Init history"
      v8.8.04/5/2026

    Nội dung của trang này đã được dịch bằng AI.

    Xem phiên bản mới nhất của nội dung gốc bằng tiếng Anh
    Chỉnh sửa tài liệu này

    Nếu bạn có ý tưởng để cải thiện tài liệu này, vui lòng đóng góp bằng cách gửi pull request trên GitHub.

    Liên kết GitHub tới tài liệu
    Sao chép

    Sao chép Markdown của tài liệu vào bộ nhớ tạm

    Nội dung số nhiều / Số nhiều trong Intlayer

    Cách hoạt động của số nhiều

    Trong Intlayer, nội dung số nhiều được thực hiện thông qua hàm plural, hàm này ánh xạ các danh mục số nhiều CLDR, zero, one, two, few, many, other, tới nội dung tương ứng của chúng. Danh mục chính xác được chọn tự động dựa trên ngôn ngữ đang hoạt động và giá trị số lượng, sử dụng API Intl.PluralRules tích hợp sẵn của nền tảng.

    Không giống như enu, chọn nội dung dựa trên các phạm vi số do bạn tự xác định, plural ủy quyền việc lựa chọn cho các quy tắc CLDR. Đây là điều làm cho nó có thể mở rộng cho các ngôn ngữ có quy tắc số nhiều phức tạp, như tiếng Nga, tiếng Ba Lan, tiếng Ả Rập hoặc tiếng Wales, mà không cần phải tự viết logic modulo.

    Khi nào nên sử dụng plural so với enu

    Hiển thị tất cả nội dung bảng

    Mở bảng trong một cửa sổ bật lên để xem toàn bộ nội dung dữ liệu một cách rõ ràng

    Trường hợp sử dụng Trợ giúp
    Các dạng số nhiều ngữ pháp dựa trên ngôn ngữ (một quả táo / hai quả táo / 5 quả táo) plural
    Phạm vi số tùy chỉnh (<5, >=10) hoặc các nhóm không thuộc CLDR enu

    Nếu bạn chỉ nhắm mục tiêu tiếng Anh hoặc tiếng Việt (vốn chỉ có one / other hoặc không có sự thay đổi hình thái phức tạp cho số nhiều), cả hai đều hoạt động. Đối với bất kỳ ngôn ngữ nào có sự phân biệt few / many / two, hãy ưu tiên plural.

    Thiết lập nội dung số nhiều

    Để thiết lập nội dung số nhiều trong dự án Intlayer của bạn, hãy tạo một mô-đun nội dung sử dụng trợ giúp plural. Danh mục other là bắt buộc và được sử dụng làm phương án dự phòng khi một ngôn ngữ không xác định danh mục cụ thể hơn.

    **/*.content.ts
    Sao chép mã

    Sao chép đoạn mã vào khay nhớ tạm (clipboard)

    import { plural, t, type Dictionary } from "intlayer";
    
    const openingsContent = {
      key: "total_openings",
      content: {
        totalOpenings: t({
          en: plural({
            one: "{{count}} opening",
            other: "{{count}} openings",
          }),
          vi: plural({
            other: "{{count}} vị trí đang tuyển",
          }),
        }),
      },
    } satisfies Dictionary;
    
    export default openingsContent;

    Các danh mục được hỗ trợ là zero, one, two, few, many, other. Bạn chỉ cần khai báo các danh mục mà ngôn ngữ mục tiêu của bạn sử dụng, Intlayer sẽ quay lại other khi không có danh mục cụ thể nào khớp.

    Trình giữ chỗ {{count}} được thay thế tự động bằng số lượng bạn chuyển vào lúc thực thi. Bạn cũng có thể bao gồm các trình giữ chỗ khác (xem Trình giữ chỗ tùy chỉnh bên dưới).

    Sử dụng nội dung số nhiều với React Intlayer

    Để sử dụng nội dung số nhiều bên trong một thành phần React, hãy truy xuất nó thông qua hook useIntlayer và gọi nó với một số lượng. Ngôn ngữ đang hoạt động và số lượng được kết hợp để chọn danh mục CLDR phù hợp.

    **/*.tsx
    Sao chép mã

    Sao chép đoạn mã vào khay nhớ tạm (clipboard)

    import type { FC } from "react";
    import { useIntlayer } from "react-intlayer";
    
    const OpeningsComponent: FC<{ count: number }> = ({ count }) => {
      const { totalOpenings } = useIntlayer("total_openings");
    
      return (
        <div>
          {/* Trong tiếng Anh:                                  */}
          {/*  count=0  → "0 openings"   (other)           */}
          {/*  count=1  → "1 opening"    (one)             */}
          {/*  count=2  → "2 openings"   (other)           */}
          {/*  count=21 → "21 openings"  (other)           */}
          <p>{totalOpenings(count)}</p>
        </div>
      );
    };
    
    export default OpeningsComponent;

    Bạn có thể gọi hàm được trả về theo hai cách tương đương:

    tsx
    Sao chép mã

    Sao chép đoạn mã vào khay nhớ tạm (clipboard)

    totalOpenings(21); // viết tắt: chỉ số lượngtotalOpenings({ count: 21 }); // dạng đầy đủ

    Trình giữ chỗ tùy chỉnh

    Chuỗi số nhiều có thể bao gồm các trình giữ chỗ khác ngoài {{count}}. Chuyển chúng dưới dạng đối tượng cùng với count:

    **/*.content.ts
    Sao chép mã

    Sao chép đoạn mã vào khay nhớ tạm (clipboard)

    import { plural, type Dictionary } from "intlayer";
    
    const inboxContent = {
      key: "inbox_summary",
      content: {
        summary: plural({
          other: "{{name}}, bạn có {{count}} tin nhắn mới",
        }),
      },
    } satisfies Dictionary;
    
    export default inboxContent;
    **/*.tsx
    Sao chép mã

    Sao chép đoạn mã vào khay nhớ tạm (clipboard)

    const { summary } = useIntlayer("inbox_summary");
    
    summary({ count: 1, name: "Alice" });
    // → "Alice, bạn có 1 tin nhắn mới"
    
    summary({ count: 7, name: "Alice" });
    // → "Alice, bạn có 7 tin nhắn mới"

    Sơ lược về các danh mục CLDR

    Các ngôn ngữ khác nhau sử dụng các tập hợp con khác nhau của các danh mục CLDR. Một vài trường hợp phổ biến:

    Hiển thị tất cả nội dung bảng

    Mở bảng trong một cửa sổ bật lên để xem toàn bộ nội dung dữ liệu một cách rõ ràng

    Ngôn ngữ Các danh mục được sử dụng
    Tiếng Anh (en) one, other
    Tiếng Pháp (fr) one, many, other
    Tiếng Nga (ru) one, few, many, other
    Tiếng Ba Lan (pl) one, few, many, other
    Tiếng Ả Rập (ar) zero, one, two, few, many, other
    Tiếng Nhật / Tiếng Trung / Tiếng Việt chỉ other

    Bạn không cần phải ghi nhớ điều này, hãy khai báo các danh mục bạn có bản dịch và Intlayer sẽ quay lại other khi cần thiết.

    Hạn chế

    So với các nút khác, plural chưa thể được lồng ghép với các nút con.

    Ví dụ:

    Hợp lệ:

    ts
    Sao chép mã

    Sao chép đoạn mã vào khay nhớ tạm (clipboard)

        totalOpenings: t({      en: plural({        one: "{{count}} opening",        other: "{{count}} openings",      }),      fr: plural({        one: "{{count}} offre",        other: "{{count}} offres",      }),    }),

    Không hợp lệ:

    ts
    Sao chép mã

    Sao chép đoạn mã vào khay nhớ tạm (clipboard)

    totalOpenings: plural({  one: t({    en: "{{count}} opening",    fr: "{{count}} offre",  }),  other: t({    en: "{{count}} openings",    fr: "{{count}} offres",  }),}),

    Tài nguyên bổ sung

    Để biết thêm thông tin chi tiết về cấu hình và cách sử dụng, hãy tham khảo các tài nguyên sau:

    • Tài liệu về Liệt kê (Enumeration)
    • Tài liệu về Chèn (Insertion)
    • Tài liệu về Intlayer CLI
    • Tài liệu về React Intlayer
    • Tài liệu về Next Intlayer

    Các tài nguyên này cung cấp thêm thông tin chi tiết về việc thiết lập và sử dụng Intlayer trên nhiều môi trường và khung làm việc khác nhau.

    Dịch
    Liệt kê
    Alt+→

    Trong trang này

      Các cuộc thảo luận là ẩn danh và được xem xét thường xuyên để giải quyết các vấn đề phổ biến. Hãy thoải mái chia sẻ ý tưởng tính năng, phản hồi về tài liệu hoặc bất cứ điều gì liên quan đến Intlayer, chúng tôi sử dụng thông tin này để định hình lộ trình và cải thiện sản phẩm.

      totalOpenings(21); // viết tắt: chỉ số lượngtotalOpenings({ count: 21 }); // dạng đầy đủ
          totalOpenings: t({      en: plural({        one: "{{count}} opening",        other: "{{count}} openings",      }),      fr: plural({        one: "{{count}} offre",        other: "{{count}} offres",      }),    }),
      totalOpenings: plural({  one: t({    en: "{{count}} opening",    fr: "{{count}} offre",  }),  other: t({    en: "{{count}} openings",    fr: "{{count}} offres",  }),}),