Különböző nyelv beállítása kizárólag egy oldalnak

blackzoli képe

Sziasztok!

D7 alatt van egy webform típusú tartalmam. Ezen egy kapcsolat felvételi form van, angol felhasználóknak.
Egyébként az oldal minden egyéb része magyar.
A webform végén van egy CAPTCHA.
A captcha kiírásai, az elküld gomb szövege, valamint a form rossz kitöltése esetén a hibaüzenetek magyar nyelvűek.

Ha beállítom, hogy az angol előtag en legyen, valamint beállítom, hogy az URL előtagból állapítsa meg a rendszer a nyelvet, és a webformra /en/webform alakban hivatkozok, akkor az előbb említett dolgok angolul látszódnak (helyesen).

Meg lehet-e ezt oldani úgy, hogy nem állítom be az URL-ből történő nyelv megállapítást. (nem szeretném hogy kizárólag egy oldal kedvéért ez a funkció be legyen kapcsolva, és minden egyéb linkem /hu -val kezdődjön.)

Tehát arra keresnék megoldást, hogy ennek a funkciónak a mellőzésével (az amúgy egynyelvű - magyar oldalamon) ennek az egy node-nak meg tudjam mondani, hogy ő angol, és a megjelenő field-ek, hiba üzenetek, form elemek kiírásai angolok legyenek.

Nem tudom létezik-e erre megoldás, egyáltalán, hogy kivitelezhető-e?
Ebben kérném a segítségeteket, javaslataitokat.

Előre is köszönöm.
Üdv
Zoli

Boobaa képe

Egy ügyes hook_form_FORM_ID_alter() talán segíthet (főleg, ha a captcha és egyebek járulékos dolgait, pl. a _validate callbackeket is ügyesen lekezeled).

0
0
blackzoli képe

Köszi a tippet!
Utánanézek.

Viszont közben keresgéltem, és én ezt találtam:

http://api.drupal.org/api/drupal/modules!node!node.module/function/node_...

Azt írják, hogy a node_build_content $langcode paraméterét használja a rendereléshez.

Azt nem lehet megoldani, hogy egy bizonyos node esetén ezt 'en' paraméterrel hívja meg?
Van rá mód? Hogyan szokták ezt csinálni?

Segítségeteket előre is köszönöm!

Üdv
Zoli

0
0
blackzoli képe

Sziasztok!

A következő megoldást találtam a problémára:

A saját sminkemben, a template.php file-ba a következőket írtam:

if ($_GET['q'] == 'node/44') {
 
	//Get the list of languages
	$languages = language_list();
 
	//Overwrite the global language object
	global $language;
	$language = $languages['en'];
 
}

A kérdésem csak annyi lenne, hogy véleményetek szerint jó-e ez így? Elég "drupalos" megoldás-e, vagy épp ellenkezőleg?

Üdv
BlackZoli

0
0
szantog képe

Huu, szvsz nagyon nem. Sminkrétegből egy globalt állítani okozhat furcsaságokat. Én saját nyelvválasztási módot csináltam, ez alapján át tudod írni. Nálad a feltétel $node = menu_get_object(); if ($node->nid == '44' legyen.

  1. /**
  2.  * Implements hook_language_negotiation_info().
  3.  */
  4. function tm_hooks_language_negotiation_info() {
  5. $providers['tm_hooks'] = array(
  6. 'callbacks' => array('language' => 'tm_hooks_get_default_language'),
  7. 'weight' => -4,
  8. 'name' => t('Front page to hu'),
  9. 'description' => t("Provided by module tm_hooks. This need to set front page\'s language permanent hu, there is not language prefix"),
  10. );
  11.  
  12. return $providers;
  13. }
  14.  
  15. /**
  16.  * Callback function for our custom negotion.
  17.  * This provides, that front page will be always hu.
  18.  */
  19. function tm_hooks_get_default_language() {
  20. $languages = language_list();
  21. if ($_GET['q'] == '') {
  22. return $languages['hu']->language;
  23. }
  24. }
0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

blackzoli képe

Szia!

Köszönöm szépen.
Sajnos nálam nem működik. Lehet valamit nem jól csinálok:

- sites/all/modules mappában létre hoztam egy custom nevű mappát, abba pedig egy tm_hooks nevű mappát.
- ebben a tm_hooks mappában két file-om van: tm_hooks.info és tm_hooks.module
- infoban:

name = tm_hooks
package = custom
description = Set a fix language for a page.
core = 7.x

- module file-ban annyit módosítottam, amit javasoltál. Miután nem működött kipróbáltam a Te kódoddal egy az egyben, a 'hu' írtam át 'en'-re, de sajnos a főoldal sem változott.

Mi lehet a probléma, mit rontok el?

u.i. bocsi a sok kérdésért, most ismerkedem az egyedi modulok készítésével

Köszönöm a segítséget.

Üdv
BlackZoli

0
0
szantog képe

ja, lemaradt a lényeg:
admin/config/regional/language/configure itt cibald a legtetere

0
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

blackzoli képe

Nekem valamiért nem működik.
Összegezve:

D7
sites/all/modules mappában létrehozva egy "fixlang" nevű mappa
abba két file: fixlang.info és fixlang.module

fixlang.info tartalma:

name = Fixlang
description = A module to set a fix language for a page.
package = Languages
core = 7.x 

fixlang.module tartalma:

<?php
 
/**
 * Implements hook_language_negotiation_info().
 */
function fixlang_language_negotiation_info() {
  $providers['fixlang'] = array(
    'callbacks' => array('language' => 'fixlang_get_default_language'),
    'weight' => -4,
    'name' => t('Set a fix language for a page'),
    'description' => t("Provided by module fixlang. This need to set a page to fix language."),
  );
 
  return $providers;
}
 
/**
 * Callback function for our custom negotion.
 * This provides, that a page (node/44) will be always en.
 */
function fixlang_get_default_language() {
  $languages = language_list();
  $node = menu_get_object();
  if ($node->nid == '44') {
    return $languages['en']->language;
  }
}

felmásolás után a moduloknál látszik is a fixlang module, lehet is engedélyezni.

Miután engedélyeztem, azután a admin/config/regional/language/configure oldalon a legtetejére húztam, és itt is bejelöltem, hogy engedélyezve.

Ezt követően a sajatoldalam.hu/node/44 útvonalra ellátogatva nem történik semmi.

Mit csinálok rosszul?

0
0