@!Hubzilla Development+ @Mario Vavti I think I found the problem with the high RAM/Swap usage for Diaspora. I think it's related to a corrupted GIF image in a Diaspora post that Hubzilla tries to scale. I don't know if this is true/related, but I found this in the php.out file (was never able to find anything in the hubzilla.log):

[25-Jun-2017 12:35:37 Europe/Amsterdam] PHP Fatal error:  Uncaught exception 'ImagickException' with message 'corrupt image `' @ error/gif.c/ReadGIFImage/1370' in /var/www/hubzilla/include/photo/photo_imagick.php:34
Stack trace:
#0 /var/www/hubzilla/include/photo/photo_imagick.php(34): Imagick->readimageblob('GIF89a\xF4\x01\x90\x01\xF3\x0F\x00\x00\x00...')
#1 /var/www/hubzilla/include/photo/photo_driver.php(86): photo_imagick->load('GIF89a\xF4\x01\x90\x01\xF3\x0F\x00\x00\x00...', 'image/gif')
#2 /var/www/hubzilla/include/photo/photo_driver.php(26): photo_driver->__construct('GIF89a\xF4\x01\x90\x01\xF3\x0F\x00\x00\x00...', 'image/gif')
#3 /var/www/hubzilla/include/network.php(759): photo_factory('GIF89a\xF4\x01\x90\x01\xF3\x0F\x00\x00\x00...', 'image/gif')
#4 /var/www/hubzilla/extend/addon/addons/diaspora/inbound.php(560): scale_external_images('[img]https://di...')
#5 /var/www/hubzilla/extend/addon/addons/diaspora/inbound.php(96): diaspora_post(Array, Array, Array)
#6 /var/www/hubzilla/extend/addon/addons/diaspora/inbound.php(32): diaspora_dispatch(Array, Array)
#7  in /var/www/hubzilla/include/photo/photo_imagick.php on line 34

Here is a post I wrote this afternoon about the issue.
Andrew Manning
I created a functional Hubzilla server installation that you can run locally to do Hubzilla development. The instructions are pretty simple to follow and should help lower the barrier for those wishing to contribute to the project.

There is some more work to do to fully document how to set up your Netbeans IDE so that applying changes to your dev hub is as simple as saving a file, but there is enough there to get you started.

At some point we can modify this to provide an easy way to deploy Hubzilla on a live server using Vagrant. There is, for example, a Vagrant plugin from Digital Ocean that one could use to automate deployment on a virtual private server hosted by that company.

@Hubzilla Development+
Andrew Manning
Could a relatively recent update on the master branch hide the wiki page list to observers that do not own the wiki? I do not see the page list on the side panel for example at even though I have permissions to view and edit this wiki.

@Hubzilla Development+

Haakon Meland Eriksen (Parlementum)
  last edited: Tue, 20 Jun 2017 10:32:05 -0400  
I promised to share an example Portfolio site using the new Portfolio widget. It is my pleasure to introduce a sample of the portfolio of my friend and artist, @Anett Henriksen. :-)

More of Anett's paintings will be available at

in a few months (parked domain at present). :-)

Download and import the attached Portfolio-webpages to roll your own or just to see how it is done. :-)

@Hubzilla Development+

#Art Portfolio Anett Henriksen - sample #Portfolio widget #Hubzilla DEV-branch #Hubzilla 2.6
Einer von Vielen
Wow, cool, thanks.
Einer von Vielen
@HimmlischesKind Schau mal das an!
Einer von Vielen
It seems we have at least two talented artists on board of Hubzilla.
Andrew Manning
I don't have any need or desire to use Facebook or Twitter. I don't need Nextcloud or MediaGoblin or Drupal or Diaspora or GNU-Social or Mastodon or Wordpress. I've got all of the features from those application...

@Mike Macgirvin , What do you think about compiling a collection of these public informational advertisements you've written over the years into a content for an article or series of articles that we could post on Medium and Twitter for example? They're mostly all still relevant. I was thinking that our visibility in these media is obviously low, and even though not many people would likely read any single post, if we coordinated to release the same post on the same day, and then repeated that weekly with new posts, perhaps it would more effectively advertise. People like @Jeroen and @Sean Tilley have a Twitter account, and I made a Medium account a while ago for this purpose but never finished my Hubzilla article.

@Hubzilla Development+
Einer von Vielen
@Mike Macgirvin I used some of your statements on Hubzilla in a comment on (It's the most influencial german online computer magazin.) Other guys mentioned Hubzilla too in their comments. As a direct result of this comments the last article about social networks and the like mentioned Hubzilla. I hope the journalists at dive more into Hubzilla soon. At least one promised to do so.
Einer von Vielen
  last edited: Wed, 21 Jun 2017 11:37:16 -0400  
@Andrew Manning yes. (Anything wrong?)

/edit/ at least two other persons did comment in earlier articles and mentioned Hubzilla. But I do not know who they are.

Andrew Manning
Thanks to @neue medienordnung plus for contributing a Russian translation of the project webpage at which has been merged into the source code repo and tagged v7.

Always nice to see open source in action.

@Hubzilla Development+

Haakon Meland Eriksen (Parlementum)
  last edited: Wed, 14 Jun 2017 12:19:52 -0400  
Being a professional handsome kind-a-guy means I get to shamelessly copy people more brilliant than myself with a smile and a wink, but beyond that I really need help from people more brilliant than myself, and then maybe some of their Zot might rub off on me too. I give you the Amazing, Marvelous, Extravagant, New, Shiny and Free - Hubzilla Portfolio Widget!

Thanks to @Mike Macgirvin , @Mario Vavti and @Carolus Rex for help, feedback and encouragement :-) @Hubzilla Development+

Edit: The Portfolio widget requires Foundation 6.x - webpage example will be provided.
Mike Macgirvin
  last edited: Thu, 15 Jun 2017 00:55:07 -0400  
Is [widget=portfolio] compatible with Version 2.4 RC?

Not really. If you have a dev server, git pull. Otherwise wait for 2.6.

PS> Now that 2.4 has been released you shouldn't be running 2.4RC (the 'Release Candidate' of 2.4) any longer.
Mike Macgirvin
@Haakon Meland Eriksen (Parlementum) so now that this has been merged, when are you going to fix public health?
Haakon Meland Eriksen (Parlementum)
When someone pays me. If I could get you access to the right code in the right places you specifically could fix it in an hour, other people will need... more time.

neue medienordnung plus
I use often one lang-selector block <div class="container lang-selector">
    <div class="row justify-content-end">
        <a href="" class="lang-choice btn btn-default">de</a>        
        <a href="" class="lang-choice btn btn-default">en</a>
        <a href="" class="lang-choice btn btn-default">ru</a>  

in my webpages. I see that for example comment -tag is generated presumable with this section

class Comanche {
    function parse($s, $pass = 0) {
        $matches = array();
        $cnt = preg_match_all("/\[comment\](.*?)\[\/comment\]/ism", $s, $matches, PREG_SET_ORDER);
        if($cnt) {
            foreach($matches as $mtch) {
                $s = str_replace($mtch[0], '', $s);

in class Comanche. Is it very complex class Comanche for one section to complement so that in this dialogue


by typing  lang-selector. Comanche generate those code:

<div class="container lang-selector">
    <div class="row justify-content-end">
        <a href="" class="lang-choice btn btn-default">de</a>        
        <a href="" class="lang-choice btn btn-default">en</a>
        <a href="" class="lang-choice btn btn-default">ru</a>  

What must I do, so that Comanche do it for me ;-)?

@Hubzilla Development+ @Hubzilla Support Forum+ #Comanche #classComanche #langSelector #ComancheFork
Andrew Manning
I think what you want to use is the existing capability of block webpage elements. If you create an HTML type block element with the HTML in your language selector, then you can include this in your pages by referencing this block in your page layout.

If you had a page layout with content region like this


the selector would be at the top and the page element content would be rendered below. Multiple pages could use this same template as long as the page content was different, for instance if they had translations of some content.
Andrew Manning
I made a little widget (I'm calling /Zotlabs/Widget/Language_menu.php ) that you can use in a webpage layout like this:


where the comma-separated list of language codes corresponds to the languages you have available for the page (in this case en/my-page, de/my-page, es/my-page). The widget is a basic Bootstrap dropdown menu with links to those page translations; it's based on this.

It's not clear to me how one incorporates this into their page layout in terms of position. If they want this language menu at the top-left instead of the top-right, for example, how can they specify that CSS? Can you wrap a [widget] block in a [div=classname] block in a layout? Otherwise this widget will be of more limited use than I was hoping.

@Hubzilla Development+
Andrew Manning
Sorry I wasn't clear: I haven't shared this code yet or committed it because it is still very "raw". I'd like to have a better example of how to incorporate the widget into a page before committing it to dev branch.

It does not actually do anything the language selector I shared earlier does not do. If you wanted to use it immediately you can replace the HTML of that block with:

  1.  <div class="dropdown lang-selector">
  2.      <button class="btn btn-default dropdown-toggle" type="button" id="lang-menu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
  3.          <i class="fa fa-language" aria-hidden="true">&nbsp;</i>
  4.          <span class="caret"></span>
  5.      </button>
  6.      <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="lang-menu">
  7.          <li><a href="#" class="lang-choice btn btn-sm">en</a></li>
  8.          <li><a href="#" class="lang-choice btn btn-sm">de</a></li>
  9.          ...
  10.      </ul>
  11.  </div>

The styling needs some improvement too.

Andrew Manning
@Mike Macgirvin and @Mario Vavti :

Would you mind sharing the details of your development environments? It would be helpful to me and aspiring developers to know how the two primary Hubzilla devs do it. Here are some things I would like to know:

  • What editor/IDE do you use (NetBeans, Atom, vi, emacs, ...)?
  • Where is your development hub located (local VM, remote server, ...)?
  • Do you have more than one dev hub for testing inter-hub communications?
  • How do you apply code modifications and subsequently debug JavaScript and PHP (save the file if local, rsync to remote, ...)?
  • What improvements would you like to make to your dev environment?

I'm curious what you two actually use, though, not just theoretically what someone could use. Feel free to tell me to bugger off and mind my own business.

@Hubzilla Development+
Mike Macgirvin
Mike do you use Org mode in emacs ?

I have used it when it was the best tool for the job at hand - which isn't often or regularly and I have needed to re-acquaint myself with it each time it seems..

I do not claim to have originated the concept that "a message is a message is a message - the protocol isn't relevant". I was one of a number of folks building multi-protocol messaging systems in the late 80s and early 90s and this was a common philosophy.
Raymond Monret
But you're one of the few (or so it seems to me) still trying to put this philosophy into code in 2017. But maybe I 'm not looking at the right places.
Mike Macgirvin
  last edited: Sun, 04 Jun 2017 04:19:00 -0400  
As I've pointed out in a number of posts, this is increasingly difficult because of project policy decisions - which become a part of the de facto protocol but which aren't spelled out in the protocol documentation. The worst thing is that these policy decisions constantly change, so the protocol or set of rules that you need to follow to communicate are increasingly undiscoverable. If social web services have code-enforced policy, this needs to be defined in the protocol or else you can't reliably pass messages back and forth. For instance in Mastodon there's no way of reporting to a delivery agent that they have been blocked for bad behaviour. To a federation partner it merely appears as an unreliable delivery service (should they re-try?), when in fact they have been blocked due to a policy implementation which was outside the protocol definition.

Zot documentation is pretty weak, but these are things we try and spell out. If you have permission to comment, the protocol tells you. If a post is received but some policy prevents us from delivering it to the recipient, the protocol tells you. It doesn't just suck the message into a black hole or reject it without any indication why.

Andrew Manning
The YunoHost app for Hubzilla is still at version 2.0. Are there any industrious people out there who want to update it for the shiny new version 2.4?

@Hubzilla Development+

Andrew Manning
That's a lot of hard work guys. Thanks for all of it.

I updated the project webpage with a note about the 2.4 release, and I updated the hub to 2.4. It looks like Mario already updated to 2.4.

@Hubzilla Development+

Mario VavtiMario Vavti wrote the following post Wed, 31 May 2017 04:12:32 -0400
Hubzilla-2.4 Released!
After roughly two months of development we are proud to present Hubzilla 2.4
Here is a summary of the most notable changes:
  • More work on consolidation of caldav and carddav with the Hubzilla Addressbook and event system (ongoing). In the latest round we provided a way to use iCal as a base event federation format, and the ability to fetch/import vcards from remote profiles.
  • Simplify the 'allow-code' system privilege. Remove the per-account setting and only make it available per channel. Provide a way to implement HTML purification of Markdown content without breaking things like code snippets.
  • Zot 1.0 insecure communications are now refused. They have been blocked since January 1 and should only affect older Redmatrix/Hubzilla sites that have never upgraded as both repositories were patched in May 2016 (a year ago). The standard zot encryption algorithm is now AES256CTR. AES256CBC is now deprecated and will be removed in a future release. Crypto negotiation is now supported for all server roles.
  • Provide core support for client side E2EE for both posts and private mail. This is in addition to the web-based E2EE provided currently and allows easy integration with PGP and S/MIME (for example), and/or custom crypto techniques.
  • Enhanced envelope privacy. Private communications now have a reduced visibility envelope so rogue admins on any one destination site cannot see the entire privacy distribution (after decryption), but only recipients on their own site.
  • Emoji emoticons moved from core to plugin.
  • Bootstrap upgraded to version 4, several other core libraries (markdown, simplepie, etc.) also updated.
  • Various enhancments for the redbasic theme. New toplevel posts (not older than 12 hours) are now highlighted.
  • Profile tabs (aka channel apps) have been moved to the app tray.
  • Lots more work on Travis and automated test integration.
  • Channel import required two passes and this caused a number of other issues. This was fixed.
  • Widgets have been moved from a singe procedural file to an object based directory of discrete widgets.
  • Several postgres fixes.
  • Some more work on Mastodon compatibility (ongoing) and a wider range of GNU-Social server versions.

For a detailed change log have a look here.

A big THANK YOU! to all the translators and everybody who is helping to improve Hubzilla with each release.

Get it while it's hot!

Please consider to support this project:

@Hubzilla Announcements+ @Hubzilla Support Forum+
Andrew Manning
fwiw i noticed the sidebar menu on the settings page of the demo hub seems to be missing some CSS and isn't showing as a proper list menu.

It seems fine in my browser. The only quirk I notice is that it does not handle window resizing from big to small or small to big well. Could it be the browser caching issue that inevitably fools some of us every time we update this stuff?
Seth Martin
Thanks, that makes sense @Mike Macgirvin

Hopefully I get home before bedtime tonight and get it fixed.
Mike Macgirvin
  last edited: Thu, 01 Jun 2017 23:34:36 -0400  
I've tried three different browsers and two OSs and get the same results in all of them - also with manual cache refresh. It's entirely possible this is an issue with the bootstrap 4 port, but I'm not seeing it in dev hence why I've noted it.

[edit: looks like it was fixed in dev - the nav-stacked class in that template needs to be flex-column]
[edit2: view/tpl/generic_links_widget.tpl in master has the correct css classes and is reporting that it's 2.4, so it may be that the demo site is using a custom template here and didn't get the bootstrap4 changes]

neue medienordnung plus
  last edited: Tue, 30 May 2017 01:47:37 -0400  
I consider wich approach can expedient for implemantation of tagged webpages are? S. here for example the #LVEE2017 conference. How can I efficient userfriendly by prearrangement and realisation of event LVEE all content inclusive webpages tagged able to make? So that for example one LVEE attendee or interested party with Hubzilla search query ad-hoc get as search result all LVEE2017 content, wich is tagged with #visa tag. Also webpages. Or with search query get all lvee2017 content, wich is tagged with #speichercloud.Image/photo

Actual state is, that Hubzilla search ignore the webpage content. What are the reasons for this?

@Hubzilla Development+ @Hubzilla Support Forum+ #HubzillaSearch #webpageContent #FilterBubble #taggedFilterBubble
neue medienordnung plus
@Mike Macgirvin
For webpages I think you only need to include them in the search.

In what Hubzilla modul is the search feature implement? What mean you with " include them in the search"?
Andrew Manning
You will need to take some time to study the Hubzilla code structure. Modules that are accessible at are defined in Zotlabs/Modules/Modname.php.
neue medienordnung plus
Meanwhile think I, that is it convenient as a kind of search index for webpages easy for important webpages create tagged posts. For this posts can I use the conventional Hubzilla search.
Maria Karlsen
 Sweden,  last edited: Wed, 31 May 2017 13:43:20 -0400  
I don't really believe this is possible, for a number of reasons, but it's an idea:
@Hubzilla Development+

1a: Main location is down. People who try to visit it get a server error message.
1b: Main location is down. People who try to visit it get automatically redirected to clone #1.

2: Clone #1 has issues. Automatically redirects to clone #2.

3: Clone #2 works without problem. The requested channel/page can be viewed without problems.

Mike Macgirvin
A close variant of this discussion just happened on the W3C community git. You may not be aware but we redirect webfinger; which means it's possible to automatically discover when somebody has moved. I don't think we're using this currently but it presents some interesting possibilities. If you get somebody's business card and it says they're foo@bar and you try and connect and find that bar is dead, you can in theory send the same request to any directory server and if it has a new record for foo it will send you there.  This *could* all be done automatically within hubzilla.

I don't have a perfect solution, but it's possible (using the chanview module inside Hubzilla) to accomplish profile page redirection in a similar fashion. It would take longer to load in the first place because chanview would in this case need to test the page before sending you there. One could also build this kind of ability into magic auth since it's already going to try and connect to that page.

neue medienordnung plus
The help pages contains not only texts in different languages. The content of [1] and [2] is also different. Is it intended, those URL /address design for [1] and [2] to offert? I suggest one consistent URL/ address syntax for help and other Hubzilla pages to design and to apply. S. also subject: serverside delievery of appropriate language-sensitive pageversion worsened searchengine ranking .

In my opinion, is it usefull, when Hubzilla user can for the Hubzilla help the external searchengines of its choice to apply.

@Hubzilla Support Forum+ @Hubzilla Development+ #HubzillaHelp #searchengines #externalSearchengines
neue medienordnung plus
  last edited: Fri, 26 May 2017 07:28:34 -0400  
@Andrew Manning
I encourage you to step back and ask yourself why you want to spend time working on this particular component of Hubzilla.

Yes, I want that all
  • will have to do a part of it all work self. I will have to contribute as developer - what I can to do.
  • bring new developers to the Hubzilla community who wish to work on it with you - s. my LVEE 2017 engagement bottom in this post
  • help people who are already using Hubzilla and you want to make the doco more accessible or useful to them? - s. Heliza project Considerations for Hubzilla mobile agent concept
  • improve the language translations for non-English speakers - I will be make a russian version of still previous 06-22-2017
  • introduce Hubzilla to new people and encourage them to use the software - s. LVEE 2017 and my Hubzilla promotion for german speaking contemporaries
to do. I see that all this tasks, all this activity as part of one projects with the one major goal Digital space for livable public space to design and to develop. I present Hubzilla on LVEE 2017 conference (“Linux Vacation / Eastern Europe) June 23. - 25.06.2017
LVEEE combines both communication and rest of the enthusiasts of free software, including GNU/Linux platform, but not limited to it.
LVEE 2017 is organized by Minsk Linux Users Group with support of the open source community active members from other cities. Recommended Conference languages are Russian, Belarusian and English.

I was invited by the organisers speak about Hubzilla on LVEE2017 conference. Here summary for my LVEE2017 speech (and maybe one Hubzilla Workshop on LVEE2017).
I am pleased for you about goals, the philosophy and historie of Hubzilla project, the unique features of dezentralized Hubzilla Grid to speech, about possibilities of solutions with Hubzilla Nomadic Identity and aceess control with fine-grained permissions for information shared across the Hubzilla grid and about them how Hbzilla community and myself are working continuously at the achieving the objectives of Hubzilla project and realisation of creative ideas in reliable and comfortable solutions.
I saw the topics of other LVEE 2017 participants and competences, skills and knowledge of other participants and hope, that  during the Conference will be to make new contacts, there will be further developed - also in Hubzilla space. Other participants have so many interesting topics - I am pleased for live communication an LVEE 2017 and new acquaintances.

When yo want support my activity for Hubzilla Promotion, you can donate for frekonale e.V. Each donation, even the smallest one support me in my Hubzilla engagement. The trip to LVE2017 to the Republic of Belarus pay I of myself own pockets.

You can donate for my Hubzilla engagement for frekonale e.V. . The doanations are tax-deductible:
Donation account: GLS Bank, IBAN DE24430609671174433900
Purpose (Verwendungszweck) "Hubzilla connected people"
Vereinsregister des Amtsgerichts Dresden: VR 7811
Steuernummer Finanzamt Meißen: 209/141/05774

#LVEE2017 #minsk #belarusian #weissrussland #LinuxVacation #EasternEurope #nonEnglishSpeaker #frekonaleeV #RepublicOfBelarus
Einer von Vielen
"Visibility" oft the comment oft @Mike Macgirvin : I can see his comment. My Hub runs Hubzilla Pro.
neue medienordnung plus
  last edited: Fri, 26 May 2017 23:15:14 -0400  
@Andrew Manning
I can't speak for other people, but based on my knowledge of the Hubzilla community, there will probably not be anyone else who will volunteer to write code with you.
Some considerations to that:
  • when I and other user the Hubzilla RC's test and write I bugreports, is it not for me, but for me and also for Hubzilla community. I mean debugging is also one job, wich not little important is by comparsion with programmer job ;-). Hubzilla community can a lot more achieve, when potential synergies will be systematically to identify and consistent to use
  • I am interesting on constructive feedback to my ideas and on solution approaches to realize my ideas.

neue medienordnung plus
  last edited: Thu, 25 May 2017 23:41:35 -0400  
FYI: Use of one url for two or more languages with serverside delievery of appropriate language-sense pageversion worsened searchengine ranking. S. also "Make sure each language version is easily discoverable" -

Keep the content for each language on separate URLs. Don’t use cookies to show translated versions of the page. Consider cross-linking each language version of a page. That way, a French user who lands on the German version of your page can get to the right language version with a single click.

Avoid automatic redirection based on the user’s perceived language. These redirections could prevent users (and search engines) from viewing all the versions of your site.

@Andrew Manning @Hubzilla Development+ @Hubzilla Support Forum+ #switch #browsersniffing #BrowserDetection #Browserweiche #sniffing
Andrew Manning is now at dev branch commit 31d9208.

Here's an example of what changed for the Page module:

  1.  diff --git a/Zotlabs/Module/Page.php b/Zotlabs/Module/Page.php
  2.  index 6ef285d..7bc90c0 100644
  3.  --- a/Zotlabs/Module/Page.php
  4.  +++ b/Zotlabs/Module/Page.php
  5.  @@ -43,11 +43,31 @@ class Page extends \Zotlabs\Web\Controller {
  7.           $channel_address = argv(1);
  9.  +        // Always look first for the page name prefixed by the observer language; for instance page/nickname/de/foo
  10.  +        // followed by page/nickname/foo if that is not found.
  11.  +        // If your browser language is de and you want to access the default in this case,
  12.  +        // use page/nickname/-/foo to over-ride the language and access only the page with pagelink of 'foo'
  13.  +
  14.  +        $page_name = '';
  15.  +        $ignore_language = false;
  16.  +
  17.  +        for($x = 2; $x < argc(); $x ++) {
  18.  +            if($page_name === '' && argv($x) === '-') {
  19.  +                $ignore_language = true;
  20.  +                continue;
  21.  +            }
  22.  +            if($page_name)
  23.  +                $page_name .= '/';
  24.  +            $page_name .= argv($x);
  25.  +        }
  26.  +
  27.  +
  28.           // The page link title was stored in a urlencoded format
  29.           // php or the browser may/will have decoded it, so re-encode it for our search
  31.  -        $page_id = urlencode(argv(2));
  32.  -    
  33.  +        $page_id = urlencode($page_name);
  34.  +        $lang_page_id = urlencode(\App::$language . '/' . $page_name);
  35.  +
  36.           $u = q("select channel_id from channel where channel_address = '%s' limit 1",
  37.               dbesc($channel_address)
  38.           );
  39.  @@ -64,16 +84,31 @@ class Page extends \Zotlabs\Web\Controller {
  41.           require_once('include/security.php');
  42.           $sql_options = item_permissions_sql($u[0]['channel_id']);
  43.  -    
  44.  -        $r = q("select item.* from item left join iconfig on = iconfig.iid
  45.  -            where item.uid = %d and = 'system' and iconfig.v = '%s' and item.item_delayed = 0
  46.  -            and (( iconfig.k = 'WEBPAGE' and item_type = %d )
  47.  -            OR ( iconfig.k = 'PDL' AND item_type = %d )) $sql_options $revision limit 1",
  48.  -            intval($u[0]['channel_id']),
  49.  -            dbesc($page_id),
  50.  -            intval(ITEM_TYPE_WEBPAGE),
  51.  -            intval(ITEM_TYPE_PDL)
  52.  -        );
  53.  +
  54.  +        $r = null;    
  55.  +
  56.  +        if(! $ignore_language) {
  57.  +            $r = q("select item.* from item left join iconfig on = iconfig.iid
  58.  +                where item.uid = %d and = 'system' and iconfig.v = '%s' and item.item_delayed = 0
  59.  +                and (( iconfig.k = 'WEBPAGE' and item_type = %d )
  60.  +                OR ( iconfig.k = 'PDL' AND item_type = %d )) $sql_options $revision limit 1",
  61.  +                intval($u[0]['channel_id']),
  62.  +                dbesc($lang_page_id),
  63.  +                intval(ITEM_TYPE_WEBPAGE),
  64.  +                intval(ITEM_TYPE_PDL)
  65.  +            );
  66.  +        }
  67.  +        if(! $r) {
  68.  +            $r = q("select item.* from item left join iconfig on = iconfig.iid
  69.  +                where item.uid = %d and = 'system' and iconfig.v = '%s' and item.item_delayed = 0
  70.  +                and (( iconfig.k = 'WEBPAGE' and item_type = %d )
  71.  +                OR ( iconfig.k = 'PDL' AND item_type = %d )) $sql_options $revision limit 1",
  72.  +                intval($u[0]['channel_id']),
  73.  +                dbesc($page_id),
  74.  +                intval(ITEM_TYPE_WEBPAGE),
  75.  +                intval(ITEM_TYPE_PDL)
  76.  +            );
  77.  +        }
  78.           if(! $r) {
  80.               // Check again with no permissions clause to see if it is a permissions issue
neue medienordnung plus
  last edited: Fri, 26 May 2017 04:04:37 -0400  
@Mike Macgirvin
If you want to translate a webpage 'foo' into German you just create a page called 'de/foo' and translate the page.

I mean, for search friendly, SEO-optimized URL's is it inpossible for all languages same address foo to use. URL-value, keywords in URL's are important for pageranking - s. Therefore is it important, that URL contains keywords, suitably for respective language in each page.
neue medienordnung plus
I included the solution "Support for publishing of search engine friendly multilinguage content" in my speech/ presentation Hubzilla - introduction, possibilities, Hubzilla community - in three languages ;-)

neue medienordnung plus
  last edited: Wed, 24 May 2017 12:44:25 -0400  
I built a little site in three languages with Hubzilla Comanche
  • english - Hubzilla - introduction, possibilities, Hubzilla community
  • german - Hubzilla - Einführung, Möglichkeiten, Hubzilla-Community
  • russian - Hubzilla - введение, возможности, Hubzilla-сообщество
The website is still in work und therefore only limited callable!

German Version
Habe eine kleine mehrsprachige Website gebaut. Das Projekt Hubzilla - Einführung, Möglichkeiten, Hubzilla-Community ist übersichtlich, aber hat mich herausgefordert in einem Kontext, wo die Comanche switch-Anweisung erst vor ein Paar Tage realisiert wurde und ich praktsich als Betatester immer wieder für sich klären musste "Ist es jetzt ein Fehler in Comanche oder mein Fehler?". Englische Version ist vorerst ziemlich bescheiden ausgefallen. Dieser Platzhalter englische Version ist mit dem Ziel eingebaut um ein strukturell komplettes mehrsprachiges Projekt präsentieren zu können, um zu sehen, wie sowas mit Hubzilla/ Comanche machbar ist.

Ich hoffe, dass ich dazu komme die englische Seiten mit Texten zu ergänzen. Vlt. spricht den einen oder anderen das Projekt an und es kommen auch andere Sprachen hinzu ;-).

@Deutschsprachige Nutzer+ @Hubzilla Development+ @Hubzilla Support Forum+ @We Distribute+ @Zot universe NEWS+ #multilingual #languageSense #languageSensitiv #HubzillaComanche #Comanche

neue medienordnung plus
  last edited: Sat, 20 May 2017 23:05:14 -0400  
switch-statement is not available in [region=aside]. Without switch-statement in [region=aside] is switch-statement in [region=content]of little value. For example I cann't here offer for each language own menu. I created an bugreport .

@Hubzilla Development+
neue medienordnung plus
  last edited: Sat, 20 May 2017 23:17:21 -0400  
Operating error - false syntax.

neue medienordnung plus
Is  profile_uid from Comanche.php equal to uid from here ->
profile_uid(Comanche.php) == uid(profile) ?

@Hubzilla Development+ @Hubzilla Support Forum+
Andrew Manning
I thought the website import tool was broken in the dev branch, but I just pulled the latest on my dev hub (3fad69e) and was able to import the latest version of the Hubzilla project page. This is a good thing, but I'm curious if someone fixed something or am I just remembering incorrectly?

@Hubzilla Development+
neue medienordnung plus
I created bugreport #790 invalid, version 2.4RC
Mario Vavti
  last edited: Tue, 30 May 2017 15:33:18 -0400  
This should be #fixed now. Please retest.
Edit: when retesting please create a new export file first.
Andrew Manning
  last edited: Tue, 30 May 2017 20:31:34 -0400  
Hey cool Mario! I just exported a webpage with over ten elements (including blocks, pages, layouts) from one hub and imported them into another hub, different channel. Worked like a charm. Thanks!

Oh, I just re-read the discussion and realize that it worked for me the whole time :facepalm