পিএইচপি, সেরা অনুশীলন বা পদ্ধতির স্থানীয়করণ?


11

আমি আমার পিএইচপি অ্যাপ্লিকেশন স্থানীয়করণ করছি। এটি সম্পাদন করার জন্য সেরা পদ্ধতি বেছে নেওয়ার বিষয়ে আমার দ্বিধা রয়েছে।

পদ্ধতি 1: বর্তমানে পিএইচপি ফাইলে একটি অ্যারেতে স্থানীয়করণের জন্য শব্দগুলি সংরক্ষণ করছি

<?php

$values = array (
                        'welcome' => 'bienvenida'
                ); 

?>

প্রয়োজনীয়তা অনুসারে প্রতিটি শব্দ উত্তোলন এবং ফেরত দেওয়ার জন্য আমি একটি ফাংশন ব্যবহার করছি

পদ্ধতি 2: আমার কি এমন একটি টেক্সট ফাইল ব্যবহার করা উচিত যা স্ট্রিংয়ের একই স্টোর রাখে?

<?php
$welcome = 'bienvenida'; 
?>

আমার প্রশ্নটি হ'ল গতি এবং একই বিকাশের প্রচেষ্টার দিক থেকে আরও ভাল পদ্ধতি কোনটি এবং কেন?

সম্পাদনা: আমি জানতে চাই যে দুটির মধ্যে কোন পদ্ধতিটি সাড়া দেওয়ার ক্ষেত্রে দ্রুত এবং এটি কেন হবে? এছাড়াও, উপরের কোডের যে কোনও উন্নতি প্রশংসা করা হবে !!


2
আপনি গেটেক্সটেক্স বিবেচনা করেছেন?
সাগরচালাইস

@ সাগরচালাইস আমি এটি সন্ধান করেছি, তবে আমি আমার নিজস্ব পদ্ধতিটি তৈরি করতে চাই, আমি, এবং উপরের দুটিগুলির মধ্যে যে কোনও একটি। সুতরাং, আমি জানতে চাই যে কোন পদ্ধতিটি দ্রুত কাজ করে এবং কোনটি নির্ভরযোগ্য! :)
শ্রী

আপনি যদি গতির দিক দিয়ে জানতে চান তবে কিছু পরীক্ষার কেস করুন। প্রথম বা দ্বিতীয় পদ্ধতিতে 1M বার কি দ্রুত চলে?
ফ্রান্সিসকো প্রেজেনসিয়া

2
সূক্ষ্মভাবে কাজ করে এমন একটি চাকা পুনর্নবীকরণ করবেন না।
gbjbaanb

উত্তর:


10

স্থানীয়করণের জন্য পিএইচপি-র দুর্দান্ত অন্তর্নিহিত সম্ভাবনা রয়েছে। সর্বাধিক সাধারণ উপায়ে gettext বলে মনে হচ্ছে - এই টিউটোরিয়ালটি এটি কীভাবে ব্যবহৃত হয়েছে তা দেখায়।

পিএইচপি 5.3 যেহেতু এর রয়েছে Intl যা আরো অনেক অফার (বিন্যাস নম্বর, তারিখ ও মুদ্রায় উদাহরণস্বরূপ স্থানীয় ভিত্তিতে তা করার জন্য) বৈশিষ্ট্যগুলিও উপস্থিত রয়েছে।


আপনার উত্তরের জন্য আপনাকে ধন্যবাদ, তবে, আমি কি উপরের দিক থেকে জানতে পারি কোন পদ্ধতিটি গতি এবং নির্ভরযোগ্যতার ক্ষেত্রে তৈরি করা ভাল।
শ্রী

10

প্রথমে যাওয়ার, gettextএকটি ভাল উপায় হ'ল, সুতরাং যদি প্রথমে এটি সহজ মনে না হয় তবে বরখাস্ত করবেন না; তবে অন্যান্য বিকল্পগুলিও রয়েছে যা জানার জন্য কার্যকর হবে। এটি ব্যাখ্যা করার আগে আসুন প্রথমে আপনার পরামর্শগুলি একবার দেখুন:

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

আপনার এখানে যা বিবেচনা করা উচিত তা হ'ল: পরে কীভাবে ভাষা ফাইলে নতুন উপাদান যুক্ত করা যায়? আমি কি এটি অনুবাদকের উপরে ছেড়ে দিতে পারি বা পিএইচপি প্রোগ্রামার থাকা উচিত?

আপনার variableএটি করার পদ্ধতি ব্যবহারিক নয়। কেন? আমি ধরে নিয়েছি আপনার অ্যাপ্লিকেশনটিতে কমপক্ষে কয়েকটি ফাংশন থাকবে, তাই না? তারপরে আপনি যখন ফাংশনটি কল করবেন তখন আপনাকে এই সমস্ত ভেরিয়েবলগুলি পাস করতে হবে বা আপনার globalএগুলি প্রয়োজন । আপনি যদি ভাবেন যে এর মতো দশটিরও বেশি ভেরিয়েবল রয়েছে তবে আমি আপনাকে দৃ strongly়ভাবে এটি করতে নিরুৎসাহিত করব। নাম-বিবাদও হতে পারে - আপনি একই নামের সাথে অন্য কোনও ভেরিয়েবলের মানকে ওভাররাইড করতে পারেন, তবে এটি একটি আন্ডারস্কোর হিসাবে সহজ হিসাবে একটি উপসর্গ যুক্ত করেও সমাধান করা যেতে পারে, সুতরাং $_welcomeউদাহরণস্বরূপ আপনার থাকতে হবে । যাইহোক, আমি আপনি হলে আমি এটি সম্পর্কে এমনকি চিন্তা করব না; এটা করবেন না।

এটি করার একটি ভাল উপায় হ'ল একটি উপসর্গ দিয়ে কনস্ট্যান্টগুলি সংজ্ঞায়িত করা । সুতরাং আপনার মধ্যে উদাহরণস্বরূপ en.lang.phpতোমার মত কিছু থাকবে define( 'LABEL_WELCOME', 'Welcome' );এবং আপনার no.lang.phpআপনি হবে define ( 'LABEL_WELCOME', 'Velkommen' );। ভেরিয়েবলের পরিবর্তে ধ্রুবক ব্যবহার করার ভাল জিনিস হ'ল এগুলি আপনার স্ক্রিপ্টে সর্বদা উপলব্ধ। সুতরাং আপনার সেগুলি ইনজেকশন বা গ্লোবাল করার দরকার নেই। অ্যারে এবং ভেরিয়েবল উভয়ের তুলনায়, পিএইচপি যেভাবে তাদের পরিচালনা করে সেগুলির কারণে তারা দ্রুত হয় - তারা স্মৃতিতে কম জায়গা নেয়। ত্রুটিটি হ'ল আপনি সেগুলি অনুবাদকের কাছে পাস করতে পারবেন না, সুতরাং আপনার আবার পিএইচপি বিকাশকারী প্রয়োজন। ফাইলগুলির মধ্যে সিঙ্ক করা আবার কিছুটা ব্যথা হতে পারে।

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

এটি গুটিয়ে রাখতে:

  1. অনুবাদকগণ কীভাবে এটি ব্যবহার করতে পারেন এবং তাদের জন্য একটি ওয়ার্কিং-কেআইএসএস সমাধান নিয়ে আসতে পারেন তা ভেবে দেখুন।

  2. কীভাবে আপনি বিভিন্ন ভাষার মধ্যে সিঙ্ক থাকতে পারেন তা ভেবে দেখুন।

  3. একই অনুবাদটির প্রয়োজন হতে পারে কিনা তা ভেবে দেখুন, মোবাইল অ্যাপটির জন্য বলি। একটি ক্রস প্ল্যাটফর্ম সমাধান আপনার সময় সাশ্রয় করতে পারে। জেএসএন এবং সাধারণ ডেটাবেসগুলিকে বরখাস্ত করবেন না।

  4. অনুবাদগুলি পুনরুদ্ধার করার সময় আপনি কীভাবে যুক্তি প্রয়োগ করতে / পরিবর্তন করতে পারবেন সে সম্পর্কে চিন্তাভাবনা করুন।

  5. পারফরম্যান্স সম্পর্কে ভুলে গেছেন। 99.9% বার আপনি কনস্ট্যান্ট বনাম ভেরিয়েবল বনাম ফাংশন কলগুলির মতো মাইক্রো-অপ্টিমাইজেশানটি করতে পারবেন না । আমি ধরে নিই যে একজন প্রবর্তক / কর্মচারী হিসাবে আপনার সময়টি প্রসেসরের সময়ের চেয়ে বেশি ব্যয়বহুল।

আপডেট # 1

আমার মঙ্গল, আমি এক বছরের পুরানো প্রশ্নের উত্তর পোস্ট করি। এখানে কেউ কিছু বলছে না কেন? আমাদের এই ক্ষেত্রে সতর্কতা প্রয়োজন।

আপডেট # 2

ডানদিকে এটি এক বছরের পুরানো প্রশ্ন; তবে এটা জিজ্ঞাসা করা হয়েছে দুই বছর আগে! এখানে সবকিছু বিভ্রান্ত করছে!


আপনি কি সময়ের মতো ভ্রমণকারীর মতো সময় হিসাবে দেখছেন :) যদিও উত্তরের জন্য টিএনএক্স!
শ্রী

3
হ্যাঁ! আমি এপ্রিল 4, 2014 থেকে আসছে! আপনি যদি 2012 সালে কিছু ফেসবুক বা হোয়াটসঅ্যাপ শেয়ার কিনে থাকেন তবে আপনার 2014 সালে পিএইচপি কোড লেখার প্রয়োজন হবে না!
মাহদী

1
rofl রাজি !!!
শ্রী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.