Redmine의 메시지 종류별로 어미를 부가한다(Postgres·플러그인 대응)

5845 단어 Redmine
전제조건은
htps : // 이 m/료마_나가레/있어 ms/121이다 3d면 644b5f7368c
를 참조하십시오.

스크립트



redmine_add_message_suffix.sh
#!/bin/bash
#####################################################
# 環境依存値
DB_NAME=db_redmine
PG_USER=postgres
# プラグイン含めて
REDMINE_DIR=/opt/redmine
# 単独のYMLを指定する場合
LOCALE_FILE=/opt/redmine/config/locales/ja.yml
# メッセージの種別(ラベル名の先頭)ごとに語尾を定義
declare -A SUFFIX
SUFFIX["label"]="にょ"
SUFFIX["notice"]="みたいよ"
SUFFIX["error"]="らしいよ"
SUFFIX["field"]="にゅ"
SUFFIX["setting"]="ぴょ"
SUFFIX["permission"]="ゲマ"
SUFFIX["button"]="ナリ"
# 固定置換用
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

    PREFIX=$(echo ${MSG_KEY} | awk -F'_' '{print $1}' )
    REPSTR=${SUFFIX[${PREFIX}]}

    case "${REP_PTN}" in
    "0" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/$/${REPSTR}/g") ;;
    "1" ) MSG_VALUE=${FIX_REP[${MSG_KEY}]} ;;
    "2" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/。/${REPSTR}。/g" | sed -e "s/:/${REPSTR}:/g" | sed -e "s/:/${REPSTR}:/g" | sed -e "s/?/${REPSTR}?/g") ;;
    "3" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/\"$/${REPSTR}\"/g") ;;
    "4" ) MSG_VALUE=$(echo ${MSG_VALUE} | sed -e "s/'$/${REPSTR}'/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_add_message_suffix.sh
    

    꼬리를 붙이는 것이 아니라, 고정으로 치환하고 싶은 경우는 FIX_REP 의 행을 카피해 늘려 주세요.
  • 메시지 설정 취소
  • ./redmine_add_message_suffix.sh RESET
    

    결과





    주의


  • 플러그인에 따라서는 에러가 되는 것도 있을지도 모릅니다.
  • 다음 플러그인이 설치된 환경에서 오류가 발생하지 않고 헹구고 있습니다.

  • 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
    

    좋은 웹페이지 즐겨찾기