Bản địa hóa PHP là gì?

Một trong những cách tốt nhất để ứng dụng tiếp cận nhiều đối tượng hơn là phục vụ cho nhiều ngôn ngữ. Điều này thường có thể chứng minh là một nhiệm vụ khó khăn, nhưng các tính năng quốc tế hóa và bản địa hóa trong CakePHP giúp nó dễ dàng hơn nhiều

Đầu tiên, điều quan trọng là phải hiểu một số thuật ngữ. Quốc tế hóa đề cập đến khả năng của một ứng dụng được bản địa hóa. Thuật ngữ bản địa hóa đề cập đến việc điều chỉnh ứng dụng để đáp ứng các yêu cầu về ngôn ngữ [hoặc văn hóa] cụ thể [i. e. một “địa phương”]. Quốc tế hóa và bản địa hóa thường được viết tắt lần lượt là i18n và l10n;

Tạo trình biên dịch của riêng bạn

Nếu bạn cần khác với các quy ước của CakePHP về vị trí và cách lưu trữ thông báo dịch, bạn có thể tạo trình tải thông báo dịch của riêng mình. Cách dễ nhất để tạo trình dịch của riêng bạn là xác định trình tải cho một miền và ngôn ngữ

use Aura\Intl\Package;

I18n::setTranslator['animals', function [] {
    $package = new Package[
        'default', // The formatting strategy [ICU]
        'default'  // The fallback domain
    ];
    $package->setMessages[[
        'Dog' => 'Chien',
        'Cat' => 'Chat',
        'Bird' => 'Oiseau'
        ...
    ]];

    return $package;
}, 'fr_FR'];

Đoạn mã trên có thể được thêm vào config/bootstrap của bạn. php để có thể tìm thấy bản dịch trước khi sử dụng bất kỳ chức năng dịch nào. Yêu cầu tối thiểu tuyệt đối để tạo trình dịch là hàm trình tải phải trả về một đối tượng

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
3. Sau khi có mã, bạn có thể sử dụng các chức năng dịch thuật như bình thường

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"

Như bạn thấy, các đối tượng

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
4 nhận các thông điệp dịch dưới dạng một mảng. Bạn có thể vượt qua phương thức
// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
5 theo cách bạn muốn. với mã nội tuyến, bao gồm một tệp khác, gọi một chức năng khác, v.v. CakePHP cung cấp một số chức năng trình tải mà bạn có thể sử dụng lại nếu bạn chỉ cần thay đổi nơi tải thư. Ví dụ, bạn vẫn có thể sử dụng. po, nhưng được tải từ một vị trí khác

use Cake\I18n\MessagesFileLoader as Loader;

// Load messages from src/Locale/folder/sub_folder/filename.po
// Prior to 3.5 use translator[]
I18n::setTranslator[
    'animals',
    new Loader['filename', 'folder/sub_folder', 'po'],
    'fr_FR'
];

Tạo trình phân tích tin nhắn

Có thể tiếp tục sử dụng các quy ước tương tự mà CakePHP sử dụng, nhưng sử dụng trình phân tích cú pháp thông báo khác với

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
6. Ví dụ: nếu bạn muốn tải thông báo dịch bằng cách sử dụng
// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
7, trước tiên bạn cần tạo lớp trình phân tích cú pháp

________số 8

Tệp phải được tạo trong thư mục src/I18n/Parser của ứng dụng của bạn. Tiếp theo, tạo tệp bản dịch trong src/Locale/fr_FR/animals. khoai mỡ

Dog: Chien
Cat: Chat
Bird: Oiseau

Và cuối cùng, định cấu hình trình tải dịch cho miền và ngôn ngữ

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
0

Tạo trình dịch chung

Định cấu hình trình dịch bằng cách gọi

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
8 cho từng miền và ngôn ngữ bạn cần hỗ trợ có thể rất tẻ nhạt, đặc biệt nếu bạn cần hỗ trợ nhiều ngôn ngữ khác nhau. Để tránh vấn đề này, CakePHP cho phép bạn xác định trình tải trình dịch chung cho từng miền

Hãy tưởng tượng rằng bạn muốn tải tất cả các bản dịch cho miền mặc định và cho bất kỳ ngôn ngữ nào từ một dịch vụ bên ngoài

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
2

Ví dụ trên gọi một dịch vụ mẫu bên ngoài để tải tệp JSON có bản dịch và sau đó chỉ cần tạo một đối tượng

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
4 cho bất kỳ ngôn ngữ nào được yêu cầu trong ứng dụng

Nếu bạn muốn thay đổi cách tải các gói cho tất cả các gói không có bộ tải cụ thể, bạn có thể thay thế trình tải gói dự phòng bằng cách sử dụng gói

use Cake\I18n\MessagesFileLoader as Loader;

// Load messages from src/Locale/folder/sub_folder/filename.po
// Prior to 3.5 use translator[]
I18n::setTranslator[
    'animals',
    new Loader['filename', 'folder/sub_folder', 'po'],
    'fr_FR'
];
0

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
5

Mới trong phiên bản 3. 4. 0. Thay thế bộ tải

use Cake\I18n\MessagesFileLoader as Loader;

// Load messages from src/Locale/folder/sub_folder/filename.po
// Prior to 3.5 use translator[]
I18n::setTranslator[
    'animals',
    new Loader['filename', 'folder/sub_folder', 'po'],
    'fr_FR'
];
0 đã được thêm vào trong 3. 4. 0

Số nhiều và ngữ cảnh trong Trình dịch tùy chỉnh

Các mảng được sử dụng cho

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
5 có thể được tạo để hướng dẫn người dịch lưu trữ thư trong các miền khác nhau hoặc để kích hoạt lựa chọn số nhiều kiểu Gettext. Sau đây là một ví dụ về lưu trữ các bản dịch cho cùng một khóa trong các ngữ cảnh khác nhau

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
8

Tương tự, bạn có thể biểu thị số nhiều kiểu Gettext bằng cách sử dụng mảng thông báo bằng cách có khóa mảng lồng nhau cho mỗi dạng số nhiều

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
9

Sử dụng các trình định dạng khác nhau

Trong các ví dụ trước, chúng ta đã thấy rằng các Gói được tạo bằng cách sử dụng

use Cake\I18n\MessagesFileLoader as Loader;

// Load messages from src/Locale/folder/sub_folder/filename.po
// Prior to 3.5 use translator[]
I18n::setTranslator[
    'animals',
    new Loader['filename', 'folder/sub_folder', 'po'],
    'fr_FR'
];
3 làm đối số đầu tiên và nó được chỉ ra bằng một nhận xét rằng nó tương ứng với bộ định dạng sẽ được sử dụng. Trình định dạng là các lớp chịu trách nhiệm nội suy các biến trong thông báo dịch và chọn dạng số nhiều chính xác

Nếu bạn đang xử lý một ứng dụng cũ hoặc bạn không cần sức mạnh được cung cấp bởi định dạng thông báo ICU, CakePHP cũng cung cấp trình định dạng

use Cake\I18n\MessagesFileLoader as Loader;

// Load messages from src/Locale/folder/sub_folder/filename.po
// Prior to 3.5 use translator[]
I18n::setTranslator[
    'animals',
    new Loader['filename', 'folder/sub_folder', 'po'],
    'fr_FR'
];
4

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
0

Các thông báo cần dịch sẽ được chuyển đến hàm

use Cake\I18n\MessagesFileLoader as Loader;

// Load messages from src/Locale/folder/sub_folder/filename.po
// Prior to 3.5 use translator[]
I18n::setTranslator[
    'animals',
    new Loader['filename', 'folder/sub_folder', 'po'],
    'fr_FR'
];
5 để nội suy các biến

// Prior to 3.5 use I18n::locale[]
I18n::setLocale['fr_FR'];
__d['animals', 'Dog']; // Returns "Chien"
1

Có thể đặt trình định dạng mặc định cho tất cả các trình dịch được tạo bởi CakePHP trước khi chúng được sử dụng lần đầu tiên. Điều này không bao gồm các trình dịch được tạo thủ công bằng phương pháp

use Cake\I18n\MessagesFileLoader as Loader;

// Load messages from src/Locale/folder/sub_folder/filename.po
// Prior to 3.5 use translator[]
I18n::setTranslator[
    'animals',
    new Loader['filename', 'folder/sub_folder', 'po'],
    'fr_FR'
];
6 và
use Cake\I18n\MessagesFileLoader as Loader;

// Load messages from src/Locale/folder/sub_folder/filename.po
// Prior to 3.5 use translator[]
I18n::setTranslator[
    'animals',
    new Loader['filename', 'folder/sub_folder', 'po'],
    'fr_FR'
];
7

Quá trình nội địa hóa là gì?

Nội địa hóa là gì?

Bản địa hóa trong laravel là gì?

Bản địa hóa là giai đoạn thứ hai của quá trình quốc tế hóa Laravel [i18n] . Trong Laravel i18n, một ứng dụng được thiết kế để phù hợp với nhiều ngôn ngữ và nền văn hóa khác nhau. Bản địa hóa đang điều chỉnh các ứng dụng được quốc tế hóa cho một ngôn ngữ cụ thể thông qua dịch thuật.

Bản địa hóa một ngôn ngữ có nghĩa là gì?

Bản địa hóa ngôn ngữ [hoặc bản địa hóa ngôn ngữ] là quá trình điều chỉnh bản dịch của sản phẩm cho phù hợp với một quốc gia hoặc khu vực cụ thể .

API bản địa hóa là gì?

Bản địa hóa là quá trình dịch nội dung cho một nền văn hóa cụ thể . Nó có thể được sử dụng để phục vụ khán giả đa ngôn ngữ trên toàn thế giới và đạt được khả năng tiếp cận thị trường tốt hơn. Trong blog này, chúng ta sẽ tìm hiểu về cách sử dụng bản địa hóa trong một ASP. NET Core web API với tài nguyên [. tệp resx].

Chủ Đề