“記事タイトルURLエイリアスジェネレータ”を公開

“記事タイトルURLエイリアスジェネレータ”を公開

Code Factoryは、ウェブサイトツール、クロスプラットフォームのデスクトップおよびモバイルアプリケーションを提供するウェブマスターのための新しいオープンソースプロジェクトです。ウェブマスターは最終的により効率的で便利な体験を提供することを約束します。今日、ウェブマスターは記事タイトルURLエイリアスを簡単に作成し、SEOとユーザーエクスペリエンスを向上させるのに役立つ記事タイトルURLエイリアスジェネレータを導入しました。もっと実用的なツールを発見してください!

最后更新 2024/01/07 0:12
沙漠尽头的狼
预计阅读 4 分钟
分类
Blazor
标签
.NET Blazor Avalonia UI オープンソースプロジェクト オープンソースソース

こんにちは、私は砂漠の果ての狼です。今日は非常に便利なツールをご紹介します。

Code Factoryはウェブマスターによって開発された新しいオープンソースプロジェクトで、ウェブオンラインツールとクロスプラットフォームのデスクトップとモバイルアプリを提供しています。私たちの目標は、より効率的で便利なオンラインツール体験を提供することです。本日、記事タイトルURLエイリアスジェネレータを発表しました。このツールは、記事タイトルのURLエイリアスを簡単に作成し、SEOとユーザーエクスペリエンスを向上させるのに役立ちます。

このツールは何ですか?

素晴らしい記事を書いたのに、タイトルが長すぎたり、特殊文字が含まれているためにURLが美しく見えたり、SEOに影響したりするという問題に遭遇したことがありますか?これで、記事タイトルURLエイリアスビルダーを使用すると、これらの問題はすべて解決されます。

このツールには3つの機能があります。

  1. 中英翻訳:中国語のタイトルを英語に翻訳したり、英語のタイトルを中国語に翻訳したりします。
  2. 英語からURLエイリアス:英語のタイトルを簡潔なURLエイリアスに変換し、ウェブサイトで使用しやすくします。
  3. 中国语転URL:中国语のタイトルをなURLに変换し、サイトで使いやすい。

特别适合文章取好中文标题后,需要在网站发布取文章访问链接生成使用。比如将本文标题《码坊“文章标题URL别名生成器”上线》在工具中转换为code-world-workshop-article-title-url-alias-generator-launched,转换效果如下:

标题别名转换演示

使用该工具在Dotnet9网站发布后,在网站上的访问地址是https://dotnet9.com/2024/01/code-world-workshop-article-title-url-alias-generator-launched

中英対訳とエイリアス変換の実現

这个工具的实现原理很简单。我们使用了GTranslate包的YandexTranslator类来进行中英互译,因为它使用了神经网络机器翻译技术,可以提供更高质量的翻译结果。对于 URL 别名的转换,我们使用了Slugify.Core包,用法简单,转换效果也很好。

実装コードを見て、変換インターフェイスを定義しましょう:

namespace CodeWF.Core;

/// <summary>
/// 文章标题翻译
/// </summary>
public interface ITranslationService
{
	/// <summary>
	/// 中英文翻译
	/// </summary>
	/// <param name="chineseText"></param>
	/// <returns></returns>
	public Task<string> ChineseToEnglishAsync(string? chineseText);

	/// <summary>
	/// 英中文翻译
	/// </summary>
	/// <param name="englishText"></param>
	/// <returns></returns>
	public Task<string> EnglishToChineseAsync(string? englishText);

	/// <summary>
	/// 英文与URL别名转换
	/// </summary>
	/// <param name="englishText"></param>
	/// <returns></returns>
	public string EnglishToUrlSlug(string? englishText);
}

変換インターフェイスの実装:

namespace CodeWF.Core;

/// <summary>
/// 中英互译使用Yandex Translation,Yandex使用了神经网络机器翻译技术(NMT),
/// 以提供更高质量的翻译结果。Yandex Translation 支持多种语言对,包括一些
/// 较少见的语言,并且特别擅长处理欧洲语言之间的翻译。
/// </summary>
public class TranslationService : ITranslationService
{
    private readonly YandexTranslator _translator = new();
    private readonly SlugHelper _slugHelper = new();

    /// <summary>
    /// 中英文翻译
    /// </summary>
    /// <param name="chineseText"></param>
    /// <returns></returns>
    public async Task<string> ChineseToEnglishAsync(string? chineseText)
    {
        return string.IsNullOrWhiteSpace(chineseText)
            ? string.Empty
            : (await _translator.TranslateAsync(chineseText, "en")).Translation;
    }

    /// <summary>
    /// 英中文翻译
    /// </summary>
    /// <param name="englishText"></param>
    /// <returns></returns>
    public async Task<string> EnglishToChineseAsync(string? englishText)
    {
        return string.IsNullOrWhiteSpace(englishText)
            ? string.Empty
            : (await _translator.TranslateAsync(englishText, "zh-CN")).Translation;
    }

    /// <summary>
    /// 英文与URL别名转换
    /// </summary>
    /// <param name="englishText"></param>
    /// <returns></returns>
    public string EnglishToUrlSlug(string? englishText)
    {
        return string.IsNullOrWhiteSpace(englishText) ? string.Empty : _slugHelper.GenerateSlug(englishText);
    }
}

単体テストの確認:

namespace CodeWF.Core.Test;

[TestClass]
public class TranslationServiceUnitTest
{
	private readonly ITranslationService _translationService = new TranslationService();

	[TestMethod]
	public async Task Test_ChineseToEnglishAsync_SUCCESS()
	{
		const string chineseText = "码坊";

		var englishText = await _translationService.ChineseToEnglishAsync(chineseText);

		Assert.AreEqual(englishText, "Code World Workshop");
	}

	[TestMethod]
	public async Task Test_EnglishToChineseAsync_SUCCESS()
	{
		const string englishText = "Code World Workshop";

		var chineseText = await _translationService.EnglishToChineseAsync(englishText);

		Assert.AreEqual(chineseText, "代码世界工作坊");
	}

	[TestMethod]
	public void Test_EnglishToSlug_SUCCESS()
	{
		const string englishText = "Code World Workshop";

		var urlSlug = _translationService.EnglishToUrlSlug(englishText);

		Assert.AreEqual(urlSlug, "code-world-workshop");
	}

	[TestMethod]
	public async Task Test_ChineseToSlugAsync_SUCCESS()
	{
		const string chineseText = "码坊";

		var englishText = await _translationService.ChineseToEnglishAsync(chineseText);

		var urlSlug = _translationService.EnglishToUrlSlug(englishText);

		Assert.AreEqual(urlSlug, "code-world-workshop");
	}
}

最後の言葉だ

文中截图是跨平台桌面版本,采用Avalonia UI和控件库Neumorphism.Avalonia开发,待功能开发到一定程度,站长会介绍工具框架的搭建,下面是工具效果图:

工具效果图

工具效果图

如果你对这个工具感兴趣,可以访问码坊官网https://codewf.com,查看更多实用工具。码坊的源码也在GitHub开源,欢迎大家关注和贡献。

皆さんのサポートと励ましが私を前進させてくれてありがとう。ご質問や提案がある場合は、お気軽にお問い合わせください。一緒により良い家を作りましょう!

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2024/11/06

なぜ私のブログはBlazorに戻るのか?

ブログサイトの開発は苦労し、MVC、Vue、Goなどの10近くのバージョンを試してきましたが、Blazorに戻り、静的SSRを使用して、速度が急上昇し、正常にオンラインになりました。

继续阅读
同分类 / 同标签 2024/02/29

Winformでもデータを表示できます。

winform開発の過程では、しばしばデータ表示機能を行う必要がありますが、以前はグリッドコントロールを使用していましたが、今日は例を通じて、Winform Blazorハイブリッドでant Design Blazorテーブルコンポーネントを使用してデータ表示を行う方法を紹介します。

继续阅读
同分类 / 同标签 2024/02/29

Winformのインターフェースも良く見えますか?

先日、winformでBlazorハイブリッドを使用することを紹介しましたが、Blazor UIを使用するとwinformプログラムがより良く見えるようになると述べました。次に、winform Blazorハイブリッドで描画する例を示したいと思います。

继续阅读