Skip to main content

This site requires you to update your browser. Your browsing experience maybe affected by not having the most up to date version.

We've moved the forum!

Please use forum.silverstripe.org for any new questions (announcement).
The forum archive will stick around, but will be read only.

You can also use our Slack channel or StackOverflow to ask for help.
Check out our community overview for more options to contribute.

General Questions /

General questions about getting started with SilverStripe that don't fit in any of the categories above.

Moderators: martimiz, Sean, Ed, biapar, Willr, Ingo, swaiba

Textcollector for module themes doesn´t work


Go to End


4 Posts   3717 Views

Avatar
AlexBeka

Community Member, 21 Posts

5 August 2009 at 10:58pm

Edited: 05/08/2009 10:59pm

Hi,

when i run the textcollector by "$link/dev/tasks/i18nTextCollectorTask?module=themes" then it just says "Running task 'i18n Textcollector Task'..." and nothing happens, no subdirectory "lang" is created under /themes;
i just added the following line to the page.ss template under /themes/themename/templates/, so the textcollector should find it;

	<% _t('GoToEnglishTranslation','Go to the english translation') %>

further when i run the textcollector for all modules with $link/dev/tasks/i18nTextCollectorTask then i get an error that it needs phpunit, which is also described in ticket 4113, so this just works with installed phpunit for 2.3.3, but this would be no problem if i could run the textcollector just for the themes module;

help is very welcome,
Regards,
Alex

Avatar
StartUp3D

Community Member, 10 Posts

6 August 2009 at 9:59pm

Hi,
same problem here. Just tried it like AlexBeka with the same result. Also i can´t install PHPUnit, because i´m on a shared hosting server.

Anyone who got that running already?

Best regards,
Otto

Avatar
mol

Community Member, 5 Posts

14 August 2009 at 9:05am

Disclaimer: I'm using SilverStripe for cca 2 days, so sorry if anything I wrote is wrong
1) themes is not a module, but just an ordinary directory (it does not have _config.php for example), so ?module=themes is meaningless
2) translations of templates must go to mysite/lang, so it's absolutely OK, that it does not create themes/lang
3) if you are brave you can try my patch to textcollector:
a) please backup you whole site :-), especially the mysite/lang content as it will be overwritten
b) put

                        $entitiesArr = array();
			$fileList = $this->getFilesRecursive("$this->basePath/themes/gu");
			foreach($fileList as $index => $filePath) {
                                Debug::message($filePath, false);
				$content = file_get_contents($filePath);
				// templates use their filename as a namespace
				$namespace = basename($filePath);
				$entitiesArr = array_merge($entitiesArr, (array)$this->collectFromTemplate($content, $module, $namespace));
			}
			$entitiesByModule['mysite'] = $entitiesArr;

to the sapphire/core/i18nTextCollector.php before the line:
$this->writeMasterStringFile($entitiesByModule);

c) replace gu on the second line of the patch with name of your theme
d) run dev/tasks/i18nTextCollectorTask/?module=x (note: the x is just any nonexistent module name, so it won't process any real modules, so it will run much faster)
e) it should display processed files
f) in the mysite/lang/en_US.php should appear new translations

I do not guarantee anything (see disclaimer above).

Avatar
mol

Community Member, 5 Posts

14 August 2009 at 9:36am

BTW the much easier solution is to use LangBuilder.