Sunday, 14 February 2010

A look at charities and Open Source ERP software

I want to look at several articles and initiatives that I have found on the web, and address some of the questions and risks and benefits.

Why can't you just use commercial software to manage your administration?
This really depends on the type of charity.

For example a representative from Christian Aid says in this BBC article (
http://news.bbc.co.uk/1/hi/technology/6124582.stm), which I will refer to again later:
"We are a funding organisation that ships £90m around the world ..."
[...]
"We spend one pence in the pound on administration, and that means we've got to be as effective and efficient as we can, and software is one way to do that."

Reading this, that means that they are still spending £900.000 on administration.

I would like to list different goals that a charity has:
  • deliver a message
  • provide material help
  • provide training or practical help through people

Therefore an organisation that ships a lot of money around the world, it is much easier to spend quite big amounts on software, and this saves them all sorts of trouble with technical support etc.

But if your organisation is more about highly motivated workers working alongside the people you want to help, and your main motivation is the message you deliver, the picture is different. You will probably not "ship vast amounts of money around the world", and the percentage you use for overall administration is more critical. The amounts you can spend on IT is probably quite small. It will be difficult to subscribe to proprietary software licenses which you will be depend on for the next decade or so.

We should also not forget cultural differences. It seems it is much more acceptable in the US to invest into administration than it is in Europe.

The BBC article about Christian Aid also mentions the use of standard office software, e.g. Windows XP and MS Office licenses. They are very happy with the good charity discounts from Microsoft. I will not address this topic here, because I am not discussing Operating Systems or Office Software, but Administrative software.

A charity is no software company, why should we invest into OpenSource and develop our own software?
I want to introduce the idea that has been formed by the Collaborative Software Initiative (CSI) (see
http://www.csinitiative.com/).
I quote from their website:
"The Collaborative Software Initiative (CSI) brings together like-minded companies to build software applications at a fraction of the cost of traditional methods. CSI introduces a market-changing process that applies open source methodologies to building Collaborative Software.
For applications that don't enable competitive advantage or are associated with non-value added activities such as compliance, regulatory, and industry standards, Collaborative Software empowers customer core team members to provide control and direction over a project while leveraging the efficiencies of using the same software and reducing costs."
They are thinking of banks and insurances and the automobile industry. I think we can easily apply the same to mission organisations and charities. We don't want to develop software for the sake of it, and we don't want a competitive advantage over other mission organisations or charities. Therefore it would make much sense to coordinate the efforts, and let others benefit from our work, and even encourage them to contribute.


Open Source is not as good as the best of breed

First of all, the best of breed software will probably cost more. In case it is cheaper or you can afford it anyways, and you have also calculated the cost of training etc, then it might well be that the best of breed is better for you.
Regarding the issue that the users know the best of breed and it is more difficult training them on an Open Source system because it is unknown to them: This might be more an issue for Operating Systems and Office packages. Although the introduction of Office 2007 has shown how easy it is to force users to suddenly use ribbons instead of menus.
The advantage of an Open Source administration suite should be that it is easy because it can be customized to the specific needs. Can your workers cope with the complexity of the best of breed, fits-all system? Most of the time you don't need all functionality of the best of breed software.
In the case that you have to train your workers on the best of breed software, make sure you know how often you have to train new staff, and how expensive that is, depending if it is possible to provide your own in-house training, or you have to pay expensive courses.

With Open Source you don't get what you really need
This is generally true for all software. But with Open Source you have a chance, to change the software much easierly, either by doing it yourself or get someone to do it for you.
If you have a good reason, you can convince a developer to do it, and it can benefit others as well.
Depending on the size of differences of expectation, you need to be able and willing to invest into adaption yourself; but you will own the change and don't need to pay license fees for it in the future.

There are too many updates to install for Open Source software
see also the article "
How open source is losing the charity battle" at ZDNet.

Security nowadays requires updates anyways, even Microsoft have a monthly patch day.
Nowadays updates should become much more easy to install.
The more users there are, the quicker a solution is provided; frequent updates prevent a bug from annoying you for a longer time.

Who will provide support for us? Is there a guarantuee of service and continued development?
You should look for a contract with a software engineer, and the greater the community for an Open Source software, the more people are willing to help. It is not all for free, but that is a good thing for you, because when you pay you have rights. On the other hand, you might find IT people that specifically want to support your organisation as volunteers. Because of the free nature of Open Source, it will be much easier for them to accustom themselves to the software.
There should also be general support of the users amongst each other, therefore leaving only serious extensions to paid or volunteering developers.

More Links
Most of the Links don't relate to Open Source regarding office administration. But they might give the interested reader an overview of opinions and possibilities.
Case Studies:
http://news.bbc.co.uk/1/hi/technology/6124582.stm
Charity shuns open source code

http://www.cafamily.org.uk/opensource.html
A charity using open source

http://news.zdnet.co.uk/software/0,1000000121,39166840,00.htm
London-based charity which saved more than £28,000 by using Linux Terminal Server to build its network.

Articles:
http://www.linux.com/feature/33378
Article: Help introduce open source software to charities

http://www.uwnyc.org/technews/v5_n6_a1.html
How "Open Source" Can Open Doors for Nonprofits

comparison Office vs Open Office for nonprofits

article from the year 1999, from Danny Yee: "Development, Ethical Trading, and Free Software"

Initiatives:
http://www.donortec.org/
DonorTec provides donated software and hardware from companies such as Microsoft and Cisco to eligible Australian non profit groups with Income Tax Exempt Status (ITE).

http://charityware.info/
Charityware (c-ware) is any software that supports charity. Some developers ask that proceeds from the sale of software be donated to charity, while others license or donate their software directly to charity.

http://www.socialsource.org.uk/
Last update in 2005.
This wiki is a central point for an advocacy initiative
("SocialSource") seeking to promote and assist the practical use of Free/Open Source Software (FOSS) within the UK Voluntary and Community Sector (VCS)*.

http://www.volresource.org.uk/swit/miscsw.htm
information for voluntary and community organisations

http://www.it4communities.org.uk/it4c/home/index.jsp
We are the UK's leading national IT volunteering programme.
iT4Comunities can help
charities, community groups and social enterprises access free IT support from IT professional volunteers and make substantial savings

http://www.nosi.net/projects/primer
Nonprofit Open Source Initiative
"Choosing and Using Free and Open Source Software: A Primer for Nonprofits" describes what open source software is and what impact this type of software may have on the nonprofit sector.

http://www.benetech.org/
technology serving humanity

http://www.ngogeeks.com/
To evaluate Open Source Software in an effort to reduce the IT costs of Non-Government and Not for Profit Organisations

http://www.ngopulse.org/article/ngo-ict-management-toolkit
The Southern African NGO Network (SANGONeT)

http://ngoinabox.mahiti.org/
This is the website of the South Asian hub of NGO-in-a-box, a collection of Free and Open Source Software (FOSS) tools selected for use by non-profit organisations.

http://www.codn.net/plugins/content/content.php?content.10
Christian Open Development Network

On the FSF's High Priority Projects list there is a call for the creation of a donor transaction and contact system.

http://www.lightsys.org/
LightSys is dedicated to equipping Christian missions and ministries with the computer technology correct for them, including the knowledge and contacts needed to support that technology. As a result they can serve with greater efficiency, keeping their mind on their task, not their computers, thus redeeming technology -- for God's Kingdom.
latest update on Kardia/Centrallix: http://lan.lightsys.org/blogs/?id=4470&one

Disclosure
Timotheus Pokorra is currently working as a software developer for OM, a christian charity working in many countries. OM owns the OpenPetra.org project which aims to provide a free software solution for the administration of charities.

Thursday, 15 January 2009

Request Tracker scrip that involves the Category of a Custom Field

Our Request Tracker works for users in many countries, which are all assigned to areas. There is an IT administrator for each area, which should be added to the CC list for the request that is from one of the countries in his/her area.

We have created a custom field, and used the category to group the countries by areas.

We needed a scrip with an action that needs to know the category of the currently selected value of a custom field.


Condition: User Defined
Action: User Defined
Template: Global Template: Blank
Stage: TransactionCreate


Custom condition:
my $CFName = 'Field/Country';

my $CF = RT::CustomField->new( $RT::SystemUser );
$CF->LoadByNameAndQueue( Name => $CFName, Queue => $self->TicketObj->Queue );

if ( (($self->TransactionObj->Type eq "CustomField" && $self->TransactionObj->Field == $CF->id)
||
$self->TransactionObj->Type eq "Create" ) &&
($self->TicketObj->FirstCustomFieldValue('Field/Country')) )
{
return 1;
}
return 0;


Custom action preparation code:
my $CFName = 'Field/Country';
# for FirstCustomFieldValue see in Record.pm
my $fieldcountryVal = $self->TicketObj->FirstCustomFieldValue($CFName);
my $aita_email = '';
my $area = '';

#see CustomFieldValue_Overlay.pm, sub Category

my $CFObj = new RT::CustomField($RT::SystemUser);
$CFObj->Load($CFName);
my $valuesObj = $CFObj->ValuesObj();
while (my $myValue = $valuesObj->Next) {
if ($myValue->Name eq $fieldcountryVal)
{
#$RT::Logger->info($fieldcountryVal." belongs to area ".$myValue->Category);
$area = $myValue->Category;
}
}

if ($area eq "Some Area")
{
$aita_email = 'admin@somearea.ourdomain.org';
}
elsif ($area eq "Another Area")
{
$aita_email = 'admin@anotherarea.ourdomain.org';
}
#if ($aita_email ne '')
{
my ($ret, $msg) = $self->TicketObj->AddWatcher( Type => "Cc", Email => $aita_email);

if ($ret) {
#$RT::Logger->info("scrip: New watcher added to ticket");

} else {
#$RT::Logger->error("scrip: Failed to add new watcher to ticket");
}
}

return 1;

Custom action cleanup code:
return 1;

Friday, 21 November 2008

BestPractical RT: Request Tracker on CentOS 5 with PostgreSQL

see also http://www.ptitov.net/2008/07/request-tracker-installation-o.html

Here are the steps how to install Request Tracker on CentOS 5 with PostgreSQL:

Install RPM packages

yum install postgresql postgresql-server postgresql-libs
yum install httpd perl-BSD-Resource perl-FCGI perl-Apache-DBI mod_perl
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
rpm -Uhv rpmforge-release*.rpm
yum install perl-Digest-HMAC perl-Apache-Session perl-Class-Container perl-Class-Data-Inheritable perl-Crypt-DES perl-Devel-StackTrace perl-Exception-Class perl-GD \
perl-GD-Graph perl-GD-Text-Util perl-Hook-LexWrap perl-HTML-Mason perl-HTTP-Server-Simple perl-HTTP-Server-Simple-Mason perl-IO-Socket-INET6 \
perl-Net-SNMP perl-Params-Validate perl-Socket6 perl-UNIVERSAL-require perl-HTML-scrubber perl-Text-WikiFormat perl-XML-RSS perl-Tree-Simple \
perl-Text-Wrapper perl-Module-Versions-Report perl-CSS-Squish \
perl-Term-ReadKey perl-Class-ReturnValue perl-Text-Quoted perl-Calendar-Simple perl-DBIx-SearchBuilder perl-Text-Autoformat \
perl-MailTools perl-Regexp-Common perl-Locale-Maketext-Lexicon perl-Locale-Maketext-Fuzzy perl-Time-HiRes perl-Time-modules perl-TimeDate \
perl-Log-Dispatch perl-Text-Template perl-HTML-Tree perl-HTML-Format \
perl-HTML-Scrubber perl-libwww-perl perl-MIME-tools perl-DBD-mysql



Configuration of Perl modules
To see if all required perl modules have been installed, run this:
/usr/bin/perl -MCPAN -e shell
make testdeps
/usr/bin/perl ./sbin/rt-test-dependencies --verbose --with-pgsql


Also, make sure you have newer versions of IO::File (1.14) and File-Temp (1.21).
Otherwise you get in trouble. More details follow here:

Fixes:
cat testemail.txt | /usr/bin/rt-mailgate --queue MyQueue --action correspond --url http://rt.mydomain.org/
Can't locate object method "seek" via package "File::Temp"


check currently installed version of File::Temp:
perl -le 'use File::Temp; print File::Temp->VERSION'

install the latest version 0.21:
cpan
# for reinitialising cpan:
o conf init
i /MIME-tools/
test D/DO/DONEILL/MIME-tools-5.425.tar.gz
i /file-temp/
install T/TJ/TJENNESS/File-Temp-0.21.tar.gz


Problem with attachements:
cat rttestmailatt.txt | /usr/bin/rt-mailgate --debug --queue myQueue --action correspond --url http://rt.mydomain.org
Connecting to http://rt.mydomain.org/REST/1.0/NoAuth/mail-gateway at /usr/bin/rt-mailgate line 102, <> line 1.
hello http://rt.mydomain.org/REST/1.0/NoAuth/mail-gateway
not ok - Failed to parse this message. Something is likely badly wrong with the message at /usr/bin/rt-mailgate line 112, <> line 1
another problem:
Can't locate object method "binmode" via package "IO::File" at /usr/lib/perl5/vendor_perl/5.8.5/MIME/Body.pm line 437.


We need version 1.14 of IO::File

perl -le 'use IO::File; print IO::File->VERSION'

requires: yum install gcc
cpan
i /IO-1.2301/
install G/GB/GBARR/IO-1.2301.tar.gz


IMPORTANT: need to reload the apache server, otherwise the new perl packages have no effect:
/etc/init.d/httpd reload

I came once across a Cpan problem:
Going to read /root/.cpan/sources/modules/03modlist.data.gz
Unrecognized character \x88 at (eval 29) line 1.

The solution was: delete 03modlist.data.gz, and just run cpan again

Install RT
Download the latest tar.gz file from http://bestpractical.com/rt/download.html
In a tmp directory, not the destination directory:
cd /home/timop
tar xvzf rt-3.6.6.tar.gz
cd rt-3.6.6
./configure --prefix=/usr --enable-layout=RH \
--with-db-host=localhost \
--with-db-dba=rt --with-db-rt-user=rt \
--with-db-database=rt --with-pgsql

Check to see if all dependancies are installed:
make testdeps | grep MISSING
make install

You then need to configure /etc/rt/RT_SiteConfig.pm
e.g. if you want to use Postgresql, it could look like this:
# {{{ Database Configuration

# Database driver beeing used. Case matters
# Valid types are "mysql", "Oracle" and "Pg"

Set($DatabaseType , 'Pg');

# The domain name of your database server
# If you're running mysql and it's on localhost,
# leave it blank for enhanced performance
Set($DatabaseHost , 'localhost');
Set($DatabaseRTHost , 'localhost');

# The port that your database server is running on. Ignored unless it's
# a positive integer. It's usually safe to leave this blank
Set($DatabasePort , '');

#The name of the database user (inside the database)
Set($DatabaseUser , 'rt');

# Password the DatabaseUser should use to access the database
Set($DatabasePassword , 'secret');

# The name of the RT's database on your database server
Set($DatabaseName , 'rt');

# If you're using Postgres and have compiled in SSL support,
# set DatabaseRequireSSL to 1 to turn on SSL communication
Set($DatabaseRequireSSL , undef);

# }}}


Configuration of PostgreSQL
vi /var/lib/pgsql/data/postgresql.conf;
For PostgreSQL 7.x: add line: tcpip_socket=true;
For PostgreSQL 8.x: listen_addresses = 'localhost'

vi /var/lib/pgsql/data/pg_hba.conf; it should contain:
local all all ident sameuser
host template1 rt 127.0.0.1/32 md5
host rt rt 127.0.0.1/32 md5
host all postgres 127.0.0.1/32 trust

/etc/init.d/postgresql start
postgresql logfile if db does not start: /var/lib/pgsql/pgstartup.log
chkconfig postgresql on
make initialize-database: problem: user rt does not exist; need to use dba postgres
/usr/bin/perl //usr/sbin/rt-setup-database --action init --dba postgres --prompt-for-dba-password

For a nightly backup of your database, you can use this command:
su - postgres -c "umask 0077; pg_dumpall | gzip > /var/lib/pgsql/data/backup.sql.gz"
To restore a database, e.g. when moving from one server to another:
su - postgres
psql template1
drop database rt;
create database rt;
\q
psql rt < /var/tmp/rt-20071210.sql

HTTPD configuration
/etc/httpd/conf.d/rt.conf should contain:
<VirtualHost *:80>
ServerName rt.mysupport.com
DocumentRoot /var/rt/html
AddDefaultCharset UTF-8

ServerAdmin Timotheus.Pokorra@mysupport.com
PerlModule Apache::DBI
PerlRequire /usr/bin/webmux.pl

<Location />
Options None
SetHandler perl-script
PerlHandler RT::Mason
<IfDefine PerlDProf>
<IfDefine PerlSmallProf>
PerlFixupHandler Apache::SmallProf
</IfDefine>
</IfDefine>
</Location>

<Location /NoAuth/images>
SetHandler default-handler
</Location>
# To use this you have to start apache with -DPerlStatus.
#
# In RHEL, add the following line to /etc/sysconfig/httpd:
#
# OPTIONS=-DPerlStatus
<IfDefine PerlStatus>
<Location /perl-status>
SetHandler perl-script
PerlHandler Apache2::Status
PerlSetVar StatusOptionsAll On
PerlSetVar StatusTerse On
PerlSetVar StatusTerseSize On
PerlSetVar StatusTerseSizeMainSummary On
PerlSetVar StatusLexInfo On
</Location>
</IfDefine>

To solve issues with "Can't change ownership of files written by interp object: Permission denied" when running Apache:
chcon -Rt httpd_sys_content_t /var/rt/mason_data/obj

chown -R apache /var/rt/mason_data/obj
chgrp -R apache /var/rt/mason_data/obj
chcon -Rt httpd_sys_content_t /var/rt/html
not: chcon -Rt httpd_sys_script_t /var/rt/html
/etc/init.d/httpd restart

To solve issues after upgrading RT, I had to do this sometimes:

rm -fr /var/rt/mason_data/obj
mkdir /var/rt/mason_data/obj
touch /var/rt/mason_data/obj/.__obj_create_marker
chmod -R a+w /var/rt/mason_data/obj
/etc/init.d/httpd restart
Configure Sendmail
The goal is to receive new requests via email.

You need to create a symbolic link, to avoid errors like "DSN: Service unavailable" or "write error: Broken pipe" in /var/log/maillog
ln -s /usr/bin/rt-mailgate /etc/smrsh
I have these lines in my /etc/aliases file:
my-support-comment: "|/etc/smrsh/rt-mailgate --queue MySupport --action comment --url http://rt.mysupport.com/"
my-support: "|/etc/smrsh/rt-mailgate --queue MySupport --action correspond --url http://rt.mysupport.com/"

Make sure that your server knows about rt.mysupport.com, you might need to add it to /etc/hosts.

You can test the delivery of emails:
echo "test" | mail my-support@rt.mysupport.com -s "test rt"
tail -f /var/log/maillog
or even more directly:
cat testemail.txt |/etc/smrsh/rt-mailgate --queue MySupport --action correspond --url http://rt.mysupport.com/
One other error I got was: "Relaying denied. IP name lookup failed" in /var/log/maillog
The problem was that emails were delivered to ticket.mycompany.com, and the rt server was at rt.mysupport.com.
I had to edit the file /etc/mail/local-host-names
and add the line ticket.mycompany.com

Tuesday, 28 October 2008

DTAUS with C#

I needed to export Lastschriften (instructions for direct debit) for our german office, and after looking for some solutions, I realised that it is not that hard to write it yourself...

Here is the result: http://download.pokorra.de/coding/Dtaus.cs
Please feel free to use the code any way you like.
I read the input data from an XML file, of course this needs to be modified to your specific situation.

A good help was this documentation of the german DTAUS bank file format:
http://www.infodrom.org/projects/dtaus/dtaus.html

Another useful tool was the JDTAUS editor, a java editor that can process and create DTAUS files:
http://www.jdtaus.de/de/
I use this to validate and test the files written with my C# program.

Monday, 20 October 2008

Building a mono 2.0 RPM for RHEL4/CentOS4

When I noticed that Novell does not offer RPMS of Mono 2.0 for RedHat Linux, I had a look at the Fedora 10 Beta and found that there is a Mono 2.0 Source RPM:
mono-2.0-6.fc10.src.rpm
Update: mono-2.0.1-12.fc10.src.rpm

Because we work with CentOS4/RedHat Enterprise Linux 4, I installed the source package on that system, and tried to build the rpms.

Building the code was fine after I deactivated a couple of dependencies.
But I ran into some problems at the file checking stage. I wondered if I can prevent the build stage to happen again and again. That way I should be able to debug the file list check etc.

Reading the man page, these parameters are interesting:
--short-circuit
--nobuild
-bi
-bl
So with rpmbuild -bl mono.spec I was able to just run the file checking stage.

The errors I got were like this:
rpm build errors: File not found: /var/tmp/mono-2.0-6-root-root/usr/bin/certmgr/usr/bin/chktrust/usr/bin/gacutil/usr/bin/gmcs/usr/bin/mcs/usr/bin/mcs1

But the files do exist in the /var/tmp/mono-2.0-6-root-root/ directory

I finally realised that the problem was caused by the Macros.
see also http://rpm.org/wiki/PackagerDocs/Macros
I had to first add curly brackets to each Macro call:
%{macro parameters}
But even then only the first line of the Macro had an effect.
This command was helpful in the files section to see that the Macros just were not resolved correctly:
%{echo: %{your_macro_here}}

In the end, I ended up adding the missing files to my own mono.spec file.
I also had a look at the last available RedHat spec file from Novell for Mono 1.9.x, and I guess there is a different rpm version for RHEL 4 and RHEL 5.

Here is my modified mono.spec file that works for RHEL4/CentOS4 for Mono 2.0:
http://download.pokorra.de/mono/mono.spec

Please download the src.rpm file from the Fedora 10 Beta, or later, and install it:
rpm -i mono-2.0-6.fc10.src.rpm
Then copy my modified mono.spec to /usr/src/redhat/SPECS, and build the packages:
rpmbuild -ba mono.spec

Alternatively, here is a zip file with the compiled RPM files for CentOS4/RHEL4:
mono-2.0-6.i386.rhel4.rpm.zip
I cannot guarantuee that it actually works, but feel free to use it for your own experiments!

Saturday, 4 October 2008

Use Progress and ODBC on CentOS with Japanese

This is related to my previous blog about using Chinese characters with Progress, .Net and Mono: Allow Chinese characters on a Client-Server application

Now the next challenge was to get Japanese characters to work.

I first converted the Progress database to shift-jis.
I set the environment variable: SQL_CLIENT_CHARSET=SHIFT-JIS

I then experimented with several locales, e.g. ja_JP.UTF8 and ja_JP (which is an alias for ja_JP.eucjp).

I used Wikipedia to get some sample words in Japanese characters, see http://en.wikipedia.org/wiki/Japanese_writing_system.

I soon realised that with some words I would get an ODBC error:
eg. with Kanji script 金魚 (Goldfish)
and with Hiragina script, きんぎょ
If I left out the last letter, it worked.

The ODBC error was:
Saving of data failed!
Reasons:
* [[ODBC]] [unixODBC][DataDirect-Technologies][ODBC 20101
driver][20101]Internal error -4 (unknown nls services error) in SQL from
subsystem NLS SERVICES function nlsCountChars called from nc_get_strlen
on . for . Save log for Progress technical support.


A helpful person from Progress Support gave me some suggestions, and I got it to work with Progress 9.1D in the end!
I had to use another locale, ja_JP.SJIS, which did not exist by default on my CentOS 4.6 (locale -a | grep JP).

According to http://kbase.redhat.com/faq/FAQ_80_1256.shtm
you can create the locale ja_JP.SJIS with this command:
localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS

This resolved the internal ODBC error.

Another issue was that I was not aware how to properly set the font in the ini file. Finally I found a hint in the Progress manuals, to check the prolang directory for the file progress.ini which is available for each language on the client side; this has a sample font. For the Japanese, this is a font with Japanese characters. I just copied it, and it worked.

Tuesday, 30 September 2008

Install Chinese or Japanese Windows XP with english XP screenshots

I sometimes have the problem that I need to install an asian Windows XP. I could always install a second XP in english in parallel in order for me to understand the screens in a language that is unknown to me.

Here are some screenshots that have helped me, hopefully they will be helpful for other people too.

I have noticed that there are more screens, e.g. Japanese XP has an extra screen for the keyboard layout. Select S for the menu, and then select "101 English keyboard layout". Otherwise you will have problems later when entering Name and Organisation. It also seems you should click on the little red dot in the keyboard selection thing at the right bottom corner when entering Name and Organisation, otherwise Tabulator key does not work, and I was not able to continue from that screen


One bit of advice: the keyboard shortcuts are usually the same, so watch out for capital Latin letters. This should help you to recognise which screen you are on and find the meaning on the english screenshots.

You can find a similar gallery here: http://techrepublic.com.com/2346-10878_11-5181.html