Sample code for 30+ languages & platforms
Zig

Amazon Translate Text

See more AWS Translate Examples

Demonstrates how to use the AWS Translate service to translate text from one language to another.

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // This example requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    const rest = try chilkat.Rest.init();
    defer rest.deinit();

    const auth_aws = try chilkat.AuthAws.init();
    defer auth_aws.deinit();
    auth_aws.setAccessKey("AWS_ACCESS_KEY");
    auth_aws.setSecretKey("AWS_SECRET_KEY");
    auth_aws.setRegion("us-west-2");
    auth_aws.setServiceName("translate");
    rest.setAuthAws(auth_aws) catch {};

    // URL: https://translate.us-west-2.amazonaws.com/
    const b_tls = true;
    const port = 443;
    const b_auto_reconnect = true;
    rest.connect("translate.us-west-2.amazonaws.com", port, b_tls, b_auto_reconnect) catch {
        std.debug.print("ConnectFailReason: {d}\n", .{rest.getConnectFailReason()});
        std.debug.print("{s}\n", .{try rest.getLastErrorText(alloc)});
        return;
    };

    // Translate text from English to German
    const json = try chilkat.JsonObject.init();
    defer json.deinit();
    json.updateString("SourceLanguageCode", "en") catch {};
    json.updateString("TargetLanguageCode", "de") catch {};
    json.updateString("Text", "This is the text to be translated") catch {};

    rest.addHeader("Content-Type", "application/x-amz-json-1.1") catch {};
    rest.addHeader("X-Amz-Target", "AWSShineFrontendService_20170701.TranslateText") catch {};

    const sb_request_body = try chilkat.StringBuilder.init();
    defer sb_request_body.deinit();
    json.emitSb(sb_request_body) catch {};
    const sb_response_body = try chilkat.StringBuilder.init();
    defer sb_response_body.deinit();
    rest.fullRequestSb("POST", "/", sb_request_body, sb_response_body) catch {
        std.debug.print("{s}\n", .{try rest.getLastErrorText(alloc)});
        return;
    };

    const resp_status_code = rest.getResponseStatusCode();
    if (resp_status_code >= 400) {
        std.debug.print("Response Status Code = {d}\n", .{resp_status_code});
        std.debug.print("Response Header:\n", .{});
        std.debug.print("{s}\n", .{try rest.getResponseHeader(alloc)});
        std.debug.print("Response Body:\n", .{});
        std.debug.print("{s}\n", .{try sb_response_body.getAsString(alloc)});
        return;
    }

    const json_response = try chilkat.JsonObject.init();
    defer json_response.deinit();
    json_response.loadSb(sb_response_body) catch {};
    json_response.setEmitCompact(false);

    std.debug.print("{s}\n", .{try json_response.emit(alloc)});

    // {
    //   "SourceLanguageCode": "en",
    //   "TargetLanguageCode": "de",
    //   "TranslatedText": "Dies ist der zu �bersetzende Text"
    // }

    std.debug.print("{s}\n", .{try json_response.stringOf(alloc, "TranslatedText")});
}