Restriction by language

Availability restriction ::: availability_language
Maintained by RenaatRenaat Debleu
Restrict module and section access based on user language.
Latest release:
1943 sites
413 downloads
64 fans
Current versions available: 11

Language filters are great, but sometimes they can make your resources and activities very complex. This availability condition makes it easy to show an English resource only to English users and an activity in French only to French speaking students.

Check the global documentation about conditional availability settings first.

This plugin only pops up when

  • There is more than 1 language installed in the system (obvious, we need a least 2 languages installed to restrict)
  • When the language of the course is NOT forced. (Course - Edit settings - Appearance - Force language). When a course has a forced language, everything will be shown in this language and we are certain no user will ever arrive with another language enabled. On that moment there is no need to show the restriction, as it would only create the illusion that people could be restricted.


WARNING: The Moodle Mobile app filters resources and activities using the language of the smart phone, not using the language of the Moodle app.

Tests Coverage Status

 

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2

Contributors

Renaat
Renaat Debleu (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS

Comments

  • jake sullivan
    Thu, 20 Aug 2015, 4:17 AM
    I'm a newbie in moodle development, how do I install this plugin?
  • Renaat
    Thu, 20 Aug 2015, 3:57 PM
    Conditional activities are 2.7+ only. So it is not possible to use the plugin in version 2.5.

    Installation:

    1. Unpack the zip file into the availability/condition/ directory. A new directory will be created called language.
    2. Go to Site administration > Notifications to complete the plugin installation.
  • Brandon Jimenez
    Wed, 10 Feb 2016, 10:30 PM
    Hi, I'm currently running a Moodle 2.9.3+ site and planning to update it to Moodle 3 or 3.1 (sometime in the future), and i would love to know if you guys have already tested your plug in a Moodle 3+ environment? When would you have it certified?

    Thanks
  • Renaat
    Thu, 11 Feb 2016, 11:12 PM
    Hi Brandon,

    The current version (2014092000) supports Moodle version 2.7, 2.8, 2.9 and 3.0. Personally, I run three Moodle 3.0 sites and one test 3.1 site where the plugin is installed. Some weeks after the release of 3.1 (after some extra testing), this future version will also be supported.

    But what do you exactly mean with 'having it certified'?

  • Brandon Jimenez
    Thu, 11 Feb 2016, 11:17 PM
    Probably my bad as i was thinking in the Moodle 3 badge for official plugins, but as long as it runs, who really cares about badges? smile
  • Jean-Baptiste CROUIGNEAU
    Thu, 14 Apr 2016, 11:52 PM
    Hello,

    Is there a way to hide a course based on user language ?
    I have some courses in english, and the same courses in french (but separate courses). I would like to filter depending on user language.

    Best regards
  • Renaat
    Fri, 15 Apr 2016, 2:17 AM
    Hello Jean-Baptiste,

    availability conditions are module level: You can hide or show modules, not courses,

    If you want to filter data depending on user language, you could modify your theme renderer:

    class theme_????_core_course_renderer extends core_course_renderer {

    protected function coursecat_coursebox(coursecat_helper $chelper, $course, $additionalclasses = '') {
    switch(current_language()) {
    case 'fr':
    // Show French courses only
    default:
    // Show English courses only
    ...

    Greetings,


  • Alexander Mogutnov
    Fri, 18 Nov 2016, 7:50 AM
    Hi Renaat, Many thanks for the plugin!
    I want to do the same as Jean-Baptiste (show/hide courses based on user language), but I'm not a developer. Can you please describe how to do that in more detail? I have 3.1. Thank you so much!

    Best regards,
    Alexander
  • Renaat
    Fri, 18 Nov 2016, 5:03 PM
    Hi Alexander

    First, let me state that there is no such thing as hiding a course. If a user gets a link via mail or does a search, he/she will find your course, if he/she can access the course depends on the enrolment settings. The only thing I suggested is that it is possible to hide certain courses in the list of all courses.

    So have a look at the theme plugins (https://moodle.org/plugins/?q=type:theme), a lot of them modified the method to show the list of courses/categories to have a more beautiful page. But if you can modify the way they are presented, you can also modify if they are shown or not.

    As a non programmer, it will be difficult (you will need to create a child theme and overriding the coursecat_coursebox method), but give it a try. You never know you have hidden talents as a programmer!

    Greetings
    R
  • Mohammed Alhabib
    Sun, 2 Jan 2022, 12:34 AM
    How can I restrict content for two among 3 languages?
  • Renaat
    Sun, 2 Jan 2022, 5:44 PM
    2 possibilities:
    - Using negation: Not available unless language equals C
    - Using or: Available when language equals A OR language equals B
    Have a look at the docs (https://docs.moodle.org/311/en/Using_restrict_access)!
  • Joseph Rézeau
    Thu, 23 Nov 2023, 10:42 PM
    Hi Renaat and thanks for a great plugin, just what I needed...
    I have one query, when the "student" switches languages from within one course, I do NOT want this message to be displayed "Sorry, this activity is currently hidden".
    Could you make this display an ON/OFF option in a newer version of your plugin? Thanks!
  • Renaat
    Thu, 23 Nov 2023, 11:46 PM
    Hello Joseph,

    THX for your feedback.

    The plugin is following the same rules as other availability conditions. If you use the group availability and you are not part of the group, you get a sorry message as a student if you are not part of the group. With a language, you get the same behaviour. When I would change this behaviour, all reports and course formats relying on the function get_user_visible() would receive wrong info from the plugin.

    So you need a functionality that is not an availability restriction. You can add this enhancement in a course_format or a theme, but not in a availability restriction.


  • Ezzeddin Hamed
    Mon, 4 Mar 2024, 4:22 AM
    Hello Renaat,

    Would there be a turn-a-round to make this plugin work at course level? If so, would you guide me about?

    Thanks,
  • Renaat
    Mon, 4 Mar 2024, 4:45 PM
    Hello Ezzeddin,

    What do you exactly mean by making this plugin work at course level? This is a availability restriction plugin, restricting modules only. Check the global documentation about conditional availability settings.

    If you want to restrict access to courses based on the language selected, you will need to change your theme.

    R.
Please login to post comments