2012-04-03 17 views
12

में एक लोकेल जोड़ें मैं एक एमएएमपी पर्यावरण में गेटटेक्स्ट का उपयोग कर रहा हूं। मेरे पास es_ES, ca_ES, en_US और gl_ES के लिए लोकेल फ़ाइलें हैं। पहले तीन के साथ कोई समस्या नहीं है, लेकिन आगे के लिए, लोकेल अनुवाद फ़ाइलों को gl_ES भाषा (स्पेन में आपका) में बाध्य करने का प्रयास करते समय मुझे एक त्रुटि मिलती है। यह अपाचे या PHP के साथ कोई समस्या नहीं है क्योंकि अन्य काम करते हैं (और मेरे सेंटोस सर्वर में मेरे पास gl_ES पैकेज है और ठीक काम करता है)मैक ओएसएक्स

तो मुझे पता है कि मेरे मैक ओएस एक्स (संस्करण 10.6.8) बिना किसी समर्थन के आया था (यह अजीब बात है क्योंकि इसका स्पेनिश, कैटलन और यूस्करा का समर्थन है; स्पेन में अन्य तीन आधिकारिक भाषाएं: मुझे केवल एक ही याद आ रही है)। कुछ टर्मिनल आपको दिखाने के लिए:

$ 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/ 

मुझे मैक ओएसएक्स में उपयोगकर्ता समर्थन (या कोई अन्य) जोड़ने के बारे में कोई जानकारी नहीं है। मैंने इंस्टॉलेशन डिस्क (भाषा पैक जोड़ना) की कोशिश की लेकिन कोई सफलता नहीं: वे केवल ऑपरेटिव सिस्टम के अनुवाद हैं।

मुझे this similar question मिला, लेकिन इसमें अधिक जानकारी नहीं है और कोई अच्छा जवाब नहीं है।

मैं एक विकल्प के रूप में localedef पर आया, लेकिन ऐसा लगता है कि .UTF-8 या इसी तरह के समान होने पर आपके पास मूल फ़ाइल है।

तो सवाल यह है: मैकोज़क्स में एक नया लोकेल कैसे जोड़ें। धन्यवाद!

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

फिर एक नया टर्मिनल सत्र खोलने के लिए और स्थानों फिर से सूची:

उत्तर

6

इस चाल करना चाहिए। गैलिशियन होना चाहिए :)

+0

धन्यवाद! तो obvoius ... :-) वास्तव में मैं भी इस एक ही है करने के लिए किया था: \t sudo सीपी आर es_ES.ISO8859-1 gl_ES.ISO8859-1 \t sudo सीपी आर es_ES.ISO8859-15 gl_ES.ISO8859 -15 \t sudo cp -R es_ES.UTF-8 gl_ES.UTF-8 – Natxet

+8

यह एक नया लोकेल स्थापित नहीं करता है, यह सिस्टम पर पहले से मौजूद एक लोकेल की प्रतिलिपि बनाता है। –

+5

जैसा कि @ गर्सियावेबडेव ने कहा है, यह मैक ओएसएक्स – AndyPerlitch

8

शाब्दिक रूप से खोज के घंटों के बाद, पर्ल कोड और सिर स्क्रैचिंग पर डालने के बाद, मैंने निष्कर्ष निकाला है कि ऐप्पल लोकल-निर्माण-और-परिभाषा विभाग में महाकाव्य में असफल रहा है। यहां सौदा है: ओएसएक्स आपको /usr/bin/localedef पर स्थित पर्ल में लिखी गई एक (* ehem * ... shoddy) उपयोगिता स्क्रिप्ट देता है, जिसे एक नया लोकेल बनाने के लिए तैयार किया गया है। मैनपेज का कहना है कि उपयोग कुछ इस तरह (usr/share/locale के अंदर चलाने) होना चाहिए:

localedef -i base_file -f UTF-8 new_locale_name 

ओपी द्वारा कहा गया है, इस आदेश से केवल एक वर्तमान स्थान कॉपी करने के लिए है। खैर, मैं इसे काम करने के लिए भी नहीं मिला! मुझे पर्ल नहीं पता है, लेकिन मुझे /usr/bin/localedef में कम से कम एक लापरवाही कोड त्रुटि मिली है (लाइन 512 संदर्भ set_escape_char नामक एक उप संदर्भ है जो वास्तव में set_escape होना चाहिए) और इसके शीर्ष पर मुझे localedef पर काम करने के लिए सभी को काम नहीं मिल सका । जैसा कि @ एलोम्बार्ट ने कहा है, आप केवल cp -R src_locale trg_locale के साथ एक मौजूदा लोकेल निर्देशिका की प्रतिलिपि बना सकते हैं, लेकिन वह यह उल्लेख करना भूल गया कि स्रोत और लक्षित लोकेशंस के बीच अंतर हैं जो आपको वास्तव में नए लोकेल डीआईआर के भीतर टेक्स्ट फ़ाइलों को मैन्युअल रूप से बदलने की आवश्यकता है।

उदाहरण के लिए, मैं स्थान es_NI.UTF-8 (निकारागुआ), सही मुद्रा कोड और मौद्रिक जानकारी के साथ बनाना चाहता था, इसलिए यहाँ मैं क्या किया है:

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 

आप पर निर्भर करता है अन्य प्रासंगिक मूल्यों को बदलने की जरूरत हो सकती है नए लोकेल का उपयोग Here स्थानीय जानकारी का सबसे अच्छा संग्रह है जिसे मैं ऑनलाइन ढूंढने में सक्षम हूं। अगर मैं एक बेहतर प्रोग्रामर था तो मैं एक ऐसी स्क्रिप्ट तैयार करूंगा जो वेबसाइटों को "ग्लिब" निर्यात प्रारूप लेती है और मैक ओएसएक्स में localedef कमांड के साथ काम करने के लिए इसे सुधारती है।

पीएस शुरुआती डाउनवोट के लिए @ एलोम्बार्ट से माफ करना ... भले ही उनकी प्रतिक्रिया सही सवाल का जवाब न दे, मुझे एहसास नहीं हुआ कि यह किसी भी अन्य तरीके से करना बेहद मुश्किल होगा।

+0

कोई भी व्यक्ति जो ओएसएक्स लोकेल बनाने के लिए glibc .txt का उपयोग करके _can_ व्याख्या करता हूं? –

+0

मैं एल कैपिटन पर घंटों के लिए इसके साथ लड़ रहा हूं और नई रूटलेस सामग्री के कारण '/ usr/share/local /' में लिखने का कोई तरीका नहीं है। – fedeisas

+1

@ फेडेसिस एक सहकर्मी ने मुझे/usr/share/local को संशोधित करने के लिए यह भेजा है: "रूटलेस" मोड (उर्फ सिस्टम इंटेग्रिटी प्रोटेक्शन, "एसआईपी") को अक्षम करने का सही तरीका अस्थायी रूप से पुनर्प्राप्ति मोड में बूट करना है (होल्ड बूट के दौरान कमांड + आर) और टर्मिनल से csrutil अक्षम कमांड (या csrutil सक्षम करने योग्य सक्षम) का उपयोग करें। टर्मिनल इंस्टॉलर के मेनू के माध्यम से पहुंच योग्य है जो रिकवरी मोड में लॉन्च होता है। – kstevens715

3

इस बात को देखते हुए कि मैक ओएस एक्स 10.10.3 के रूप में, स्पेनिश और अधिकांश यूरोपीय भाषाओं के लिए अभी भी संयोजन टूट गया है। इन स्थानों के लिए संयोजन परिभाषा एएससीआईआई परिभाषा से जुड़ी हैं। यह PostgreSQL पर ORDER BY खंडों जैसे ब्रेकिंग चीजों को समाप्त करता है।

+0

अभी इस समय आ गया है। वाह! – sevenseacat

+0

10.10.5 अभी भी टूटा .. – bodman

+0

10.12.6 अभी भी टूटा –