Browse Source

- Rewrite the i18n ini handler

- Remove a lot of useless quotes in the ini files
- Rewrite the update_trans.sh script (using ini2po and msgcat)
- Fix a mistake in the README
pull/16/head
Jaussoin Timothée 10 years ago
parent
commit
8f4ce8d858
  1. 2
      README.md
  2. 14
      app/widgets/About/about.tpl
  3. 15
      app/widgets/About/locales.ini
  4. 23
      app/widgets/Account/locales.ini
  5. 2
      app/widgets/AccountNext/accountnext.tpl
  6. 19
      app/widgets/AccountNext/locales.ini
  7. 3
      app/widgets/AdHoc/locales.ini
  8. 22
      app/widgets/AdminDB/locales.ini
  9. 63
      app/widgets/AdminMain/locales.ini
  10. 37
      app/widgets/AdminTest/locales.ini
  11. 17
      app/widgets/Api/locales.ini
  12. 15
      app/widgets/Avatar/locales.ini
  13. 5
      app/widgets/Blog/locales.ini
  14. 37
      app/widgets/Bookmark/locales.ini
  15. 36
      app/widgets/Chat/Chat.php
  16. 37
      app/widgets/Chat/locales.ini
  17. 16
      app/widgets/Chats/locales.ini
  18. 27
      app/widgets/Config/locales.ini
  19. 11
      app/widgets/ConfigData/locales.ini
  20. 14
      app/widgets/Contact/_contact.tpl
  21. 77
      app/widgets/Contact/locales.ini
  22. 16
      app/widgets/Group/Group.php
  23. 22
      app/widgets/Group/_group_ticker.tpl
  24. 38
      app/widgets/Group/locales.ini
  25. 30
      app/widgets/Groups/locales.ini
  26. 10
      app/widgets/Header/locales.ini
  27. 21
      app/widgets/Hello/locales.ini
  28. 31
      app/widgets/Help/locales.ini
  29. 12
      app/widgets/Init/locales.ini
  30. 9
      app/widgets/Location/locales.ini
  31. 71
      app/widgets/Login/locales.ini
  32. 2
      app/widgets/LoginAnonymous/locales.ini
  33. 11
      app/widgets/Menu/locales.ini
  34. 7
      app/widgets/NodeAffiliations/locales.ini
  35. 9
      app/widgets/NodeSubscriptions/locales.ini
  36. 3
      app/widgets/Notifs/_notifs_confirm.tpl
  37. 7
      app/widgets/Notifs/locales.ini
  38. 60
      app/widgets/Post/locales.ini
  39. 13
      app/widgets/Presence/locales.ini
  40. 6
      app/widgets/Publish/Publish.php
  41. 4
      app/widgets/Publish/_publish_back_confirm.tpl
  42. 47
      app/widgets/Publish/locales.ini
  43. 9
      app/widgets/PubsubSubscriptionConfig/locales.ini
  44. 49
      app/widgets/Rooms/locales.ini
  45. 34
      app/widgets/Roster/locales.ini
  46. 5
      app/widgets/Share/locales.ini
  47. 13
      app/widgets/Statistics/locales.ini
  48. 9
      app/widgets/Subscribe/locales.ini
  49. 7
      app/widgets/Syndication/locales.ini
  50. 52
      app/widgets/Vcard4/_vcard4_form.tpl
  51. 57
      app/widgets/Vcard4/locales.ini
  52. 19
      app/widgets/Visio/locales.ini
  53. 13
      app/widgets/VisioExt/locales.ini
  54. 8
      app/widgets/WidgetCommon/_post_toolbox.tpl
  55. 94
      lib/XMPPtoForm.php
  56. 14
      linker.php
  57. 528
      locales/locales.ini
  58. 1702
      locales/messages.pot
  59. 11
      locales/update_trans.sh
  60. 22
      system/Utils.php
  61. 26
      system/i18n/i18n.php
  62. 49
      system/widget/WidgetBase.php
  63. 32
      themes/material/css/style.css

2
README.md

@ -34,4 +34,4 @@ You can support us on :
License
-------
Jappix is released under the terms of the AGPL license. See COPYING for more details.
Movim is released under the terms of the AGPL license. See COPYING for more details.

14
app/widgets/About/about.tpl

@ -4,12 +4,12 @@
<ul class="thick divided">
<li class="condensed">
<span class="icon bubble color green"><i class="md md-info"></i></span>
<p>{$c->__('info')} <a href="http://www.gnu.org/licenses/agpl-3.0.html">GNU Affero General Public License v3</a>.</p>
<p>{$c->__('about.info')} <a href="http://www.gnu.org/licenses/agpl-3.0.html">GNU Affero General Public License v3</a>.</p>
</li>
<li class="subheader">{$c->__('title.thanks')}</li>
<li class="subheader">{$c->__('about.thanks')}</li>
<li class="condensed">
<span class="icon bubble color red"><i class="md md-developer-mode"></i></span>
<span>{$c->__('title.developers')}</span>
<span>{$c->__('about.developers')}</span>
<p class="all">
<a href="http://edhelas.movim.eu/">Jaussoin Timothée aka edhelas</a><br/>
<a href="https://launchpad.net/~nodpounod">Ho Christine aka nodpounod</a><br/>
@ -18,12 +18,12 @@
</li>
<li class="condensed">
<span class="icon bubble color purple"><i class="md md-flag"></i></span>
<span>{$c->__('title.translators')}</span>
<span>{$c->__('about.translators')}</span>
<p>
Thanks to all the translators <a href="https://translations.launchpad.net/movim">translations.launchpad.net/movim</a>
</p>
</li>
<li class="subheader">{$c->__('title.software')}</li>
<li class="subheader">{$c->__('about.software')}</li>
<li class="condensed">
<span class="icon bubble color orange"><i class="md md-archive"></i></span>
<p class="all">
@ -41,7 +41,7 @@
</li>
<li class="condensed">
<span class="icon bubble color brown"><i class="md md-insert-emoticon"></i></span>
<span>{$c->__('title.resources')}</span>
<span>{$c->__('about.resources')}</span>
<p class="all">
Material Design Iconic Font <a href="http://zavoloklom.github.io/material-design-iconic-font/icons.html">by Google and Sergey Kupletsky</a> under SIL OFL 1.1<br/>
Twemoji <a href="http://twitter.github.io/twemoji/">by Twitter</a> under MIT and CC-BY<br/>
@ -49,7 +49,7 @@
</li>
<li class="condensed">
<span class="icon bubble color indigo"><i class="md md-import-export"></i></span>
<span>{$c->__('title.api')}</span>
<span>{$c->__('about.api')}</span>
<p class="all">
OpenStreetMap - Nominatim <a href="http://nominatim.openstreetmap.org/">nominatim.openstreetmap.org</a><br/>
Last.fm API - <a href="http://www.last.fm/api">www.last.fm/api</a><br/>

15
app/widgets/About/locales.ini

@ -1,7 +1,8 @@
title.thanks = 'Thanks'
title.developers = 'Developers'
title.translators = 'Translators'
title.software = 'Software'
title.resources = 'Resources'
title.api = 'API'
info = 'Movim is an XMPP-based communication platform. All the project, except the following software and resources, is under'
[about]
thanks = Thanks
developers = Developers
translators = Translators
software = Software
resources = Resources
api = API
info = Movim is an XMPP-based communication platform. All the project, except the following software and resources, is under

23
app/widgets/Account/locales.ini

@ -1,11 +1,12 @@
account.title = 'Account'
account.password_change_title = 'Change my password'
account.password = 'Password'
account.password_confirmation = 'Password confirmation'
account.password_changed = 'The password has been updated'
account.password_not_valid = 'Please provide a valid password (6 characters minimum)'
account.password_not_same = 'The provided passwords are not the same'
account.delete_title = 'Delete my account'
account.delete = 'Delete your account'
account.delete_text = 'You will delete your XMPP account and all the relative information linked to it (profile, contacts and publications).'
account.delete_text_confirm = 'Are you sure that you want to delete it ?'
[account]
title = Account
password_change_title = Change my password
password = Password
password_confirmation = Password confirmation
password_changed = The password has been updated
password_not_valid = Please provide a valid password (6 characters minimum)
password_not_same = The provided passwords are not the same
delete_title = Delete my account
delete = Delete your account
delete_text = You will delete your XMPP account and all the relative information linked to it (profile, contacts and publications).
delete_text_confirm = "Are you sure that you want to delete it ?"

2
app/widgets/AccountNext/accountnext.tpl

@ -3,7 +3,7 @@
<ul class="simple thick">
<li>
<span>{$c->__('create.title')} {$c->__('on')} {$host}</span>
<p>{$c->__('loading')}</p>
<p>{$c->__('create.loading')}</p>
</li>
</ul>
</div>

19
app/widgets/AccountNext/locales.ini

@ -1,10 +1,13 @@
create.title = 'Create a new account'
create.notfound = 'No account creation form found on the server'
create.on = 'on'
create.successfull = 'Your acccount has been successfully registered'
loading = 'Loading'
[create]
title = Create a new account
notfound = No account creation form found on the server
on = on
successfull = Your acccount has been successfully registered
loading = Loading
error.not_acceptable = 'Not Acceptable'
error.service_unavailable = 'The registration system of this server is currently unavailable'
[error]
not_acceptable = Not Acceptable
service_unavailable = The registration system of this server is currently unavailable
oob.about = 'This server use an external system for the registration, please click on the following URL.'
[oob]
about = This server use an external system for the registration, please click on the following URL.

3
app/widgets/AdHoc/locales.ini

@ -1 +1,2 @@
adhoc.title = 'Actions'
[adhoc]
title = Actions

22
app/widgets/AdminDB/locales.ini

@ -1,12 +1,12 @@
[db]
db.legend = 'Database'
db.connect_error = "Modl wasn't able to connect to the database"
db.connect_success = 'Movim is connected to the database'
db.update = 'The database need to be updated'
db.up_to_date = 'Movim database is up to date'
db.type = 'Database Type'
db.username = 'Username'
db.password = 'Password'
db.host = 'Host'
db.port = 'Port'
db.name = 'Database Name'
legend = Database
connect_error = "Modl wasn't able to connect to the database"
connect_success = Movim is connected to the database
update = The database need to be updated
up_to_date = Movim database is up to date
type = Database Type
username = Username
password = Password
host = Host
port = Port
name = Database sName

63
app/widgets/AdminMain/locales.ini

@ -1,45 +1,46 @@
admin.general = 'General Settings'
[admin]
general = General Settings
[general]
general.theme = 'Theme'
general.language = 'Default language'
general.environment = 'Environment'
general.log_verbosity = 'Log verbosity'
general.timezone = 'Server Timezone'
general.limit = 'User folder size limit (in bytes)'
theme = Theme
language = Default language
environment = Environment
log_verbosity = Log verbosity
timezone = Server Timezone
limit = User folder size limit (in bytes)
[websocket]
websocket.title = 'WebSocket Configuration'
websocket.info = 'Enter here a valid WebSocket URI in the form'
websocket.label = 'WebSocket URI'
websocket.save_info = 'If you change the URI, please restart the daemon to reload the configuration'
websocket.publics = 'Public WebSockets'
title = WebSocket Configuration
info = Enter here a valid WebSocket URI in the form
label = WebSocket URI
save_info = If you change the URI, please restart the daemon to reload the configuration
publics = Public WebSockets
[credentials]
credentials.title = 'Administration Credential'
credentials.info = 'Change the default credentials admin/password'
credentials.username = 'Username'
credentials.password = 'Password'
credentials.re_password = 'Retype password'
title = Administration Credential
info = Change the default credentials admin/password
username = Username
password = Password
re_password = Retype password
[whitelist]
whitelist.title = 'Whitelist - XMPP Server'
whitelist.info1 = 'If you want to specify a list of authorized XMPP servers on your Movim pod and forbid the connection on all the others please put their domain name here, with comma (ex: movim.eu,jabber.fr)'
whitelist.info2 = 'Leave this field blank if you allow the access to all the XMPP accounts.'
whitelist.label = 'List of whitelisted XMPP servers'
title = Whitelist - XMPP Server
info1 = If you want to specify a list of authorized XMPP servers on your Movim pod and forbid the connection on all the others please put their domain name here, with comma (ex: movim.eu,jabber.fr)
info2 = Leave this field blank if you allow the access to all the XMPP accounts.
label = List of whitelisted XMPP servers
[information]
information.title = 'Information Message'
information.description = 'Description'
information.info1 = 'This message will be displayed on the login page'
information.info2 = "Leave this field blank if you don't want to show any message."
information.label = 'Information Message'
title = Information Message
description = Description
info1 = This message will be displayed on the login page
info2 = "Leave this field blank if you dont want to show any message."
label = Information Message
[log]
log.empty = 'Empty'
log.syslog = 'Syslog'
log.syslog_files = 'Syslog and files'
empty = Empty
syslog = Syslog
syslog_files = Syslog and files
[rewrite]
rewrite.title = 'URL Rewriting'
rewrite.info = 'The URL Rewriting can be enabled'
title = URL Rewriting
info = The URL Rewriting can be enabled

37
app/widgets/AdminTest/locales.ini

@ -1,22 +1,23 @@
admin.compatibility = 'General Overview'
[admin]
compatibility = General Overview
[compatibility]
compatibility.info = 'Movim has found some issues or things that need to be fixed or improved'
compatibility.php1 = 'Update your PHP-Version: %s'
compatibility.php2 = 'Required: 5.3.0'
compatibility.curl = 'Install the php5-curl library'
compatibility.imagick = 'Install the php5-imagick library'
compatibility.gd = 'Install the php5-gd library'
compatibility.rights = "Read and write rights for the webserver in Movim's root directory"
compatibility.rewrite = 'The URL Rewriting support is currently disabled'
compatibility.db = 'The database need to be updated, go to the database panel to fix this'
compatibility.websocket = 'WebSocket connection error, check if the Movim Daemon is running and is reachable'
compatibility.xmpp_websocket = 'XMPP Websocket connection error, please check the validity of the URL given in the General Configuration'
info = Movim has found some issues or things that need to be fixed or improved
php1 = Update your PHP-Version: %s
php2 = Required: 5.3.0
curl = Install the php5-curl library
imagick = Install the php5-imagick library
gd = Install the php5-gd library
rights = "Read and write rights for the webserver in Movims root directory"
rewrite = The URL Rewriting support is currently disabled
db = The database need to be updated, go to the database panel to fix this
websocket = WebSocket connection error, check if the Movim Daemon is running and is reachable
xmpp_websocket = XMPP Websocket connection error, please check the validity of the URL given in the General Configuration
[schema]
schema.browser = 'Browser'
schema.movim = 'Movim Core'
schema.daemon = 'Movim Daemon'
schema.database = 'Database'
schema.api = 'API'
schema.xmpp = 'XMPP'
browser = Browser
movim = Movim Core
daemon = Movim Daemon
database = Database
api = API
xmpp = XMPP

17
app/widgets/Api/locales.ini

@ -1,8 +1,9 @@
api.title = 'API'
api.info = 'Here you can register your pod on the official %sMovim API%s and be listed on %sthe pods page%s.'
api.register = 'Your pod is not registered on the API'
api.registered = 'Your pod is registered on the API'
api.wait = 'Your pod is not yet validated'
api.validated = 'Your pod is validated'
api.unregister = 'You asked to be removed from the API, this request will be processed in a couple of hours'
api.conf_updated = 'Configuration updated'
[api]
title = API
info = Here you can register your pod on the official %sMovim API%s and be listed on %sthe pods page%s.
register = Your pod is not registered on the API
registered = Your pod is registered on the API
wait = Your pod is not yet validated
validated = Your pod is validated
unregister = You asked to be removed from the API, this request will be processed in a couple of hours
conf_updated = Configuration updated

15
app/widgets/Avatar/locales.ini

@ -1,7 +1,8 @@
avatar.file = 'File'
avatar.use_it = 'Use it'
avatar.webcam = 'Webcam'
avatar.cheese = 'Cheese !'
avatar.snapshot = 'Take a webcam snapshot'
avatar.updated = 'Avatar Updated'
avatar.not_updated = 'Avatar Not Updated'
[avatar]
file = File
use_it = Use it
webcam = Webcam
cheese = Cheese !
snapshot = Take a webcam snapshot
updated = Avatar Updated
not_updated = Avatar Not Updated

5
app/widgets/Blog/locales.ini

@ -1,2 +1,3 @@
blog.title = "%s's feed"
blog.empty = 'This user has not posted anything right now'
[blog]
title = "%s's feed"
empty = This user has not posted anything right now

37
app/widgets/Bookmark/locales.ini

@ -1,15 +1,22 @@
title.conferences = 'Conferences'
title.groups = 'Groups'
chatroom.add = 'Add a new Chat Room'
chatroom.id = 'Chat Room ID'
chatroom.name = 'Name'
chatroom.nickname = 'Nickname'
chatroom.autojoin_label = 'Do you want do join automaticaly this Chat Room ?'
chatroom.bad_id = 'Bad Chatroom ID'
chatroom.empty_name = 'Empty name'
bookmarks.updated = 'Bookmarks updated'
bookmarks.error = 'An error occured : '
bookmarks.configure = 'Configure'
url.add = 'Add a new URL'
url.url = 'URL'
url.name = 'Name'
[title]
conferences = Conferences
groups = Groups
[chatroom]
add = Add a new Chat Room
id = Chat Room ID
name = Name
nickname = Nickname
autojoin_label = Do you want do join automaticaly this Chat Room ?
bad_id = Bad Chatroom ID
empty_name = Empty name
[bookmarks]
updated = Bookmarks updated
error = An error occured :
configure = Configure
[url]
add = Add a new URL
url = URL
name = Name

36
app/widgets/Chat/Chat.php

@ -49,7 +49,7 @@ class Chat extends WidgetBase
}
}
}*/
function onMessageHistory($packet)
{
$this->onMessage($packet, true);
@ -66,7 +66,7 @@ class Chat extends WidgetBase
$contact = $cd->getRosterItem($from);
if($contact == null)
$contact = $cd->get($from);
if($contact != null
&& !preg_match('#^\?OTR#', $message->body)
&& $message->type != 'groupchat') {
@ -75,7 +75,7 @@ class Chat extends WidgetBase
Notification::append('chat|'.$from, $contact->getTrueName(), $message->body, $avatar, 4);
}
RPC::call('movim_fill', $from.'_state', '');
RPC::call('movim_fill', $from.'_state', '');
// If the message is from me
} /*else {
$from = $message->jidto;
@ -119,7 +119,7 @@ class Chat extends WidgetBase
list($config, $room) = array_values($packet->content);
$view = $this->tpl();
$xml = new \XMPPtoForm();
$form = $xml->getHTML($config->x->asXML());
@ -187,9 +187,9 @@ class Chat extends WidgetBase
$chats->ajaxGetHistory($jid);
$html = $this->prepareChat($jid);
$header = $this->prepareHeader($jid);
Header::fill($header);
RPC::call('movim_fill', 'chat_widget', $html);
RPC::call('MovimTpl.scrollPanel');
@ -208,9 +208,9 @@ class Chat extends WidgetBase
if(!$this->validateJid($room)) return;
$html = $this->prepareChat($room, true);
$header = $this->prepareHeaderRoom($room);
Header::fill($header);
RPC::call('movim_fill', 'chat_widget', $html);
RPC::call('MovimTpl.scrollPanel');
@ -229,17 +229,17 @@ class Chat extends WidgetBase
function ajaxSendMessage($to, $message, $muc = false, $resource = false) {
if($message == '')
return;
$m = new \Modl\Message();
$m->session = $this->user->getLogin();
$m->jidto = echapJid($to);
$m->jidfrom = $this->user->getLogin();
$session = \Sessionx::start();
$m->type = 'chat';
$m->resource = $session->resource;
if($muc) {
$m->type = 'groupchat';
@ -289,7 +289,7 @@ class Chat extends WidgetBase
/**
* @brief Send a "composing" message
*
*
* @param string $to
* @return void
*/
@ -299,10 +299,10 @@ class Chat extends WidgetBase
$mc = new Composing;
$mc->setTo($to)->request();
}
/**
* @brief Send a "paused" message
*
*
* @param string $to
* @return void
*/
@ -378,7 +378,7 @@ class Chat extends WidgetBase
/**
* @brief Prepare the contact header
*
*
* @param string $jid
*/
function prepareHeader($jid)
@ -393,7 +393,7 @@ class Chat extends WidgetBase
} else {
$contact = $cd->get($jid);
}
$view->assign('contact', $contact);
$view->assign('jid', $jid);
@ -402,7 +402,7 @@ class Chat extends WidgetBase
/**
* @brief Prepare the contact header
*
*
* @param string $jid
*/
function prepareHeaderRoom($room)

37
app/widgets/Chat/locales.ini

@ -1,22 +1,23 @@
[message]
message.published = 'Message Published'
message.encrypted = 'Encrypted message'
message.composing = 'Composing...'
message.paused = 'Paused...'
message.gone = 'Contact gone'
published = Message Published
encrypted = Encrypted message
composing = Composing...
paused = Paused...
gone = Contact gone
[chat]
chat.attention = '%s needs your attention'
chat.placeholder = 'Your message here...'
chat.smileys = 'Smileys'
chat.empty_title = 'Chat'
chat.empty_text = 'Discuss with your contacts'
chat.frequent = 'Frequent contacts'
attention = %s needs your attention
placeholder = Your message here...
smileys = Smileys
empty_title = Chat
empty_text = Discuss with your contacts
frequent = Frequent contacts
chatroom.members = 'Members'
chatroom.connected = 'Connected to the chatroom'
chatroom.disconnected = 'Disconnected from the chatroom'
chatroom.config = 'Configuration'
chatroom.config_saved = 'Configuration saved'
chatroom.subject = 'Subject'
chatroom.subject_changed= 'Subject changed'
[chatroom]
members = Members
connected = Connected to the chatroom
disconnected = Disconnected from the chatroom
config = Configuration
config_saved = Configuration saved
subject = Subject
subject_changed = Subject changed

16
app/widgets/Chats/locales.ini

@ -1,12 +1,12 @@
[chats]
chats.empty_title = 'No chats yet...'
chats.empty = 'Open a new conversation by clicking on the plus button bellow or visit the Contacts page.'
chats.add = 'Chat with a contact'
chats.frequent = 'Frequent contacts'
chats.more = 'Load more contacts'
empty_title = No chats yet...
empty = Open a new conversation by clicking on the plus button bellow or visit the Contacts page.
add = Chat with a contact
frequent = Frequent contacts
more = Load more contacts
[message]
message.encrypted = 'Encrypted message'
encrypted = Encrypted message
[add]
button.chat = 'Chat'
[button]
chat = Chat

27
app/widgets/Config/locales.ini

@ -1,16 +1,13 @@
#config.feed_configuration = 'Feed Configuration'
config.general = 'General'
config.language = 'Language'
config.roster = 'Roster display'
config.roster_show = 'Show the offline contacts'
config.roster_hide = 'Hide the offline contacts'
config.appearence = 'Appearence'
#config.background_color = 'Background color'
#config.font_size = 'Font size'
#config.notifications = 'Notifications'
#config.pattern = 'Pattern'
config.info = 'This configuration is shared wherever you are connected !'
config.updated = 'Configuration updated'
[config]
general = General
language = Language
roster = Roster display
roster_show = Show the offline contacts
roster_hide = Hide the offline contacts
appearence = Appearence
info = This configuration is shared wherever you are connected
updated = Configuration updated
notifications.message = 'Notify on incoming message'
notifications.desktop = 'Use desktop notifications'
[notifications]
message = Notify on incoming message
desktop = Use desktop notifications

11
app/widgets/ConfigData/locales.ini

@ -1,5 +1,6 @@
title = 'Data'
title.cache = 'Cache'
title.contacts = 'Contacts'
title.posts = 'Posts'
title.messages = 'Messages'
[title]
data = Data
cache = Cache
contacts = Contacts
posts = Posts
messages = Messages

14
app/widgets/Contact/_contact.tpl

@ -65,7 +65,7 @@
<p>{$contact->fn}</p>
</li>
{/if}
{if="$contact->nickname != null"}
<li class="condensed block">
<span class="icon gray">{$contact->nickname|firstLetterCapitalize}</span>
@ -73,7 +73,7 @@
<p>{$contact->nickname}</p>
</li>
{/if}
{if="strtotime($contact->date) != 0"}
<li class="condensed block">
<span class="icon gray"><i class="md md-cake"></i></span>
@ -173,7 +173,7 @@
{if="$contact->tuneartist || $contact->tunetitle"}
<ul class="flex">
<li class="subheader block large">{$c->__('general.tune')}</li>
{$img_array = $c->getLastFM($contact)}
<li class="
block
@ -196,7 +196,7 @@
</span>
<span>
{if="$contact->tuneartist"}
{$contact->tuneartist} -
{$contact->tuneartist} -
{/if}
{if="$contact->tunesource"}
{$contact->tunesource}
@ -330,10 +330,10 @@
<i class="md md-do-not-disturb"></i>
</span>
<span>{$c->__('subscription.none')}</span>
<p>{$c->__('subscription.none_text')}</p>
<span>{$c->__('subscription.nil')}</span>
<p>{$c->__('subscription.nil_text')}</p>
<a class="button flat" onclick="Notifs_ajaxAsk('{$contactr->jid}')">
{$c->__('subscription.none_button')}
{$c->__('subscription.nil_button')}
</a>
{/if}
</li>

77
app/widgets/Contact/locales.ini

@ -1,62 +1,61 @@
[general]
general.legend = 'General Informations'
general.name = 'Name'
general.nickname = 'Nickname'
general.date_of_birth = 'Date of Birth'
general.gender = 'Gender'
general.marital = 'Marital Status'
general.email = 'Email'
general.website = 'Website'
general.about = 'About Me'
general.accounts = 'Other Accounts'
general.tune = 'Is Listening'
legend = General Informations
name = Name
nickname = Nickname
date_of_birth = Date of Birth
gender = Gender
marital = Marital Status
email = Email
website = Website
about = About Me
accounts = Other Accounts
tune = Is Listening
[position]
position.legend = 'Geographic Position'
position.locality = 'Locality'
position.country = 'Country'
legend = Geographic Position
locality = Locality
country = Country
[mood]
mood.title = 'Mood'
mood.im = "I'm "
title = Mood
im = "I'm "
[listen]
listen.title = 'Listening'
listen.on = 'on'
title = Listening
[last]
last.title = 'Last seen'
title = Last seen
[client]
client.title = 'Client Informations'
title = Client Informations
[explore]
last_registered = 'Last registered'
explore = 'Find some new friends'
last_registered = Last registered
explore = Find some new friends
[edit]
edit.title = 'Edit'
edit.alias = 'Alias'
edit.group = 'Group'
edit.updated = 'Contact updated'
title = Edit
alias = Alias
group = Group
updated = Contact updated
[delete]
delete.title = 'Are you sure?'
delete.text = 'You are going to delete one of your contacts, please confirm your action'
title = Are you sure?
text = You are going to delete one of your contacts, please confirm your action
[age]
age.years = '%s years'
years = %s years
[blog]
blog.last = 'Last public post'
last = Last public post
[subscription]
subscription.to = 'You can see this contact status'
subscription.to_button = 'Share my status'
subscription.to_text = 'But this contact cannot see yours'
subscription.from = 'You are not subscribed to this contact'
subscription.from_button= 'Ask to subscribe'
subscription.from_text = 'But this contact can still see if you are online'
subscription.none = 'No subscriptions'
subscription.none_button= 'Invite'
subscription.none_text = 'This contact is in your contact list but there is no subscriptions between the two accounts'
to = You can see this contact status
to_button = Share my status
to_text = But this contact cannot see yours
from = You are not subscribed to this contact
from_button = Ask to subscribe
from_text = But this contact can still see if you are online
nil = No subscriptions
nil_button = Invite
nil_text = This contact is in your contact list but there is no subscriptions between the two accounts

16
app/widgets/Group/Group.php

@ -33,7 +33,7 @@ class Group extends WidgetBase
$this->registerEvent('pubsub_getsubscriptions_handle', 'onSubscriptions');
$this->registerEvent('pubsub_delete_handle', 'onDelete');
$this->registerEvent('post_ticker', 'onTicker');
$this->registerEvent('pubsub_getitem_ticker', 'onTicker');
@ -119,7 +119,7 @@ class Group extends WidgetBase
list($subscriptions, $server, $node) = array_values($packet->content);
$view = $this->tpl();
$view->assign('subscriptions', $subscriptions);
$view->assign('server', $server);
$view->assign('node', $node);
@ -132,7 +132,7 @@ class Group extends WidgetBase
list($config, $server, $node) = array_values($packet->content);
$view = $this->tpl();
$xml = new \XMPPtoForm();
$form = $xml->getHTML($config->x->asXML());
@ -149,7 +149,7 @@ class Group extends WidgetBase
Notification::append(false, $this->__('group.config_saved'));
}
function onSubscribed($packet)
function onSubscribed($packet)
{
$arr = $packet->content;
@ -170,11 +170,11 @@ class Group extends WidgetBase
->setData($this->_data)
->request();
}
}*/
}
function onUnsubscribed($packet)
function onUnsubscribed($packet)
{
$arr = $packet->content;
@ -197,7 +197,7 @@ class Group extends WidgetBase
$html .= $view->draw('_group_publish', true);
$header = $this->prepareHeader($server, $node);
Header::fill($header);
RPC::call('MovimTpl.fill', '#group_widget.'.stringToUri($server.'_'.$node), $html);
@ -263,7 +263,7 @@ class Group extends WidgetBase
$r = new GetItemsId;
$r->setTo($server)
->setNode($node);
$r->request();
}

22
app/widgets/Group/_group_ticker.tpl

@ -12,7 +12,7 @@
</span>
{else}
<span class="icon color bubble gray">
<i class="md md-trending"></i>
<i class="md md-arrow-forward"></i>
</span>
{/if}
</span>
@ -24,15 +24,23 @@
</ul>
</header>
<section>
<ul class="middle simple">
<li class="condensed">
<span><h3>{$ticker->value}</h3></span>
<ul class="middle simple flex">
<li class="condensed block background_fade">
<span>
<h3>{$ticker->value}</h3>
</span>
<p>
{$ticker->change}({$ticker->percent})
{$ticker->change} ({$ticker->percent}%)
</p>
</li>
<li>
<img src="http://chart.finance.yahoo.com/t?s={$ticker->symbol}%3dX&lang=en-US&region=US&width=500&height=280"/>
<li class="condensed block">
<span>Market Cap : {$ticker->capitalization}</span><br />
<span>
Volume : {$ticker->volume|floatval|number_format:0,',',' '}
</span>
</li>
<li class="block large">
<img src="http://chart.finance.yahoo.com/t?s={$ticker->symbol}&lang=en-US&region=US&width=700&height=400"/>
</li>
</ul>
</section>

38
app/widgets/Group/locales.ini

@ -1,19 +1,19 @@
group.subscribe = 'Subscribe'
group.subscribed = 'Subscribed'
group.unsubscribe = 'Unsubscribe'
group.unsubscribe_text = 'You are going to unsubscribe from this Group'
group.unsubscribed = 'Unsubscribed'
group.share_label = 'Make your membership to this group public to your friends'
group.label_label = 'Give a label for this group'
group.sure = 'Are you sure ?'
group.empty_title = 'Groups'
group.empty_text = 'Discover, follow and share'
group.empty = 'Something bad happened to this group'
group.config_saved = 'Group configuration saved'
group.delete_title = 'Delete the group'
group.delete_text = 'You are going to delete the following group. Please confirm your action.'
group.delete_clean_text = "It seems that this group doesn't exists anymore. Do you want to remove it from your subscriptions?"
group.counter = '%s groups on this server'
group.configuration = 'Configuration'
group.subscriptions = 'Subscriptions'
[group]
subscribe = Subscribe
subscribed = Subscribed
unsubscribe = Unsubscribe
unsubscribe_text = You are going to unsubscribe from this Group
unsubscribed = Unsubscribed
share_label = Make your membership to this group public to your friends
label_label = Give a label for this group
sure = Are you sure ?
empty_title = Groups
empty_text = Discover, follow and share
empty = Something bad happened to this group
config_saved = Group configuration saved
delete_title = Delete the group
delete_text = You are going to delete the following group. Please confirm your action.
delete_clean_text = "It seems that this group doesn't exists anymore. Do you want to remove it from your subscriptions?"
counter = %s groups on this server
configuration = Configuration
subscriptions = Subscriptions

30
app/widgets/Groups/locales.ini

@ -1,15 +1,15 @@
groups.empty_title = 'Hello'
groups.contact_post = 'Contact post'
groups.empty_text1 = "You don't have any subscriptions yet, select a group server above to start exploring."
groups.empty_text2 = "Subscribe to your favorite feeds by bookmarking them."
groups.subscriptions = 'My Subscriptions'
groups.add = 'Create a new Group'
groups.name = 'Group name'
groups.name_example = 'My Little Pony - Fan Club'
groups.created = 'Group created successfully'
groups.deleted = 'Group deleted successfully'
groups.name_error = 'Please provide a valid group name (4 characters minimum)'
groups.no_creation = 'You cannot create a new Group on this server'
groups.sub = '%s subscribers'
groups.num = '%s posts'
[groups]
empty_title = Hello
contact_post = Contact post
empty_text1 = "You don't have any subscriptions yet, select a group server above to start exploring."
empty_text2 = "Subscribe to your favorite feeds by bookmarking them."
subscriptions = My Subscriptions
add = Create a new Group
name = Group name
name_example = My Little Pony - Fan Club
created = Group created successfully
deleted = Group deleted successfully
name_error = Please provide a valid group name (4 characters minimum)
no_creation = You cannot create a new Group on this server
sub = %s subscribers
num = %s posts

10
app/widgets/Header/locales.ini

@ -1,8 +1,8 @@
[menu]
menu.all = 'All'
menu.groups = 'Groups'
menu.contacts = 'Contacts'
menu.refresh = 'Refresh all the streams'
all = All
groups = Groups
contacts = Contacts
refresh = Refresh all the streams
[roster]
roster.search = 'Search in your contacts'
search = Search in your contacts

21
app/widgets/Hello/locales.ini

@ -1,10 +1,11 @@
hello.active_contacts = 'Active contacts'
hello.chat = 'Go on the Chat page'
hello.news = 'News'
hello.news_page = 'Read all theses articles on the News page'
hello.blog_title = 'Visit your public blog'
hello.blog_text = 'See your public posts and share them with all your contacts'
hello.contact_post = 'Contact post'
hello.share_title = 'Universal share button'
hello.share_text = 'Bookmark or drag and drop the following button in your toolbar and use it on all the pages you want to share on Movim'
hello.share_button = 'Share on Movim'
[hello]
active_contacts = Active contacts
chat = Go on the Chat page
news = News
news_page = Read all theses articles on the News page
blog_title = Visit your public blog
blog_text = See your public posts and share them with all your contacts
contact_post = Contact post
share_title = Universal share button
share_text = Bookmark or drag and drop the following button in your toolbar and use it on all the pages you want to share on Movim
share_button = Share on Movim

31
app/widgets/Help/locales.ini

@ -1,22 +1,23 @@
help.faq = 'Frequently Asked Questions'
[help]
faq = Frequently Asked Questions
[banners]
banner.title = 'What do the little banners refer to ?'
banner.info1 = 'Thanks to these five little banners, you can quickly identitfy the level of confdentiality applied to the information you provide.'
banner.white = 'White, only you can see the information'
banner.green = 'Green, you have chosen some contacts who can see your information'
banner.orange = 'Orange, all your contact list can see your information'
banner.red = 'Red, everybody in the XMPP network can see your information'
banner.black = 'Black, the whole Internet can see your information'
[banner]
title = What do the little banners refer to ?
info1 = Thanks to these five little banners, you can quickly identitfy the level of confdentiality applied to the information you provide.
white = White, only you can see the information
green = Green, you have chosen some contacts who can see your information
orange = Orange, all your contact list can see your information
red = Red, everybody in the XMPP network can see your information
black = Black, the whole Internet can see your information
[wiki]
wiki.question = 'Looking for some documentation ?'
wiki.button = 'Read the Wiki'
question = Looking for some documentation ?
button = Read the Wiki
[ml]
ml.question = 'Talk with us by email ?'
ml.button = 'Join the Mailing List'
question = Talk with us by email ?
button = Join the Mailing List
[chatroom]
chatroom.question = 'Chat with the team ?'
chatroom.button = 'Join the Chatroom'
question = Chat with the team ?
button = Join the Chatroom

12
app/widgets/Init/locales.ini

@ -1,7 +1,7 @@
[init]
init.location = 'Location node created'
init.bookmark = 'Bookmark node created'
init.vcard4 = 'Profile node created'
init.avatar = 'Avatar node created'
init.subscriptions = 'Subscriptions node created'
init.microblog = 'Microblog node created'
location = Location node created
bookmark = Bookmark node created
vcard4 = Profile node created
avatar = Avatar node created
subscriptions = Subscriptions node created
microblog = Microblog node created

9
app/widgets/Location/locales.ini

@ -1,4 +1,5 @@
location.title = 'Location'
location.wrong_postition = 'Wrong position'
location.updated = 'Location updated'
location.update = 'Update my position'
[location]
title = Location
wrong_postition = Wrong position
updated = Location updated
update = Update my position

71
app/widgets/Login/locales.ini

@ -1,40 +1,39 @@
error.username = 'Wrong username'
error.jid = 'Invalid JID'
error.empty_challenge = 'Empty Challenge from the server'
error.dns = 'XMPP Domain error, your account is not a correct Jabber ID'
error.data_missings = 'Some data are missing !'
error.wrong_password = 'Wrong password'
error.internal = 'Internal server error'
error.session = 'Session error'
error.account_created = 'Account successfully created'
error.xmpp_unauthorized = 'Your XMPP server is unauthorized'
error.mec_error = 'The server takes too much time to respond'
error.too_old = 'Your web browser is too old to use with Movim.'
error.websocket = 'Movim cannot talk with the server, please try again later (Websocket connection error)'
error.impossible = 'Impossible login'
[error]
username = Wrong username
jid = Invalid JID
empty_challenge = Empty Challenge from the server
dns = XMPP Domain error, your account is not a correct Jabber ID
data_missings = Some data are missing !
wrong_password = Wrong password
internal = Internal server error
session = Session error
account_created = Account successfully created
xmpp_unauthorized = Your XMPP server is unauthorized
mec_error = The server takes too much time to respond
too_old = Your web browser is too old to use with Movim.
websocket = Movim cannot talk with the server, please try again later (Websocket connection error)
impossible = Impossible login
error.title = 'Oops!'
error.default = 'Unknown error'
error.login_format = 'Invalid username format'
error.password_format = 'Invalid password format'
error.unauthorized = 'Your XMPP server is unauthorized'
error.conflict = 'A Movim session is already open on an other device'
error.wrong_account = 'Movim failed to authenticate. You entered wrong data'
error.mechanism = 'Authentication mechanism not supported by Movim'
error.fail_auth = 'The XMPP authentification failed'
title = Oops!
default = Unknown error
login_format = Invalid username format
password_format = Invalid password format
unauthorized = Your XMPP server is unauthorized
conflict = A Movim session is already open on an other device
wrong_account = Movim failed to authenticate. You entered wrong data
mechanism = Authentication mechanism not supported by Movim
fail_auth = The XMPP authentification failed
account.facebook = 'You can login with Facebook (chat only) using %syour.id@chat.facebook.com%s and your password'
account.gmail = '%sGmail accounts are also compatible%s but are not fully supported'
account.jabber = 'You can login using your favorite Jabber account'
account.demo = 'or with our demonstration account'
account.title = 'Accounts'
[account]
title = Accounts
form.username = 'My address'
form.password = 'Password'
form.create_one = 'Create one !'
form.no_account = 'No account yet ?'
form.another_account = 'Another account'
[form]
username = My address
password = Password
create_one = Create one !
another_account = Another account
no_account = No account yet ?
whitelist.info = 'You can login with accounts from theses servers'
connected = 'Connected'
population = 'Population'
whitelist.info = You can login with accounts from theses servers
connected = Connected
population = Population

2
app/widgets/LoginAnonymous/locales.ini

@ -1,2 +1,2 @@
[login_anonymous]
login_anonymous.bad_username = 'Bad nickname (between 4 and 40 characters)'
bad_username = Bad nickname (between 4 and 40 characters)

11
app/widgets/Menu/locales.ini

@ -1,5 +1,6 @@
menu.empty_title = 'No news yet...'
menu.contact_post = 'Contact post'
menu.empty = 'Welcome on your news feed, here you will see all the posts published by your contacts and in the groups you have subscribed.'
menu.refresh = 'Refreshing all the streams'
menu.public = 'This post is public'
[menu]
empty_title = No news yet...
contact_post = Contact post
empty = Welcome on your news feed, here you will see all the posts published by your contacts and in the groups you have subscribed.
refresh = Refreshing all the streams
public = This post is public

7
app/widgets/NodeAffiliations/locales.ini

@ -1,3 +1,4 @@
affiliations.title = 'Manage your members'
affiliations.get = 'Get the members'
affiliations.saved = 'Affiliations saved'
[affiliations]
title = Manage your members
get = Get the members
saved = Affiliations saved

9
app/widgets/NodeSubscriptions/locales.ini

@ -1,4 +1,5 @@
subscriptions.title = 'Manage your subscriptions'
subscriptions.info = 'Manage the subscriptions'
subscriptions.get = 'Get the subscriptions'
subscriptions.saved = 'Subscriptions saved'
[subscriptions]
title = Manage your subscriptions
info = Manage the subscriptions
get = Get the subscriptions
saved = Subscriptions saved

3
app/widgets/Notifs/_notifs_confirm.tpl

@ -1,7 +1,7 @@
<section>
<h3>{$c->__('notifs.manage')}</h3>
<br />
<h4 class="gray">{$c->__('wants_to_talk', $jid)}</h4>
<h4 class="gray">{$c->__('notifs.wants_to_talk', $jid)}</h4>
<ul class="active">
<li onclick="Notifs_ajaxAccept('{$jid|echapJS}'); Dialog.clear();">
<span class="icon green">
@ -23,4 +23,3 @@
{$c->__('button.close')}
</a>
</div>

7
app/widgets/Notifs/locales.ini

@ -1,3 +1,4 @@
notifs.title = 'Pending Invitations'
wants_to_talk = '%s wants to talk with you'
notifs.manage = 'Manage'
[notifs]
title = Pending Invitations
wants_to_talk= %s wants to talk with you
manage = Manage

60
app/widgets/Post/locales.ini

@ -1,34 +1,32 @@
post.news_feed = 'News Feed'
post.placeholder = 'Discover and register to the groups you are interested in'
post.preview = 'Preview'
post.help = 'Help'
post.help_more = 'More help'
post.help_manual = 'Markdown syntax manual'
post.title = 'Title'
post.content = 'Content'
post.link = 'Link'
post.tags = 'Tags'
post.valid_url = 'Please enter a valid url'
post.no_content_preview = 'No content to preview'
post.no_content = 'No content'
post.published = 'Post published'
post.deleted = 'Post deleted'
post.gallery = 'This picture will be added to your gallery'
post.hot = "What's Hot"
post.new = 'New post'
post.embed_tip = 'You can also use services like Imgur or Flickr to host your picture and paste the link here.'
post.repost = 'This is a re-post from %s'
post.repost_profile = 'See %s profile'
[post]
news_feed = News Feed
placeholder = Discover and register to the groups you are interested in
preview = Preview
help = Help
help_more = More help
help_manual = Markdown syntax manual
title = Title
content = Content
link = Link
tags = Tags
valid_url = Please enter a valid url
no_content_preview = No content to preview
no_content = No content
published = Post published
deleted = Post deleted
gallery = This picture will be added to your gallery
hot = "What's Hot"
new = New post
embed_tip = You can also use services like Imgur or Flickr to host your picture and paste the link here.
repost = This is a re-post from %s
repost_profile = See %s profile
[manage]
post.public = 'Publish this post on your public feed?'
post.blog_add = 'Post published on your blog'
post.blog_remove = 'Post removed from your blog'
public = Publish this post on your public feed?
blog_add = Post published on your blog
blog_remove = Post removed from your blog
[delete]
post.delete_title = 'Delete this post'
post.delete_text = 'You are going to delete this post, please confirm your action'
delete_title = Delete this post
delete_text = You are going to delete this post, please confirm your action
[comment]
post.comments_disabled = 'Comments disabled'
post.comment_published = 'Comment published'
comments_disabled = Comments disabled
comment_published = Comment published

13
app/widgets/Presence/locales.ini

@ -1,6 +1,7 @@
status.disconnect = 'Disconnect'
status.here = 'Your status here !'
status.updated = 'Status updated'
status.status = 'Status'
status.presence = 'Presence'
status.online = 'Online with Movim'
[status]
disconnect = Disconnect
here = Your status here !
updated = Status updated
status = Status
presence = Presence
online = Online with Movim

6
app/widgets/Publish/Publish.php

@ -79,7 +79,7 @@ class Publish extends WidgetBase
$view->assign('server', $server);
$view->assign('node', $node);
Header::fill($view->draw('_publish_header', true));
RPC::call('Publish.setEmbed');
}
@ -147,6 +147,10 @@ class Publish extends WidgetBase
->setNode($form->node->value);
//->setLocation($geo)
//->enableComments()
if($form->node->value == 'urn:xmpp:microblog:0') {
$p->enableComments();
}
if($form->title->value != '') {
$p->setTitle($form->title->value);
}

4
app/widgets/Publish/_publish_back_confirm.tpl

@ -3,9 +3,9 @@
</section>
<div>
<a onclick="Dialog.clear()" class="button flat">
{$c->__('button.no')}
{$c->__('button.bool_no')}
</a>
<a onclick="Publish.headerBack('{$server}', '{$node}', true); Dialog.clear();" class="button flat">
{$c->__('button.yes')}
{$c->__('button.bool_yes')}
</a>
</div>

47
app/widgets/Publish/locales.ini

@ -1,22 +1,25 @@
post.news_feed = 'News Feed'
post.placeholder = 'Discover and register to the groups you are interested in'
post.preview = 'Preview'
post.help = 'Help'
post.help_more = 'More help'
post.help_manual = 'Markdown syntax manual'
post.title = 'Title'
post.content = 'Content'
post.link = 'Link'
post.tags = 'Tags'
publish.valid_url = 'Please enter a valid url'
publish.no_content_preview = 'No content to preview'
publish.no_content = 'No content'
post.published = 'Post published'
post.deleted = 'Post deleted'
post.gallery = 'This picture will be added to your gallery'
post.hot = "What's Hot"
publish.new = 'New post'
publish.title = 'Publish'
post.embed_tip = 'You can also use services like Imgur or Flickr to host your picture and paste the link here.'
publish.no_publication = 'You cannot publish a post on this Group'
publish.form_filled = 'Some fields have been filled in. Do you still want to go back and loose their content?'
[post]
news_feed = News Feed
placeholder = Discover and register to the groups you are interested in
preview = Preview
help = Help
help_more = More help
help_manual = Markdown syntax manual
title = Title
content = Content
link = Link
tags = Tags
published = Post published
deleted = Post deleted
gallery = This picture will be added to your gallery
hot = "What's Hot"
embed_tip = You can also use services like Imgur or Flickr to host your picture and paste the link here.
[publish]
valid_url = Please enter a valid url
no_content_preview = No content to preview
no_content = No content
new = New post
title = Publish
no_publication = You cannot publish a post on this Group
form_filled = Some fields have been filled in. Do you still want to go back and loose their content?

9
app/widgets/PubsubSubscriptionConfig/locales.ini

@ -1,4 +1,5 @@
public_groups.shared = 'Shared'
public_groups.name = 'Name'
public_groups.added = '%s has been added to your public groups'
public_groups.removed = '%s has been removed from your public groups'
[public_groups]
shared = Shared
name = Name
added = %s has been added to your public groups
removed = %s has been removed from your public groups

49
app/widgets/Rooms/locales.ini

@ -1,29 +1,30 @@
rooms.add = 'Add a chatroom'
rooms.empty_text1 = "You don't have any chatroom yet."
rooms.empty_text2 = "Add one by clicking on the add button in the header."
[rooms]
add = Add a chatroom
empty_text1 = "You don't have any chatroom yet."
empty_text2 = Add one by clicking on the add button in the header.
[chatrooms]
chatrooms.title = 'Chatrooms'
chatrooms.id = 'Chat Room ID'
chatrooms.name = 'Name'
chatrooms.name_placeholder = 'My Favorite Room'
chatrooms.nickname = 'Nickname'
chatrooms.bad_id = 'Bad Chatroom ID'
chatrooms.empty_name = 'Empty name'
chatrooms.remove_title = 'Remove a chatroom'
chatrooms.remove_text = 'You are going to remove the following chatroom. Please confirm your action.'
chatrooms.connected = 'Connected to the chatroom'
chatrooms.disconnected = 'Disconnected from the chatroom'
chatrooms.users = 'Users in the room'
chatrooms.bad_nickname = 'Please enter a correct nickname (2 to 40 characters)'
title = Chatrooms
id = Chat Room ID
name = Name
name_placeholder = My Favorite Room
nickname = Nickname
bad_id = Bad Chatroom ID
empty_name = Empty name
remove_title = Remove a chatroom
remove_text = You are going to remove the following chatroom. Please confirm your action.
connected = Connected to the chatroom
disconnected = Disconnected from the chatroom
users = Users in the room
bad_nickname = Please enter a correct nickname (2 to 40 characters)
[bookmarks]
bookmarks.updated = 'Bookmarks updated'
updated = Bookmarks updated
[anonymous]
room.anonymous_title = 'Public chatroom'
room.no_room = 'Please provide a room address'
room.anonymous_text1 = 'You are currently logued as an anonymous user.'
room.anonymous_text2 = 'You can join using your own account or create one on the login page by loging out using the cross in the top-right corner.'
room.anonymous_login = 'Login on %s'
room.nick = 'Your nickname'
[room]
anonymous_title = Public chatroom
no_room = Please provide a room address
anonymous_text1 = You are currently logued as an anonymous user.
anonymous_text2 = You can join using your own account or create one on the login page by loging out using the cross in the top-right corner.
anonymous_login = Login on %s
nick = Your nickname

34
app/widgets/Roster/locales.ini

@ -1,17 +1,17 @@
roster.ungrouped = 'Ungrouped'
roster.show_disconnected = 'Show disconnected contacts'
roster.hide_disconnected = 'Hide disconnected contacts'
roster.show_group = 'Show group %s'
roster.hide_group = 'Hide group %s'
roster.jid_error = 'Please enter a valid Jabber ID'
roster.no_contacts = 'No contacts ? You can add one using the + button bellow or going to the Explore page'
roster.show_hide = 'Show/Hide'
roster.add_contact_info1 = 'Enter the Jabber ID of your contact.'
roster.add_contact_info2 = 'Press enter to validate.'
roster.jid = 'JID'
roster.results = 'Results'
roster.added = 'Contact added'
roster.updated = 'Contact updated'
roster.deleted = 'Contact deleted'
roster.search = 'Search'
[roster]
ungrouped = Ungrouped
show_disconnected = Show disconnected contacts
hide_disconnected = Hide disconnected contacts
show_group = Show group %s
hide_group = Hide group %s
jid_error = Please enter a valid Jabber ID
no_contacts = No contacts ? You can add one using the + button bellow or going to the Explore page
show_hide = Show/Hide
add_contact_info1 = Enter the Jabber ID of your contact.
add_contact_info2 = Press enter to validate.
jid = JID
results = Results
added = Contact added
updated = Contact updated
deleted = Contact deleted
search = Search

5
app/widgets/Share/locales.ini

@ -1,2 +1,3 @@
share.error = 'This is not a valid url'
share.success = 'Sharing the URL'
[share]
error = This is not a valid url
success = Sharing the URL

13
app/widgets/Statistics/locales.ini

@ -1,6 +1,7 @@
statistics.title = 'Statistics'
statistics.since = 'Since'
statistics.sessions = 'Sessions'
statistics.subscriptions = 'Subscriptions'
statistics.monthly_sub = 'Monthly Subscriptions'
statistics.monthly_sub_cum = 'Monthly Subscriptions Cumulated'
[statistics]
title = Statistics
since = Since
sessions = Sessions
subscriptions = Subscriptions
monthly_sub = Monthly Subscriptions
monthly_sub_cum = Monthly Subscriptions Cumulated

9
app/widgets/Subscribe/locales.ini

@ -1,4 +1,5 @@
subscribe.title = 'Create a new account'
subscribe.info = 'Movim is a decentralized social network, before creating a new account you need to choose a server to register.'
subscribe.server_question = 'Your server here ?'
subscribe.server_contact = 'Contact us to add yours to the officially supported servers list'
[subscribe]
title = Create a new account
info = Movim is a decentralized social network, before creating a new account you need to choose a server to register.
server_question = Your server here ?
server_contact = Contact us to add yours to the officially supported servers list

7
app/widgets/Syndication/locales.ini

@ -1,3 +1,4 @@
feed.title = "%s's feed"
feed.no = 'No public feed for this contact'
feed.no_contact = 'No contact specified'
[feed]
title = "%s's feed"
no = No public feed for this contact
no_contact = No contact specified

52
app/widgets/Vcard4/_vcard4_form.tpl

@ -1,5 +1,5 @@
<ul>
<li class="subheader"> {$c->__('vcard.privacy_title')}</li>
<li class="subheader"> {$c->__('privacy.privacy_title')}</li>
<li class="condensed action">
<form>
<div class="control action">
@ -20,8 +20,8 @@
<i class="md md-security"></i>
</span>
<span>{$c->__('vcard.privacy_question')}</span>
<p>{$c->__('vcard.privacy_info')}</p>
<span>{$c->__('privacy.privacy_question')}</span>
<p>{$c->__('privacy.privacy_info')}</p>
</li>
</ul>
@ -30,23 +30,23 @@
<form name="vcard4" id="vcard4form" class="flex">
<h3 class="block large">{$c->__('page.profile')}</h3>
<div class="block">
<input type="text" name="fn" class="content" value="{$me->fn}" placeholder="{$c->__('vcard.name')}">
<label for="fn">{$c->__('vcard.name')}</label>
<input type="text" name="fn" class="content" value="{$me->fn}" placeholder="{$c->__('general.name')}">
<label for="fn">{$c->__('general.name')}</label>
</div>
<div class="block">
<input type="text" name="name" class="content" value="{$me->name}" placeholder="{$c->__('vcard.nickname')}">
<label for="fn">{$c->__('vcard.nickname')}</label>
<input type="text" name="name" class="content" value="{$me->name}" placeholder="{$c->__('general.nickname')}">
<label for="fn">{$c->__('general.nickname')}</label>
</div>
<div class="block large">
<input type="email" name="email" class="content" value="{$me->email}" placeholder="{$c->__('vcard.email')}">
<label for="fn">{$c->__('vcard.email')}</label>
<input type="email" name="email" class="content" value="{$me->email}" placeholder="{$c->__('general.email')}">
<label for="fn">{$c->__('general.email')}</label>
</div>
<!-- The date picker -->
<div class="block large">
<label for="day">{$c->__('vcard.date_of_birth')}</label>
<label for="day">{$c->__('general.date_of_birth')}</label>
<div class="select" style="width: 33.33%; float: left;">
<select name="day" class="datepicker">
@ -87,7 +87,7 @@
</div>
<div class="block">
<label for="gender">{$c->__('vcard.gender')}</label>
<label for="gender">{$c->__('general.gender')}</label>
<div class="select">
<select name="gender">
{loop="$gender"}
@ -102,7 +102,7 @@
</div>
<div class="block">
<label for="marital">{$c->__('vcard.marital')}</label>
<label for="marital">{$c->__('general.marital')}</label>
<div class="select">
<select name="marital">
{loop="$marital"}
@ -118,21 +118,21 @@
<div class="block">
<input type="url" name ="url" class="content" value="{$me->url}">
<label for="url">{$c->__('vcard.website')}</label>
<label for="url">{$c->__('general.website')}</label>
</div>
<div class="block large">
<textarea name="desc" id="desctext" class="content" onkeyup="movim_textarea_autoheight(this);">{$desc}</textarea>
<label for="desc">{$c->__('vcard.about')}</label>
<label for="desc">{$c->__('general.about')}</label>
</div>
<div class="clear padded"></div>
<h3 class="block large">{$c->__('vcard.position_title')}</h3>
<h3 class="block large">{$c->__('position.position_title')}</h3>
<div class="block">
<input type="text" type="locality" name ="locality" class="content" value="{$me->adrlocality}" placeholder="{$c->__('vcard.locality')}">
<label for="url">{$c->__('vcard.locality')}</label>
<input type="text" type="locality" name ="locality" class="content" value="{$me->adrlocality}" placeholder="{$c->__('position.locality')}">
<label for="url">{$c->__('position.locality')}</label>
</div>
<div class="block">
@ -148,24 +148,24 @@
{/loop}
</select>
</div>
<label for="country">{$c->__('vcard.country')}</label>
<label for="country">{$c->__('position.country')}</label>
</div>
<h3 class="block large">{$c->__('vcard.accounts_title')}</h3>
<h3 class="block large">{$c->__('accounts.accounts_title')}</h3>
<div class="block">
<input type="text" name="twitter" class="content" value="{$me->twitter}" placeholder="{$c->__('vcard.nickname')}">
<label for="twitter"><i class="fa fa-twitter"></i> {$c->__('vcard.twitter')}</label>
<input type="text" name="twitter" class="content" value="{$me->twitter}" placeholder="{$c->__('accounts.nickname')}">
<label for="twitter"><i class="fa fa-twitter"></i> {$c->__('accounts.twitter')}</label>
</div>
<div class="block">
<input type="text" name="skype" class="content" value="{$me->skype}" placeholder="{$c->__('vcard.nickname')}">
<label for="skype"><i class="fa fa-skype"></i> {$c->__('vcard.skype')}</label>
<input type="text" name="skype" class="content" value="{$me->skype}" placeholder="{$c->__('accounts.nickname')}">
<label for="skype"><i class="fa fa-skype"></i> {$c->__('accounts.skype')}</label>
</div>
<div class="block">
<input type="email" name="yahoo" class="content" value="{$me->yahoo}" placeholder="{$c->__('vcard.accounts_yahoo')}">
<label for="skype"><i class="fa fa-yahoo"></i> {$c->__('vcard.yahoo')}</label>
<input type="email" name="yahoo" class="content" value="{$me->yahoo}" placeholder="{$c->__('accounts.accounts_yahoo')}">
<label for="skype"><i class="fa fa-yahoo"></i> {$c->__('accounts.yahoo')}</label>
</div>
<div class="block large">
@ -187,5 +187,3 @@
</a>
</div>
</form>

57
app/widgets/Vcard4/locales.ini

@ -1,38 +1,39 @@
vcard.title = 'Profile'
vcard.updated = 'Profile Updated'
vcard.not_updated = 'Profile Not Updated'
vcard.public = 'Your profile is now public'
vcard.restricted = 'Your profile is now restricted'
[vcard]
title = Profile
updated = Profile Updated
not_updated = Profile Not Updated
public = Your profile is now public
restricted = Your profile is now restricted
[general]
vcard.general_title = 'General Informations'
vcard.name = 'Name'
vcard.nickname = 'Nickname'
vcard.email = 'Email'
vcard.date_of_birth = 'Date of Birth'
vcard.gender = 'Gender'
vcard.marital = 'Marital Status'
vcard.website = 'Website'
vcard.about = 'About Me'
general_title = General Informations
name = Name
nickname = Nickname
email = Email
date_of_birth = Date of Birth
gender = Gender
marital = Marital Status
website = Website
about = About Me
[position]
vcard.position_title = 'Geographic Position'
vcard.locality = 'Locality'
vcard.country = 'Country'
position_title = Geographic Position
locality = Locality
country = Country
[accounts]
vcard.accounts_title = 'Accounts'
vcard.twitter = 'Twitter'
vcard.skype = 'Skype'
vcard.yahoo = 'Yahoo'
vcard.accounts_nickname = 'Nickname'
vcard.accounts_yahoo = 'Yahoo Account'
accounts_title = Accounts
twitter = Twitter
skype = Skype
yahoo = Yahoo
accounts_nickname = Nickname
accounts_yahoo = Yahoo Account
[privacy]
vcard.privacy_title = 'Privacy Level'
vcard.privacy_question = 'Is this profile public ?'
vcard.privacy_info = 'Please pay attention ! By making your profile public, all the information listed above will be available for all the Movim users and on the whole Internet.'
privacy_title = Privacy Level
privacy_question = Is this profile public ?
privacy_info = "Please pay attention ! By making your profile public, all the information listed above will be available for all the Movim users and on the whole Internet."
[save]
vcard.submit = 'Submit'
vcard.reset = 'Reset'
submit = Submit
reset = Reset

19
app/widgets/Visio/locales.ini

@ -1,9 +1,10 @@
visio.call = 'Call'
visio.hang_up = 'Hang up'
visio.connection= 'Connection'
visio.hung_up = 'Hung up'
visio.busy = 'Your contact is busy'
visio.declined = 'Declined'
visio.remote_incompatible = 'Remote application incompatible'
visio.unknown_error = 'Unknown error'
visio.calling = 'Is calling you'
[visio]
call = Call
hang_up = Hang up
connection= Connection
hung_up = Hung up
busy = Your contact is busy
declined = Declined
remote_incompatible = Remote application incompatible
unknown_error = Unknown error
calling = Is calling you

13
app/widgets/VisioExt/locales.ini

@ -1,6 +1,7 @@
visio.hung_up = 'Hung up'
visio.busy = 'Your contact is busy'
visio.declined = 'Declined'
visio.remote_incompatible = 'Remote application incompatible'
visio.unknown_error = 'Unknown error'
visio.calling = 'Is calling you'
[visio]
hung_up = Hung up
busy = Your contact is busy
declined = Declined
remote_incompatible = Remote application incompatible
unknown_error = Unknown error
calling = Is calling you

8
app/widgets/WidgetCommon/_post_toolbox.tpl

@ -1,5 +1,5 @@
<div class="tools">
{$c->__("post.share")} :
{$c->__("post.share")} :
<a
onclick="{$privacy_post_black}" >
{$c->__('post.share_everyone')}</a>,
@ -11,7 +11,7 @@
onclick="
this.parentNode.querySelector('#deleteyes').style.display = 'inline';
this.parentNode.querySelector('#deleteno').style.display = 'inline';
"
"
title="{$c->__('post.delete')}">
{$c->__('post.delete')}
</a>
@ -19,7 +19,7 @@
style="padding-right: 1em; display: none;";
id="deleteyes"
onclick="{$delete_post}" >
{$c->__('button.yes')}
{$c->__('button.bool_yes')}
</a>
<a
style="display: none;";
@ -28,6 +28,6 @@
this.parentNode.querySelector('#deleteyes').style.display = 'none';
this.style.display = 'none';
">
{$c->__('button.no')}
{$c->__('button.bool_no')}
</a>
</div>

94
lib/XMPPtoForm.php

@ -3,23 +3,23 @@ class XMPPtoForm{
private $fieldset;
private $xmpp;
private $html;
public function __construct(){
$this->fieldset = 0;
$this->html = '';
$this->xmpp = '';
}
public function getHTML($xmpp){
$this->setXMPP($xmpp);
$this->create();
return $this->html;
}
public function setXMPP($xmpp){
$this->xmpp = $xmpp;
}
public function create(){
$this->xmpp = str_replace('xmlns=', 'ns=', $this->xmpp);
$x = new SimpleXMLElement($this->xmpp);
@ -37,16 +37,16 @@ class XMPPtoForm{
if($element['type'] != 'hidden' && $element['type'] != 'fixed')
$this->html .='<div>';
switch($element['type']){
case "boolean":
case "boolean":
$this->outCheckbox($element);
break;
case "fixed":
case "fixed":
$this->outBold($element);
break;
case "text-single":
$this->outInput($element, "", "");
break;
case "text-multi":
case "text-multi":
$this->outTextarea($element);
break;
case "text-private":
@ -74,7 +74,7 @@ class XMPPtoForm{
$this->html .='</div>';
break;
case 'url':
break;
/*XML without <x> element*/
case 'username':
@ -84,11 +84,11 @@ class XMPPtoForm{
$this->outGeneric($element->getName());
$this->html .='</div>';
break;
default:
default:
$this->html .= "";
}
}
if($this->fieldset>0){
if($this->fieldset>0){
$this->html .= '</fieldset>';
}
}
@ -109,7 +109,7 @@ class XMPPtoForm{
</li>
</ul>';
}
private function outP($s){
$this->html .= '
<ul class="thin simple">
@ -118,12 +118,12 @@ class XMPPtoForm{
</li>
</ul>';
}
private function outUrl($s) {
$this->html .= '
<a href="'.$s->getName().'">'.$s->getName().'</a>';
}
private function outBold($s){
if($this->fieldset > 0){
$this->html .= '</fieldset>';
@ -135,39 +135,39 @@ class XMPPtoForm{
private function outCheckbox($s){
$this->html .= '
<div class="select">
<select
<select
type="'.$s['type'].'"
label="'.$s['label'].'"
id="'.$s["var"].'"
id="'.$s["var"].'"
name="'.$s['var'].'" '.$multiple.' '.$s->required.'>';
$this->html .= '
<option value="true"';
if(isset($s->value) || $s->value == "true" || $s->value == "1")
$this->html .= ' selected="selected"';
$this->html .= '>'.__('button.yes').'</option>';
$this->html .= '>'.__('button.bool_yes').'</option>';
$this->html .= '
<option value="false"';
if(!isset($s->value) || $s->value == "false" || $s->value == "0")
$this->html .= ' selected="selected"';
$this->html .= '>'.__('button.no').'</option>';
$this->html .= '>'.__('button.bool_no').'</option>';
$this->html .= '
</select>
</div>
<label for="'.$s["var"].'">'.$s["label"].'</label>';
}
private function outTextarea($s){
$this->html .= '
<textarea
id="'.$s["var"].'"
name="'.$s["var"].'"
<textarea
id="'.$s["var"].'"
name="'.$s["var"].'"
type="'.$s['type'].'"
label="'.$s['label'].'"
required="'.$s->required.'">';
foreach($s->children() as $value){
if($value->getName() == "value"){
$this->html .= $value. "\n";
@ -178,13 +178,13 @@ class XMPPtoForm{
$this->html .= '
<label for="'.$s["var"].'">'.$s["label"].'</label>';
}
private function outInput($s, $type, $multiple){
if($s->required)
$req = 'required';
$this->html .= '
<input id="'.$s["var"].'" name="'.$s["var"].'" value="';
foreach($s->children() as $value){
if($value->getName() == "value"){
$this->html .= $value;
@ -195,30 +195,30 @@ class XMPPtoForm{
if($s['var'] == 'username')
$this->html .= ' pattern="[a-z0-9_-]*" ';
$this->html .= '
type="'.$type.'"
title="'.$s->desc.'"
$this->html .= '
type="'.$type.'"
title="'.$s->desc.'"
type="'.$s['type'].'"
label="'.$s['label'].'"
'.$multiple.' '.$req.'/>
<label for="'.$s["var"].'">'.$s["label"].'</label>';
}
private function outHiddeninput($s){
$this->html .= '
<input type="hidden" name="'.$s["var"].'" value="'.$s->value.'" />';
}
private function outList($s, $multiple){
$this->html .= '
<div class="select">
<select
<select
type="'.$s['type'].'"
label="'.$s['label'].'"
id="'.$s["var"].'"
id="'.$s["var"].'"
name="'.$s['var'].'" '.$multiple.' '.$s->required.'>';
if(count($s->xpath('option')) > 0){
foreach($s->option as $option){
$this->html .= '
@ -238,7 +238,7 @@ class XMPPtoForm{
</option>';
}
}
$this->html .= '
</select>
</div>
@ -250,34 +250,34 @@ class FormtoXMPP{
private $stream;
private $inputs;
private $dataform;
public function __construct(){
$this->stream = '';
$this->inputs = array();
$this->dataform = true;
}
public function getXMPP($stream, $inputs){
$this->setXMPP($stream);
$this->setInputs($inputs);
$this->create();
return $this->stream;
}
public function setXMPP($stream){
$this->stream = new SimpleXMLElement($stream);
}
public function setInputs($inputs){
$this->inputs = $inputs;
}
public function setDataformOff() {
$this->dataform = false;
}
public function create(){
switch($this->stream->getName()){
case "stream":
case "stream":
$node = $this->stream->iq->query->x;
break;
case "pubsub":
@ -307,14 +307,14 @@ class FormtoXMPP{
$value = '1';
if($value == 'false' || $value === 0)
$value = '0';
$field->addChild('value', trim($value->value));
if(isset($value->attributes->required))
$field->addChild('required', '');
$field->addAttribute('var', $value->attributes->name);
$field->addAttribute('type', $value->attributes->xmpptype);
$field->addAttribute('label', $value->attributes->xmpplabel);
$field->addAttribute('type', $value->attributes->xmpptype);
$field->addAttribute('label', $value->attributes->xmpplabel);
} else{
$field = $node->addChild('field');
@ -326,7 +326,7 @@ class FormtoXMPP{
if(is_bool($value)) {
$value = ($value) ? '1' : '0';
}
$field->addChild('value', trim($value));
$field->addAttribute('var', trim($key));
}

14
linker.php

@ -31,14 +31,14 @@ $parser = new \Moxl\Parser;
$buffer = '';
$stdin_behaviour = function ($data) use (&$conn, $loop, &$buffer, &$connector, &$xmpp_behaviour, &$parser) {
$stdin_behaviour = function ($data) use (&$conn, $loop, &$buffer, &$connector, &$xmpp_behaviour, &$parser) {
if(substr($data, -1) == "") {
$messages = explode("", $buffer . substr($data, 0, -1));
$buffer = '';
foreach ($messages as $message) {
#fwrite(STDERR, colorize($message, 'yellow')." : ".colorize('received from the browser', 'green')."\n");
$msg = json_decode($message);
if(isset($msg)) {
@ -57,7 +57,7 @@ $stdin_behaviour = function ($data) use (&$conn, $loop, &$buffer, &$connector, &
} else {
return;
}
$rpc = new \RPC();
$rpc->handle_json($msg);
@ -73,7 +73,7 @@ $stdin_behaviour = function ($data) use (&$conn, $loop, &$buffer, &$connector, &
\Moxl\API::clear();
$loop->tick();
if(!empty($xml) && $conn) {
$conn->write(trim($xml));
#fwrite(STDERR, colorize(trim($xml), 'yellow')." : ".colorize('sent to XMPP', 'green')."\n");
@ -99,7 +99,7 @@ $xmpp_behaviour = function (React\Stream\Stream $stream) use (&$conn, $loop, &$s
$conn->on('data', function($message) use (&$conn, $loop, $parser) {
if(!empty($message)) {
$restart = false;
if($message == '</stream:stream>') {
$conn->close();
$loop->stop();
@ -107,7 +107,7 @@ $xmpp_behaviour = function (React\Stream\Stream $stream) use (&$conn, $loop, &$s
|| $message == '<proceed xmlns="urn:ietf:params:xml:ns:xmpp-tls"/>') {
stream_set_blocking($conn->stream, 1);
$out = stream_socket_enable_crypto($conn->stream, 1, STREAM_CRYPTO_METHOD_TLS_CLIENT);
$restart = true;
}

528
locales/locales.ini

@ -1,290 +1,290 @@
[global]
global.no_js = "You don't have javascript enabled. Good luck with that."
global.description = 'Movim is a kickass distributed social networking platform that protect your privacy an comes with a set of awesome features.'
no_js = "You don't have javascript enabled. Good luck with that."
description = Movim is a kickass distributed social networking platform that protect your privacy an comes with a set of awesome features.
[page]
page.administration = 'Administration'
page.home = 'Home'
page.discover = 'Discover'
page.explore = 'Explore'
page.account_creation = 'Account Creation'
page.news = 'News'
page.avatar = 'Avatar'
page.contacts = 'Contacts'
page.chats = 'Chats'
page.groups = 'Groups'
page.configuration = 'Configuration'
page.server = 'Server'
page.public_groups = 'Public Groups'
page.viewer = 'Viewer'
page.profile = 'Profile'
page.media = 'Media'
page.blog = 'Blog'
page.about = 'About'
page.login = 'Login'
page.help = 'Help'
page.feed = 'Feed'
page.posts = 'Posts'
page.gallery = 'Gallery'
page.preview = 'Preview'
page.visio = 'Visio-conference'
page.pods = 'Pods'
page.share = 'Share'
page.room = 'Room'
administration = Administration
home = Home
discover = Discover
explore = Explore
account_creation = Account Creation
news = News
avatar = Avatar
contacts = Contacts
chats = Chats
groups = Groups
configuration = Configuration
server = Server
public_groups = Public Groups
viewer = Viewer
profile = Profile
media = Media
blog = Blog
about = About
login = Login
help = Help
feed = Feed
posts = Posts
gallery = Gallery
preview = Preview
visio = Visio-conference
pods = Pods
share = Share
room = Room
[errors]
error.error = 'Error: %s'
error.cannot_load_file = "Cannot load file '%s'"
error.route = 'Route error, please set all the parameters for the page %s'
error.widget_load_error = "Requested widget '%s' doesn't exist."
error.widget_call_error = "Requested event '%s' not registered."
error.whoops = "Whoops!"
error.media_not_found = "It seem that you don't have any pictures here?"
error.media_ask_upload = "You can try to upload a couple by going to the Media page"
[error]
error = Error: %s
cannot_load_file = "Cannot load file '%s'"
route = Route error, please set all the parameters for the page %s
widget_load_error = "Requested widget '%s' doesn't exist."
widget_call_error = "Requested event '%s' not registered."
whoops = "Whoops!"
media_not_found = "It seem that you don't have any pictures here?"
media_ask_upload = "You can try to upload a couple by going to the Media page"
[title]
title.about = '%s - About'
title.account = '%s - Account'
title.administration = '%s - Administration Panel'
title.blog = '%s - Blog'
title.configuration = '%s - Configuration'
title.discover = '%s - Discover'
title.explore = '%s - Explore'
title.help = '%s - Help Page'
title.login = '%s - Login to Movim'
title.main = '%s - Welcome to Movim'
title.media = '%s - Media'
title.news = '%s - News'
title.node_configuration= '%s - Group Configuration'
title.node = '%s - Group'
title.not_found = '%s - 404'
title.profile = '%s - Profile'
title.server = '%s - Server'
about = %s - About
account = %s - Account
administration = %s - Administration Panel
blog = %s - Blog
configuration = %s - Configuration
discover = %s - Discover
explore = %s - Explore
help = %s - Help Page
login = %s - Login to Movim
main = %s - Welcome to Movim
media = %s - Media
news = %s - News
node_configuration= %s - Group Configuration
node = %s - Group
not_found = %s - 404
profile = %s - Profile
server = %s - Server
[buttons]
button.validate = 'Validate'
button.refresh = 'Refresh'
button.add = 'Add'
button.delete = 'Delete'
button.remove = 'Remove'
button.cancel = 'Cancel'
button.close = 'Close'
button.update = 'Update'
button.updating = 'Updating'
button.submit = 'Submit'
button.submitting = 'Submitting'
button.reset = 'Reset'
button.register = 'Register'
button.unregister = 'Unregister'
button.save = 'Save'
button.clear = 'Clear'
button.upload = 'Upload'
button.come_in = 'Come in!'
button.connecting = 'Connecting'
button.yes = 'Yes'
button.no = 'No'
button.edit = 'Edit'
button.return = 'Return'
button.accept = 'Accept'
button.refuse = 'Refuse'
button.next = 'Next'
button.previous = 'Previous'
[button]
validate = Validate
refresh = Refresh
add = Add
delete = Delete
remove = Remove
cancel = Cancel
close = Close
update = Update
updating = Updating
submit = Submit
submitting = Submitting
reset = Reset
register = Register
unregister = Unregister
save = Save
clear = Clear
upload = Upload
come_in = "Come in!"
connecting = Connecting
bool_yes = Yes
bool_no = No
edit = Edit
return = Return
accept = Accept
refuse = Refuse
next = Next
previous = Previous
[step]
step.step = 'Step %s'
step = Step %s
[inputs]
input.username = 'Username'
input.password = 'Password'
[input]
username = Username
password = Password
[days]
day.title = 'Day'
day.monday = 'Monday'
day.tuesday = 'Tuesday'
day.wednesday = 'Wednesday'
day.thursday = 'Thursday'
day.friday = 'Friday'
day.saturday = 'Saturday'
day.sunday = 'Sunday'
[day]
title = Day
monday = Monday
tuesday = Tuesday
wednesday = Wednesday
thursday = Thursday
friday = Friday
saturday = Saturday
sunday = Sunday
[genders]
gender.none = 'None'
gender.male = 'Male'
gender.female = 'Female'
gender.other = 'Other'
[gender]
nil = None
male = Male
female = Female
other = Other
[clients]
client.bot = 'Bot'
client.desktop = 'Desktop'
client.phone = 'Phone'
client.web = 'Web'
client.registered = 'Registered'
[client]
bot = Bot
desktop = Desktop
phone = Phone
web = Web
registered = Registered
[maritals]
marital.none = 'None'
marital.single = 'Single'
marital.relationship = 'In a relationship'
marital.married = 'Married'
marital.divorced = 'Divorced'
marital.widowed = 'Widowed'
marital.cohabiting = 'Cohabiting'
marital.union = 'Civil Union'
[marital]
nil = None
single = Single
relationship = In a relationship
married = Married
divorced = Divorced
widowed = Widowed
cohabiting = Cohabiting
union = Civil Union
[flags]
flag.white = 'Not shared'
flag.green = 'Shared with one contact'
flag.orange = 'Shared with all contacts'
flag.red = 'Shared with the XMPP network'
flag.black = 'Shared with the whole Internet'
[flag]
white = Not shared
green = Shared with one contact
orange = Shared with all contacts
red = Shared with the XMPP network
black = Shared with the whole Internet
[presences]
presence.online = 'Online'
presence.away = 'Away'
presence.dnd = 'Do Not Disturb'
presence.xa = 'Extended Away'
presence.offline = 'Offline'
presence.error = 'Error'
[presence]
online = Online
away = Away
dnd = Do Not Disturb
xa = Extended Away
offline = Offline
error = Error
[moods]
mood.afraid = 'afraid'
mood.amazed = 'amazed'
mood.amorous = 'amorous'
mood.angry = 'angry'
mood.annoyed = 'annoyed'
mood.anxious = 'anxious'
mood.aroused = 'aroused'
mood.ashamed = 'ashamed'
mood.bored = 'bored'
mood.brave = 'brave'
mood.calm = 'calm'
mood.cautious = 'cautious'
mood.cold = 'cold'
mood.confident = 'confident'
mood.confused = 'confused'
mood.contemplative = 'contemplative'
mood.contented = 'contented'
mood.cranky = 'cranky'
mood.crazy = 'crazy'
mood.creative = 'creative'
mood.curious = 'curious'
mood.dejected = 'dejected'
mood.depressed = 'depressed'
mood.disappointed = 'disappointed'
mood.disgusted = 'disgusted'
mood.dismayed = 'dismayed'
mood.distracted = 'distracted'
mood.embarrassed = 'embarrassed'
mood.envious = 'envious'
mood.excited = 'excited'
mood.flirtatious = 'flirtatious'
mood.frustated = 'frustated'
mood.grateful = 'grateful'
mood.grieving = 'grieving'
mood.grumpy = 'grumpy'
mood.guilty = 'guilty'
mood.happy = 'happy'
mood.hopeful = 'hopeful'
mood.hot = 'hot'
mood.humbled = 'humbled'
mood.humiliated = 'humiliated'
mood.hungry = 'hungry'
mood.hurt = 'hurt'
mood.impressed = 'impressed'
mood.in_awe = 'in awe'
mood.in_love = 'in love'
mood.indignant = 'indignant'
mood.interested = 'interested'
mood.intoxicated = 'intoxicated'
mood.invincible = 'invincible'
mood.jealous = 'jealous'
mood.lonely = 'lonely'
mood.lost = 'lost'
mood.lucky = 'lucky'
mood.mean = 'mean'
mood.moody = 'moody'
mood.nervous = 'nervous'
mood.neutral = 'neutral'
mood.offended = 'offended'
mood.outraged = 'outraged'
mood.playful = 'playful'
mood.proud = 'proud'
mood.relaxed = 'relaxed'
mood.relieved = 'relieved'
mood.remorseful = 'remorseful'
mood.restless = 'restless'
mood.sad = 'sad'
mood.sarcastic = 'sarcastic'
mood.satisfied = 'satisfied'
mood.serious = 'serious'
mood.shocked = 'shocked'
mood.shy = 'shy'
mood.sick = 'sick'
mood.sleepy = 'sleepy'
mood.spontaneous = 'spontaneous'
mood.stressed = 'stressed'
mood.strong = 'strong'
mood.surprised = 'surprised'
mood.thankful = 'thankful'
mood.thirsty = 'thirsty'
mood.tired = 'tired'
mood.undefined = 'undefined'
mood.weak = 'weak'
mood.worried = 'worried'
[mood]
afraid = afraid
amazed = amazed
amorous = amorous
angry = angry
annoyed = annoyed
anxious = anxious
aroused = aroused
ashamed = ashamed
bored = bored
brave = brave
calm = calm
cautious = cautious
cold = cold
confident = confident
confused = confused
contemplative = contemplative
contented = contented
cranky = cranky
crazy = crazy
creative = creative
curious = curious
dejected = dejected
depressed = depressed
disappointed = disappointed
disgusted = disgusted
dismayed = dismayed
distracted = distracted
embarrassed = embarrassed
envious = envious
excited = excited
flirtatious = flirtatious
frustated = frustated
grateful = grateful
grieving = grieving
grumpy = grumpy
guilty = guilty
happy = happy
hopeful = hopeful
hot = hot
humbled = humbled
humiliated = humiliated
hungry = hungry
hurt = hurt
impressed = impressed
in_awe = in awe
in_love = in love
indignant = indignant
interested = interested
intoxicated = intoxicated
invincible = invincible
jealous = jealous
lonely = lonely
lost = lost
lucky = lucky
mean = mean
moody = moody
nervous = nervous
neutral = neutral
offended = offended
outraged = outraged
playful = playful
proud = proud
relaxed = relaxed
relieved = relieved
remorseful = remorseful
restless = restless
sad = sad
sarcastic = sarcastic
satisfied = satisfied
serious = serious
shocked = shocked
shy = shy
sick = sick
sleepy = sleepy
spontaneous = spontaneous
stressed = stressed
strong = strong
surprised = surprised
thankful = thankful
thirsty = thirsty
tired = tired
undefined = undefined
weak = weak
worried = worried
[months]
month.title = 'Month'
month.january = 'January'
month.february = 'February'
month.march = 'March'
month.april = 'April'
month.may = 'May'
month.june = 'June'
month.july = 'July'
month.august = 'August'
month.september = 'September'
month.october = 'October'
month.november = 'November'
month.december = 'December'
[month]
title = Month
january = January
february = February
march = March
april = April
may = May
june = June
july = July
august = August
september = September
october = October
november = November
december = December
[years]
year.title = 'Year'
[year]
title = Year
[date]
date.today = 'Today'
date.tomorrow = 'Tomorrow'
date.yesterday = 'Yesterday'
date.ago = ' %d days ago'
date.day = 'day'
today = Today
tomorrow = Tomorrow
yesterday = Yesterday
ago = %d days ago
day = day
[posts]
post.title = 'Title'
post.whats_new = "What's new ?"
post.place = 'Place'
post.by = 'by'
post.geolocalisation = 'Geolocalisation'
post.email = 'email'
post.empty = 'No content'
post.no_comments = 'No comments yet'
post.no_comments_stream = 'No comments stream'
post.no_load = 'Your feed cannot be loaded.'
post.older = 'Get older posts'
post.new_items = '%s new items'
post.comment_error = 'Comment publication error'
post.comments_older = 'Show the older comments'
post.comments_loading = 'Loading comments ...'
post.comments_get = 'Get the comments'
post.comment_add = 'Add a comment'
post.share = 'Share with'
post.share_everyone = 'Everyone'
post.share_your_contacts= 'Your contacts'
post.delete = 'Delete this post'
post.updated = 'Updated'
post.content_not_found = 'Content not found'
post.default_title = 'Contact publication'
post.comments = 'Comments'
[post]
title = Title
whats_new = "What's new ?"
place = Place
by = by
geolocalisation = Geolocalisation
email = email
empty = No content
no_comments = No comments yet
no_comments_stream = No comments stream
no_load = Your feed cannot be loaded.
older = Get older posts
new_items = %s new items
comment_error = Comment publication error
comments_older = Show the older comments
comments_loading = "Loading comments..."
comments_get = Get the comments
comment_add = Add a comment
share = Share with
share_everyone = Everyone
share_your_contacts= Your contacts
delete = Delete this post
updated = Updated
content_not_found = Content not found
default_title = Contact publication
comments = Comments
[api]
api.error = 'The API is not reachable, try again later'
error = The API is not reachable, try again later
[field]
field.type_here = 'Type here'
type_here = Type here

1702
locales/messages.pot
File diff suppressed because it is too large
View File

11
locales/update_trans.sh

@ -1,10 +1,5 @@
#!/bin/sh
touch files.list
#find ../ -name '*.php' | grep -v 'cache' > files.list
#find ../ -name '*.tpl' | grep -v 'cache' >> files.list
find ../ -name 'locales.php' > files.list
xgettext -e --no-wrap -kt -o messages.pot -L PHP -f files.list
ini2po ../ messages
msgcat -n messages/app/widgets/*/*.po messages/locales/locales.po -o messages.pot
sed -i 's/\\"//g' messages.pot

22
system/Utils.php

@ -3,7 +3,7 @@
/**
* @file Utils.php
* This file is part of PROJECT.
*
*
* @brief Description
*
* @author Etenil <etenil@etenilsrealm.nl>
@ -12,7 +12,7 @@
* @date 20 February 2011
*
* Copyright (C)2011 Etenil
*
*
* All rights reserved.
*/
@ -24,14 +24,14 @@ use Monolog\Handler\StreamHandler;
* Return the list of gender
*/
function getGender() {
return array('N' => __('gender.none'),
return array('N' => __('gender.nil'),
'M' => __('gender.male'),
'F' => __('gender.female'),
'O' => __('gender.other')
);
}
/**
/**
* Return the list of client types
*/
function getClientTypes() {
@ -364,7 +364,7 @@ function getCountries() {
*/
function getMarital() {
return array(
'none' => __('marital.none'),
'none' => __('marital.nil'),
'single' => __('marital.single'),
'relationship' => __('marital.relationship'),
'married' => __('marital.married'),
@ -372,7 +372,7 @@ function getMarital() {
'widowed' => __('marital.widowed'),
'cohabiting' => __('marital.cohabiting'),
'union' => __('marital.union')
);
);
}
function getPresences() {
@ -506,12 +506,12 @@ function generateUUID($string = false) {
function movim_log($logs) {
$log = new Logger('movim');
$log->pushHandler(new SyslogHandler('movim'));
$log->pushHandler(new StreamHandler(LOG_PATH.'/logger.log', Logger::DEBUG));
if(is_array($logs))
$log->addInfo('', $logs);
else
$log->addInfo($logs);
$log->addInfo($logs);
}
/**
@ -523,7 +523,7 @@ function getFlagTitle($color){
case 'white':
$title = __('flag.white');
break;
case 'green':
$title = __('flag.green');
break;
@ -587,11 +587,11 @@ function requestURL($url, $timeout = 10, $post = false) {
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0');
if(is_array($post)) {
$params = '';
foreach($post as $key => $value) {
$params .= $key . '=' . $value .'&';
}

26
system/i18n/i18n.php

@ -52,26 +52,28 @@ function t($string)
if(isset($translations[$string])) {
$lstring = $translations[$string];
}
// For compiled lang files, set en english default if no translation
if($lstring == '')
$lstring = $string;
if(func_num_args() > 1) {
$args = func_get_args();
$args[0] = $lstring; // Replacing with the translated string.
$lstring = call_user_func_array("sprintf", $args);
}
return $lstring;
}
function __() {
global $translationshash;
$args = func_get_args();
if(is_array($translationshash) && array_key_exists($args[0], $translationshash)) {
$args[0] = $translationshash[$args[0]];
global $translationshash;
$arr = explode('.', $args[0]);
if(is_array($translationshash) && array_key_exists($arr[0], $translationshash)) {
$args[0] = $translationshash[$arr[0]][$arr[1]];
return call_user_func_array('t', $args);
} else {
return $args[0];
@ -142,7 +144,7 @@ function loadLanguageAuto()
{
$langs = array();
$langNotFound = true;
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
if (count($lang_parse[1])) {
@ -154,14 +156,14 @@ function loadLanguageAuto()
arsort($langs, SORT_NUMERIC);
}
while((list($key, $value) = each($langs)) && $langNotFound == true) {
$exploded = explode('-', $key);
$key = reset($exploded);
$cd = new \Modl\ConfigDAO();
$config = $cd->get();
if($key == 'en') {
loadLanguage($config->locale);
$langNotFound = false;
@ -191,9 +193,9 @@ function loadLanguage($lang)
require_once(CACHE_PATH . '/locales/' . $lang . '.php');
} else
$translations = parseLangFile(LOCALES_PATH . $lang . '.po');
if(file_exists(LOCALES_PATH . 'locales.ini')) {
$translationshash = parse_ini_file(LOCALES_PATH . 'locales.ini');
$translationshash = parse_ini_file(LOCALES_PATH . 'locales.ini', true, INI_SCANNER_RAW);
}
$language = $lang;

49
system/widget/WidgetBase.php

@ -45,10 +45,10 @@ class WidgetBase
// If light loading enabled, we stop here
if($light)
return;
// Put default widget init here.
$this->ajax = AjaxController::getInstance();
$this->user = new User;
// Generating Ajax calls.
@ -75,7 +75,7 @@ class WidgetBase
);
if(file_exists($this->respath('locales.ini', true))) {
$this->translations = parse_ini_file($this->respath('locales.ini', true));
$this->translations = parse_ini_file($this->respath('locales.ini', true), true, INI_SCANNER_RAW);
}
// We load the template engine
@ -83,27 +83,34 @@ class WidgetBase
$this->view->objectConfigure($config);
$this->view->assign('c', $this);
$this->pure = false;
}
function t() {
return call_user_func_array('t',func_get_args());
}
function __() {
$args = func_get_args();
if(array_key_exists($args[0], $this->translations)) {
$args[0] = $this->translations[$args[0]];
return call_user_func_array(array(&$this, 't'), $args);
}
global $translationshash;
if(array_key_exists($args[0], $translationshash)) {
return call_user_func_array('__', $args);
if(!is_array($this->translations)) $this->translations = array();
$tmp_trans = array_merge_recursive($this->translations, $translationshash);
$arr = explode('.', $args[0]);
if(is_array($tmp_trans)
&& array_key_exists($arr[0], $tmp_trans)
&& array_key_exists($arr[1], $tmp_trans[$arr[0]])) {
$vars = $tmp_trans[$arr[0]][$arr[1]];
if(is_array($vars))
$args[0] = $vars[0];
else
$args[0] = $vars;
return call_user_func_array(array(&$this, 't'), $args);
}
return $args[0];
}
@ -138,9 +145,9 @@ class WidgetBase
* @desc Preload some sourcecode for the draw method
*/
function display() {}
/**
* Return the template's HTML code
* Return the template's HTML code
* @param a specific template name to load (like Ruby partials)
* @param load the parent template, like for WidgetCommon
*/
@ -149,7 +156,7 @@ class WidgetBase
$this->display();
return trim($this->view->draw(strtolower($this->name), true));
}
protected function tpl() {
$config = array(
'tpl_dir' => APP_PATH.'widgets/'.$this->name.'/',
@ -161,7 +168,7 @@ class WidgetBase
$view = new Tpl;
$view->objectConfigure($config);
$view->assign('c', $this);
return $view;
}
@ -184,10 +191,10 @@ class WidgetBase
} else {
$path = BASE_URI . $path;
}
return $path;
}
public function getName()
{
return $this->name;
@ -254,7 +261,7 @@ class WidgetBase
{
$this->css[] = $this->respath($filename);
}
/**
* @brief returns the list of javascript files to be loaded for the widget.
*/

32
themes/material/css/style.css

@ -914,3 +914,35 @@ dl dd {
opacity: 0.5;
pointer-events: none;
}
/* Animation */
.background_fade {
background-color: #CCC;
animation: fadeout 1s forwards;
-moz-animation: fadeout 1s forwards;
-webkit-animation: fadeout 1s forwards;
-o-animation: fadeout 1s forwards;
}
@keyframes fadeout {
to {
background-color:#fff;
}
}
@-moz-keyframes fadeout {
to {
background-color: #ffffff;
}
}
@-webkit-keyframes fadeout {
to {
background-color: #ffffff;
}
}
@-o-keyframes fadeout {
to {
background-color: #ffffff;
}
}
Loading…
Cancel
Save