NAME Locale::Maketext::From::Strings - Parse Apple .strings files VERSION 0.01 SYNOPSIS 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 disk DESCRIPTION This module will parse ".strings" file used in the Apple world and generate in memory perl-packages used by the Locale::Maketext module. 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. 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 - "jhthorsen@cpan.org"