Difference between revisions of "SME Server:Documentation:Developers Manual"
(show full index) |
|||
Line 6: | Line 6: | ||
The Developer manual is maintained separate to this wiki, corrections and suggestions are to be made on the Bug Tracker. | The Developer manual is maintained separate to this wiki, corrections and suggestions are to be made on the Bug Tracker. | ||
− | [http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/html/devguide.html | + | View the HTML version of the Developer Manual as |
+ | [http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/html/book1.htm individual pages,] | ||
+ | or as a | ||
+ | [http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/html/devguide.html single page.] | ||
− | [http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/devguide.pdf | + | Also available in a |
+ | [http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/devguide.pdf pdf version] | ||
− | + | [http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/html/book1.htm Table of Contents.] | |
− | [http://mirror.contribs.org/smeserver/contribs/gordonr/devguide/html/book1.htm | + | I. An overview of the SME Server |
− | + | 1. About this manual | |
− | + | 2. Who should read this manual? | |
− | + | 3. What is the SME Server? | |
− | + | 4. Design philosophy | |
− | + | Principle 1: Automating best practice | |
− | + | Principle 2: Simplicity | |
− | + | Principle 3: Extensibility | |
− | + | Principle 4: Reliability | |
− | + | 5. Architecture overview | |
− | + | II. SME Server internals | |
− | + | 6. Configuration database | |
− | + | Overview | |
− | + | The configuration databases | |
− | + | Namespace issues | |
− | + | 7. Actions and events | |
− | + | Actions | |
− | + | Events | |
− | + | 8. Configuration file templates | |
− | + | Design of the template system | |
− | + | The Text::Template module | |
− | + | Template expansion | |
− | + | 9. Process startup, supervision and shutdown | |
+ | Process startup | ||
+ | Process supervision: runit (and supervise) | ||
+ | 10. The server-manager web interface | ||
+ | The web directory | ||
+ | Web function scripts | ||
+ | Common files | ||
+ | Panel definitions | ||
+ | III. How to create an SME Server package - step by step | ||
+ | 11. Getting started | ||
+ | Creating a development environment | ||
+ | 12. Getting to know how to customize the SME Server | ||
+ | Exercise 1: Changing a configuration template | ||
+ | Exercise 2: The magic of templates | ||
+ | Exercise 3: Using events and actions | ||
+ | Exercise 4: Adding new configuration database parameters | ||
+ | Exercise 5: Adding a user interface screen | ||
+ | Exercise 6: Adding a new event type | ||
+ | Exercise 7: Thought experiment - adding a new server application | ||
+ | Customization guidelines | ||
+ | 13. Packaging your application | ||
+ | A quick introduction to RPMs | ||
+ | Selecting and creating RPMs for your application | ||
+ | Setting up your RPM development environment | ||
+ | Building an RPM | ||
+ | 14. The SME Server development environment | ||
+ | Configuring your development environment | ||
+ | Modifying an SME Server package | ||
+ | SourceForge developer CVS access | ||
+ | IV. Advanced customization of the SME Server | ||
+ | 15. Advanced customization principles | ||
+ | Leveraging the provisioning system for users, groups, and i-bays | ||
+ | Programmatically creating users, groups, and i-bays | ||
+ | Reserving accounts to avoid conflicts with user, group, or i-bay names | ||
+ | Adding new account properties | ||
+ | Using the LDAP server | ||
+ | Data backup | ||
+ | Using the MySQL database | ||
+ | Sending email messages | ||
+ | Managing the firewall | ||
+ | Starting up programs automatically upon system boot | ||
+ | V. Documentation and resources | ||
+ | 16. Perl modules | ||
+ | VI. License texts | ||
+ | A. GNU Free Documentation License | ||
+ | B. GNU General Public License | ||
===Documentation Links=== | ===Documentation Links=== |
Revision as of 05:27, 28 September 2007
Developer Documentation
This manual is aimed at developers and provides the information they require to integrate their applications into the SME Server platform. The manual discusses the key concepts of the SME Server such as the configuration database, configuration file templates and the events and actions model which differentiate the SME Server from other Linux distributions.
The Developer manual is maintained separate to this wiki, corrections and suggestions are to be made on the Bug Tracker.
View the HTML version of the Developer Manual as individual pages, or as a single page.
Also available in a pdf version
Table of Contents. I. An overview of the SME Server 1. About this manual 2. Who should read this manual? 3. What is the SME Server? 4. Design philosophy Principle 1: Automating best practice Principle 2: Simplicity Principle 3: Extensibility Principle 4: Reliability 5. Architecture overview II. SME Server internals 6. Configuration database Overview The configuration databases Namespace issues 7. Actions and events Actions Events 8. Configuration file templates Design of the template system The Text::Template module Template expansion 9. Process startup, supervision and shutdown Process startup Process supervision: runit (and supervise) 10. The server-manager web interface The web directory Web function scripts Common files Panel definitions III. How to create an SME Server package - step by step 11. Getting started Creating a development environment 12. Getting to know how to customize the SME Server Exercise 1: Changing a configuration template Exercise 2: The magic of templates Exercise 3: Using events and actions Exercise 4: Adding new configuration database parameters Exercise 5: Adding a user interface screen Exercise 6: Adding a new event type Exercise 7: Thought experiment - adding a new server application Customization guidelines 13. Packaging your application A quick introduction to RPMs Selecting and creating RPMs for your application Setting up your RPM development environment Building an RPM 14. The SME Server development environment Configuring your development environment Modifying an SME Server package SourceForge developer CVS access IV. Advanced customization of the SME Server 15. Advanced customization principles Leveraging the provisioning system for users, groups, and i-bays Programmatically creating users, groups, and i-bays Reserving accounts to avoid conflicts with user, group, or i-bay names Adding new account properties Using the LDAP server Data backup Using the MySQL database Sending email messages Managing the firewall Starting up programs automatically upon system boot V. Documentation and resources 16. Perl modules VI. License texts A. GNU Free Documentation License B. GNU General Public License
Documentation Links
Other sources of information
-Managing Software with Yum - http://mirror.centos.org/centos/4/docs/html/yum/ -CentOS 4/RHEL4 Documentation - http://mirror.centos.org/centos/4/docs/ -Fedora Documentation - http://fedora.redhat.com/docs/ -Fedora Developers Guide - http://fedora.redhat.com/docs/developers-guide/ -Fedora Documentaion Guide - http://fedora.redhat.com/docs/documentation-guide/ -Maximum RPM Book - http://www.rpm.org/max-rpm-snapshot/ -Fedora RPM Guide (draft) - http://fedora.redhat.com/docs/drafts/rpm-guide-en/ -Fedora Wiki - Building Packages Guide - http://fedoraproject.org/wiki/Docs/Drafts/BuildingPackagesGuide -Mezzanine Howto - http://beta.kainx.org/articles/6&highlight=mezz-howto - also http://lists.contribs.org/mailman/public/devinfo/msg08010.html -Fedoraproject.org RPM Packaging Guidelines - http://fedoraproject.org/wiki/PackagingGuidelines -Fedoraproject.org Package Review Guidelines - http://fedoraproject.org/wiki/PackageReviewGuidelines -Fedoraproject.org RPM Spec File Scriptlet Snippets - http://fedoraproject.org/wiki/ScriptletSnippets
Translating with Pootle
SME Server supports more than a dozen languages. See http://translate.contribs.org/ for the current list.
Pootle Video Tutorial
If you want to watch a video about Pootle in action, look at http://www.youtube.com/watch?v=u6tDUQv3huU
Translators
Become a SME Translator
- Before you can request have access and be assigned responsible for one or more languages you will need to register at http://translate.contribs.org.
- After registering you will have to log in and add the language and projects to your account in Pootle. This can be done by choosing the Change options under the My Account.
- Now select the three projects SME Server Console, SME Server Panels, and SME Contribs Panels under My Projects (Hold the Ctrl key while clicking the desired options to select multiple options).
- Last thing that you need to do is to select your language under My Languages. You are now subscribed to all required projects for the desired languages.
- To become responsible for the language you desire you need to request responsibility by creating a , please provide your Pootle username as well as the language you want to be responsible for.
Language Translators
Language | Responsibles (Pootle username) |
---|---|
Bulgarian | stefangk |
Chinese | gfengyoung |
Danish | koopmann - p1ur - skovsgaard |
Dutch | Cactus - Marco Hess - jester - skydivers |
French | jpl - mmccarn - esibert - GrandPa - dadoudidon - Cool34000 - unnilennium - dani |
German | Reinhold - ente - koopmann |
Greek | MAuVE - pfloor |
Hungarian | tacsaby |
Indonesion | thomasch |
Italian | matprova - nicolatiana - Fumetto - nenonano - filippoc |
Japanese | misnerspace - sreejith - pranathi - yuka |
Norwegian | terje |
Portuguese | nrgomes |
Portuguese (Brazil) | jader |
Russian | Nikolay? |
Slovenian | bpivk |
Spanish | Normando - juanidada - oscartenerife - Calimenio |
Swedish | chrille |
Thai | Thirawoot |
Turkish | sami |
Pootle tips
To speed up your translation process follow these tips:
Interface Customization
Enter at My account and then at Change options.
Set these values:
- Number of rows in translate mode = 1
- Number of rows in view mode = 5
- Input Height (in lines) = 10
You can select your language and projects to see shortcuts at your home page.
Untranslated words
First login at Pootle, then click Show Editing Functions and finally at Quick Translate for each file or whole language.
Also you can see the suggestions clicking at Review Suggestions.
Translation Memory
You can use the matching translations from the Pootle right side related strings to speed up the translation process. Make the necessary fixes for the non matching strings.
Checks before finish your work
We generate daily a consistency verification,it´s available on http://translate.contribs.org/errors/
Please run these checks before conclude your work:
Under the language of your choice at root level project, click at Show Editing Functions and then Show Checks to see a list of syntax errors.
See http://translate.sourceforge.net/wiki/guide/pofilter_examples and http://translate.sourceforge.net/wiki/guide/translation/commonerrors
It is clear that certain syntax errors will always be due to differences in languages. For example a question in English carries only the symbol of closure (?) while in Spanish also carries the opening (¿).
Example for Italian:
#: root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/clamav:60(trans) #: root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/emailsettings:118(trans) #, fuzzy msgid "During office hours (8:00 AM to 6:00 PM) on weekdays" msgstr "" "#-#-#-#-# clamav.po (SME Panels) #-#-#-#-#\n" "Durante l'orario d'ufficio (dalle 8:00 alle 18:00) giorni lavorativi\n" "#-#-#-#-# emailsettings.po (SME Panels) #-#-#-#-#\n" "Orario ufficio (8:00-18:00 Lun-Ven)"
You must fix the file clamav.po or emailsettings.po (not both) to only use one of the following translated values:
Durante l'orario d'ufficio (dalle 8:00 alle 18:00) giorni lavorativi
or
Orario ufficio (8:00-18:00 Lun-Ven)
Please ensure to remove all \n characters from end of translation and escape characters \ before each " not present in english source language. ex. \"{$acct}\" should be "{$acct}". This only happens in the consistence checks.
So, at equal English strings values => equal translations (Italian) values.
In this example (Italian) the files clamav.po and emailsettings.po should have the same translated value:
Durante l'orario d'ufficio (dalle 8:00 alle 18:00) giorni lavorativi or Orario ufficio (8:00-18:00 Lun-Ven).
Considerations
- Do not use colloquial terms. Only formal XXX-LANG.
- Please DON'T use automatic nor machine generated translations. These are BAD quality. Leave human translators them make its work!
- Review the orthographic errors. A very simple way is to use Firefox with the installed XXX-LANG dictionary.
- Verify the translation in the context.
- Not to be brief words. Ej. "Ud." instead of "Usted" (Spanish example)
- The subscripts "_" in Pootle indicate a space in target.
- Not to add capital letters in where in English they are not it. Ej. "Web page" must be translated like "Página web" and not like "Página Web" (Spanish example). The intention is to translate and not to invent. For it we must be exact although it demands much greater time the translation.
- Any discussion or doubts or interchange of ideas can be made at the tab "discussion" in the top part of this page. Indent the answers adding two points at the beginning of each new line.
- IMPORTANT. If at the moment of an installation or modification of the adjustments of SME Server it detects an inexact translation or that one does not adjust to the context, please, takes note precise from the same one and in where it found it, soon to correct it. If you want you can fix at http://translate.contribs.org. Does not let save the opportunity to correct.
Changing the Server Language
Server-Manager
Change the language the panel is in by changing your browser default language
For Firefox currently it is: Preferences, content, Languages.
Console
For Centos 6 i.e. SME9, and older versions
Edit the first two lines in /etc/sysconfig/i18n
#nano -w /etc/sysconfig/i18n LANG="en_US" SUPPORTED="en_US:en" (maybe not needed, doesn't exist by default)
issue a db command
config setprop sysconfig Language sv_SE
For CentOS 7 and SME 10
List available keymaps starting with 'us' :
#localectl list-keymaps | grep ^us
To permanently change the keymap on CentOS 7 to e.g. the US keymap run the localectl command:
#localectl set-keymap us
To confirm your permanent keymap settings execute the localectl command without any arguments.
Source: https://linuxconfig.org/how-to-change-system-keyboard-keymap-layout-on-centos-7-linux
Choose a Language (and Keytable see below) from the list
(-) in front of the line means SME doesn't have any translation for that language
Bulgarian bg latarcyrheb-sun16 bg_BG.UTF-8 bg Europe/Sofia -Catalan ca latarcyrheb-sun16 ca_ES.UTF-8 es Europe/Madrid Chinese(Simplified) zh_CN none zh_CN.UTF-8 us Asia/Shanghai -Chinese(Traditional) zh_TW none zh_TW.UTF-8 us Asia/Taipei -Croatian hr latarcyrheb-sun16 hr_HR.UTF-8 croat Europe/Zagreb -Czech cs latarcyrheb-sun16 cs_CZ.UTF-8 cz-lat2 Europe/Prague Danish da latarcyrheb-sun16 da_DK.UTF-8 dk Europe/Copenhagen Dutch nl latarcyrheb-sun16 nl_NL.UTF-8 nl Europe/Amsterdam English en latarcyrheb-sun16 en_US.UTF-8 us America/New_York Estonian et latarcyrheb-sun16 et_EE.UTF-8 et Europe/Tallinn -Finnish fi latarcyrheb-sun16 fi_FI.UTF-8 fi Europe/Helsinki French fr latarcyrheb-sun16 fr_FR.UTF-8 fr-latin1 Europe/Paris German de latarcyrheb-sun16 de_DE.UTF-8 de-latin1-nodeadkeys Europe/Berlin Greek el iso07u-16 el_GR.UTF-8 gr Europe/Athens -Gujarati gu none gu_IN.UTF-8 us Asia/Calcutta -Hindi hi none hi_IN.UTF-8 us Asia/Calcutta Hungarian hu latarcyrheb-sun16 hu_HU.UTF-8 hu Europe/Budapest -Icelandic is latarcyrheb-sun16 is_IS.UTF-8 is-latin1 Atlantic/Reykjavik Indonesian id latarcryheb-sun16 id_ID.UTF-8 us Asia/Jakarta Italian it latarcyrheb-sun16 it_IT.UTF-8 it Europe/Rome Japanese ja none ja_JP.UTF-8 jp106 Asia/Tokyo -Kannada kn none kn_IN.UTF-8 us Asia/Calcutta -Korean ko none ko_KR.UTF-8 us Asia/Seoul -Macedonian mk latarcyrheb-sun16 mk_MK.UTF-8 mk Europe/Skopje -Malay ms latarcyrheb-sun16 ms_MY.UTF-8 us Asia/Kuala_Lumpur -Malayalam ml none ml_IN.UTF-8 us Asia/Calcutta -Marathi mr none mr_IN.UTF-8 us Asia/Calcutta Norwegian nb latarcyrheb-sun16 nb_NO.UTF-8 no Europe/Oslo -Northern Sotho nso latarcyrheb-sun16 nso_ZA.UTF-8 us Africa/Johannesburg -Oriya or none or_IN.UTF-8 us Asia/Calcutta Polish pl latarcyrheb-sun16 pl_PL.UTF-8 pl2 Europe/Warsaw Portuguese pt latarcyrheb-sun16 pt_PT.UTF-8 pt-latin1 Europe/Lisbon Portuguese(Brazilian) pt_BR latarcyrheb-sun16 pt_BR.UTF-8 br-abnt2 America/Sao_Paulo -Punjabi pa none pa_IN.UTF-8 us Asia/Calcutta Russian ru latarcyrheb-sun16 ru_RU.UTF-8 ru Europe/Moscow -Serbian sr latarcyrheb-sun16 sr_CS.UTF-8 sr-cy Europe/Belgrade -Serbian(Latin) sr@Latn latarcyrheb-sun16 sr_CS.UTF-8@Latn sr-cy Europe/Belgrade -Sinhala si none si_LK.UTF-8 us Asia/Colombo -Slovak sk latarcyrheb-sun16 sk_SK.UTF-8 sk-qwerty Europe/Bratislava Slovenian sl latarcyrheb-sun16 sl_SI.UTF-8 slovene Europe/Ljubljana Spanish es latarcyrheb-sun16 es_ES.UTF-8 es Europe/Madrid Swedish sv latarcyrheb-sun16 sv_SE.UTF-8 sv-latin1 Europe/Stockholm -Tamil ta none ta_IN.UTF-8 us Asia/Calcutta -Telugu te none te_IN.UTF-8 us Asia/Calcutta Turkish tr latarcyrheb-sun16 tr_TR.UTF-8 trq Europe/Istanbul -Ukrainian uk latarcyrheb-sun16 uk_UA.UTF-8 ua-utf Europe/Kiev -Vietnamese vi latarcyrheb-sun16 vi_VN.UTF-8 us Asia/Saigon -Welsh cy latarcyrheb-sun16 cy_GB.UTF-8 uk Europe/London -Zulu zu latarcyrheb-sun16 zu_ZA.UTF-8 us Africa/Johannesburg
Keyboard
Issue a db command
config setprop sysconfig Keytable sv
The above command, and editing /etc/sysconfig/i18n doesn't completely fix the keyboard.
Pootle for Developers
Lexicons for rpms in smecontribs and smeserver are automatically added to Pootle.
A patch is automatically created at http://translate.contribs.org/patches/ You then apply this to the rpm to add the new translations or update the existing ones.
We need a few volunteers to apply these patches to smecontribs, say weekly, or more or less as the need arises, it isn't difficult and we will guide you.
Language rpms for the base rpms are generated less frequently. If you would like to check your translating work you can apply the daily patch to the smeserver-locale .src.rpm to create your own rpm. Everyone has read access to smeserver cvs and you would basically follow the instructions at Package_Modification, ask if you need help.
- The English locale file is used as the Pootle template. Other languages are edited/translated at Pootle.
- Every time you modify, add to or remove strings from the English locale file, just re-commit to cvs. There is a daily update to apply cvs changes to Pootle
- Make your original FM file XML strict. Always close the opened tags (<i>...</i>). Use the same caps for tags (<b> is not equal to <B>).
- Review the General lexicon, you don't need to duplicate these entries in your contrib lexicon