Giả địa phương hóa

**Giả địa phương hóa** () là một phương pháp kiểm thử phần mềm để kiểm tra khả năng quốc tế hóa của phần mềm đó. Thay vì dịch các văn bản trong phần mềm sang một ngôn ngữ khác như quá trình địa phương hóa, các thành phần văn bản trong ứng dụng sẽ được thay thế bằng một phiên bản biến đổi của ngôn ngữ gốc. Ví dụ, dòng chữ "Account Settings" có thể được biến đổi để hiển thị thành "!!! Àççôûñţ  Šéţţîñĝš !!!".

Các phép biến đổi này cho phép người kiểm thử vẫn có thể đọc được từ gốc, nhưng đoạn văn bản hiển thị sẽ có những đặc tính khó xử lý nhất của các ngôn ngữ trên thế giới: độ dài văn bản hoặc ký tự khác nhau, chiều viết khác nhau, độ vừa khít với giao diện, v.v.

## Quá trình địa phương hóa
Thông thường, quá trình địa phương hóa phần mềm diễn ra độc lập với quá trình phát triển của phần mềm đó. Phần mềm sẽ được xây dựng và kiểm thử bằng một ngôn ngữ cơ sở (ví dụ như tiếng Anh), trong đó bất cứ thành phần nào có thể được địa phương hóa sẽ được xuất thành những tập tài nguyên bên ngoài. Những tài nguyên này được giao cho nhóm địa phương hóa để dịch sang các ngôn ngữ khác nhau. Vấn đề với các tiếp cận này là nhiều lỗi phần mềm khó thấy có thể được phát hiện trong quá trình địa phương hóa, khi đó thì đã quá muộn (hoặc quá tốn kém) để sửa chữa chúng.

Những vấn đề có thể xảy ra trong quá trình địa phương hóa thường liên quan tới những khác biệt trong cách thể hiện văn bản ở các ngôn ngữ khác nhau. Chúng có thể bao gồm:

* Đoạn văn bản đã dịch có độ dài lớn hơn đáng kể so với ngôn ngữ gốc, do đó không hiện vừa với giới hạn của giao diện, hoặc xuống hàng ở những vị trí không thích hợp.
* Các ký tự trong phông chữ có thể lớn hơn ngôn ngữ gốc, hoặc có các dấu phụ không có trong ngôn ngữ gốc, do đó có khả năng bị cắt xén.
* Một số ngôn ngữ có chiều đọc không phải từ trái qua phải có thể gây một số vấn đề, đặc biệt là khi phần mềm nhận thông tin đầu vào từ người dùng.
* Một số đoạn mã ứng dụng được viết với giả sử rằng tất cả các ký tự đều nằm trong một bộ ký tự giới hạn, ví dụ như ASCII hoặc ANSI, có thể gây lỗi logic nếu không được phát hiện.

Ngoài ra, quá trình địa phương hóa có thể phát hiện các thành phần đáng ra có thể địa phương hóa được, nhưng lại bị code cố định ở ngôn ngữ gốc. Tương tự như vậy, một số thành phần cũng có thể được thiết kế để địa phương hóa trong khi điều đó không nên xảy ra (ví dụ như tên các thành phần trong tài liệu XML hoặc HTML.) 

Giả địa phương hóa được thiết kế nhằm phát hiện các lỗi trên trong quá trình phát triển phần mềm, bằng cách thay thế *tất cả* các thành phần có thể địa phương hóa được bằng một ngôn ngữ giả mà người nói ngôn ngữ gốc có thể đọc được, nhưng trong đó có hầu hết những yếu tố có khả năng gây rắc rối của những ngôn ngữ và hệ chữ viết khác. Đây là lý do giả địa phương hóa được coi như một công cụ kỹ thuật hoặc quốc tế hóa hơn là công cụ địa phương hóa.

## Giả địa phương hóa trong Microsoft Windows
Mặc dù kỹ thuật giả địa phương hóa đã được sử dụng tại Microsoft từ cuối thập niên 90, nó đã được hãng cung cấp dưới dạng tính năng cho các nhà phát triển trong quá trình phát triển Windows Vista. Loại ngôn ngữ giả được tạo ra cho mục đích này được Windows gọi là một **khu vực giả** (*pseudo locale*). Các khu vực này được thiết kế để sử dụng những bộ ký tự và đặc điểm trong chữ viết từ một trong ba nhóm ngoại ngữ chính được Windows sử dụng tại thời điểm đó—cơ bản ("Phương Tây"), viết ngược ("Cận Đông"), và CJK ("Viễn Đông"). Trước Windows Vista, Microsoft phát triển các bản dựng Windows riêng biệt cho từng nhóm ngôn ngữ trên, với cơ sở mã có thể khác nhau (khiến chúng có hành vi và lỗi khác nhau). Các khu vực giả được tạo ra cho mỗi nhóm ngôn ngữ trên sẽ sinh ra những văn bản sử dụng hệ chữ viết từ nhóm ngôn ngữ đó, nhưng vẫn có thể "đọc" được dưới dạng tiếng Anh. Ví dụ, xâu ký tự sau (nghĩa tiếng Việt là "Chỉnh sửa cài đặt chương trình")

sẽ được hiển thị trong khu vực giả "cơ bản" thành

Quá trình này tạo ra các chuỗi ký tự có độ dài lớn hơn, bao gồm cả những ký tự phi ASCII, và (trong trường hợp giả khu vực "viết ngược") được viết từ phải qua trái.

Cặp dấu ngoặc vuông ở hai đầu đoạn văn bản trong ví dụ này có thể giúp phát hiện các vấn đề sau đây:

* văn bản bị cắt xén (*truncation*)
* các xâu ký tự được hình thành bằng phép nối (*concatenation*)
* các xâu ký tự không thể được địa phương hóa (*hard-coding*)

## Quá trình giả địa phương hóa tại Microsoft
Michael Kaplan (một nhà quản lý chương trình của Microsoft) mô tả quá trình giả địa phương hóa như

Một trong những đặc điểm chính của quá trình giả địa phương hóa là nó diễn ra một cách tự động, trong vòng đời phát triển của phần mềm, như một phần của quá trình tạo bản dựng thông thường. Quá trình này gần giống với quy trình được sử dụng để sản xuất các bản dựng được địa phương hóa một cách thực sự, nhưng được thực hiện *trước khi* một bản dựng được kiểm thử, sớm hơn nhiều trong vòng đời phát triển. Điều này cho phép nhóm phát triển có thời gian phát hiện và sửa chữa lỗi trong mã cơ sở, một công việc đơn giản hơn nhiều so với việc phải tìm và sửa lỗi khi ngày phát hành đã tới gần.

Các bản dựng được sản xuất bởi quá trình giả địa phương hóa được kiểm thử bằng quy trình QA giống như bản dựng không được địa phương hóa. Chúng có thể được kiểm thử bởi những nhân sự nói tiếng Anh bởi các khu vực giả được sử dụng đơn thuần chỉ bắt chước văn bản tiếng Anh. Một số phiên bản beta của Windows (7 và 8) đã từng được phát hành với một số văn bản giả địa phương hóa còn sót lại. Với những phiên bản Windows gần đây, bản dựng giả địa phương hóa là bản dựng thuộc giai đoạn đầu (được tạo ra theo quy trình cho mục đích kiểm thử), và bản dựng tiếng Anh cuối cùng là một phiên bản "địa phương hóa" của bản dựng đó.

## Các công cụ giả địa phương hóa cho nền tảng khác
Ngoài những công cụ được sử dụng nội bộ bởi Microsoft, các công cụ quốc tế hóa khác nay cũng bao gồm những tùy chọn giả địa phương hóa. Những công cụ này bao gồm Alchemy Catalyst từ Alchemy Software Development, SDL Passolo từ SDL và Globalyst từ g11n. Những công cụ này bao gồm những tính năng giả địa phương hóa như cho phép xem các hộp thoại đã được giả địa phương hóa và tự động hóa quy trình kiểm thử. Mặc dù các công cụ như Globalyst có thể hoàn thiện toàn bộ quá trình tạo bản dựng giả địa phương hóa và tự động hóa quá trình kiểm thử, chúng cũng có thể được thực hiện bằng cách chạy kịch bản giả địa phương hóa tùy chỉnh trên tài nguyên văn bản đã được trích xuất và thực hiện kiểm thử thủ công.

Trên Internet có sẵn nhiều giải pháp giả địa phương hóa miễn phí có thể tạo những phiên bản giả địa phương hóa của các định dạng tập tin địa phương hóa thường sử dụng như string iOS, xml Android, po Gettext, v.v. Các trang này cho phép nhà phát triển tải lên tập tin string và tải về tập tin giả địa phương hóa.

## Xem thêm

* Fuzz testing

## Tham khảo