npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

kuma-i18n-strings

v1.3.1

Published

CLI utility that helps handling your Localization string files in your Xcode project.

Readme

Kunstmaan I18n-Strings

Features

  • [x] Lookup all translation keys inside your Xcode project.
  • [x] Optimize build phase if there are missing translations.
  • [x] Sync translations from a shared datastore

Example project integrating this in the Xcode build process can be found here i18n-swift-example

Installation

npm

To install the kuma-i18n-strings cli command globally, you can run the following command:

$ npm install -g kuma-i18n-strings

Syncing from Google Spreadsheets

Setting up a Google Service Account for syncing with Google Spreadsheets

This is a 2-legged oauth method and designed to be "an account that belongs to your application instead of to an individual end user". Use this for an app that needs to access a set of documents that you have full access to. (read more)

Setup Instructions

  1. Go to the Google Developers Console
  2. Select your project or create a new one (and then select it)
  3. Enable the Drive API for your project
  • In the sidebar on the left, expand APIs & auth > APIs
  • Search for "drive"
  • Click on "Drive API"
  • click the blue "Enable API" button
  1. Create a service account for your project
  • In the sidebar on the left, expand APIs & auth > Credentials
  • Click blue "Add credentials" button
  • Select the "Service account" option
  • Select the "JSON" key type option
  • Click blue "Create" button
  • your JSON key file is generated and downloaded to your machine (it is the only copy!)
  • note your service account's email address (also available in the JSON key file)
  1. Share the doc (or docs) with your service account using the email noted above
  2. Create a .kuma-i18n-strings configuration file that looks as follows:
{
  "sync": {
    "provider": "google",
    "config": {
	    "file-id": "<the id of the google spreadsheet>",
	    "columns": {
	      "key": "< the name of the column where the key can be found>",
	      "value": ["<the column names that are used for the translation values>"]
	    },
	    "creds": {
	      "": "The JSON key file that is generated by setting up a service account in Google"
	    }
	 }
  }
}

For more information about setting up a Service Account look at the google-spreadsheet npm package

Multiple values are possible for the column names where the values can be found. This way you can use the translation file for multiple platforms. The array should contain the column names sorted by importance. If there is no value found in the first column it will fall back to the next and so on ...

In the column names for the values you can specify the language by adding $$LANG$$ this will be replaced by the actual language. For example: ios fallback $$LANG$$ will become ios fallback en.

Syncing from an endpoint that returns strings files

{
  "sync": {
    "provider": "url",
    "config": {
      "url": "https://some.remote.end/point/$$LANG$$.strings",
	    "format": "strings"
	 }
  }
}

Currently only endpoints returning strings files are supported.

Usage

To collect all the strings from the storyboard, swift files:

$ kuma-i18n-strings collect

To sync the translations with an online datastore (for now only google spreadsheets):

$ kuma-i18n-strings sync

Options

-s, --source         Specify the path where the Xcode files are located
-c, --config         Specify the path to the kuma-i18n configuration file relative to the source path, default .kuma-i18n-strings
-u, --update-files   Specify if it may update the Localizable files, default false
-h, --help           Display help
-v, --version        Display the current version number

When you are using the above commands without -u or --update-files it will exit with an exit code of -1 when there are new translations in the online datastore or in the xcode project. This way you can integrate it within your build phases so that building fails when the translations aren't up-to-date.

Roadmap

  • Add Android support, especially for syncing