広告

【Laravel】翻訳アプリにデザイン適用【Bootstrap】

Laravel

当サイトではアフィリエイト広告を利用しています。

広告

はじめに

以前の記事で、翻訳ができるWebアプリケーションを作成しました。
今回は、以下の記事の続きになりますが、Bootstrapを使いデザインを適用します。

【Laravel】翻訳できるWebアプリを作ろう【DeepL】
LaravelでWebアプリケーションを作成し、DeepLを利用して翻訳を行います。

DeepLは無償のニューラル機械翻訳サービスで、翻訳結果がとても自然で質が高いです。
DeepLについては以下の記事をご覧ください。

【DeepL】APIの登録とサンプルコード実装
WebブラウザからDeepLを開き翻訳することができますが、今回はAPIを利用し、プログラムから翻訳できるようにしてみようと思います。
【DeepL API】Pythonのクライアントライブラリで本格実装
DeepL公式が公開している、Pythonのクライアントライブラリを利用して、実践向けの実装を行っていきます。

Laravel Sailでの開発環境の構築方法は以下をご覧ください。

Windows
Laravel Sailで開発環境構築【Vite対応】
今回は、Laravel Sailを使って環境の構築を行いました。 SailはDockerですので、開発環境を簡単に用意することもできますし、カスタマイズすることも楽です。
Mac
【M1 Mac】Laravel Sailで開発環境構築【Vite対応】
Laravel Sailを使って環境の構築を行いました。 SailはDockerですので、開発環境を簡単に用意することもできますし、カスタマイズすることも楽です。
使用するバージョン
  • Windows 11 or macOS Monterey (M1)
  • Laravel Framework 9 or 10

2022/10/02 WindowsとMacを使い、最新バージョンで確認しました。
Vite版の対応を追加しました。
2023/03/11 Laravel10で確認しました。

他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。

広告

【紹介】個人開発

私の個人開発ですがQuiphaというサービスを開発しました。(Laravel, Vue3など)
良かったら、会員登録して動作を試してみて下さい。

また、Laravel 9 実践入門という書籍を出版しました。
Kindle Unlimitedを契約している方であれば、読み放題で無料でご覧いただくことができます

是非多くの方に読んでいただき、Laravelの開発に少しでもお役に立てたら幸いです。

余談ですが、Django向けに解説した記事もございますので参考にしてください。

【Django】翻訳できるWebアプリを作ろう【DeepL】
DjangoでWebアプリケーションを作成し、DeepLを利用して翻訳を行います。

VS Codeの用意

VS Codeのインストール方法は、以下の記事にまとめましたのでご覧ください。

【VS Code】インストール手順を解説 【Windows/M1 Mac対応】
今回はVS Codeのインストール手順を解説します。WindowsとMacのそれぞれ分けてまとめました。

設定方法は以下を参考にしてください。

【VS Code】オススメの設定・拡張機能・便利機能・ショートカット【Win/Mac対応】
私的に最初に行う設定や、拡張機能、よく使うショートカットや便利な機能をまとめてみました。
広告

Bootstrapの導入

LaravelにBootstrapを導入する手順は、以下の記事を参考にしてください。

【Laravel】Bootstrap5を導入【Vite/Mix対応】
Laravel9にBootstrap5を導入する手順をまとめました。

デザイン適用

Viteの場合

翻訳テンプレートを修正します。
ビルドして出力された、app.scssとapp.jsファイルを読み込みます

resources\views\translation.blade.php
<!doctype html>
<html>

<head>
    <meta charset='utf-8' />

    @vite(['resources/sass/app.scss', 'resources/js/app.js'])
    <style>
        body {
            padding-top: 70px;
        }
    </style>
</head>

<body>

...

</body>

</html>

今回はナビゲーションバーを設置してみました。

resources\views\translation.blade.php
<html>

...

<body>

    <header>
        <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
            <div class="container-fluid">
                <a class="navbar-brand" href="#">翻訳アプリ</a>
            </div>
        </nav>
    </header>

...

</body>

</html>

フォームやボタンもBootstrapを適用します。
テンプレート全体としては、以下のようになりました。

resources\views\translation.blade.php
<html>

<head>
    <meta charset='utf-8' />

    @vite(['resources/sass/app.scss', 'resources/js/app.js'])
    <style>
        body {
            padding-top: 70px;
        }
    </style>
</head>

<body>
    <header>
        <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
            <div class="container-fluid">
                <a class="navbar-brand" href="#">翻訳アプリ</a>
            </div>
        </nav>
    </header>

    <div class="container">

        {{-- フォーム --}}
        <form method="POST">
            @csrf
            <div class="mb-3">
                <label for="sentence" class="form-label">翻訳(日本語):</label>
                <textarea rows="10" name="sentence" class="form-control" required
                    id="sentence">{{ isset($sentence) ? $sentence : '' }}</textarea>
            </div>

            <button type="submit" class="btn btn-primary">翻訳</button>            
        </form>

        {{-- 翻訳結果 --}}
        @isset($translated_text)
            <div class="alert alert-primary mt-3" role="alert">
                {{ $translated_text }}
            </div>
        @endisset

    </div>
</body>

</html>

Viteについては以下の記事にもまとめました。

【Laravel】Viteの使い方
LaravelでViteを使ってみました。

Laravel Mixの場合

翻訳テンプレートを修正します。
ビルドして出力された、app.cssとapp.jsファイルを読み込みます

resources\views\translation.blade.php
<!doctype html>
<html>

<head>
    <meta charset='utf-8' />

    <link rel="stylesheet" href="{{ asset('css/app.css') }}">

    <style>
        body {
            padding-top: 70px;
        }
    </style>
</head>

<body>

...

    <script src="{{ mix('js/app.js') }}"></script>
</body>

</html>

今回はナビゲーションバーを設置してみました。

resources\views\translation.blade.php
<html>

...

<body>

    <header>
        <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
            <div class="container-fluid">
                <a class="navbar-brand" href="#">翻訳アプリ</a>
            </div>
        </nav>
    </header>

...

    <script src="{{ mix('js/app.js') }}"></script>
</body>

</html>

フォームやボタンもBootstrapを適用します。
テンプレート全体としては、以下のようになりました。

resources\views\translation.blade.php
<!doctype html>
<html>

<head>
    <meta charset='utf-8' />

    <link rel="stylesheet" href="{{ asset('css/app.css') }}">

    <style>
        body {
            padding-top: 70px;
        }
    </style>
</head>

<body>

    <header>
        <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
            <div class="container-fluid">
                <a class="navbar-brand" href="#">翻訳アプリ</a>
            </div>
        </nav>
    </header>

    <div class="container">

        {{-- フォーム --}}
        <form method="POST">
            @csrf
            <div class="mb-3">
                <label for="sentence" class="form-label">翻訳(日本語):</label>
                <textarea rows="10" name="sentence" class="form-control" required
                    id="sentence">{{ isset($sentence) ? $sentence : '' }}</textarea>
            </div>

            <button type="submit" class="btn btn-primary">翻訳</button>
        </form>

        {{-- 翻訳結果 --}}
        @isset($translated_text)
            <div class="alert alert-primary mt-3" role="alert">
                {{ $translated_text }}
            </div>
        @endisset
    </div>

    <script src="{{ mix('js/app.js') }}"></script>
</body>

</html>

動作確認

以下のURLにアクセスして確認しましょう。

http://localhost/translation

初期画面は以下のようになりました。

翻訳をしてみた結果の画面です。

その他

初学者へ

Laravelを初めて触る方へ向け、手順やアドバイスをまとめました。

外部サーバーへ公開

作成したアプリは公開して使ってもらいましょう!
Laravelアプリケーションを外部公開する方法をまとめました。

脆弱性対策

脆弱性を抱えたアプリケーションの場合、攻撃を受ける可能性があり大変危険です。
作成したアプリケーションは、脆弱性対策も意識しましょう。

GitHubと連携

GitHubと連携する方法を解説しました。
プロジェクトの管理はGitHubを活用しましょう。

GitHub Copilot

GitHub Copilotを導入し、AIにコーディングをサポートしてもらうこともできます。

さいごに

今回は、Bootstrapを使いデザインを適用しました。
他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。

LaravelMacOSPHPWindowsプログラミング作ってみよう
広告

個人開発

千草 @chigusaweb

現役のITエンジニア。 気ままにコードを書いたり技術情報を発信しています。 Webアプリ/Windows・Macアプリ/モバイルアプリなど。 (Java, PHP, Javascript, Swift, Python, C#, 他) 個人開発:Clibor, Quipha, TXT-Crypter, 符計算特訓, チグサツール Kindle本: Laravel9 実践入門, 他

クリップボード履歴

Clibor

Windows

Cliborはシンプルで高機能なクリップボード履歴ソフトです。
また普段よく使うワードを定型文として登録し、いつでもクリップボードに保存することができます。高度なテキスト整形・FIFOモード・ホットキーに対応。

クリップボード履歴

Windows版Cliborの利便性を、そのままMacでも。
定型文登録、高度なテキスト整形、FIFOモードなど、便利なクリップボード履歴機能を利用できます。macOS最新のTahoeにも対応。

テキスト暗号化

テキストを暗号化してURLで共有・保存できる無料サービスです。
パスフレーズを知る人だけが復号できます。登録不要、データはサーバーに保存されません。
Notionでも利用できます。

学習

Quipha

Web / iOS

自分だけの問題集や問題を作成し、クイズを行い、学習に活用することができるアプリです。
例えば、学校の授業、語学学習、IT資格やその他の資格など多彩な分野での学習を支援します。
いつでも、どこでも、あなたの学習をサポート。

ツール

日常の「ちょっとした効率化」をサポートするWeb便利ツール集。
テキスト・データ処理から最新のAI連携まで、日々のちょっとした手間でググりがちなユーティリティを1つの場所に集約。

麻雀

麻雀の符計算をひたすら特訓しマスターしましょう。
初心者の方はもちろん、もっと速く計算したい方にも役立ちます。
5万対局以上の実践から問題を収録。

コメント

タイトルとURLをコピーしました