LoginSignup
0
2

More than 3 years have passed since last update.

Redmineのトップメニューに言語の切り替えリンクを追加(個人設定画面に遷移しないで言語を切り替える)

Last updated at Posted at 2020-10-11

Redmineの言語を切り替える際に、わざわざ個人設定画面に遷移するのは面倒なので、View Customize Pluginを使って、トップメニューに言語切り替えリンクを追加してみました。

Redmine 4.1で追加された、MyAccountのAPIを使用します。

make /my/account endpoint accessible through API
https://redmine.org/issues/31399

Redmine Rest API(MyAccount)
https://www.redmine.org/projects/redmine/wiki/Rest_MyAccount

/*
パスのパターン:.*^(?!/login).*$
挿入位置:全てのページのヘッダ
種別:JavaScript
*/

$(function() {
    const apiKey = ViewCustomize.context.user.apiKey;
    const current_language = document.documentElement.lang.toLowerCase();
    if (current_language === "ja") {
        lang = "en";
        menutitle = "英語";
    } else if (current_language === "en") {
        lang = "ja";
        menutitle = "Japanese";
    }

    //トップメニューに言語切り替えリンクを追加
    if (!location.href.match('/my/account')) { //個人設定画面以外
        $('#loggedas').prepend('<li><a href="javascript:void(0)" id="languagechange">' + menutitle + '</a></li>');
    };

    //クリックしたら言語を切り替え
    $('#languagechange').click(function() {
        $.ajax({
            type: "PUT",
            url: '/my/account.json',
            headers: {
                'X-Redmine-API-Key': apiKey
            },
            dataType: "text",
            contentType: 'application/json',
            data: JSON.stringify({
                'user': {
                    "language": lang
                }
            })
        }).done(function() {
            window.location = location.href;
        })
    })
})

/app/views/my/account.api.rsb に1行(api.language @user.language)を追加します。

  api.api_key    @user.api_key
+ api.language   @user.language

  render_api_custom_values @user.visible_custom_field_values, api

言語切り替えメニュー.png

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2