Fork me on GitHub
Important security fix: 2.1.10, released 4 May.

Problems translating the Activity page

edited June 2011 in Localization
Presently, for some languages the Activity page cannot be correctly translated. I've been trying to translate Vanilla in Romanian and I have issues with:
- The verb conjugation.
- The genitive case.
- The definitive article.

I'm not a programmer so I don't know what could be done to solve those problems, but right now I'd be much, much happier if I could just translate entire sentences like this:

1) $Definition['%s commented on your discussion'] = '%s a comentat la discuția ta';
2) $Definition['You started a discussion'] = 'Ai început o discuție';
(Notice how "discussion" is translated differently; and we don't use "you" at all in example #2.)

3) $Definition['%s started a discussion'] = '%s a început o discuție';
(A different translation for "started"; "he/she started" in #3 vs. "you started" in the example #2.)

4) $Definition['%s mentioned you in a discussion'] = '%s te-a menționat într-o discuție';
5) $Definition['%1$s mentioned %2$s in a discussion'] = '%1$s a menționat pe %2$s într-o discuție';
("Mentioned you" vs. "mentioned him/her": different translations for the verb "mentioned", according to the Romanian conjugation.)

6) $Definition['%1$s commented on %2$s\'s discussion'] = '%1$s a comentat la discuția lui %2$s';
(here I want to remove the English 's possessive and use the Romanian genitive case.)

Maybe a programmer could create a plugin to fix these things?


  • ToddTodd Chief Product Officer Vanilla Staff
    I'm not sure either, but someone had put in features for Eastern European languages a while back. There are additional codes you can use:

    %1$s = ActivityName
    %2$s = ActivityName Possessive
    %3$s = RegardingName
    %4$s = RegardingName Possessive
    %5$s = Link to RegardingName's Wall
    %6$s = his/her
    %7$s = he/she
    %8$s = route & routecode
    %9$s = gender suffix (some languages require this).

  • 6) $Definition['%1$s commented on %2$s\'s discussion'] = '%1$s a comentat la discuția lui %2$s';
    (here I want to remove the English 's possessive and use the Romanian genitive case.)
    You can override FormatPossessive() function in locale definitions file like this.
    if (!function_exists('FormatPossessive')) {
    function FormatPossessive($Word) {
    return $Word;
    Also see /applications/dashboard/locale/en-CA/definitions.php for example.

    For the rest of issues #1-#5, I have no idea.

    Maybe we need new wrapper function for activities.
    Just a thought ...


    return sprintf($MessageFormat, $ActivityName, $ActivityNameP, $RegardingName, $RegardingNameP, $RegardingWall, $Gender, $Gender2, $Route, $GenderSuffix, $RegardingWallLink, $ActivityRouteLink);
    if (!function_exists('MessageFormatLocal')) {
    $MessageFormat = MessageFormatLocal($MessageFormat, $ActivityName, $ActivityNameP, $RegardingName, $RegardingNameP, $RegardingWall, $Gender, $Gender2, $Route, $GenderSuffix, $RegardingWallLink, $ActivityRouteLink);

    return sprintf($MessageFormat, $ActivityName, $ActivityNameP, $RegardingName, $RegardingNameP, $RegardingWall, $Gender, $Gender2, $Route, $GenderSuffix, $RegardingWallLink, $ActivityRouteLink);
    Then, we can define MessageFormatLocal() function in locale definitions file.

    How do you think, @Todd?
  • My activities doesn't get translated at all while any other parts do.
    Have you experienced such a thing?
  • No, I haven't. Which activities? How did you define them?
  • Profile page -> Activity.
    Sentences like "You commented on sy's discussion." remain in English.
    They're defined like any other definition in my language's definitions.php.
  • Did you defined them properly like this?
    $Definition['Activity.DiscussionComment.FullHeadline'] = '%1$s commented on %4$s %8$s.';
    $Definition['Activity.DiscussionComment.ProfileHeadline'] = '%1$s commented on %4$s %8$s.';
    I copied Baseline locale addon for my translation and no prob.
  • Thanks, it works now. I didn't know about baseline locale addon.

    One more thing: could you maybe give me a hint where sentences like "You commented on your bookmarked discussion." put together exactly? I'd like to change the order of words, try to make them more friendly for my language.
  • $Definition['Activity.BookmarkComment.FullHeadline'] = '%1$s commented on your %8$s.';
    $Definition['Activity.BookmarkComment.ProfileHeadline'] = '%1$s commented on your %8$s.';
    $Definition['bookmarked discussion'] = 'bookmarked discussion';
    See Baseline locale addon or gdn_activitytype table for details.
  • I meant i.e. possessive cases.
    For instance, I'd require at least 2 translations for $Definition['bookmarked discussion'].
  • 2 translations for 1 key? Hmm... I'm afraid there's no way without core hack.
    Someone please correct me if I'm wrong.
  • Ok, my original question is something similar: where to hack the core?
  • SS ✭✭
    Someone please correct me if I'm wrong.
    It is possible by plugin. But only for different pages.
Sign In or Register to comment.