i18n

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 1, 2025 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Copyright © 2025 PRAS

[Documentation reference](https://develop.kde.org/docs/plasma/widget/translations-i18n/) [Logic reference](https://github.com/Zren/plasma-applet-lib/blob/master/package/translate/build)

[Documentation reference](https://develop.kde.org/docs/plasma/widget/translations-i18n/) [Logic reference](https://github.com/Zren/plasma-applet-lib/blob/master/package/translate/merge)

Copyright © 2025 PRAS

Index

Constants

This section is empty.

Variables

View Source
var (

	// utils functions
	GetDataFromMetadata = utils.GetDataFromMetadata
)

mockable functions for testing

View Source
var I18nCmd = &cobra.Command{
	Use:   "i18n",
	Short: "Manage internationalization (i18n) for the plasmoid",
	Long:  `Provides tools to extract translatable strings and compile translation files.`,
}

i18nCmd represents the i18n command

View Source
var I18nCompileCmd = &cobra.Command{
	Use: "compile",
	Run: func(cmd *cobra.Command, args []string) {
		if !utilsIsPackageInstalled("msgfmt") {
			fmt.Println(color.RedString("compile command is disabled due to missing msgfmt dependency."))
			fmt.Println(color.BlueString("- Use `prasmoid fix` to install it."))
			return
		}

		if !utilsIsValidPlasmoid() {
			fmt.Println(color.RedString("Current directory is not a valid plasmoid."))
			return
		}

		if !silent {
			fmt.Println(color.CyanString("Compiling translation files..."))
		}

		if err := CompileI18n(root.ConfigRC, silent); err != nil {
			fmt.Println(color.RedString("Failed to compile messages: %v", err))
			return
		}

		if !silent {
			fmt.Println(color.GreenString("Successfully compiled all translation files."))
		}
	},
}
View Source
var I18nExtractCmd = &cobra.Command{
	Use: "extract",
	Run: func(cmd *cobra.Command, args []string) {
		if !utilsIsPackageInstalled("msginit") || !utilsIsPackageInstalled("msgmerge") || !utilsIsPackageInstalled("xgettext") {
			fmt.Println(color.RedString("extract command is disabled due to missing dependencies."))
			fmt.Println(color.BlueString("- Use `prasmoid fix` to install them."))
			return
		}

		if !utilsIsValidPlasmoid() {
			fmt.Println(color.RedString("Current directory is not a valid plasmoid."))
			return
		}

		color.Cyan("Extracting translatable strings...")

		translationsDir := root.ConfigRC.I18n.Dir
		_ = osMkdirAll(translationsDir, 0755)

		if err := runXGettext(translationsDir); err != nil {
			fmt.Println(color.RedString("Failed to extract strings: %v", err))
			return
		}

		fmt.Println(color.GreenString("Successfully extracted strings to %s/template.pot", translationsDir))

		isPoGen, _ := cmd.Flags().GetBool("no-po")
		if !isPoGen {
			if err := generatePoFiles(translationsDir); err != nil {
				fmt.Println(color.RedString("Failed to generate .po files: %v", err))
				return
			}
		}
	},
}

Functions

func CompileI18n

func CompileI18n(config types.Config, silent bool) error

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL