2012-04-03 3 views
12

Tôi đang sử dụng gettext trong môi trường MAMP. Tôi có các tệp miền địa phương cho es_ES, ca_ES, en_USgl_ES. Không có vấn đề với ba đầu tiên, nhưng cho ra, tôi nhận được một lỗi khi cố gắng để ràng buộc các tập tin bản địa phương ngữ để các ngôn ngữ gl_ES (ở Tây Ban Nha). Đây không phải là một vấn đề với apache hoặc PHP bởi vì những người khác làm việc (và trong máy chủ CentOS của tôi tôi có gói gl_ES và hoạt động tốt)Thêm ngôn ngữ trong Mac OSX

Vì vậy, tôi nhận ra Mac OS X của tôi (Phiên bản 10.6.8) không hỗ trợ. thật kỳ lạ vì nó có hỗ trợ tiếng Tây Ban Nha, Catalan và Euskera, ba ngôn ngữ chính thức khác ở Tây Ban Nha: tôi chỉ còn thiếu một ngôn ngữ). Một số thiết bị đầu cuối để hiển thị cho bạn:

$ locale -a | grep _ES 
ca_ES 
ca_ES.ISO8859-1 
ca_ES.ISO8859-15 
ca_ES.UTF-8 
es_ES 
es_ES.ISO8859-1 
es_ES.ISO8859-15 
es_ES.UTF-8 
eu_ES 
eu_ES.ISO8859-1 
eu_ES.ISO8859-15 
eu_ES.UTF-8 
$ ll /usr/share/locale/ | grep _ES 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES.ISO8859-1/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES.ISO8859-15/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 ca_ES.UTF-8/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES.ISO8859-1/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES.ISO8859-15/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 es_ES.UTF-8/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES.ISO8859-1/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES.ISO8859-15/ 
drwxr-xr-x 8 root wheel 272B 3 dic 2010 eu_ES.UTF-8/ 

Tôi không biết cách thêm hỗ trợ từ phương thức này (hoặc bất kỳ loại nào khác) vào Mac OSX. Tôi đã thử các đĩa cài đặt (thêm gói ngôn ngữ) nhưng không thành công: chúng chỉ là bản dịch của hệ thống tác nhân.

Tôi tìm thấy this similar question, nhưng không có nhiều thông tin và không có câu trả lời hay.

Tôi đã đến localedef làm tùy chọn, nhưng dường như chỉ để tạo .UTF-8 hoặc tương tự khi bạn đã có tệp cơ sở.

Vì vậy, câu hỏi là: Cách thêm ngôn ngữ mới trong MacOSX. Cảm ơn!

Trả lời

6

này nên làm như lừa:

cd /usr/share/locale 
sudo cp -R es_ES gl_ES 

Sau đó mở một phiên ga mới và danh sách các miền địa phương một lần nữa. Galician nên ở đó :)

+0

Cảm ơn! Vì vậy, obvoius ... :-) Trong thực tế, tôi cũng đã làm điều này để có cùng: \t sudo cp -R es_ES.ISO8859-1 gl_ES.ISO8859-1 \t sudo cp -R es_ES.ISO8859-15 gl_ES.ISO8859 -15 \t sudo cp -R es_ES.UTF-8 gl_ES.UTF-8 – Natxet

+8

Điều này không cài đặt ngôn ngữ mới, bản sao này đã sao chép một ngôn ngữ đã có trên hệ thống. –

+5

Như đã nêu bởi @GarciaWebDev, điều này không trả lời câu hỏi thực sự về việc thêm ngôn ngữ MỚI vào mac osx – AndyPerlitch

8

Sau hàng giờ tìm kiếm, rót mã perl, và gãi đầu, tôi đã kết luận tại Apple là không thành công trong bộ phận định nghĩa-tạo và định nghĩa. Đây là thỏa thuận: OSX cung cấp cho bạn một kịch bản tiện ích (* ehem * ... shoddy) được viết bằng perl nằm tại /usr/bin/localedef, được SUPPOSED để tạo một ngôn ngữ mới. Manpage nói rằng việc sử dụng nên được một cái gì đó như thế này (chạy bên trong usr/share/locale):

localedef -i base_file -f UTF-8 new_locale_name 

Như đã trình bày bởi OP, lệnh này chỉ dành cho việc sao chép một miền địa phương hiện nay. Vâng, tôi thậm chí không thể làm việc đó! Tôi không biết perl, nhưng tôi tìm thấy ít nhất một lỗi mã bất cẩn trong /usr/bin/localedef (dòng 512 tham chiếu một phụ được gọi là set_escape_char thực sự là set_escape) và trên hết là tôi không thể nhận được localedef để hoạt động . Như đã nêu trong @alombarte, bạn chỉ có thể sao chép thư mục locale hiện tại với cp -R src_locale trg_locale nhưng anh quên đề cập rằng có sự khác biệt giữa ngôn ngữ nguồn và đích bạn cần thực sự thay đổi các tệp văn bản theo cách thủ công trong thư mục ngôn ngữ mới.

Ví dụ, tôi muốn tạo ra các locale es_NI.UTF-8 (Nicaragua), với mã tiền tệ chính xác và thông tin tiền tệ, vì vậy đây là những gì tôi đã làm:

cd /usr/share/locale 
sudo cp -R es_MX.UTF-8 es_NI.UTF-8 
sudo vim es_NI.UTF-8/LC_MONETARY 
# changed MXN to NIO, $ to C$, etc... 
# saved LC_MONETARY 

Bạn có thể cần phải thay đổi giá trị thích hợp khác tùy thuộc vào việc bạn sử dụng ngôn ngữ mới. Here là bộ sưu tập tốt nhất về thông tin địa phương mà tôi có thể tìm thấy trực tuyến. Nếu tôi là một lập trình viên tốt hơn, tôi sẽ tạo một tập lệnh để các trang web "glibc" xuất ra định dạng và định dạng lại nó để làm việc với lệnh localedef trong Mac OSX.

P.S. xin lỗi để @alombarte cho downvote ban đầu ... mặc dù phản ứng của mình không trả lời câu hỏi thực sự, tôi đã không nhận ra rằng nó sẽ là như vậy vô cùng khó khăn để làm điều đó bất kỳ cách nào khác.

+0

Bất kỳ ai ngoài đó có thể giải thích bằng cách sử dụng glibc .txt để tạo một ngôn ngữ OSX? –

+0

Tôi đã chiến đấu với điều này hàng giờ trên El Capitan và không có cách nào để viết trong '/ usr/share/local/'vì những thứ không có gốc rễ mới. – fedeisas

+1

@fedeisas Một đồng nghiệp đã gửi cho tôi cách này để sửa đổi/usr/share/local: Cách thích hợp để vô hiệu hóa chế độ "rootless" (còn gọi là System Integrity Protection, "SIP") là khởi động tạm thời vào Recover Mode (giữ Command + R trong khi khởi động) và sử dụng lệnh csrutil disable (hoặc csrutil enable để reenable) từ Terminal. Thiết bị đầu cuối có thể truy cập thông qua menu của Trình cài đặt khởi chạy trong Chế độ khôi phục. – kstevens715

3

Nhìn vào điều này thấy rằng, như của Mac OS X 10.10.3, collation vẫn bị hỏng cho tiếng Tây Ban Nha và hầu hết các ngôn ngữ châu Âu. Định nghĩa đối chiếu cho các miền địa phương này được liên kết với định nghĩa ASCII. Điều này kết thúc việc phá vỡ những thứ như: ORDER BY các mệnh đề trên PostgreSQL.

+0

Vừa mới xem qua điều này ngay bây giờ. Yay! – sevenseacat

+0

10.10.5 vẫn bị hỏng .. – bodman

+0

10.12.6 vẫn bị hỏng –