diff --git a/scripts/split-i18n-files.escript b/scripts/split-i18n-files.escript deleted file mode 100755 index b9f558925..000000000 --- a/scripts/split-i18n-files.escript +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env escript - -%% This script is for one-time use. -%% will be deleted after the migration is done. - --mode(compile). - -main([]) -> - %% we need to parse hocon - %% so we'll just add all compiled libs to path - code:add_pathsz(find_ebin_paths("_build/default/lib/*")), - Files = filelib:wildcard("rel/i18n/*.hocon"), - ok = lists:foreach(fun split_file/1, Files), - ok. - -find_ebin_paths(DirPattern) -> - LibDirs = filelib:wildcard(DirPattern), - lists:filtermap(fun add_ebin/1, LibDirs). - -add_ebin(Dir) -> - EbinDir = filename:join(Dir, "ebin"), - case filelib:is_dir(EbinDir) of - true -> {true, EbinDir}; - false -> false - end. - -split_file(Path) -> - {ok, DescMap} = hocon:load(Path), - [{Module, Descs}] = maps:to_list(DescMap), - try - ok = split(Path, Module, <<"en">>, Descs), - ok = split(Path, Module, <<"zh">>, Descs) - catch - throw : already_done -> - ok - end. - -split(Path, Module, Lang, Fields) when is_map(Fields) -> - split(Path, Module, Lang, maps:to_list(Fields)); -split(Path, Module, Lang, Fields) when is_list(Fields) -> - Split = lists:map(fun({Name, Desc})-> do_split(Path, Name, Lang, Desc) end, Fields), - IoData = [Module, " {\n\n", Split, "}\n"], - %% assert it's a valid HOCON object - {ok, _} = hocon:binary(IoData), - %io:format(user, "~s", [IoData]). - WritePath = case Lang of - <<"en">> -> - Path; - <<"zh">> -> - rename(Path, "zh") - end, - ok = filelib:ensure_dir(WritePath), - ok = file:write_file(WritePath, IoData), - ok. - -rename(FilePath, Lang) -> - Dir = filename:dirname(FilePath), - BaseName = filename:basename(FilePath), - filename:join([Dir, Lang, BaseName]). - -do_split(_Path, _Name, _Lang, #{<<"desc">> := Desc}) when is_binary(Desc) -> - throw(already_done); -do_split(Path, Name, Lang, #{<<"desc">> := Desc} = D) -> - try - Label = maps:get(<<"label">>, D, #{}), - DescL = maps:get(Lang, Desc), - LabelL = maps:get(Lang, Label, undefined), - [fmt([Name, ".desc:\n"], DescL), - fmt([Name, ".label:\n"], LabelL) - ] - catch - C : E : S-> - erlang:raise(C, {Path, Name, E}, S) - end. - - -tq() -> - "\"\"\"". - -fmt(_Key, undefined) -> - []; -fmt(Key, Content) -> - [Key, tq(), Content, tq(), "\n\n"]. -