0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Site Kit by Google for WordPress を日本語に戻す(スクリプト付き)

Last updated at Posted at 2023-10-22

WordPressのプラグイン「Site Kit by Google」を更新すると表記が英語になってしまいます。
これを日本語に戻す方法を説明します。後半に自動化するスクリプトがあります。

site_kit.png

一般の人はファイルマネージャーかFTPクライアントを利用する方法でやってください。分かる人はシェルで。

ファイルマネージャーかFTPクライアントを利用

  1. 翻訳ファイルをダウンロード
    ブラウザで言語パックの一覧ページを開き、Japaneseのzipファイルをダウンロードします。

  2. ダウンロードしたzipファイルを展開
    ダウンロードしたzipファイルを任意のフォルダに展開します。

  3. レンタルサーバーのファイルマネージャーかFTPクライアントで(WordPressディレクトリ)/wp-content/languages/plugins/を開きます。

  4. 展開したファイルをアップロードします。

  5. 完了
    Site Kitの表記は日本語に戻っています。

    気になる人は、google-site-kit-ja-07ec685b783960660a163bf261d52602.jsonといった旧いファイルを削除してもよいでしょう。

シェルを利用

  1. 翻訳プラグインのディレクトリに移動
    cd (WordPressディレクトリ)/wp-content/languages/plugins
    
  2. 翻訳ファイルをダウンロード
    wget -qO- "https://translate.wordpress.org/projects/wp-plugins/google-site-kit/language-packs/" | \
    grep -o 'https://downloads.wordpress.org/[^"]*/ja.zip' | \
    xargs wget
    
  3. ファイルを展開
    unzip -o ja.zip
    
  4. ダウンロードしたファイルを削除
    rm -f ja.zip
    
  5. 古い翻訳ファイルを削除する(任意)
    # 対象のファイルを確認(1日以前)
    find . -name "google-site-kit-ja-*.json" -mtime +2 -print | xargs ls -lh
    
    # 対象のファイルを削除
    find . -name "google-site-kit-ja-*.json" -mtime +2 -exec rm {} \;
    
  6. 完了
    Site Kitの表記は日本語に戻っています。

Google Site Kit 翻訳ファイルの自動更新スクリプト

ここまで、手動で更新する方法について書きました。
その過程を自動化する PowerShell スクリプトを作成しました。

更新の背景

  • 複数のサイトを管理している場合、手動更新は時間がかかる
  • 自動化により、更新作業の効率化と人為的ミスの削減が可能に

スクリプトの概要

このスクリプトは以下の機能を提供します:

  1. WordPress.org から最新の Google Site Kit 日本語翻訳ファイルをダウンロード
  2. FTP または SSH を使用して、指定された複数のサイトに接続
  3. 各サイトの既存の翻訳ファイルを削除
  4. 新しい翻訳ファイルをアップロード

使用上の注意

  • このスクリプトは PowerShell で書かれています。Windows 10 以降または PowerShell Core がインストールされている環境で動作します。(PowerShell Core は Windows、macOS、Linux で利用可能です。)
  • FTP と SSH の両方の接続方法に対応しているため、さまざまなホスティング環境で使用可能です。

非 Windows 環境でのスクリプト実行

System.Net.FtpClient を利用するか、lftpscp を利用するようにスクリプトを書き換える必要があります。

System.Net.FtpClient のインストール:

Install-Module -Name System.Net.FtpClient -Scope CurrentUser

lftp をインストール:

sudo apt-get install lftp

スクリプトの使い方

  1. スクリプト内の接続情報を自分の環境に合わせて変更します。
    • FTP ホスト、ユーザー名、パスワード
    • SSH ホスト、ユーザー名、秘密鍵のパス
  2. $sites 配列内のサイト情報を自分が管理するサイトの情報に更新します。
  3. PowerShell を開き、スクリプトを実行します。

最後に

このスクリプトにより、Google Site Kit の翻訳ファイル更新作業が大幅に効率化されます。皆さんの管理作業の助けになれば幸いです。

質問やフィードバックがありましたら、コメント欄でお知らせください。

Site Kit 自動更新スクリプト

PowerShell
# Google Site Kit翻訳ファイル 複数サイト順次更新スクリプト

# FTP接続情報
$ftpHost1 = "your_host.example.com"
$ftpUser1 = "your_username"
$ftpPass1 = "your_password"

# SSH接続情報
$sshHost1 = "your_host.example.com"
$sshUser1 = "your_username"
$sshKeyPath1 = "C:\Path\To\Your\SSH\Key"

# サイト情報
$sites = @(
    @{
        Name = "site1"
        Type = "FTP"
        HostName = $ftpHost1
        User = $ftpUser1
        Pass = $ftpPass1
        Path = "www/site1/wp-content/languages/plugins/"
    },
    @{
        Name = "site2"
        Type = "SSH"
        HostName = $sshHost1
        User = $sshUser1
        KeyPath = $sshKeyPath1
        Path = "/home/username/site2/wp-content/languages/plugins"
    }
)

# FTP接続の準備
function Get-FtpWebClient {
    param (
        [string]$user,
        [string]$pass
    )
    $webclient = New-Object System.Net.WebClient
    $webclient.Credentials = New-Object System.Net.NetworkCredential($user, $pass)
    return $webclient
}

# 既存のGoogle Site Kit翻訳ファイルを削除する関数 (FTP)
function Remove-ExistingTranslationFilesFTP {
    param (
        [string]$hostName,
        [string]$user,
        [string]$pass,
        [string]$path
    )
    $ftpUrl = "ftp://${hostName}/${path}"
    $webclient = Get-FtpWebClient -user $user -pass $pass
    try {
        $listRequest = [System.Net.FtpWebRequest]::Create($ftpUrl)
        $listRequest.Method = [System.Net.WebRequestMethods+Ftp]::ListDirectory
        $listRequest.Credentials = $webclient.Credentials
        $listResponse = $listRequest.GetResponse()
        $streamReader = New-Object System.IO.StreamReader($listResponse.GetResponseStream())
        $directoryList = $streamReader.ReadToEnd()
        $files = $directoryList -split "`r`n"

        foreach ($file in $files) {
            if ($file -like "google-site-kit-ja*") {
                try {
                    $deleteRequest = [System.Net.FtpWebRequest]::Create($ftpUrl + $file)
                    $deleteRequest.Method = [System.Net.WebRequestMethods+Ftp]::DeleteFile
                    $deleteRequest.Credentials = $webclient.Credentials
                    $deleteResponse = $deleteRequest.GetResponse()
                    Write-Host "削除成功 (FTP $path): $file"
                    $deleteResponse.Close()
                }
                catch {
                    Write-Host "エラー (FTP $path): $file の削除中にエラーが発生しました: $($_.Exception.Message)"
                }
            }
        }
    }
    catch {
        Write-Host "エラー (FTP $path): ファイル一覧の取得中にエラーが発生しました。"
        Write-Host $_.Exception.Message
    }
}

# 既存のGoogle Site Kit翻訳ファイルを削除する関数 (SSH)
function Remove-ExistingTranslationFilesSSH {
    param (
        [string]$hostName,
        [string]$user,
        [string]$keyPath,
        [string]$path
    )
    $sshCommand = "find $path -name 'google-site-kit-ja*' -type f -delete"
    $result = ssh -i $keyPath "${user}@${hostName}" $sshCommand 2>&1
    if ($LASTEXITCODE -eq 0) {
        Write-Host "削除成功 (SSH $path): 既存の翻訳ファイルを削除しました。"
    } else {
        Write-Host "エラー (SSH $path): 既存の翻訳ファイルの削除中にエラーが発生しました。"
        Write-Host $result
    }
}

# 新しい翻訳ファイルをアップロードする関数 (FTP)
function Send-TranslationFilesFTP {
    param (
        [string]$hostName,
        [string]$user,
        [string]$pass,
        [string]$path,
        [string]$tempDir
    )
    $ftpUrl = "ftp://${hostName}/${path}"
    $webclient = Get-FtpWebClient -user $user -pass $pass
    Get-ChildItem -Path $tempDir -File | ForEach-Object {
        try {
            $uri = New-Object System.Uri($ftpUrl + $_.Name)
            $webclient.UploadFile($uri, $_.FullName)
            Write-Host "アップロード成功 (FTP $path): $($_.Name)"
        }
        catch {
            Write-Host "エラー (FTP $path): $($_.Name) のアップロードに失敗しました。"
            Write-Host $_.Exception.Message
        }
    }
}

# 新しい翻訳ファイルをアップロードする関数 (SSH)
function Send-TranslationFilesSSH {
    param (
        [string]$hostName,
        [string]$user,
        [string]$keyPath,
        [string]$path,
        [string]$tempDir
    )
    $files = Get-ChildItem -Path $tempDir -File
    foreach ($file in $files) {
        $result = scp -i $keyPath $file.FullName "${user}@${hostName}:$path" 2>&1
        if ($LASTEXITCODE -eq 0) {
            Write-Host "アップロード成功 (SSH $path): $($file.Name)"
        } else {
            Write-Host "エラー (SSH $path): $($file.Name) のアップロードに失敗しました。"
            Write-Host $result
        }
    }
}

# 翻訳ファイルをダウンロードする関数
function Get-TranslationFiles {
    $tempDir = New-Item -ItemType Directory -Force -Path "$env:TEMP\google-site-kit-translation"
    try {
        $webPage = Invoke-WebRequest -Uri "https://translate.wordpress.org/projects/wp-plugins/google-site-kit/language-packs/"
        $downloadUrl = $webPage.Links | Where-Object { $_.href -like "*ja.zip" } | Select-Object -First 1 -ExpandProperty href
        $zipPath = Join-Path $tempDir "ja.zip"
        Invoke-WebRequest -Uri $downloadUrl -OutFile $zipPath
        Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force
        Remove-Item -Path $zipPath -Force
        return $tempDir
    }
    catch {
        Write-Host "エラー: 翻訳ファイルのダウンロード中にエラーが発生しました。"
        Write-Host $_.Exception.Message
        return $null
    }
}

# メイン処理
$tempDir = Get-TranslationFiles
if ($null -ne $tempDir) {
    foreach ($site in $sites) {
        Write-Host "サイト $($site.Name) の処理を開始します..."

        Write-Host "既存の翻訳ファイルを削除しています..."
        if ($site.Type -eq "FTP") {
            Remove-ExistingTranslationFilesFTP -hostName $site.HostName -user $site.User -pass $site.Pass -path $site.Path
        } else {
            Remove-ExistingTranslationFilesSSH -hostName $site.HostName -user $site.User -keyPath $site.KeyPath -path $site.Path
        }

        Write-Host "新しい翻訳ファイルをアップロードしています..."
        if ($site.Type -eq "FTP") {
            Send-TranslationFilesFTP -hostName $site.HostName -user $site.User -pass $site.Pass -path $site.Path -tempDir $tempDir
        } else {
            Send-TranslationFilesSSH -hostName $site.HostName -user $site.User -keyPath $site.KeyPath -path $site.Path -tempDir $tempDir
        }

        Write-Host "サイト $($site.Name) の処理が完了しました。"
        Write-Host "----------------------------------------"
    }
    # 一時ディレクトリの削除
    Remove-Item -Path $tempDir -Recurse -Force
    Write-Host "すべての処理が完了しました。"
}
else {
    Write-Host "翻訳ファイルのダウンロードに失敗したため、処理を中止します。"
}
0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?