androbey

Outputting content in different languages

Recommended Posts

Hi there, 

I feel like I have another rather stupid question, but I am stucked in a problem. 

I wrote a small module, which makes use of the multi-language option.

The inputfield code looks like this:

$donationText = $this->modules->InputfieldCKEditor;
$donationText->useLanguages = true;
$donationText->name = 'donationtext';
$donationText->label = 'Donation CTA Text';
$donationText->value = $this->donationtext;
$donationText->required = true;
$wrapper->add($donationText);

My simplified render method in the module looks like this:

public function renderDonationCTA(){
    echo $this->donationtext;
}

However, when I call this method in my template code only the default language gets outputted.

What did I miss or what can I do, in order to output the inserted text in the "right" language? 

Share this post


Link to post
Share on other sites

Hi @Zeka,

thank you for this link, didn't find that one. 

However, that did not worked out well for me. After applying the concept of Adrian, I always got the not default language outputted. 

I have a hardcoded version now. It's not good practice, but it does its job. 

Share this post


Link to post
Share on other sites

The value of the Inputfield is set from an user trough the module config page ?

If yes (I dont know how your module work) , then imagine the following, in the getDefaultData() you have :

protected static function getDefaultData() {
	return array(
		'ml_myfield_data' => ''
	);
}

 

In your getModuleConfigInputfields() :

public static function getModuleConfigInputfields(array $data) {
	$data = array_merge(self::getDefaultData(), $data);
	// [...]
    	$f = $modules->get("InputfieldCKEditor");
    	$f->attr('name', 'ml_myfield_data');
    	$f->value = $data['ml_myfield_data'];
    	$f->useLanguages = true;
	// [...]
}

 

Then in module ready() (for testing purpose) you can return the right language :

if($this->wire('languages')) {
	$userLanguage = $this->wire('user')->language;
	$lang = $userLanguage->isDefault() ? '' : "__$userLanguage->id";
}
else {
	$lang = '';
}
bd($this->data['ml_myfield_data'.$lang]); // debug with tracy

After you change your language in your profile, it should return the right language.

  • Like 2

Share this post


Link to post
Share on other sites

Hi @flydev

thank you for your answer. It helped me finding my mistake (although I am not understanding what my mistake actually is). 


 

//this does not work (no output)
$field = 'donationtext'.$lang;
$test = $this->field;

//this does work however
$testArr = $this->data['donationtext'.$lang]; 

 

Share this post


Link to post
Share on other sites

If you are not using TracyDebugger, then I urge you to install it then debug both variables, you will find your answer ;)

  • Like 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By zaib
      I'm fetching results from a template which works fine but when i change the language (in my case changed language is ARABIC), its showing me nothing
      $getResult = $pages->find("template=t3Cities_list, tags={$page->title}"); where "tags" are checkboxes with multi selection, How i can match the values?
    • By Marcel Stäheli
      Hello
      if have a few article pages that have a multi-page reference field with tags about the content of the article. All tags of a given page are displayed and link to a tag-overview page.
      Every link has a query string added with the tag name like &tag=cars so that I know which articles have to be displayed on the tag-overview page,
      The tag name is created using $tag->name. Since the website is multi language using German (default) and English, I use $page->localName($language) to get the localized page name . The code looks like this:
      foreach($tags as $tag) { $tagsMarkup .= "<a href='" . wire('pages')->get('/tags-overview/')->url . "?tag=" . $tag->localName(wire('user')->language) . "'>" . $tag->title . "</a>, "; }
      The code works mostly fine, but when a page has the same name in both languages, the query string will have no value just ?tag=. Why?
       
      A second problem that might be tied to the first:
      Once on that tags-overview page, I check if the tag actually exists using:
       
      $allTags = $pages->get("/tags/")->children); if($allTags->has("name=$tag") {...} But as I read on the forum (https://processwire.com/talk/topic/2979-multi-language-page-names-urls/?page=6) that only checks for name in the default language. It was suggested to use $page->parent->path . "pageNameEnglish" but I'm not sure where and how to use it in my case.
      Any help?
       
    • By Fuad Ibrahimov
      Hi all!
      I have a problem with selecting default language in frontend.
      I tried to set default language from admin panel in Access->Users for guests and admin to another language, but it changed only backend language.
      I read a lot of topics about this problem and i didn't find any normal solution.
    • By heldercervantes
      I've had this happen before, but now I got this problem again and I'm wondering what it's about.
      I use the basic <?= __('Contacte-nos') ?> method for adding translatable text to templates. Some of these are not appearing on the form when I edit the file's translations in PW.
      Take this line of code:
      <?= __('1 ou +7 pessoas?') ?> <a href="#" class="contactsMenu"><?= __('Contacte-nos') ?></a> The first string "1 ou +7 pessoas?" appears when I edit the translations, but the second one doesn't. Eventually I figured out I can only have one of these per line of code. Adding a line break somewhere somewhere between them was enough to make both translations show up in the form.
      Problem solved, but curiosity remains. What is the reason for this?
    • By Kemal
      Hi,
      I am creating Multilanguage site for my customer. One of the languge is Arabic.
      What should i do for arabic language support?
      i installed multilanguage profile but when i type arabic language characters its not seen in url part. 
      Its empty and when i hit the save button it become default url (english)
      I tried to modify inputfieldpagename.module  file but its not working. It only translating the foreign character to latin character