LoginSignup
0
0

More than 3 years have passed since last update.

Redmineの label/notice/error/field/setting/permission/button メッセージに”にょ”を付加する(Postgres・プラグイン対応)

Last updated at Posted at 2019-09-04

https://qiita.com/ryouma_nagare/items/121da3dba644b5f7368c
の内容を本体だけでなく、プラグインのメッセージにも語尾を追加するようにしました。

スクリプト

redmine_nyo.sh
#!/bin/bash
#####################################################
# 環境依存値
DB_NAME=db_redmine
PG_USER=postgres
REDMINE_DIR=/opt/redmine
LOCALE_FILE=/opt/redmine/config/locales/ja.yml
SUFFIX="にょ"
# 固定置換用
declare -A FIX_REP
FIX_REP["button_submit"]="目からビーム"
#####################################################
PID=$$

if [ "$1" == "RESET" ]; then

cat << EOS > /tmp/${PID}.sql
UPDATE settings
   SET value=E'--- \n:custom_messages: {} \n'
 WHERE name='plugin_redmine_message_customize'
EOS

else
  IFS_BACKUP=$IFS
  IFS=$'\n'
## 単一のファイルを書き替えたい場合はこっち
#  declare -a LABELS=( $(grep -E '^  (label|notice|error|field|setting|permission|button)' ${LOCALE_FILE} | grep -v '|' | grep -v ':\s*$') )
## プラグインを含めて書き替えたい場合はこっち
  declare -a LABELS=( $(grep -E '^  (label|notice|error|field|setting|permission|button)' $(find ${REDMINE_DIR} -name 'ja.yml') | grep -v '|' | grep -v ':\s*$'  | awk -F': ' '{c="";for(i=2;i<=NF;i++) c=c $i": "; print c}' | sed -e 's/: $//g' ) )

  for LABEL in ${LABELS[@]}
  do
    MSG_KEY=$(echo $LABEL | awk -F': ' '{print $1}' | sed -e 's/ //g' )
    MSG_VALUE=$(echo $LABEL | awk -F': ' '{c="";for(i=2;i<=NF;i++) c=c $i": "; print c}' | sed -e 's/: $//g' | sed -e 's/\r//g' )

    # 下のいずれでもない
    REP_PTN=0
    # 固定置換あり
    if [ "${FIX_REP[${MSG_KEY}]}" != "" ]; then
      REP_PTN=1
    fi
    # 句点、コロン、?のいずれかを含む
    echo ${MSG_VALUE} | grep -E '(。|:|:|?)' > /dev/null
    if [ $? -eq 0 -a "${REP_PTN}" == "0" ]; then
      REP_PTN=2
    fi
    # ダブルクォートで終わる
    echo ${MSG_VALUE} | grep -E '"$' > /dev/null
    if [ $? -eq 0 -a "${REP_PTN}" == "0" ]; then
      REP_PTN=3
    fi
    # シングルクォートで終わる
    echo ${MSG_VALUE} | grep -E "'$" > /dev/null
    if [ $? -eq 0 -a "${REP_PTN}" == "0" ]; then
      REP_PTN=4
    fi

    case "${REP_PTN}" in
    "0" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/$/${SUFFIX}/g") ;;
    "1" ) MSG_VALUE=${FIX_REP[${MSG_KEY}]} ;;
    "2" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/。/${SUFFIX}。/g" | sed -e "s/:/${SUFFIX}:/g" | sed -e "s/:/${SUFFIX}:/g" | sed -e "s/?/${SUFFIX}?/g") ;;
    "3" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/\"$/${SUFFIX}\"/g") ;;
    "4" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/'$/${SUFFIX}'/g") ;;
    esac

    MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/'/''/g")

    MSG+="    ${MSG_KEY}: ${MSG_VALUE}\n"
  done

cat << EOS > /tmp/${PID}.sql
UPDATE settings
   SET value=E'--- \n:custom_messages: \n  ja:\n${MSG}'
 WHERE name='plugin_redmine_message_customize'
EOS
fi

IFS=$IFS_BACKUP

sudo su - ${PG_USER} -c "psql ${DB_NAME} -f /tmp/${PID}.sql"
rm -f /tmp/${PID}.sql

使い方

  • メッセージ設定
./redmine_nyo.sh

語尾をつけるのではなく、固定で置換したい場合はFIX_REP の行をコピーして増やしてください。

  • メッセージ設定取消
./redmine_nyo.sh RESET

結果

image.png
※redmine_issue_templates のラベルに”にょ”がついている状態です

注意

  • プラグインによってはエラーになるものもあるかもしれません。
    • 以下のプラグインをインストールしている環境ではエラーにならずにすんでいます。
Redmine plugins:
  alm                            1.5.3
  full_text_search               1.0.4
  group_watchers                 0.0.1
  lac                            1.5.4
  lad                            1.5.5
  levm                           2.8.0
  lgc                            4.1.5
  lgc_pro                        4.1.5
  lpt                            1.2.12
  lychee_easy_assigned_user      1.0.9
  lychee_issue_board             3.7.5
  lychee_issue_set               1.7.3
  lychee_issue_spread_sheet      1.0.7
  lychee_issues_evm              2.8.0
  lychee_profile_icon            1.1.1
  lychee_project_view            1.2.12
  lychee_status_color            1.0.5
  lychee_version_start_date      1.0.9
  lychee_workdays                1.0.6
  redmine_absolute_dates         0.0.4
  redmine_banner                 0.2.1
  redmine_code_review            1.0.0
  redmine_issue_templates        0.3.5
  redmine_jstoolbar_ext          0.2.1
  redmine_jstoolbar_ext_buttons  0.2.1
  redmine_message_customize      
  redmine_persist_wfmt           2.0.1
  redmine_vividtone_my_page_blocks 2017/07/05
  redmine_wiki_extensions        0.9.0
  redmine_wiki_index_tree_view   0.0.1
  redmine_wiki_lists             0.0.9
  redmine_wiki_page_tree         0.0.2
  redmine_work_time              0.4.0
  redmine_xls_export             0.2.1.t11
  view_customize                 2.3.0
0
0
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
0