একটি ভাষার জন্য কীভাবে একাধিক ডোমেন সেট করা যায়


15

ভাষাটি সনাক্ত করতে en.example.com এর মতো সাবডোমেন ব্যবহার করে আমার কাছে দ্রুপাল 7 সহ একটি বহুভাষিক সাইট রয়েছে। সবকিছু প্রত্যাশিত মতো কাজ করে, তবে আমার কাছে ওয়েবসাইট ডাইনিটির একটি মোবাইল সংস্করণ রয়েছে যা আমি এন.এম.এক্স.কম.কম.কম ইত্যাদির মতো ডোমেন দ্বারা অ্যাক্সেসযোগ্য হতে চাই? আমি কীভাবে এটি করব? আমি admin/config/regional/languageপ্রতি ভাষাতে শুধুমাত্র একটি ডোমেন সেট করতে পারি , তবে এই কাজটি পেতে দুটি সেট করতে হবে, যেমন:

for English:
en.example.com & en.m.example.com

for German:
de.example.com & de.m.example.com
etc.

(আমি উইকিপিডিয়ায় যেমন কাঠামো রাখতে চাই।) সমস্যাটি হ'ল ভাষা নির্বাচনের জন্য সাবডোমেনগুলি ব্যবহার করে, দ্রুপাল সমস্ত অভ্যন্তরীণ লিঙ্কগুলি পরম প্যাথ হিসাবে তৈরি করে। উদাহরণস্বরূপ, একটি মেনু লিঙ্কটি তৈরি করা হবে:

<li class="menu-773"><a href="http://en.example.com/test" >test</a></li>
and not as
<li class="menu-773"><a href="/test" >test</a></li>

সুতরাং, আমি en.m.example.com থেকে en.example.com এ অনুরোধ প্রেরণের জন্য অ্যাপাচি সহ একটি ডোমেন ওরফে তৈরি করতে পারলাম, তবে সমস্ত অভ্যন্তরীণ লিঙ্কগুলি ব্যবহারকারীকে মোবাইল সংস্করণ থেকে স্বাভাবিক অবস্থায় ফিরিয়ে আনবে। কিভাবে আমি এই সমস্যার সমাধান করতে পারে?


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

আপনাকে ধন্যবাদ, আমি জানি যে এটি সাধারণত সেরা। তবে আমার ওয়েবসাইটের ব্যবহারের ক্ষেত্রে মোবাইল এবং সাধারণ ব্যবহারকারীদের ক্ষেত্রে আলাদা। সুতরাং বিতরণ করা হবে ফাংশন এবং বিষয়বস্তু, পাশাপাশি পৃথক। এজন্য আমার কাছে সেই বিকল্প নেই।
ব্যবহারকারী5950

আমি এটা বুঝতে পারি না! এটি একটি মৌলিক জিনিস। মোবাইল থিমের জন্য সাবডমিনের সাথে মিলিয়ে ভাষা ডোমেনের সাথে দ্রুপাল ব্যবহার করা সম্ভব possible দ্রুপালের সাথে এখানে কেউ কি করছে না?
ব্যবহারকারী5950

উত্তর:


5

একবার আপনি ভিন্ন ডোমেনে বিভিন্ন ভাষাগুলি পরিবেশন করার জন্য ড্রুপাল সেট আপ করার পরে, আপনার ওয়েব সার্ভারকে একাধিক ডোমেন থেকে অনুরূপ অনুরূপ দ্রুপাল সাইটগুলিতে প্রেরণের নির্দেশ দিতে হবে।

অ্যাপাচে, আপনাকে .conf (httpd.conf)ফাইলটি সম্পাদনা করতে হবে এবং সমস্ত ভিন্ন ডোমেনের জন্য উপকরণ যুক্ত করতে হবে। উদাহরণ স্বরূপ:

ServerName en.example.com
ServerAlias en.m.example.com

এটির পাশাপাশি, আপনাকে বিভিন্ন ভাষায় সমস্ত ডোমেন নামের জন্য আপনার সার্ভারে ডোমেন নেম সার্ভার (ডিএনএস) নির্দেশ করতে হবে।


এটি আমার পক্ষে কাজ করে না। সমস্যাটি হ'ল উপরে বর্ণিত হিসাবে ভাষা নির্বাচনের জন্য বিভিন্ন ডোমেন ব্যবহার করার ফলে সমস্ত অভ্যন্তরীণ লিঙ্কগুলি পরম পথ হিসাবে তৈরি হওয়ার ফলস্বরূপ। সুতরাং আমি en.example.com এবং en.m.example.com সহ পৃষ্ঠাটিতে পৌঁছে যেতে পারি, তবে en.m.example.com এর অধীনে সমস্ত অভ্যন্তরীণ লিঙ্কের দ্বিতীয় উপ-আধিপত্য নেই, উদাহরণস্বরূপ একটি উপ পৃষ্ঠার লিঙ্কটি দেখায় en.example.com/node/1234 এর মতো, তবে en.m.example.com/node/1234 এর মতো দেখতে হবে।
ব্যবহারকারী5950

2

উত্তরটি হ'ল: একটি ভাষার জন্য একাধিক ডোমেন ব্যবহার করা দ্রুপাল 7 দিয়ে সম্ভব নয় এবং সেখানে রয়েছে - যতদূর আমি জানি - এমন কোনও মডিউল যা এই কার্যকারিতা যুক্ত করে না।

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

locale_language_url_rewrite_url(&$path, &$options)
  1. সেই ডিফল্ট ভাষার জন্য কোনও ভাষা ডোমেন সেট করবেন না। যদি আপনি এটি না করেন তবে দ্রুপাল ডিফল্ট ভাষার জন্য নিখুঁত প্যাচ তৈরি করতে পারবেন না - উদাহরণস্বরূপ - xyz.example.com ডোমেন ব্যবহার করুন , যেখানে xyz.example.com কোনও ভাষার জন্য ডোমেন হিসাবে সেট করা নেই, ড্রুপাল তৈরি করবে আল urls আপেক্ষিক এবং তাই কোনও অভ্যন্তরীণ লিঙ্ক ক্লিক করা সাবডোমেন রাখে। তবে আপনি সেই পদ্ধতিটি ব্যবহার করতে পারবেন না, যদি আপনি উপরে বর্ণিত হিসাবে ভাষা সংবেদনশীল সাবডোমেন রাখতে চান:

    ইংরাজির জন্য: en.example.com এবং en.m.example.com

    জার্মানদের জন্য: de.example.com এবং de.m.example.com ইত্যাদি

  2. সুতরাং দ্বিতীয় পদ্ধতিটি হ'ল ফাংশনটির সাথে সমস্ত ধরণের বর্তমান ভাষা পরিবর্তন করতে হবে: hook_language_init । উপরের উদাহরণটি কাজ করতে আমি নিম্নলিখিত কোডটি ব্যবহার করি:

:

# hook_language_init()
function my_module_language_init() {
  // Current path
  $url = $_SERVER['SERVER_NAME'];

  // Global language object and get languages
  global $language;
  $languages = language_list();

  // Get all subdomains
  $reg = '/^((?:([^\.]+)\.)?(?:([^\.]+)\.))?([^\.]+\.[^\.]+)$/i';
  preg_match($reg, $url, $up);

  # We won't allow all subdomains, only 'm.' and 'm2.'
  # Change this for an other use case.
  if ($up[3] == "m2" || $up[3] == "m") {

    if (!isset($languages[$up[2]])) {
      $langcode = $language->language;
    } else { 
      $langcode = $up[2];
    }
    $new_language         = $languages[$langcode];
    $new_language->domain = $new_language->language . "." . $up[3] .".". $up[4];

    // Set url options
    $options['language'] = $new_language;
    $types = language_types();

    // Set all language types and language domains
    foreach ($types as $type) {
      $GLOBALS[$type] = $new_language;
      $GLOBALS[$type]->domain = $new_language->domain;
    }
  }
}

আমি বিশ্বাস করি এই মডিউল অনুরূপ কিছু নেই: drupal.org/project/language_multidomain কিন্তু ... আমি ভাবছি কেন এটা এই হুক ব্যবহার করা সম্ভব নয়: api.drupal.org/api/drupal/modules!system!language.api.php/ … (একাধিক ডোমেন পরিচালনা করে এমন ভাষা আলোচনার সরবরাহকারীকে সংজ্ঞায়িত করতে স্থানীয় স্থানীয় মডিউলটি কী ব্যবহার করে) ??
leon.nk

@ leon.nk আমি সেই মডিউলটি পাইনি, সেই ইঙ্গিতটির জন্য আপনাকে ধন্যবাদ। হতে পারে আপনি ঠিকই আছেন এবং হুক_একটি ভাষা_নিগোটেশন_আইনফো হ'ল সঠিকভাবে ব্যবহার করতে পারেন। আমি এটা চেষ্টা করব.
ব্যবহারকারী5950

স্পষ্টতই ভাষা_ মাল্টিমিডোমেন মডিউলটির আর অস্তিত্ব নেই।
ম্যাথিয়াস উরলিচস

উপরের হুকটি হুক_লংগই_ইনিট () হওয়া উচিত নয় ? কোনও হুক_পি_এলংয়েজি_ইনিট () নেই । আপনার হুক_আলংয়েজি_সুইচ_লিংক_লটার () এর সাথে ল্যাঙ্গুয়েজ স্যুইচার লিঙ্কগুলিও আপডেট করা উচিত ।
কোলান

@ কোলান কাস্টম মডিউলটি বলা হয় custom_apiএবং হুক হয় hook_language_init()। একসাথে এটি হয় custom_api_language_init()। এটি বিভ্রান্তিকর হতে পারে, সুতরাং আমি এই বিষয়টি পরিষ্কার করার জন্য উদাহরণটি সম্পাদনা করেছি। আপনি ঠিক বলেছেন, ´hook_language_switch_links_alter () ব্যবহার করা ভাল উপায় হতে পারে। তবে যেহেতু মনে হচ্ছে যে প্রায় কেউই এই সমস্যায় আগ্রহী নয়, আমি মনে করি এই উদাহরণটি পুনরায় লেখার পক্ষে এটি উপযুক্ত নয়।
ব্যবহারকারী5950
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.