আমি কীভাবে একটি সিস্টেম লোকেল কাস্টমাইজ করতে পারি?


24

সিস্টেম প্রশাসন ভাষা সমর্থন পাঠ্যে। আমি কেবল স্ট্যান্ডার্ড লোকেলগুলিই বেছে নিতে পারি তবে আমি সূক্ষ্ম-টিউন করতে চাই। উদাহরণস্বরূপ উইন্ডোজে আমি সময় এবং তারিখের ফর্ম্যাট, পরিমাপ ইউনিট, দশমিক বিভাজক, মুদ্রা ইত্যাদির জিনিসগুলিকে ম্যানুয়ালি কাস্টমাইজ করতে পারি - উবুন্টুতে আমি কীভাবে এটি করতে পারি?

উত্তর:


28

এই উত্তরটি প্রদর্শিত হবে যে কীভাবে কোনও লোকেল সম্পূর্ণরূপে কাস্টমাইজ করা যায়, বিকল্প হিসাবে বিদ্যমান লোকেলকে বেস হিসাবে ব্যবহার করে। এই উত্তরটিতে যে ধরণের লোকেল ব্যবহৃত হবে তা হ'ল i18n; এই জাতীয় প্রকারের উত্তরটির শৃঙ্খলে "লোকাল" শব্দের প্রতিটি উল্লেখেই অন্তর্ভুক্ত থাকবে।

একটি গাইড সন্ধান করুন

আপনাকে প্রথমে কোনও লোকেল কাস্টমাইজ করতে হবে, তা হল লোকেলের ফর্ম্যাটটি জানা। এই ওয়েব লোকেল এডিটরটির লোকালটিতে প্রতিটি ক্ষেত্রের বিস্তৃত বিবরণ রয়েছে, যদিও ডান-উপায়ে কেবল কারও দ্বারা ব্যবহারযোগ্য না হওয়া সত্ত্বেও। এটি ব্যবহারের গাইড হবে।

সরঞ্জাম প্রয়োজন

লোকেলগুলির সাথে কাজ করার জন্য আপনার কেবলমাত্র সরঞ্জামগুলি হ'ল

  1. একটি পাঠ্য সম্পাদক। যে কোনও কাজ করবে, যদিও ভিআইএম এক্সেল করবে।
  2. একটি পাঠ্য-থেকে-ইউনিকোড রূপান্তরকারী। এটি সর্বাধিক প্রত্যাশিত হবে যে আপনার একটি নেই, তাই আমি আপনাকে একটি সহজ সরবরাহ করব। এটি পেতে পরবর্তী উপচ্ছেদ পড়ুন।

আমি আপনাকে একটি ডিরেক্টরি তৈরি করার পরামর্শ দিচ্ছি এবং লোকালটিতে আপনি যে কাজটি করবেন তার সাথে সম্পর্কিত সমস্ত কিছু সংরক্ষণ করুন।

পাঠ্য-থেকে-ইউনিকোড রূপান্তরকারী (এনকোডাস্টার)

দ্রষ্টব্য: আপনি যদি অ-সাধারণ অক্ষরগুলি ব্যবহার করেন তবে আমার নীচে লেখা স্ক্রিপ্টটিতে আপনার সমস্যা হতে পারে; আপনি নাস দ্বারা সংযুক্ত বিকল্প স্ক্রিপ্টগুলি একবার দেখে নিতে পারেন ।

নিম্নলিখিত কোডটি একটি ফাইলে সংরক্ষণ করুন। এই ফাইলটি অজগর স্ক্রিপ্ট হিসাবে আপনার সিস্টেম দ্বারা চিহ্নিত করা হবে, যা ঠিক আছে কারণ এটি এক। এই গাইডটি আপনাকে ধরে নিয়েছে স্ক্রিপ্ট বলে encodestr

#!/usr/bin/python

def encode(string):
    newstring = str()
    for ch in string:
        newstring += "<U%04X>" % ord(ch)
    return newstring

if __name__ == '__main__':
    import sys
    print encode(sys.argv[1])

আপনি এটি সংরক্ষণ করার পরে, ফাইল কার্যকর করার অনুমতি দিন - এটি কার্যকর হবে। আপনি যে নটিলাস ব্যবহার করে, অথবা ডাইরেক্টরি যার মাধ্যমে আপনি স্ক্রিপ্ট সংরক্ষিত, একটি টার্মিনাল নিম্নলিখিত কমান্ড থেকে চলমান দ্বারা করতে পারেন: chmod +x encodestr

এখন আপনি একই ডিরেক্টরির চলমান দ্বারা এই স্ক্রিপ্টের পরীক্ষা করতে পারেন: ./encodestr hello। আপনার সমান আউটপুট পাওয়া উচিত <U0068><U0065><U006C><U006C><U006F>

একটি বিদ্যমান লোকেল পরিবর্তন করুন

একটি বিদ্যমান লোকেল পরিবর্তন করা সবচেয়ে সহজ কেস, আদর্শ হিসাবে আপনি এমন একটি লোকেল বেছে নেবেন যা আপনার প্রয়োজনের সাথে পুরোপুরি ফিট করে, এক্ষেত্রে আপনাকে কেবলমাত্র ছোট পরিবর্তন করতে হবে mod এটি উপস্থাপনের জন্য, আপনি কোন বিভাগটি পরিবর্তন করতে চান সেগুলি এবং আপনি কীভাবে সেগুলি পরিবর্তন করতে পারেন তা জানতে গাইড ব্যবহার করতে পারেন। সমস্ত ইনস্টল থাকা লোকেলগুলি অন্তর্ভুক্ত থাকে /usr/share/i18n/localesতবে গাইডে প্রতিটি লোকেল তৈরির পরিমাণটি রয়েছে।

যাইহোক, আপনি যখন কোনও লোকেল খুলবেন তখন প্রথম যে বিষয়টি আপনি লক্ষ্য করবেন তা হ'ল আপনি অদ্ভুত <UXXXX>কোডগুলির মতো ইংরেজি শব্দগুলি পড়বেন । আপনাকে এই কোডগুলি তৈরি করতে সক্ষম হতে হবে - encodestrস্ক্রিপ্টটি এখানে আসে।

যখন আপনি জানেন যে আপনাকে কোন বিভাগগুলি পরিবর্তন করতে হবে, আপনাকে বিভাগে থাকা প্রতিটি ক্ষেত্রটি জানতে হবে।

উদাহরণস্বরূপ, LC_TIMEবিভাগটিতে ক্ষেত্র t_fmtএবং আরও অনেকগুলি রয়েছে। প্রতিটি ক্ষেত্রের উপর তার নিজস্ব বিবরণ নেই নির্দেশিকা

এখন আপনি যে ক্ষেত্রগুলি সংশোধন করতে হবে তা জানেন, ক্ষেত্রটি কী মানগুলি গ্রহণ করে তা খুঁজে পেতে আবার গাইড ব্যবহার করুন

উদাহরণস্বরূপ, ক্ষেত্রটি t_fmtপাঠ্য এবং সাধারণ strfmt ভেরিয়েবল গ্রহণ করে

আপনি যখন যে ক্ষেত্রগুলিতে সংশোধন করতে চান তাতে কী লিখতে হবে তা জানার পরে, encodestrস্ক্রিপ্টের মাধ্যমে এনকোডযুক্ত সমতুল্য হয়ে পাঠ্যটি চালনা করুন ।

দ্রষ্টব্য: প্রতিটি ক্ষেত্রের এনকোড করার দরকার নেই, প্রয়োজনে একটি বিদ্যমান স্থানীয় অবস্থানকে রেফারেন্স হিসাবে ব্যবহার করুন।

উদাহরণস্বরূপ, আপনি যদি ক্ষেত্রের Time: %Tমধ্যে সময় বিন্যাস করতে চান t_fmt, চালান ./encodestr "Time: %T"; এটি ফিরে আসবে <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>এবং সুতরাং t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>আপনার লোকালে আপনার লাইন থাকবে (অবশ্যই এটি সম্পর্কিত বিভাগে)।

আপনি যে প্রতিটি ক্ষেত্রটি চান তা সংশোধন করার পরে, আপনাকে সিস্টেমে লোকাল ইনস্টল করার জন্য এগিয়ে যেতে হবে, যাতে এটি ব্যবহার করা যায়। এই জন্য ইনস্টলেশন বিভাগে এগিয়ে যান।

স্ক্র্যাচ থেকে একটি লোকেল তৈরি করা হচ্ছে

কোনওটি সংশোধন করার বিরোধিতা হিসাবে, আপনি আপনার কাস্টম লোকেল তৈরি করতে ব্যবহার করতে পারেন এমন অন্য পদ্ধতিটি স্ক্র্যাচ থেকে এতে কাজ করছে। যদি আপনি আবার গাইড ব্যবহার করেন তবে - এটি খুব কঠিন নয় । যদিও এখানে একটি দরকারী টিপ: আপনি আসল অনুলিপি এবং পেস্ট পদ্ধতি ছাড়াই অন্যান্য লোকেল থেকে বিভাগগুলি অনুলিপি করতে পারেন । আপনাকে কেবল এই ফর্ম্যাটটি অনুসরণ করতে হবে:

LC_SECTION
copy "locale"
END LC_SECTION

LC_SECTIONআপনি যে বিভাগটি সংশোধন করতে চান তা কোথায় এবং localeআপনি যে বিভাগটি থেকে অনুলিপি করতে চান তা হল।

উদাহরণস্বরূপ, আপনি যদি ইংলিশ লোকালে সময় বিন্যাসটি অনুলিপি করতে চান তবে আপনার এই পাঠ্যটি আপনার কাস্টম লোকেল ফাইলটি থাকবে:

LC_TIME
copy "en_GB"
END LC_TIME

এবং এটি আপনাকে প্রচুর কাজ বাঁচায় এবং আশ্বাস দেয় যে রেফারেন্স করা লোকালয়ে করা কোনও পরিবর্তন আপনার প্রতিচ্ছবি হয়ে যাবে।

আপনার কাস্টম লোকেল ইনস্টল করা হচ্ছে

নীচে আমি যে পদক্ষেপগুলি প্রদর্শন করতে যাচ্ছি তা সর্বোত্তম নাও হতে পারে তবে কাজ করে।

  1. আপনার লোকেল সংকলন করুন। আতঙ্কিত হবেন না! এতে কোনও সময় লাগে না। শুধু কমান্ডটি প্রয়োগ sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -vযেখানে customআপনার লোকেল নাম।

  2. /usr/share/i18n/locales/ডিরেক্টরিতে আপনার লোকাল অনুলিপি করুন । আপনি স্পষ্টভাবে করতে হবে sudo এই কাজ করতে সুবিধা দেয়া, এবং আপনি আদেশের সঙ্গে এটা করতে পারেন sudo cp locale /usr/share/i18n/locales/যেখানে localeআপনার কাস্টম লোকেল ফাইলের নাম নেই।

  3. আপনার স্থানীয় অবস্থান নির্দিষ্ট করুন /var/lib/locales/supported.d/। উদাহরণস্বরূপ, একটি ফাইলের নাম তৈরি /var/lib/locales/supported.d/asdকরুন এবং লাইনটি যুক্ত করুন custom UTF-8, যেখানে কাস্টমটি আপনার লোকেলের নাম।

  4. ম্যাজিক কমান্ড চালান। আমি আসলে জানি না যে এই আদেশটি ঠিক কী করে, তবে এটি অত্যন্ত গুরুত্বপূর্ণ। চালান sudo locale-gen। এটি সর্বাধিক সম্ভাবনাময় এটি যেখানে প্রয়োজন সেখানে উপলব্ধ লোকেলগুলির রেফারেন্স উত্পন্ন করে।

  5. আপনার সিস্টেমকে লোকেলটি ব্যবহার করতে বলুন। যদি আপনি চান যে লোকালটি সিস্টেম-ব্যাপী পদ্ধতিতে ব্যবহার করা হয় তবে /etc/environmentফাইলটি পরিবর্তন করুন। যদি তা না হয় তবে আপনি নিজের ~/.profileফাইল বা প্রারম্ভকালে উত্সাহিত অন্য যে কোনও ফাইলটি সংশোধন করতে পারেন । যদি আপনি না জানেন যে পরবর্তীকর্মটির অর্থ কী তবে চিন্তা করবেন না, কেবল ~/.profileফাইলটি ব্যবহার করুন। এতে আপনাকে কী লিখতে হবে তা জানতে প্রথমে localeকমান্ডটি চালান । মনে হচ্ছে আইটেম সঙ্গে একটি তালিকা ইস্যু হবে LANGUAGE, LC_MESSAGES, LC_CTYPEএবং আরও অনেক কিছু। আপনি লিখতে হবে বিভাগে যদি আপনি চান (পূর্ববর্তী হুকুমে তালিকাভুক্ত) প্রত্যেকের জন্য আলাদা লাইন, এই SECTION="locale"যেখানে SECTIONঅধ্যায় এবং localeআপনার কাস্টম লোকেল নাম।

উদাহরণস্বরূপ, আপনি যদি নেদারল্যান্ডসের সময় বিন্যাসটি ব্যবহার করতে চান তবে ইংরেজি ভাষাটি লিখুন:

LANGUAGE="en_GB:en"
LC_TIME="nl_NL"

দ্রষ্টব্য: আপনি যদি প্রতিটি লোকেল সেটিংয়ের জন্য একটি লোকেল ব্যবহার করতে চান তবে আপনার কাস্টম লোকেলের নামটি LC_ALL="locale"কোথায় লিখুন locale। আপনি যদি ভাষার পরিবর্তে সমস্ত কিছুর জন্য লোকেল ব্যবহার করতে চান তবে আপনি লিখতে পারেন LANG="locale"এবং (অবশ্যই অন্য একটি লাইনে) আপনি যে ভাষাটি চান তার জন্য দুটি লেটার কোডটি LANGUAGE="locale":XXকোথায় XXরয়েছে?

উদাহরণস্বরূপ, আপনি যদি ডাচ লোকেল এবং ইংরেজি ভাষা ব্যবহার করতে চান তবে আপনি ব্যবহার করতে পারেন:

LANG="nl_NL"
LANGUAGE="nl_NL:en"

আপনি শেষ করেছেন

পরের বার আপনি লগ ইন করবেন, আপনার লোকেল ব্যবহার করা উচিত। localeকমান্ডটি আবার চালিয়ে আপনি এটি পরীক্ষা করতে পারেন ।

এই গাইডটিতে অসঙ্গতি বা মিথ্যা বিবৃতি সম্পর্কে মন্তব্য করুন!


হাই, আপনি যে অজগর কোডটি ব্যবহার করেন তা সব ক্ষেত্রে কার্যকর হয় না। গ্রীক অক্ষরের জন্য এটি প্রত্যাশিত অক্ষরের পরিবর্তে πμআউটপুট দেয় । এখানে কাজ করে এমন একটি লিঙ্ক<U00CF><U0080><U00CE><U00BC><U03C0><U03BC>
নাস

আপনার ইনপুট জন্য ধন্যবাদ! আমি আপনার মন্তব্যটি যেখানে পাঠ্য হয়েছিল সেখানে এতে অন্তর্ভুক্ত করেছি :)
সেভেরো রাজ

আমি চালাতে পারার আগে আমাকে যুক্ত custom UTF-8করতে /usr/share/i18n/SUPPORTEDহয়েছিল sudo locale-gen। অন্যথায় এটি তালিকায় না থাকত।
উইলবার্ট

আপনার স্ট্রিং রূপান্তর পদ্ধতিটি আমার শেল স্ক্রিপ্টস সংগ্রহে অনুলিপি করেছেন: github.com/budhajeewa/shell-scriptts/commit/… । ধন্যবাদ!
বুধজীওয়া

যদি কেউ এই উত্তরে পদ্ধতির বিপরীতটি করার জন্য কোনও ফাংশন সন্ধান করছে (লোকেল ফাইলে বিদ্যমান হেক্স মানগুলি পড়তে আমার এটির প্রয়োজন ছিল) তবে আমি তার জন্য একটি পিএইচপি স্ক্রিপ্ট লিখেছি। github.com/budhajeewa/shell-scriptts/commit/… । পাইথনে কেউ যদি এটি লিখতে পারেন তবে আমাকে জানান। আমি এটি আমার সংগ্রহে যোগ করতে চাই।
বুধজীওয়া

8

আপনি কী ধরনের কাস্টমাইজেশন চান তা নিশ্চিত নন তবে আপনি এটি ব্যবহার করে কিছু লোকেল ভেরিয়েবল সেট করতে পারেন ~/.locale। উদাহরণস্বরূপ, ইংরাজী বার্তাগুলি পাওয়া তবে জার্মান সময় এবং আমি যে পছন্দ করি তা ব্যবহার করতে

export LC_ALL=""
export LANG="en_GB.utf8"
export LC_CTYPE="de_DE.utf8"
export LC_NUMERIC="de_DE.utf8"
export LC_TIME="de_DE.utf8"
export LC_COLLATE="de_DE.utf8"
export LC_MONETARY="de_DE.utf8"
export LC_MESSAGES="en_GB.utf8"
export LC_PAPER="de_DE.utf8"
export LC_NAME="en_GB.utf8"
export LC_ADDRESS="de_DE.utf8"
export LC_TELEPHONE="de_DE.utf8"
export LC_MEASUREMENT="de_DE.utf8"
export LC_IDENTIFICATION="de_DE.utf8"

কাস্টম লোকেল উত্পাদন করাও সম্ভব। তারিখের জন্য যেমন এই গাইড দেখুন ।


1
না, আমি নিম্ন স্তরের কাস্টমাইজেশন চাই। উদাহরণস্বরূপ: ইংরেজি বার্তা, মেট্রিক ইউনিট, চেকের তারিখ / সময় পরিবর্তিত (DD.MM.YYYY এইচ এইচ: মিমি পরিবর্তে ডিএমওয়াইওয়াই এইচএমএম), দশমিক বিভাজক হিসাবে একটি বিন্দু (চেক লোকালে এটির জন্য কমা রয়েছে) এবং € মুদ্রা হিসাবে (চেক লোকালে কেč মুদ্রা রয়েছে)।
ইভান

আমি দেখি. টেকিং en_USজন্য LC_NUMERICএবং de_DEজন্য LC_MONETARYএবং LC_MEASUREMENTআপনি অন্যান্য পার্শ্ব প্রতিক্রিয়া দেয়? একটি ব্যক্তিগত লোকেল তৈরির জন্য নতুন লিঙ্কটিও দেখুন।
কার্স্টেন থিল

1
লিঙ্কটির পিছনে থাকা নির্দেশাবলী প্রশ্নের উত্তরে আশ্চর্যরূপে বলে মনে হচ্ছে, সম্ভবত আপনি এখানে সবচেয়ে গুরুত্বপূর্ণ বিটগুলি প্রতিলিপি করতে পারেন, যদি কোনও দিন লিঙ্কটি পৌঁছানো না যায় তবে?
স্টেফানো মধ্যে Palazzo
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.