Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jhthorsen/locale-maketext-from-strings
Parse Apple .strings files
https://github.com/jhthorsen/locale-maketext-from-strings
Last synced: 27 days ago
JSON representation
Parse Apple .strings files
- Host: GitHub
- URL: https://github.com/jhthorsen/locale-maketext-from-strings
- Owner: jhthorsen
- Created: 2013-11-24T13:15:14.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-07-18T06:58:34.000Z (over 9 years ago)
- Last Synced: 2024-10-16T11:58:42.452Z (3 months ago)
- Language: Perl
- Size: 160 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README
- Changelog: Changes
Awesome Lists containing this project
README
NAME
Locale::Maketext::From::Strings - Parse Apple .strings filesVERSION
0.03SYNOPSIS
use Locale::Maketext::From::Strings;my $strings = Locale::Maketext::From::Strings->new(
path => '/path/to/strings',
namespace => 'MyApp::I18N',
out_dir => 'lib',
);$strings->load; # in memory
$strings->generate; # to diskDESCRIPTION
This module will parse ".strings" file used in the Apple world and
generate in memory perl-packages used by the Locale::Maketext module.Formatting rules
This module can parse most of the formatting mentioned here:
.* Key-value pairs are delimited with the equal character (=), and
terminated by a semicolon (;).* Keys and values are surrounded by double quotes (").
* Place-holders look can be: %.2f, %d, %1$s:
qr{\%[\d|\.]*\$*\d*[dsf]\b}
* Comments start at the beginning of the line and span the whole line.
* Multi-line comments are enclosed in /* */.
* Single-line comments start with double slashes (//).
* The specification says it expect UTF-16LE encoding by default, but
this module expect UTF-8 instead.NOTE! This might change in future release. Pass "encoding" to
constructor if you want to be sure about the value.Example file
This could be the content of "i18n/en.strings":/* comments in .strings files
can be multi line,
single line */
// or combination of the two
"hello_user" = "Hello %1$s";"Sample data" = "sample %s %d %.3f data";
// keys and values can be spread to multiple lines
"welcome_message" = "Welcome back,
we have missed you";TIP! Adding the default value on the left side (instead of hello_user
and welcome_message) works better with Locale::Maketext since it will
use that as fallback if translation is missing.ATTRIBUTES
encoding
Holds the encoding used when reading the ".strings" files. Defaults to
"UTF-8".namespace
Package name of where to "generate" or "load" code into. Default to the
caller namespace.out_dir
Directory to where files should be written to. Defaults to "lib".path
Path to ".strings" files. Defaults to "i18n".METHODS
new
$self = Locale::Maketext::From::Strings->new(%attributes);
$self = Locale::Maketext::From::Strings->new($attributes);Object constructor.
generate
Locale::Maketext::From::Strings->generate($namespace);
$self->generate;This method will write the I18N code to disk. Use this when the "load"
time goes up.NOTE! This method does not check for existing files - they will be
overwritte without warning.Example one-liners:
$ perl -MLocale::Maketext::From::Strings=generate -e1 MyApp::I18N
$ perl -Ilib -E'say +(require MyApp::I18N)->get_handle(shift)->maketext(@ARGV);' en "some key" ...load
Locale::Maketext::From::Strings->load($path);
$self->load;Will parse "language.strings" files from "path" and generage in-memory
packages in the given "namespace".Example Mojolicious app:
package MyApp;
use Locale::Maketext::From::Strings;
use base 'Mojolicious';sub startup {
my $self = sihft;
my $default_lang = 'en';Locale::Maketext::From::Strings->load($self->home->rel_dir('i18n'));
$self->helper(l => sub {
my $c = shift;
$c->stash->{i18n} ||= MyApp::I18N->get_handle($c->session('lang'), $default_lang);
$c->stash->{i18n}->maketext(@_);
});
}See also Mojolicious::Plugin::I18N.
parse
$data = $self->parse($file);Will parse $file and store the key value pairs in $data.
import
See "generate" for example one-liner.COPYRIGHT
This program is free software, you can redistribute it and/or modify it
under the terms of the Artistic License version 2.0.AUTHOR
Jan Henning Thorsen - "[email protected]"