Language customisation: Difference between revisions
Keith Bryant (talk | contribs) (Added a little information to the tip "Can't find the string you wish to change?" which makes it possible to actually use this tip.) |
Helen Foster (talk | contribs) (major rewrite) |
||
Line 2: | Line 2: | ||
==Changing words or phrases== | ==Changing words or phrases== | ||
Words or phrases (in any language) used on the site may be easily changed by an administrator using the language | Words or phrases (in any language) used on the site may be easily changed by an administrator using the language customisation feature. For example, you may want to change the word "Course" to "Unit". | ||
# | # Go to ''Site administration > Language > Language customisation'' and choose the language you wish to customise. | ||
# | # Click the "Open language pack for editing" button. (This may take some time to process.) | ||
# | # Once the language pack has loaded, click the "Continue" button. | ||
# Save | # Find the string you wish to customise using the filter settings, then clicking "Show strings". See below for details of how to find the component and string identifier. | ||
# Make your changes in the "Local customisation" box. | |||
# Click "Apply changes and continue editing" if you want to use another filter or edit other file(s), otherwise click "Save changes to the language pack" to save all of the changes you have made. | |||
== | ==Finding the component and string identifier== | ||
[[File:Show origin of lang strings.png|thumb|Lang string origins]] | |||
# Go to ''Site administration > Development > Debugging''. | |||
# Tick the 'Show origin of languages strings' tickbox then save changes. | |||
# Go to the page containing the string you want to customise and add <pre>?strings=1</pre>, or <pre>&strings=1</pre> if there is already a parameter, to the URL and reload the page. | |||
The page will then be displayed with component and string identifies in curly brackets after each string, for example "{rememberusername/admin}". The first part, before the /, is the string identifier. The last part is the component e.g admin.php. If there is nothing after the / then the string is in moodle.php. | |||
==Troubleshooting== | |||
===Do not see any string changes?=== | |||
Did you remember to use the "Save changes to the language pack" button? Did you refresh your browser so that it is not looking at a cached page? Did you edit the language file that is actually being used on your site, course or by the user? | |||
== Language packs == | |||
Moodle | Moodle is translated into many languages - see [https://download.moodle.org/langpack/3.1/ Language packs for Moodle 3.1] for their list and the translation completion status. The translations are distributed as language packages (or just lang packs) that are maintained by kind volunteers, community contributors and Moodle Partners. | ||
Moodle site administrators can customise any language pack to fit their individual needs (for example to use the term "Unit" instead of "Course"). Editing the language pack files directly is not recommended, since any changes would be silently overwritten during the next upgrade. Instead, you should use the language customisation feature, which automatically creates a local language pack that holds all your changes from the official pack. | |||
Local language packs have the same structure as official ones. They are saved in your Moodle data directory in moodledata/lang/xx_local/ folder where 'xx' is the code of the language. You have to have the official language pack installed before you can customise it. A local language pack should contain just strings you have customised - there is no need to create a copy of a whole official language pack. | |||
When displaying a string, Moodle first looks whether a local customisation exists in moodledata/lang/xx_local/component_file.php. If so, it is used. If not, the string from the official language pack is used. (If the string has not been translated yet, the original English version is displayed). Please note that the strings are cached for better performance so if you modify a file directly in your xx_local pack then you will have to purge Moodle caches afterwards. Caches are purged automatically when using the language customisation feature. | |||
[[image:customlang-process.png|800px|thumb|left|Workflow of the language customisation (click to enlarge)]] | |||
[[image:customlang-process.png|800px|thumb|left|Workflow of the language | |||
<br clear="both" /> | <br clear="both" /> | ||
=== | === Using the filter to find strings you want to customise === | ||
[[Image:Language_string_M2_filter.png|thumb| | [[Image:Language_string_M2_filter.png|thumb|Language filter]] | ||
* ''Show strings of these components'' - Click or Ctrl+click to select one or more files that contain the string you want. | * ''Show strings of these components'' - Click or Ctrl+click to select one or more files that contain the string you want. | ||
* '' | * ''Customised only'' - check this field to display only those strings that are already present in your xx_local pack. | ||
* ''Help only''' - check this field to display only help | * ''Help only''' - check this field to display only help strings, that is the texts used when clicking the yellow question mark icon. | ||
* ''Modified only'' - displays only the strings that are modified in the current session. | * ''Modified only'' - displays only the strings that are modified in the current session. | ||
:''Note:'' The term ' | :''Note:'' The term 'customised' means strings that are saved on disk in your xx_local pack directory. The term 'modified' represents the changes made since the last checked in string into the language pack. Customised strings (already saved in a file) are highlighted in green. Modified strings (not saved in a file yet) are highlighted in blue. | ||
:''Tip:'' You may want to use this option | :''Tip:'' You may want to use this option to review your current work before you check it in. | ||
* ''Only strings containing'' - insert a phrase that must appear in the string. For example, if you put a word 'student' here, you will get only those strings that contain this word. | * ''Only strings containing'' - insert a phrase that must appear in the string. For example, if you put a word 'student' here, you will get only those strings that contain this word. | ||
:''Tip:'' The 'Only strings' filter can be used for a total search for a term used in your Moodle site for the selected language pack. | :''Tip:'' The 'Only strings' filter can be used for a total search for a term used in your Moodle site for the selected language pack. | ||
* ''String identifier'' - | * ''String identifier'' - see above. | ||
You can use a combination of filter settings to get the required set of strings. | |||
=== Input your own translation === | === Input your own translation === | ||
Line 73: | Line 61: | ||
Click "Save and continue" button before you change the filter settings and show a new set of strings. | Click "Save and continue" button before you change the filter settings and show a new set of strings. | ||
==Database error seen when attempting a language customisation== | |||
==Database error seen when attempting a language | |||
[[File:Database error while language customization.png|400px]] | [[File:Database error while language customization.png|400px]] | ||
If you encounter a database error when you try to customise your language pack, then it may be due to a recent plugin that corrupted the database. You are advised to check all plugins recently added to your site, and check whether removing a plugin prevents this error. If that is the case, please contact the maintainer for the involved plugin and [https://moodle.org/mod/forum/discuss.php?d=222815 report the error]. Most cases seen in 2013 were fixed by the maintainers of those plugins. [https://moodle.org/mod/forum/discuss.php?d=254464#unread One case seen in 2014] was related to the Essential (additional) theme and language packs other than English; it was caused by a a bug with the notification language handling, and was fixed with a plugin update. | |||
Or, you can [https://moodle.org/mod/forum/discuss.php?d=208012 execute a database query] on your server in order to track down the plugin causing the problem. | |||
Or, you can [https://moodle.org/mod/forum/discuss.php?d=208012 execute a | |||
==How to backup and restore a | ==How to backup and restore a customised language pack== | ||
This is handy when you have made | This is handy when you have made customisations of your language pack and you want to install these changes on another server. | ||
If you | If you customised a language pack xx, the only folder you need to back up is $CFG->dataroot/lang/xx_local. All others without the _local suffix are standard packages that can be installed and uninstalled via the admin tool. | ||
Once the folder is restored | Once the folder is restored on another server, you will have to manually purge caches from the admin interface to allow the in-built string manager to re-read the *_local folders and start using them. | ||
==Sharing a language customisation== | |||
* If you have made a language customisation for a specific need, which is shared by other people (e.g. a kids version of your national language, intended for your school, but also useful for other schools), please consider sharing it as a child language in AMOS. | |||
* If your country uses a language that is not exactly the same as an existing language pack listed in the [http://lang.moodle.org/local/amos/credits.php translation credits], and you have made a customisation that better suits the needs of your fellow country Moodle users, you might want to consider starting a child language pack in AMOS (e.g. Canadian French, which has over 1000 changes from the French parent language). | |||
In either case, contact the parent language pack maintainer listed in the [http://lang.moodle.org/local/amos/credits.php translation credits] and/or our translation coordinator, Koen, [mailto:translation@moodle.org translation@moodle.org]. | |||
==See also== | ==See also== |
Revision as of 13:34, 12 October 2016
Changing words or phrases
Words or phrases (in any language) used on the site may be easily changed by an administrator using the language customisation feature. For example, you may want to change the word "Course" to "Unit".
- Go to Site administration > Language > Language customisation and choose the language you wish to customise.
- Click the "Open language pack for editing" button. (This may take some time to process.)
- Once the language pack has loaded, click the "Continue" button.
- Find the string you wish to customise using the filter settings, then clicking "Show strings". See below for details of how to find the component and string identifier.
- Make your changes in the "Local customisation" box.
- Click "Apply changes and continue editing" if you want to use another filter or edit other file(s), otherwise click "Save changes to the language pack" to save all of the changes you have made.
Finding the component and string identifier
- Go to Site administration > Development > Debugging.
- Tick the 'Show origin of languages strings' tickbox then save changes.
- Go to the page containing the string you want to customise and add
?strings=1
, or&strings=1
if there is already a parameter, to the URL and reload the page.
The page will then be displayed with component and string identifies in curly brackets after each string, for example "{rememberusername/admin}". The first part, before the /, is the string identifier. The last part is the component e.g admin.php. If there is nothing after the / then the string is in moodle.php.
Troubleshooting
Do not see any string changes?
Did you remember to use the "Save changes to the language pack" button? Did you refresh your browser so that it is not looking at a cached page? Did you edit the language file that is actually being used on your site, course or by the user?
Language packs
Moodle is translated into many languages - see Language packs for Moodle 3.1 for their list and the translation completion status. The translations are distributed as language packages (or just lang packs) that are maintained by kind volunteers, community contributors and Moodle Partners.
Moodle site administrators can customise any language pack to fit their individual needs (for example to use the term "Unit" instead of "Course"). Editing the language pack files directly is not recommended, since any changes would be silently overwritten during the next upgrade. Instead, you should use the language customisation feature, which automatically creates a local language pack that holds all your changes from the official pack.
Local language packs have the same structure as official ones. They are saved in your Moodle data directory in moodledata/lang/xx_local/ folder where 'xx' is the code of the language. You have to have the official language pack installed before you can customise it. A local language pack should contain just strings you have customised - there is no need to create a copy of a whole official language pack.
When displaying a string, Moodle first looks whether a local customisation exists in moodledata/lang/xx_local/component_file.php. If so, it is used. If not, the string from the official language pack is used. (If the string has not been translated yet, the original English version is displayed). Please note that the strings are cached for better performance so if you modify a file directly in your xx_local pack then you will have to purge Moodle caches afterwards. Caches are purged automatically when using the language customisation feature.
Using the filter to find strings you want to customise
- Show strings of these components - Click or Ctrl+click to select one or more files that contain the string you want.
- Customised only - check this field to display only those strings that are already present in your xx_local pack.
- Help only' - check this field to display only help strings, that is the texts used when clicking the yellow question mark icon.
- Modified only - displays only the strings that are modified in the current session.
- Note: The term 'customised' means strings that are saved on disk in your xx_local pack directory. The term 'modified' represents the changes made since the last checked in string into the language pack. Customised strings (already saved in a file) are highlighted in green. Modified strings (not saved in a file yet) are highlighted in blue.
- Tip: You may want to use this option to review your current work before you check it in.
- Only strings containing - insert a phrase that must appear in the string. For example, if you put a word 'student' here, you will get only those strings that contain this word.
- Tip: The 'Only strings' filter can be used for a total search for a term used in your Moodle site for the selected language pack.
- String identifier - see above.
You can use a combination of filter settings to get the required set of strings.
Input your own translation
The strings that pass all the conditions defined in the filter are displayed in a table. To replace the standard translation, put your own into the 'Local customization' field.
- Tip:If you want to delete your current customization , just delete the content of the 'Local customization' field and click the "Save and continue editing". The modifications that are going to be removed a customized string are highlighted in red. If you made changes to a field previously "Save and continue editing" it will be highlighted in blue.
Click "Save and continue" button before you change the filter settings and show a new set of strings.
Database error seen when attempting a language customisation
If you encounter a database error when you try to customise your language pack, then it may be due to a recent plugin that corrupted the database. You are advised to check all plugins recently added to your site, and check whether removing a plugin prevents this error. If that is the case, please contact the maintainer for the involved plugin and report the error. Most cases seen in 2013 were fixed by the maintainers of those plugins. One case seen in 2014 was related to the Essential (additional) theme and language packs other than English; it was caused by a a bug with the notification language handling, and was fixed with a plugin update.
Or, you can execute a database query on your server in order to track down the plugin causing the problem.
How to backup and restore a customised language pack
This is handy when you have made customisations of your language pack and you want to install these changes on another server.
If you customised a language pack xx, the only folder you need to back up is $CFG->dataroot/lang/xx_local. All others without the _local suffix are standard packages that can be installed and uninstalled via the admin tool.
Once the folder is restored on another server, you will have to manually purge caches from the admin interface to allow the in-built string manager to re-read the *_local folders and start using them.
Sharing a language customisation
- If you have made a language customisation for a specific need, which is shared by other people (e.g. a kids version of your national language, intended for your school, but also useful for other schools), please consider sharing it as a child language in AMOS.
- If your country uses a language that is not exactly the same as an existing language pack listed in the translation credits, and you have made a customisation that better suits the needs of your fellow country Moodle users, you might want to consider starting a child language pack in AMOS (e.g. Canadian French, which has over 1000 changes from the French parent language).
In either case, contact the parent language pack maintainer listed in the translation credits and/or our translation coordinator, Koen, translation@moodle.org.
See also
- Duplicate entry 'en-373-AM' forum discussion about error when attempting to edit a lang pack
- Changing one word across the whole site forum discussion
- Moodle 2 Language Administration settings MoodleBites video on YouTube