Skip to content

jannesblobel/inlang-plugin-po

Repository files navigation

inlang-plugin-po

This plugin reads and writes resources, that are stored as .po file. The following features are supported:

  • ID ("msgid": "id")
  • messages ("msgstr": "value")

Recommendation for now:

Use a .pot file in your project. It is easier to manage the ids in a file instead of in the code

Usage

  1. Create a new file named inlang.config.js in the root of your git repository.
  2. Copy/paste the following code into the config
  3. Adapt the referenceLanguage, languages and pathPattern (your saved translation files)

If you need more help read the inlang documentation

/**
 * @type {import("@inlang/core/config").DefineConfig}
 */
export async function defineConfig(env) {
  // importing plugin from local file for testing purposes
  const plugin = await env.$import("https://cdn.jsdelivr.net/gh/jannesblobel/inlang-plugin-po@1/dist/index.js");

  const pluginConfig = {
  // Replace pathPattern with the path where your languages are stored.
    pathPattern: "./example/locale/{language}/LC_MESSAGES/django.po",

    // Your referenceResourcePath could be
    // null or "./example/locale/en/LC_MESSAGES/django.pot",
    // dependent if you use pot file as you referenceLanguage
    referenceResourcePath: null,
  };

  return {
    //  it is necessary to add a referenceLanguage even if referenceResourcePath = null 
    referenceLanguage: "en",
    languages: await plugin.getLanguages({
      referenceLanguage: "en",
      ...env,
      pluginConfig,
    }),
    readResources: (args) =>
      plugin.readResources({ ...args, ...env, pluginConfig }),
    writeResources: (args) =>
      plugin.writeResources({ ...args, ...env, pluginConfig }),
  };
}

For additional usage information, take a look at example.

Contributing

Developing

Run the following commands in your terminal (node and npm must be installed):

  1. npm install
  2. npm run dev

npm run dev will start the development environment which automatically compiles the src/index.ts files to JavaScript (dist/index.js), runs tests defined in *.test.ts files and watches changes.

Publishing

Run npm run build to generate a build.

The dist directory is used to distribute the plugin directly via CDN like jsDelivr. Using a CDN works because the inlang config uses dynamic imports to import plugins.

Read the jsDelivr documentation on importing from GitHub.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5