5

I got a little problem with Magento translation in my module, because it does not work. It should be easy as all tutorials saying. There is a .csv-file in every app/locale/[xx_XX]/ - folder and also an entry in config.xml. I have a helper in my module, which is also registered in config.xml and I can use it. After all, I cleared all cachefiles and tried again.

What did I wrong or what I forgot?

The call in code:

$str = Mage::helper('mymodule')->__('mystring'); 

And in config.xml (tried this block in frontend, adminhtml and global namespaces):

<translate> <modules> <Namespace_Module> <files> <default>Namespace_Module.csv</default> </files> </Namespace_Module> </modules> </translate> 
6
  • Can you provide your translation definition from config.xml? Commented Aug 3, 2011 at 13:28
  • <translate> <modules> <Namespace_Module> <files> <default>Namespace_Module.csv</default> </files> </Namespace_Module> </modules> </translate> Commented Aug 3, 2011 at 13:38
  • I tried it in all sections (global, frontend, adminhtml), but nothing! Commented Aug 3, 2011 at 13:39
  • What do you mean by "it does not work"? Does it produce an error message? Return a string you didn't expect? Return no output at all? Commented Aug 3, 2011 at 14:32
  • Oh Sorry, there is an untranslated string in return. Commented Aug 3, 2011 at 14:34

4 Answers 4

5

I remember having translation problems when my shop ran in development mode. There was a rationale behind it, allowing you to better debug translations or something.

I believe the specific case was that in development mode, the first translation encountered was picked. In non-development, only the specific module is searched.

So say, you have module A and B, and they both have term "Translate this", in my development environment, I got the translation from module A, while in production, i got it from module B.

Not sure what kind of terms you have, but it could relate to your problem.

Sign up to request clarification or add additional context in comments.

Comments

5

There's two possible things that could be going wrong. The first is you've got your config.xml nodes wrong, and Magento doesn't know to look for your file. The second is you've got your nodes correct, but Magento can't find your file because it's in the wrong location.

Pop over to the following method in the following file

#File: app/code/core/Mage/Core/Model/Translate.php protected function _loadModuleTranslation($moduleName, $files, $forceReload=false) { foreach ($files as $file) { $file = $this->_getModuleFilePath($moduleName, $file); $this->_addData($this->_getFileData($file), $moduleName, $forceReload); } return $this; } 

This is the code that loads translation files. Add some temporarily debugging using var_dump or Mage::Log.

protected function _loadModuleTranslation($moduleName, $files, $forceReload=false) { var_dump($moduleName); foreach ($files as $file) { var_dump('Start'); var_dump($file); $file = $this->_getModuleFilePath($moduleName, $file); var_dump($file); $this->_addData($this->_getFileData($file), $moduleName, $forceReload); var_dump('End'); } return $this; } 

Clear your cache, reload a page. Check your debugging statements for your file. If you see it listed, ensure that it actually exists on the file system, and that it's readable.

If it doesn't show up, that means you're configured incorrectly. Make sure your config.xml looks something like this

<config> <frontend> <translate> <modules> <Namespace_Module> <files> <default>Namespace_Module.csv</default> </files> </Namespace_Module> </modules> </translate> </frontend> </config> 

Use something like the Module List Module to make sure your module is actually loaded into the system.

Good luck!

Comments

1
 <translate> <modules> <Namespace_Module> <files> <Namespace_Module>Namespace_Module.csv</Namespace_Module> </files> </Namespace_Module> </modules> </translate> 

test this. Default can be overwrite from a other Modul.

Comments

1

Your Namespace_Module.csv should have double quoted strings with and double quotes contained within escaped...

"Translation String","Translated String" "<a href=\"%s\">click here</a>","<a href=\"%s\">here clicked</a>" 

Single quotes seems the logical approach meaning you would not need to escape the double quotes in the string and giving a more natural string match, but single quoted csv will be completely ignored - lost a bit of time on this.

See Mage_Core.csv for reference...

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.